{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/pdRBrxZgIyvBss2CqANa/GwPe7hhMcRcQI7SMcoIS/TenantChecks.js", "ssg:https://framerusercontent.com/modules/xPjbsMR6WyZIrRxgwZO7/QXnq5g7qwTofC1QjjW61/pRemd4fMu.js", "ssg:https://framerusercontent.com/modules/2LGk8D7zrJeUEiN2MPbl/DEXU4lmXSZL7354xn2GW/mnItz6A8F.js", "ssg:https://ga.jspm.io/npm:style-value-types@5.0.0/dist/es/index.mjs", "ssg:https://ga.jspm.io/npm:framesync@6.0.1/dist/es/index.mjs", "ssg:https://ga.jspm.io/npm:popmotion@11.0.3/dist/es/index.mjs", "ssg:https://framerusercontent.com/modules/9vlcrQwDrbKSmD2xdWE5/HlCJ3urUTyvUKINNNEvI/ConicGradient.js", "ssg:https://framerusercontent.com/modules/6TWLuZ3R3gafx8BAuiN4/qqiU78T7zH8rFkhksteD/tQEy8yiPF.js", "ssg:https://framerusercontent.com/modules/fF8qHxPyqD2TJKLmGuDj/p3ClgJwxIeo4mUCfrJ88/BN3HUyYzj.js", "ssg:https://framerusercontent.com/modules/egaMOikpEojDPGX2L17i/eEQR7UV1CgU2ftSfYSgt/Logos.js", "ssg:https://framerusercontent.com/modules/k2LXqFXKLfH5xo6YMaO2/WNzbIRtDtprBjkAcMlG0/pRemd4fMu.js", "ssg:https://framerusercontent.com/modules/GBT11usxDjWdoY9Bpyot/4xF4lAgdAlGMB1w2xCGS/l9n5MpL99.js", "ssg:https://framerusercontent.com/modules/A2Rsle7J3GjexdFR6NE3/Nw7bI1MI3E1CvoCYgfEq/GgCR0HjY3.js", "ssg:https://framerusercontent.com/modules/Fu9S5nORSDNX12skB2jB/Kaz2un5xAK2JYvdRPV1f/U5lud3mMK.js", "ssg:https://framerusercontent.com/modules/FDTtENGsRCSeOM7gs3nZ/TDJ4CrYGaE4uKpLu9TaW/Sdbub5yUA.js", "ssg:https://framerusercontent.com/modules/rSx7oZndsMfFJ2V0TlH1/01pWvcZTFwMMRsBJap4Z/VGKHrA53b.js", "ssg:https://framerusercontent.com/modules/ukyfgndQmGPyGl5LU54I/hFuQ655HqW24mBwz7R2w/QUH3pJRTz.js", "ssg:https://framerusercontent.com/modules/fkGgVlOCLldzIqG6EWIf/neSoJ2UFMLUedcqU6sHR/Nf5Ragpam.js", "ssg:https://framerusercontent.com/modules/HLOjcBuHUk2SohwWmcNb/794WP057oNa6VAyST9B8/PjC4CsJaK.js", "ssg:https://framerusercontent.com/modules/HUBYTwKFByzjWw3oHGyL/RO1c3jYHv3saoZbGS7g5/Qa82X1Z0U.js", "ssg:https://framerusercontent.com/modules/bqoxHy2foMfxGjdhTZwK/9Qtq0s5Mz8f7AmjlPGcx/jtDh_M46J.js", "ssg:https://framerusercontent.com/modules/a6DfdqVVfgEK1lKSj4Np/D0GpDJ0nXNlwicdp34NE/OIB1sWCoj.js", "ssg:https://framerusercontent.com/modules/mfhR5zRGIFndbbEvJa23/aiXbdfYymS8VVodLFmJV/m1Dw3gDw_.js", "ssg:https://framerusercontent.com/modules/JbpcIAyn0u5cv6vdTXoP/qvG69KX65rbGHmot79mK/lLkcBkgJT.js", "ssg:https://framerusercontent.com/modules/G59n2G5pqJTQthueNBWa/TW2LrrY7IFOcjYq4r2d5/AQ823k8yZ.js", "ssg:https://framerusercontent.com/modules/clbqJ80IOZqgJlOvHxcI/F5V9CDDAZg0VnJ6LqcAz/gXk6dU62K.js", "ssg:https://framerusercontent.com/modules/TivLEGkc1uzMeNCseJyy/yAY9UV4qTwXAwDKB9TZe/KEIGp9seQ.js", "ssg:https://framerusercontent.com/modules/IZcN2vW7Zr2YBXMFhrZf/Az98EO8vrIjhb0pvbG6G/mnItz6A8F.js", "ssg:https://framerusercontent.com/modules/wt18YscVHgMYKlk7LG8F/VEH7Ukjaz9doChx0rPPU/Ua61FX9zj.js", "ssg:https://framerusercontent.com/modules/kSmTc44i0c5ruFBtj2BA/FKDIDbszcGUTHdk9LuYS/Y42FZEMxi.js", "ssg:https://framerusercontent.com/modules/xMdS8n33A9rK4noULav9/U10AV7Aty8mAmV4ngS7T/ojyM9x_ZC.js", "ssg:https://framerusercontent.com/modules/oi04vWpD6mNQ1CEeDIsN/x1geVQsU88VzRiR8IjZc/ZVYe2Nhfy.js", "ssg:https://framerusercontent.com/modules/8Iyxz968nf5QdJlvJvDg/YI6EWDDEMj5UuD7754Ww/DrqqrAzJ3.js", "ssg:https://framerusercontent.com/modules/fgQqOxgPS4ULab3yRfwu/65LMSsc3o3MGPNZhWzyq/Filters.js", "ssg:https://framerusercontent.com/modules/qgf87fkgrM5c128YLt6p/9JRop4koVTef7NxQrmCd/TenantChecks.js", "ssg:https://framerusercontent.com/modules/rOzDxL1zUjFsOG02SPrX/yFgBDRhw8AO3GFUTiPrS/AiU29R1w5.js", "ssg:https://framerusercontent.com/modules/l8zqelXHCgG4xqGiBZjD/MoSFg6TCq18gonvBRGK7/M6hbwtZyh.js", "ssg:https://framerusercontent.com/modules/7aKEcE234HUuUbxVUWG0/r00fiWVKf39CEBHzNofi/p_ZRklbwL-0.js", "ssg:https://framerusercontent.com/modules/7aKEcE234HUuUbxVUWG0/r00fiWVKf39CEBHzNofi/p_ZRklbwL-1.js", "ssg:https://framerusercontent.com/modules/7aKEcE234HUuUbxVUWG0/r00fiWVKf39CEBHzNofi/p_ZRklbwL.js", "ssg:https://framerusercontent.com/modules/lP8V3UM7osgVvgO9o3yo/N30vEhT4KmNuKtToQjUY/wtyR92LHZ.js", "ssg:https://framerusercontent.com/modules/udB93xVEVWDRpZADqEsc/tBcUI4ZQoOghAwZB22C8/PihfgTAR5.js", "ssg:https://framerusercontent.com/modules/zTb2QvSvmhj3xmBSumVl/FxvjjbX0AxqllYQv4Tdf/xoAKFFJ8r.js", "ssg:https://framerusercontent.com/modules/aBVyWzYtwMtn3FN4dwMK/wu4le4s3n83Fr9uVgcm2/gXk6dU62K.js", "ssg:https://framerusercontent.com/modules/bTVdvcC85P0NRmwm9HNf/Xvz3FK8dbaStzUwFRjjC/ikk_McnKH.js", "ssg:https://framerusercontent.com/modules/fxsl7Jbx9Utrik2gn6Pu/7TNL2hK7LMLLZATd53Ir/KEIGp9seQ.js", "ssg:https://framerusercontent.com/modules/ghEmBfXXg8JZQcL8IzOW/Kvn5z2jQobsZIttXxEfY/lLkcBkgJT.js", "ssg:https://framerusercontent.com/modules/lq4tSjpt2ZcXIKrZYZCV/5j8UIzYjCx1CrvauhuFr/Y42FZEMxi.js", "ssg:https://framerusercontent.com/modules/z6q2nhyda8yyqOfBs3g5/Q8jJJ9YK4gKuNbgVJzHx/ojyM9x_ZC.js", "ssg:https://framerusercontent.com/modules/mC5fnVeUGeGRcr71iNCd/p7oF2IuBvN80qidrINnV/Nf5Ragpam.js", "ssg:https://framerusercontent.com/modules/vq3G2TKGHXeA5HmR76xZ/5DRPbMDimVv53uN3ZJl7/PjC4CsJaK.js", "ssg:https://framerusercontent.com/modules/61ja2faQT27P3rWgfZpH/arxO3aSEfoma0f3sE8NU/Qa82X1Z0U.js", "ssg:https://framerusercontent.com/modules/ggcENFdVcTER4TONpu1P/Sm8CywxWEnaUvCdiRTsq/jtDh_M46J.js", "ssg:https://framerusercontent.com/modules/tYAt9cH95mFrqlOMuyyO/yanjb73WcPFGvd13S0jO/ZVYe2Nhfy.js", "ssg:https://framerusercontent.com/modules/7AM6DNYiokdKmR3FgvBn/3VHILYFDaDVOMW9BbFdu/AiU29R1w5.js", "ssg:https://framerusercontent.com/modules/Xyaya9g1loKqeLkOA9lF/oIrnEKPhcOZUMmeRh78f/nTx_gJVzD.js", "ssg:https://framerusercontent.com/modules/6sOetyaAob2s3xIlrzcO/XlrqZwjJPQVkQMVqdg3C/RqCSc6AzT.js", "ssg:https://framerusercontent.com/modules/98Audp2sji4nGnpc7Hgc/O0AGuS5H6FMargOurAtu/Rv1dlQk6f.js", "ssg:https://framerusercontent.com/modules/ar3drVims6SUzk90qmGN/CMW3iqARJtvODSILJTtA/mWRre6RGT.js"],
  "sourcesContent": ["import{jsx as _jsx}from\"react/jsx-runtime\";import Cookies from\"js-cookie\";import NavTenantRow from\"https://framer.com/m/Nav-TenantRow-hwyO.js@VXRpGuFqy1r4HcvPP67P\";import{useCallback,useState,useEffect}from\"react\";function useCookie(cookieName){const[value,setValue]=useState(null);const[hasReadCookie,setHasReadCookie]=useState(false);const update=useCallback((newValue,options)=>{Cookies.set(cookieName,newValue,options);setValue(newValue);},[cookieName]);const remove=useCallback(()=>{Cookies.remove(cookieName);setValue(null);},[cookieName]);useEffect(()=>{setValue(Cookies.get(cookieName));setHasReadCookie(true);},[cookieName]);return[value,{hasReadCookie,update,remove}];}function parseTenantsCookie(tenantsCookie){if(!tenantsCookie){return[];}let parsedTenantsCookie;try{parsedTenantsCookie=JSON.parse(decodeURI(tenantsCookie));}catch{// do nothing\n}// validate that it is an array\nif(!Array.isArray(parsedTenantsCookie)){return[];}// validate that the collection has a valid shape\nif(!parsedTenantsCookie.every(tenant=>tenant.name&&tenant.slug)){return[];}return parsedTenantsCookie;}export function useTenantsCookie(){const[tenantsCookie,{hasReadCookie}]=useCookie(\"tenants\");return{hasReadCookie,tenants:parseTenantsCookie(tenantsCookie)};}function useTenants(){const{tenants,hasReadCookie}=useTenantsCookie();const hasTenants=!!tenants&&tenants.length>0;return{hasTenants,isLoading:!hasReadCookie,tenants};}export function withShowIfTenants(Component){return props=>{const{hasTenants}=useTenants();if(hasTenants){return /*#__PURE__*/_jsx(Component,{...props},\"show\");}return null;};}export function withHideIfTenants(Component){return props=>{const{hasTenants,isLoading}=useTenants();if(hasTenants){return null;}return /*#__PURE__*/_jsx(Component,{...props},\"hide\");};}export function tenantRows(Component){return props=>{const{hasTenants,tenants}=useTenants();return /*#__PURE__*/_jsx(Component,{style:{width:\"100%\"},children:tenants.map((tenant,index)=>/*#__PURE__*/_jsx(\"a\",{href:tenant&&`https://${tenant.slug}.twingate.com`,target:\"_blank\",style:{textDecoration:\"none\",width:\"100%\"},children:/*#__PURE__*/_jsx(NavTenantRow,{tenantName:tenant&&tenant.name,tenantSlug:`${tenant&&tenant.slug}.twingate.com`,tenantFirstLetter:tenant&&tenant.name?tenant.name[0]:\"\u2022\",style:{width:\"100%\"}})}))});};}\nexport const __FramerMetadata__ = {\"exports\":{\"useTenantsCookie\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withShowIfTenants\":{\"type\":\"reactHoc\",\"name\":\"withShowIfTenants\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withHideIfTenants\":{\"type\":\"reactHoc\",\"name\":\"withHideIfTenants\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"tenantRows\":{\"type\":\"reactHoc\",\"name\":\"tenantRows\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TenantChecks.map", "// Generated by Framer (d213f04)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,SVG,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";const cycleOrder=[\"Ez6AL2vTh\",\"BNbfbktEW\",\"EjrLISIop\",\"m9F2Vlw0F\",\"RvL4_kC86\",\"uhSfrryf7\",\"uD5j7l2Ki\",\"cpSLXUwzV\"];const variantClassNames={BNbfbktEW:\"framer-v-a1vcmy\",cpSLXUwzV:\"framer-v-1u7y9t1\",EjrLISIop:\"framer-v-q71sdo\",Ez6AL2vTh:\"framer-v-1oza8zk\",m9F2Vlw0F:\"framer-v-1gpai48\",RvL4_kC86:\"framer-v-vjq1l7\",uD5j7l2Ki:\"framer-v-im10yw\",uhSfrryf7:\"framer-v-n0oe9p\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants===null||variants===void 0?void 0:variants.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transitions={default:{delay:0,duration:.15,ease:[0,0,1,1],type:\"tween\"}};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value!==null&&value!==void 0?value:config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/ _jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const humanReadableVariantMap={\"Black \u2013\\xa0Arrow\":\"m9F2Vlw0F\",\"White - Arrow back\":\"uD5j7l2Ki\",\"White \u2013\\xa0Arrow\":\"EjrLISIop\",\"Yellow - Arrow\":\"uhSfrryf7\",Back:\"cpSLXUwzV\",Black:\"BNbfbktEW\",White:\"Ez6AL2vTh\",Yellow:\"RvL4_kC86\"};const getProps=({height,id,width,...props})=>{var _variant,ref;return{...props,variant:(ref=(_variant=humanReadableVariantMap[props.variant])!==null&&_variant!==void 0?_variant:props.variant)!==null&&ref!==void 0?ref:\"Ez6AL2vTh\"};};const createLayoutDependency=(props,variants)=>variants.join(\"-\")+props.layoutDependency;const Component=/*#__PURE__*/ React.forwardRef(function(props,ref){const{activeLocale}=useLocaleInfo();const{style,className,layoutId,variant,...restProps}=getProps(props);const{baseVariant,classNames,gestureVariant,setGestureState,setVariant,transition,variants}=useVariantState({cycleOrder,defaultVariant:\"Ez6AL2vTh\",transitions,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const defaultLayoutId=React.useId();return /*#__PURE__*/ _jsx(LayoutGroup,{id:layoutId!==null&&layoutId!==void 0?layoutId:defaultLayoutId,children:/*#__PURE__*/ _jsx(motion.div,{initial:variant,animate:variants,onHoverStart:()=>setGestureState({isHovered:true}),onHoverEnd:()=>setGestureState({isHovered:false}),onTapStart:()=>setGestureState({isPressed:true}),onTap:()=>setGestureState({isPressed:false}),onTapCancel:()=>setGestureState({isPressed:false}),className:cx(\"framer-z1hiy\",classNames),style:{display:\"contents\"},children:/*#__PURE__*/ _jsx(Transition,{value:transition,children:/*#__PURE__*/ _jsxs(motion.div,{...restProps,className:cx(\"framer-1oza8zk\",className),\"data-framer-name\":\"White\",layoutDependency:layoutDependency,layoutId:\"Ez6AL2vTh\",ref:ref,style:{rotate:0,...style},variants:{cpSLXUwzV:{rotate:-180},uD5j7l2Ki:{rotate:-180}},...addPropertyOverrides({BNbfbktEW:{\"data-framer-name\":\"Black\"},cpSLXUwzV:{\"data-framer-name\":\"Back\"},EjrLISIop:{\"data-framer-name\":\"White \u2013\\xa0Arrow\"},m9F2Vlw0F:{\"data-framer-name\":\"Black \u2013\\xa0Arrow\"},RvL4_kC86:{\"data-framer-name\":\"Yellow\"},uD5j7l2Ki:{\"data-framer-name\":\"White - Arrow back\"},uhSfrryf7:{\"data-framer-name\":\"Yellow - Arrow\"}},baseVariant,gestureVariant),children:[/*#__PURE__*/ _jsx(SVG,{className:\"framer-158u9qp\",\"data-framer-name\":\"Chevron\",layout:\"position\",layoutDependency:layoutDependency,layoutId:\"z6fD6aidZ\",opacity:1,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 14 20\"><path d=\"M 5.25 5 L 10.25 10 L 5.25 15\" fill=\"transparent\" stroke-width=\"1.5\" stroke=\"hsl(0, 0%, 100%)\"></path></svg>',svgContentId:2638348318,withExternalLayout:true,...addPropertyOverrides({BNbfbktEW:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 14 20\"><path d=\"M 5.25 5 L 10.25 10 L 5.25 15\" fill=\"transparent\" stroke-width=\"1.5\" stroke=\"hsl(0, 0%, 0%)\"></path></svg>',svgContentId:3997864186},m9F2Vlw0F:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 14 20\"><path d=\"M 5.25 5 L 10.25 10 L 5.25 15\" fill=\"transparent\" stroke-width=\"1.5\" stroke=\"hsl(0, 0%, 0%)\"></path></svg>',svgContentId:3997864186},RvL4_kC86:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 14 20\"><path d=\"M 5.25 5 L 10.25 10 L 5.25 15\" fill=\"transparent\" stroke-width=\"1.5\" stroke=\"var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95)) /* {&quot;name&quot;:&quot;Primary&quot;} */\"></path></svg>',svgContentId:2900247283},uD5j7l2Ki:{svgContentId:1869636214},uhSfrryf7:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 14 20\"><path d=\"M 5.25 5 L 10.25 10 L 5.25 15\" fill=\"transparent\" stroke-width=\"1.5\" stroke=\"var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95)) /* {&quot;name&quot;:&quot;Primary&quot;} */\"></path></svg>',svgContentId:2900247283}},baseVariant,gestureVariant)}),/*#__PURE__*/ _jsx(motion.div,{className:\"framer-tarwdc\",\"data-framer-name\":\"Tail Container\",layoutDependency:layoutDependency,layoutId:\"tvqjBoQu5\",style:{opacity:0},variants:{EjrLISIop:{opacity:1},m9F2Vlw0F:{opacity:1},uD5j7l2Ki:{opacity:1},uhSfrryf7:{opacity:1}},children:/*#__PURE__*/ _jsx(SVG,{className:\"framer-15ab526\",\"data-framer-name\":\"Tail\",layout:\"position\",layoutDependency:layoutDependency,layoutId:\"VCSuC_dZ1\",opacity:1,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 14 20\"><path d=\"M 11.25 10 L 1 10\" fill=\"transparent\" stroke-width=\"1.5\" stroke=\"hsl(0, 0%, 100%)\"></path></svg>',svgContentId:2121449181,withExternalLayout:true,...addPropertyOverrides({BNbfbktEW:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 14 20\"><path d=\"M 11.25 10 L 1 10\" fill=\"transparent\" stroke-width=\"1.5\" stroke=\"hsl(0, 0%, 0%)\"></path></svg>',svgContentId:653454948},EjrLISIop:{svgContentId:3661122931},m9F2Vlw0F:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 14 20\"><path d=\"M 11.25 10 L 1 10\" fill=\"transparent\" stroke-width=\"1.5\" stroke=\"hsl(0, 0%, 0%)\"></path></svg>',svgContentId:2247734787},RvL4_kC86:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 14 20\"><path d=\"M 11.25 10 L 1 10\" fill=\"transparent\" stroke-width=\"1.5\" stroke=\"var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95)) /* {&quot;name&quot;:&quot;Primary&quot;} */\"></path></svg>',svgContentId:1844754104},uD5j7l2Ki:{svgContentId:3661122931},uhSfrryf7:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 14 20\"><path d=\"M 11.25 10 L 1 10\" fill=\"transparent\" stroke-width=\"1.5\" stroke=\"var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95)) /* {&quot;name&quot;:&quot;Primary&quot;} */\"></path></svg>',svgContentId:2897311639}},baseVariant,gestureVariant)})})]})})})});});const css=['.framer-z1hiy [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; pointer-events: none; }',\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-z1hiy .framer-c9dzdp { display: block; }\",\".framer-z1hiy .framer-1oza8zk { height: 20px; overflow: visible; position: relative; width: 10px; }\",\".framer-z1hiy .framer-158u9qp { flex: none; height: 20px; position: absolute; right: -4px; top: calc(50.00000000000002% - 20px / 2); width: 14px; }\",\".framer-z1hiy .framer-tarwdc { bottom: 0px; flex: none; overflow: hidden; position: absolute; right: 2px; top: 0px; width: 1px; }\",\".framer-z1hiy .framer-15ab526 { flex: none; height: 20px; position: absolute; right: -6px; top: calc(50.00000000000002% - 20px / 2); width: 14px; }\",\".framer-z1hiy.framer-v-q71sdo .framer-tarwdc, .framer-z1hiy.framer-v-1gpai48 .framer-tarwdc, .framer-z1hiy.framer-v-n0oe9p .framer-tarwdc { right: 0px; width: 10px; }\",\".framer-z1hiy.framer-v-q71sdo .framer-15ab526, .framer-z1hiy.framer-v-1gpai48 .framer-15ab526, .framer-z1hiy.framer-v-n0oe9p .framer-15ab526, .framer-z1hiy.framer-v-im10yw .framer-15ab526 { right: -4px; }\",\".framer-z1hiy.framer-v-im10yw .framer-158u9qp { right: -6px; }\",\".framer-z1hiy.framer-v-im10yw .framer-tarwdc { right: -2px; width: 10px; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 20\n * @framerIntrinsicWidth 10\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"BNbfbktEW\":{\"layout\":[\"fixed\",\"fixed\"]},\"EjrLISIop\":{\"layout\":[\"fixed\",\"fixed\"]},\"m9F2Vlw0F\":{\"layout\":[\"fixed\",\"fixed\"]},\"RvL4_kC86\":{\"layout\":[\"fixed\",\"fixed\"]},\"uhSfrryf7\":{\"layout\":[\"fixed\",\"fixed\"]},\"uD5j7l2Ki\":{\"layout\":[\"fixed\",\"fixed\"]},\"cpSLXUwzV\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n */ const FramerpRemd4fMu=withCSS(Component,css,\"framer-z1hiy\");export default FramerpRemd4fMu;FramerpRemd4fMu.displayName=\"Graphics / Button Arrow\";FramerpRemd4fMu.defaultProps={height:20,width:10};addPropertyControls(FramerpRemd4fMu,{variant:{options:[\"Ez6AL2vTh\",\"BNbfbktEW\",\"EjrLISIop\",\"m9F2Vlw0F\",\"RvL4_kC86\",\"uhSfrryf7\",\"uD5j7l2Ki\",\"cpSLXUwzV\"],optionTitles:[\"White\",\"Black\",\"White \u2013\\xa0Arrow\",\"Black \u2013\\xa0Arrow\",\"Yellow\",\"Yellow - Arrow\",\"White - Arrow back\",\"Back\"],title:\"Variant\",type:ControlType.Enum}});addFonts(FramerpRemd4fMu,[]);\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerpRemd4fMu\",\"slots\":[],\"annotations\":{\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"BNbfbktEW\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"EjrLISIop\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"m9F2Vlw0F\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"RvL4_kC86\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"uhSfrryf7\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"uD5j7l2Ki\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"cpSLXUwzV\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"20\",\"framerIntrinsicWidth\":\"10\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./pRemd4fMu.map", "// Generated by Framer (508aa67)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,getFontsFromSharedStyle,Link,RichText,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import*as sharedStyle from\"https://framerusercontent.com/modules/iSeRdQLTVmRrhWISCw0l/Sl9HQFOp8SMY2doDl9GW/PihfgTAR5.js\";import GraphicsButtonArrow from\"https://framerusercontent.com/modules/xPjbsMR6WyZIrRxgwZO7/QXnq5g7qwTofC1QjjW61/pRemd4fMu.js\";const GraphicsButtonArrowFonts=getFonts(GraphicsButtonArrow);const cycleOrder=[\"yAQHjAcYe\",\"L96ME5D7N\"];const serializationHash=\"framer-Wjs3k\";const variantClassNames={L96ME5D7N:\"framer-v-ws83y8\",yAQHjAcYe:\"framer-v-1kqpdzw\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants===null||variants===void 0?void 0:variants.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const isSet=value=>{return value!==undefined&&value!==null&&value!==\"\";};const negate=value=>{return!value;};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value!==null&&value!==void 0?value:config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion(React.Fragment);const humanReadableVariantMap={Default:\"yAQHjAcYe\",Hover:\"L96ME5D7N\"};const getProps=({height,id,link,title,width,...props})=>{var _ref,_humanReadableVariantMap_props_variant,_ref1;return{...props,h0JjnntIV:link!==null&&link!==void 0?link:props.h0JjnntIV,kE6x8JtXN:(_ref=title!==null&&title!==void 0?title:props.kE6x8JtXN)!==null&&_ref!==void 0?_ref:\"Documentation\",variant:(_ref1=(_humanReadableVariantMap_props_variant=humanReadableVariantMap[props.variant])!==null&&_humanReadableVariantMap_props_variant!==void 0?_humanReadableVariantMap_props_variant:props.variant)!==null&&_ref1!==void 0?_ref1:\"yAQHjAcYe\"};};const createLayoutDependency=(props,variants)=>variants.join(\"-\")+props.layoutDependency;const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,kE6x8JtXN,h0JjnntIV,...restProps}=getProps(props);const{baseVariant,classNames,gestureVariant,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"yAQHjAcYe\",variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onMouseEnter1ncm4fo=activeVariantCallback(async(...args)=>{setVariant(\"L96ME5D7N\");});const onMouseLeave15iq2ks=activeVariantCallback(async(...args)=>{setVariant(\"yAQHjAcYe\");});const ref1=React.useRef(null);const visible=isSet(h0JjnntIV);const visible1=negate(isSet(h0JjnntIV));const defaultLayoutId=React.useId();const sharedStyleClassNames=[sharedStyle.className];const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId!==null&&layoutId!==void 0?layoutId:defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,className:cx(serializationHash,...sharedStyleClassNames,\"framer-1kqpdzw\",className,classNames),\"data-framer-name\":\"Default\",layoutDependency:layoutDependency,layoutId:\"yAQHjAcYe\",onHoverEnd:()=>setGestureState({isHovered:false}),onHoverStart:()=>setGestureState({isHovered:true}),onTap:()=>setGestureState({isPressed:false}),onTapCancel:()=>setGestureState({isPressed:false}),onTapStart:()=>setGestureState({isPressed:true}),ref:ref!==null&&ref!==void 0?ref:ref1,style:{borderBottomLeftRadius:8,borderBottomRightRadius:8,borderTopLeftRadius:8,borderTopRightRadius:8,...style},...addPropertyOverrides({L96ME5D7N:{\"data-framer-name\":\"Hover\"}},baseVariant,gestureVariant),children:[visible&&/*#__PURE__*/_jsx(Link,{href:h0JjnntIV,openInNewTab:false,children:/*#__PURE__*/_jsxs(motion.a,{className:\"framer-177kiot framer-1cjl71f\",\"data-framer-name\":\"Button\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"cXlpDK2Ok\",onMouseEnter:onMouseEnter1ncm4fo,...addPropertyOverrides({L96ME5D7N:{onMouseEnter:undefined,onMouseLeave:onMouseLeave15iq2ks}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-137gzas\",\"data-styles-preset\":\"PihfgTAR5\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-1891448d-bc9d-449f-8f82-d845951444bc, rgba(240, 240, 255, 0.6)))\"},children:\"Documentation\"})}),className:\"framer-1swg7cl\",\"data-framer-name\":\"Title\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"cd4d9QoEo\",style:{\"--extracted-r6o4lv\":\"var(--token-1891448d-bc9d-449f-8f82-d845951444bc, rgba(240, 240, 255, 0.6))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:kE6x8JtXN,variants:{L96ME5D7N:{\"--extracted-r6o4lv\":\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\"}},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({L96ME5D7N:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-137gzas\",\"data-styles-preset\":\"PihfgTAR5\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255)))\"},children:\"Documentation\"})})}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-4va452-container\",layoutDependency:layoutDependency,layoutId:\"QYyA3pxBr-container\",style:{opacity:.6},variants:{L96ME5D7N:{opacity:1}},children:/*#__PURE__*/_jsx(GraphicsButtonArrow,{height:\"100%\",id:\"QYyA3pxBr\",layoutId:\"QYyA3pxBr\",style:{height:\"100%\",width:\"100%\"},variant:\"Ez6AL2vTh\",width:\"100%\",...addPropertyOverrides({L96ME5D7N:{variant:\"EjrLISIop\"}},baseVariant,gestureVariant)})})})]})}),visible1&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-a7m17z\",\"data-framer-name\":\"Text Only\",layoutDependency:layoutDependency,layoutId:\"JFa2DYQI9\",children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-137gzas\",\"data-styles-preset\":\"PihfgTAR5\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-1891448d-bc9d-449f-8f82-d845951444bc, rgba(240, 240, 255, 0.6)))\"},children:\"Documentation\"})}),className:\"framer-121cc46\",\"data-framer-name\":\"Title\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"Nse3Z4lPP\",style:{\"--extracted-r6o4lv\":\"var(--token-1891448d-bc9d-449f-8f82-d845951444bc, rgba(240, 240, 255, 0.6))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:kE6x8JtXN,verticalAlignment:\"top\",withExternalLayout:true})})]})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-Wjs3k.framer-1cjl71f, .framer-Wjs3k .framer-1cjl71f { display: block; }\",\".framer-Wjs3k.framer-1kqpdzw { align-content: center; align-items: center; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; overflow: visible; padding: 4px 0px 4px 0px; position: relative; width: 400px; }\",\".framer-Wjs3k .framer-177kiot { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 4px; height: min-content; justify-content: center; overflow: visible; padding: 8px 0px 8px 0px; position: relative; text-decoration: none; width: min-content; }\",\".framer-Wjs3k .framer-1swg7cl, .framer-Wjs3k .framer-121cc46 { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-Wjs3k .framer-4va452-container { flex: none; height: 20px; position: relative; width: 10px; }\",\".framer-Wjs3k .framer-a7m17z { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 4px; height: 36px; justify-content: center; overflow: visible; padding: 0px; position: relative; width: min-content; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-Wjs3k.framer-1kqpdzw, .framer-Wjs3k .framer-177kiot, .framer-Wjs3k .framer-a7m17z { gap: 0px; } .framer-Wjs3k.framer-1kqpdzw > * { margin: 0px; margin-left: calc(0px / 2); margin-right: calc(0px / 2); } .framer-Wjs3k.framer-1kqpdzw > :first-child, .framer-Wjs3k .framer-177kiot > :first-child, .framer-Wjs3k .framer-a7m17z > :first-child { margin-left: 0px; } .framer-Wjs3k.framer-1kqpdzw > :last-child, .framer-Wjs3k .framer-177kiot > :last-child, .framer-Wjs3k .framer-a7m17z > :last-child { margin-right: 0px; } .framer-Wjs3k .framer-177kiot > *, .framer-Wjs3k .framer-a7m17z > * { margin: 0px; margin-left: calc(4px / 2); margin-right: calc(4px / 2); } }\",...sharedStyle.css];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 43\n * @framerIntrinsicWidth 400\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]},\"L96ME5D7N\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerVariables {\"kE6x8JtXN\":\"title\",\"h0JjnntIV\":\"link\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramermnItz6A8F=withCSS(Component,css,\"framer-Wjs3k\");export default FramermnItz6A8F;FramermnItz6A8F.displayName=\"Nav / Tray \u2013\\xa0Title\";FramermnItz6A8F.defaultProps={height:43,width:400};addPropertyControls(FramermnItz6A8F,{variant:{options:[\"yAQHjAcYe\",\"L96ME5D7N\"],optionTitles:[\"Default\",\"Hover\"],title:\"Variant\",type:ControlType.Enum},kE6x8JtXN:{defaultValue:\"Documentation\",displayTextArea:false,title:\"Title\",type:ControlType.String},h0JjnntIV:{title:\"Link\",type:ControlType.Link}});addFonts(FramermnItz6A8F,[{explicitInter:true,fonts:[{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://app.framerstatic.com/Inter-Regular.cyrillic-ext-CFTLRB35.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://app.framerstatic.com/Inter-Regular.cyrillic-KKLZBALH.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+1F00-1FFF\",url:\"https://app.framerstatic.com/Inter-Regular.greek-ext-ULEBLIFV.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0370-03FF\",url:\"https://app.framerstatic.com/Inter-Regular.greek-IRHSNFQB.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://app.framerstatic.com/Inter-Regular.latin-ext-VZDUGU3Q.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://app.framerstatic.com/Inter-Regular.latin-JLQMKCHE.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://app.framerstatic.com/Inter-Regular.vietnamese-QK7VSWXK.woff2\",weight:\"400\"}]},...GraphicsButtonArrowFonts,...getFontsFromSharedStyle(sharedStyle.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramermnItz6A8F\",\"slots\":[],\"annotations\":{\"framerVariables\":\"{\\\"kE6x8JtXN\\\":\\\"title\\\",\\\"h0JjnntIV\\\":\\\"link\\\"}\",\"framerContractVersion\":\"1\",\"framerDisplayContentsDiv\":\"false\",\"framerIntrinsicWidth\":\"400\",\"framerImmutableVariables\":\"true\",\"framerIntrinsicHeight\":\"43\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"L96ME5D7N\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerComponentViewportWidth\":\"true\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./mnItz6A8F.map", "const clamp=(t,s)=>e=>Math.max(Math.min(e,s),t);const sanitize=t=>t%1?Number(t.toFixed(5)):t;const t=/(-)?([\\d]*\\.?[\\d])+/g;const s=/(#[0-9a-f]{6}|#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\\((-?[\\d\\.]+%?[,\\s]+){2,3}\\s*\\/*\\s*[\\d\\.]+%?\\))/gi;const e=/^(#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\\((-?[\\d\\.]+%?[,\\s]+){2,3}\\s*\\/*\\s*[\\d\\.]+%?\\))$/i;function isString(t){return\"string\"===typeof t}const r={test:t=>\"number\"===typeof t,parse:parseFloat,transform:t=>t};const n=Object.assign(Object.assign({},r),{transform:clamp(0,1)});const a=Object.assign(Object.assign({},r),{default:1});const createUnitType=t=>({test:s=>isString(s)&&s.endsWith(t)&&1===s.split(\" \").length,parse:parseFloat,transform:s=>`${s}${t}`});const o=createUnitType(\"deg\");const c=createUnitType(\"%\");const l=createUnitType(\"px\");const i=createUnitType(\"vh\");const p=createUnitType(\"vw\");const u=Object.assign(Object.assign({},c),{parse:t=>c.parse(t)/100,transform:t=>c.transform(100*t)});const isColorString=(t,s)=>r=>Boolean(isString(r)&&e.test(r)&&r.startsWith(t)||s&&Object.prototype.hasOwnProperty.call(r,s));const splitColor=(s,e,r)=>n=>{if(!isString(n))return n;const[a,o,c,l]=n.match(t);return{[s]:parseFloat(a),[e]:parseFloat(o),[r]:parseFloat(c),alpha:void 0!==l?parseFloat(l):1}};const f={test:isColorString(\"hsl\",\"hue\"),parse:splitColor(\"hue\",\"saturation\",\"lightness\"),transform:({hue:t,saturation:s,lightness:e,alpha:r=1})=>\"hsla(\"+Math.round(t)+\", \"+c.transform(sanitize(s))+\", \"+c.transform(sanitize(e))+\", \"+sanitize(n.transform(r))+\")\"};const m=clamp(0,255);const g=Object.assign(Object.assign({},r),{transform:t=>Math.round(m(t))});const h={test:isColorString(\"rgb\",\"red\"),parse:splitColor(\"red\",\"green\",\"blue\"),transform:({red:t,green:s,blue:e,alpha:r=1})=>\"rgba(\"+g.transform(t)+\", \"+g.transform(s)+\", \"+g.transform(e)+\", \"+sanitize(n.transform(r))+\")\"};function parseHex(t){let s=\"\";let e=\"\";let r=\"\";let n=\"\";if(t.length>5){s=t.substr(1,2);e=t.substr(3,2);r=t.substr(5,2);n=t.substr(7,2)}else{s=t.substr(1,1);e=t.substr(2,1);r=t.substr(3,1);n=t.substr(4,1);s+=s;e+=e;r+=r;n+=n}return{red:parseInt(s,16),green:parseInt(e,16),blue:parseInt(r,16),alpha:n?parseInt(n,16)/255:1}}const b={test:isColorString(\"#\"),parse:parseHex,transform:h.transform};const d={test:t=>h.test(t)||b.test(t)||f.test(t),parse:t=>h.test(t)?h.parse(t):f.test(t)?f.parse(t):b.parse(t),transform:t=>isString(t)?t:t.hasOwnProperty(\"red\")?h.transform(t):f.transform(t)};const v=\"${c}\";const y=\"${n}\";function test(e){var r,n,a,o;return isNaN(e)&&isString(e)&&(null!==(n=null===(r=e.match(t))||void 0===r?void 0:r.length)&&void 0!==n?n:0)+(null!==(o=null===(a=e.match(s))||void 0===a?void 0:a.length)&&void 0!==o?o:0)>0}function analyse(e){\"number\"===typeof e&&(e=`${e}`);const n=[];let a=0;const o=e.match(s);if(o){a=o.length;e=e.replace(s,v);n.push(...o.map(d.parse))}const c=e.match(t);if(c){e=e.replace(t,y);n.push(...c.map(r.parse))}return{values:n,numColors:a,tokenised:e}}function parse(t){return analyse(t).values}function createTransformer(t){const{values:s,numColors:e,tokenised:r}=analyse(t);const n=s.length;return t=>{let s=r;for(let r=0;r<n;r++)s=s.replace(r<e?v:y,r<e?d.transform(t[r]):sanitize(t[r]));return s}}const convertNumbersToZero=t=>\"number\"===typeof t?0:t;function getAnimatableNone(t){const s=parse(t);const e=createTransformer(t);return e(s.map(convertNumbersToZero))}const O={test:test,parse:parse,createTransformer:createTransformer,getAnimatableNone:getAnimatableNone};const j=new Set([\"brightness\",\"contrast\",\"saturate\",\"opacity\"]);function applyDefaultFilter(s){let[e,r]=s.slice(0,-1).split(\"(\");if(\"drop-shadow\"===e)return s;const[n]=r.match(t)||[];if(!n)return s;const a=r.replace(n,\"\");let o=j.has(e)?1:0;n!==r&&(o*=100);return e+\"(\"+o+a+\")\"}const F=/([a-z-]*)\\(.*?\\)/g;const N=Object.assign(Object.assign({},O),{getAnimatableNone:t=>{const s=t.match(F);return s?s.map(applyDefaultFilter).join(\" \"):t}});export{n as alpha,d as color,O as complex,o as degrees,N as filter,b as hex,f as hsla,r as number,c as percent,u as progressPercentage,l as px,g as rgbUnit,h as rgba,a as scale,i as vh,p as vw};\n\n//# sourceMappingURL=index.mjs.map", "const e=1/60*1e3;const t=\"undefined\"!==typeof performance?()=>performance.now():()=>Date.now();const n=\"undefined\"!==typeof window?e=>window.requestAnimationFrame(e):n=>setTimeout((()=>n(t())),e);function createRenderStep(e){let t=[];let n=[];let s=0;let r=false;let c=false;const o=new WeakSet;const a={schedule:(e,c=false,a=false)=>{const l=a&&r;const f=l?t:n;c&&o.add(e);if(-1===f.indexOf(e)){f.push(e);l&&r&&(s=t.length)}return e},cancel:e=>{const t=n.indexOf(e);-1!==t&&n.splice(t,1);o.delete(e)},process:l=>{if(r)c=true;else{r=true;[t,n]=[n,t];n.length=0;s=t.length;if(s)for(let n=0;n<s;n++){const s=t[n];s(l);if(o.has(s)){a.schedule(s);e()}}r=false;if(c){c=false;a.process(l)}}}};return a}const s=40;let r=true;let c=false;let o=false;const a={delta:0,timestamp:0};const l=[\"read\",\"update\",\"preRender\",\"render\",\"postRender\"];const f=l.reduce(((e,t)=>{e[t]=createRenderStep((()=>c=true));return e}),{});const u=l.reduce(((e,t)=>{const n=f[t];e[t]=(e,t=false,s=false)=>{c||startLoop();return n.schedule(e,t,s)};return e}),{});const d=l.reduce(((e,t)=>{e[t]=f[t].cancel;return e}),{});const i=l.reduce(((e,t)=>{e[t]=()=>f[t].process(a);return e}),{});const processStep=e=>f[e].process(a);const processFrame=t=>{c=false;a.delta=r?e:Math.max(Math.min(t-a.timestamp,s),1);a.timestamp=t;o=true;l.forEach(processStep);o=false;if(c){r=false;n(processFrame)}};const startLoop=()=>{c=true;r=true;o||n(processFrame)};const getFrameData=()=>a;export{d as cancelSync,u as default,i as flushSync,getFrameData};\n\n//# sourceMappingURL=index.mjs.map", "import{__rest as t}from\"tslib\";import{warning as e,invariant as n}from\"hey-listen\";import{hex as o,rgba as s,hsla as r,color as i,complex as u}from\"style-value-types\";import l,{cancelSync as p,getFrameData as f}from\"framesync\";const clamp=(t,e,n)=>Math.min(Math.max(n,t),e);const d=.001;const h=.01;const m=10;const y=.05;const g=1;function findSpring({duration:t=800,bounce:n=.25,velocity:o=0,mass:s=1}){let r;let i;e(t<=1e3*m,\"Spring duration must be 10 seconds or less\");let u=1-n;u=clamp(y,g,u);t=clamp(h,m,t/1e3);if(u<1){r=e=>{const n=e*u;const s=n*t;const r=n-o;const i=calcAngularFreq(e,u);const l=Math.exp(-s);return d-r/i*l};i=e=>{const n=e*u;const s=n*t;const i=s*o+o;const l=Math.pow(u,2)*Math.pow(e,2)*t;const p=Math.exp(-s);const f=calcAngularFreq(Math.pow(e,2),u);const h=-r(e)+d>0?-1:1;return h*((i-l)*p)/f}}else{r=e=>{const n=Math.exp(-e*t);const s=(e-o)*t+1;return n*s-d};i=e=>{const n=Math.exp(-e*t);const s=t*t*(o-e);return n*s}}const l=5/t;const p=approximateRoot(r,i,l);t*=1e3;if(isNaN(p))return{stiffness:100,damping:10,duration:t};{const e=Math.pow(p,2)*s;return{stiffness:e,damping:2*u*Math.sqrt(s*e),duration:t}}}const v=12;function approximateRoot(t,e,n){let o=n;for(let n=1;n<v;n++)o-=t(o)/e(o);return o}function calcAngularFreq(t,e){return t*Math.sqrt(1-e*e)}const M=[\"duration\",\"bounce\"];const x=[\"stiffness\",\"damping\",\"mass\"];function isSpringType(t,e){return e.some((e=>void 0!==t[e]))}function getSpringOptions(t){let e=Object.assign({velocity:0,stiffness:100,damping:10,mass:1,isResolvedFromDuration:false},t);if(!isSpringType(t,x)&&isSpringType(t,M)){const n=findSpring(t);e=Object.assign(Object.assign(Object.assign({},e),n),{velocity:0,mass:1});e.isResolvedFromDuration=true}return e}function spring(e){var{from:n=0,to:o=1,restSpeed:s=2,restDelta:r}=e,i=t(e,[\"from\",\"to\",\"restSpeed\",\"restDelta\"]);const u={done:false,value:n};let{stiffness:l,damping:p,mass:f,velocity:d,duration:h,isResolvedFromDuration:m}=getSpringOptions(i);let y=zero;let g=zero;function createSpring(){const t=d?-d/1e3:0;const e=o-n;const s=p/(2*Math.sqrt(l*f));const i=Math.sqrt(l/f)/1e3;void 0===r&&(r=Math.min(Math.abs(o-n)/100,.4));if(s<1){const n=calcAngularFreq(i,s);y=r=>{const u=Math.exp(-s*i*r);return o-u*((t+s*i*e)/n*Math.sin(n*r)+e*Math.cos(n*r))};g=o=>{const r=Math.exp(-s*i*o);return s*i*r*(Math.sin(n*o)*(t+s*i*e)/n+e*Math.cos(n*o))-r*(Math.cos(n*o)*(t+s*i*e)-n*e*Math.sin(n*o))}}else if(1===s)y=n=>o-Math.exp(-i*n)*(e+(t+i*e)*n);else{const n=i*Math.sqrt(s*s-1);y=r=>{const u=Math.exp(-s*i*r);const l=Math.min(n*r,300);return o-u*((t+s*i*e)*Math.sinh(l)+n*e*Math.cosh(l))/n}}}createSpring();return{next:t=>{const e=y(t);if(m)u.done=t>=h;else{const n=1e3*g(t);const i=Math.abs(n)<=s;const l=Math.abs(o-e)<=r;u.done=i&&l}u.value=u.done?o:e;return u},flipTarget:()=>{d=-d;[n,o]=[o,n];createSpring()}}}spring.needsInterpolation=(t,e)=>\"string\"===typeof t||\"string\"===typeof e;const zero=t=>0;const progress=(t,e,n)=>{const o=e-t;return 0===o?1:(n-t)/o};const mix=(t,e,n)=>-n*t+n*e+t;function hueToRgb(t,e,n){n<0&&(n+=1);n>1&&(n-=1);return n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+(e-t)*(2/3-n)*6:t}function hslaToRgba({hue:t,saturation:e,lightness:n,alpha:o}){t/=360;e/=100;n/=100;let s=0;let r=0;let i=0;if(e){const o=n<.5?n*(1+e):n+e-n*e;const u=2*n-o;s=hueToRgb(u,o,t+1/3);r=hueToRgb(u,o,t);i=hueToRgb(u,o,t-1/3)}else s=r=i=n;return{red:Math.round(255*s),green:Math.round(255*r),blue:Math.round(255*i),alpha:o}}const mixLinearColor=(t,e,n)=>{const o=t*t;const s=e*e;return Math.sqrt(Math.max(0,n*(s-o)+o))};const S=[o,s,r];const getColorType=t=>S.find((e=>e.test(t)));const notAnimatable=t=>`'${t}' is not an animatable color. Use the equivalent color code instead.`;const mixColor=(t,e)=>{let o=getColorType(t);let i=getColorType(e);n(!!o,notAnimatable(t));n(!!i,notAnimatable(e));let u=o.parse(t);let l=i.parse(e);if(o===r){u=hslaToRgba(u);o=s}if(i===r){l=hslaToRgba(l);i=s}const p=Object.assign({},u);return t=>{for(const e in p)\"alpha\"!==e&&(p[e]=mixLinearColor(u[e],l[e],t));p.alpha=mix(u.alpha,l.alpha,t);return o.transform(p)}};const O={x:0,y:0,z:0};const isNum=t=>\"number\"===typeof t;const combineFunctions=(t,e)=>n=>e(t(n));const pipe=(...t)=>t.reduce(combineFunctions);function getMixer(t,e){return isNum(t)?n=>mix(t,e,n):i.test(t)?mixColor(t,e):mixComplex(t,e)}const mixArray=(t,e)=>{const n=[...t];const o=n.length;const s=t.map(((t,n)=>getMixer(t,e[n])));return t=>{for(let e=0;e<o;e++)n[e]=s[e](t);return n}};const mixObject=(t,e)=>{const n=Object.assign(Object.assign({},t),e);const o={};for(const s in n)void 0!==t[s]&&void 0!==e[s]&&(o[s]=getMixer(t[s],e[s]));return t=>{for(const e in o)n[e]=o[e](t);return n}};function analyse(t){const e=u.parse(t);const n=e.length;let o=0;let s=0;let r=0;for(let t=0;t<n;t++)o||\"number\"===typeof e[t]?o++:void 0!==e[t].hue?r++:s++;return{parsed:e,numNumbers:o,numRGB:s,numHSL:r}}const mixComplex=(t,n)=>{const o=u.createTransformer(n);const s=analyse(t);const r=analyse(n);const i=s.numHSL===r.numHSL&&s.numRGB===r.numRGB&&s.numNumbers>=r.numNumbers;if(i)return pipe(mixArray(s.parsed,r.parsed),o);e(true,`Complex values '${t}' and '${n}' too different to mix. Ensure all colors are of the same type, and that each contains the same quantity of number and color values. Falling back to instant transition.`);return e=>`${e>0?n:t}`};const mixNumber=(t,e)=>n=>mix(t,e,n);function detectMixerFactory(t){return\"number\"===typeof t?mixNumber:\"string\"===typeof t?i.test(t)?mixColor:mixComplex:Array.isArray(t)?mixArray:\"object\"===typeof t?mixObject:void 0}function createMixers(t,e,n){const o=[];const s=n||detectMixerFactory(t[0]);const r=t.length-1;for(let n=0;n<r;n++){let r=s(t[n],t[n+1]);if(e){const t=Array.isArray(e)?e[n]:e;r=pipe(t,r)}o.push(r)}return o}function fastInterpolate([t,e],[n]){return o=>n(progress(t,e,o))}function slowInterpolate(t,e){const n=t.length;const o=n-1;return s=>{let r=0;let i=false;if(s<=t[0])i=true;else if(s>=t[o]){r=o-1;i=true}if(!i){let e=1;for(;e<n;e++)if(t[e]>s||e===o)break;r=e-1}const u=progress(t[r],t[r+1],s);return e[r](u)}}function interpolate(t,e,{clamp:o=true,ease:s,mixer:r}={}){const i=t.length;n(i===e.length,\"Both input and output ranges must be the same length\");n(!s||!Array.isArray(s)||s.length===i-1,\"Array of easing functions must be of length `input.length - 1`, as it applies to the transitions **between** the defined values.\");if(t[0]>t[i-1]){t=[].concat(t);e=[].concat(e);t.reverse();e.reverse()}const u=createMixers(e,s,r);const l=2===i?fastInterpolate(t,u):slowInterpolate(t,u);return o?e=>l(clamp(t[0],t[i-1],e)):l}const reverseEasing=t=>e=>1-t(1-e);const mirrorEasing=t=>e=>e<=.5?t(2*e)/2:(2-t(2*(1-e)))/2;const createExpoIn=t=>e=>Math.pow(e,t);const createBackIn=t=>e=>e*e*((t+1)*e-t);const createAnticipate=t=>{const e=createBackIn(t);return t=>(t*=2)<1?.5*e(t):.5*(2-Math.pow(2,-10*(t-1)))};const T=1.525;const w=4/11;const A=8/11;const R=.9;const linear=t=>t;const F=createExpoIn(2);const D=reverseEasing(F);const j=mirrorEasing(F);const circIn=t=>1-Math.sin(Math.acos(t));const q=reverseEasing(circIn);const I=mirrorEasing(q);const P=createBackIn(T);const k=reverseEasing(P);const E=mirrorEasing(P);const B=createAnticipate(T);const C=4356/361;const N=35442/1805;const U=16061/1805;const bounceOut=t=>{if(1===t||0===t)return t;const e=t*t;return t<w?7.5625*e:t<A?9.075*e-9.9*t+3.4:t<R?C*e-N*t+U:10.8*t*t-20.52*t+10.72};const z=reverseEasing(bounceOut);const bounceInOut=t=>t<.5?.5*(1-bounceOut(1-2*t)):.5*bounceOut(2*t-1)+.5;function defaultEasing(t,e){return t.map((()=>e||j)).splice(0,t.length-1)}function defaultOffset(t){const e=t.length;return t.map(((t,n)=>0!==n?n/(e-1):0))}function convertOffsetToTimes(t,e){return t.map((t=>t*e))}function keyframes({from:t=0,to:e=1,ease:n,offset:o,duration:s=300}){const r={done:false,value:t};const i=Array.isArray(e)?e:[t,e];const u=convertOffsetToTimes(o&&o.length===i.length?o:defaultOffset(i),s);function createInterpolator(){return interpolate(u,i,{ease:Array.isArray(n)?n:defaultEasing(i,n)})}let l=createInterpolator();return{next:t=>{r.value=l(t);r.done=t>=s;return r},flipTarget:()=>{i.reverse();l=createInterpolator()}}}function decay({velocity:t=0,from:e=0,power:n=.8,timeConstant:o=350,restDelta:s=.5,modifyTarget:r}){const i={done:false,value:e};let u=n*t;const l=e+u;const p=void 0===r?l:r(l);p!==l&&(u=p-e);return{next:t=>{const e=-u*Math.exp(-t/o);i.done=!(e>s||e<-s);i.value=i.done?p:p+e;return i},flipTarget:()=>{}}}const $={keyframes:keyframes,spring:spring,decay:decay};function detectAnimationFromOptions(t){if(Array.isArray(t.to))return keyframes;if($[t.type])return $[t.type];const e=new Set(Object.keys(t));return e.has(\"ease\")||e.has(\"duration\")&&!e.has(\"dampingRatio\")?keyframes:e.has(\"dampingRatio\")||e.has(\"stiffness\")||e.has(\"mass\")||e.has(\"damping\")||e.has(\"restSpeed\")||e.has(\"restDelta\")?spring:keyframes}function loopElapsed(t,e,n=0){return t-e-n}function reverseElapsed(t,e,n=0,o=true){return o?loopElapsed(e+-t,e,n):e-(t-e)+n}function hasRepeatDelayElapsed(t,e,n,o){return o?t>=e+n:t<=-n}const framesync=t=>{const passTimestamp=({delta:e})=>t(e);return{start:()=>l.update(passTimestamp,true),stop:()=>p.update(passTimestamp)}};function animate(e){var n,o;var{from:s,autoplay:r=true,driver:i=framesync,elapsed:u=0,repeat:l=0,repeatType:p=\"loop\",repeatDelay:f=0,onPlay:d,onStop:h,onComplete:m,onRepeat:y,onUpdate:g}=e,v=t(e,[\"from\",\"autoplay\",\"driver\",\"elapsed\",\"repeat\",\"repeatType\",\"repeatDelay\",\"onPlay\",\"onStop\",\"onComplete\",\"onRepeat\",\"onUpdate\"]);let{to:M}=v;let x;let S=0;let O=v.duration;let T;let w=false;let A=true;let R;const F=detectAnimationFromOptions(v);if(null===(o=(n=F).needsInterpolation)||void 0===o?void 0:o.call(n,s,M)){R=interpolate([0,100],[s,M],{clamp:false});s=0;M=100}const D=F(Object.assign(Object.assign({},v),{from:s,to:M}));function repeat(){S++;if(\"reverse\"===p){A=S%2===0;u=reverseElapsed(u,O,f,A)}else{u=loopElapsed(u,O,f);\"mirror\"===p&&D.flipTarget()}w=false;y&&y()}function complete(){x.stop();m&&m()}function update(t){A||(t=-t);u+=t;if(!w){const t=D.next(Math.max(0,u));T=t.value;R&&(T=R(T));w=A?t.done:u<=0}null===g||void 0===g?void 0:g(T);if(w){0===S&&(null!==O&&void 0!==O?O:O=u);S<l?hasRepeatDelayElapsed(u,O,f,A)&&repeat():complete()}}function play(){null===d||void 0===d?void 0:d();x=i(update);x.start()}r&&play();return{stop:()=>{null===h||void 0===h?void 0:h();x.stop()}}}function velocityPerSecond(t,e){return e?t*(1e3/e):0}function inertia({from:t=0,velocity:e=0,min:n,max:o,power:s=.8,timeConstant:r=750,bounceStiffness:i=500,bounceDamping:u=10,restDelta:l=1,modifyTarget:p,driver:d,onUpdate:h,onComplete:m,onStop:y}){let g;function isOutOfBounds(t){return void 0!==n&&t<n||void 0!==o&&t>o}function boundaryNearest(t){return void 0===n?o:void 0===o||Math.abs(n-t)<Math.abs(o-t)?n:o}function startAnimation(t){null===g||void 0===g?void 0:g.stop();g=animate(Object.assign(Object.assign({},t),{driver:d,onUpdate:e=>{var n;null===h||void 0===h?void 0:h(e);null===(n=t.onUpdate)||void 0===n?void 0:n.call(t,e)},onComplete:m,onStop:y}))}function startSpring(t){startAnimation(Object.assign({type:\"spring\",stiffness:i,damping:u,restDelta:l},t))}if(isOutOfBounds(t))startSpring({from:t,velocity:e,to:boundaryNearest(t)});else{let o=s*e+t;\"undefined\"!==typeof p&&(o=p(o));const i=boundaryNearest(o);const u=i===n?-1:1;let d;let h;const checkBoundary=t=>{d=h;h=t;e=velocityPerSecond(t-d,f().delta);(1===u&&t>i||-1===u&&t<i)&&startSpring({from:t,to:i,velocity:e})};startAnimation({type:\"decay\",from:t,velocity:e,timeConstant:r,power:s,restDelta:l,modifyTarget:p,onUpdate:isOutOfBounds(o)?checkBoundary:void 0})}return{stop:()=>null===g||void 0===g?void 0:g.stop()}}const radiansToDegrees=t=>180*t/Math.PI;const angle=(t,e=O)=>radiansToDegrees(Math.atan2(e.y-t.y,e.x-t.x));const applyOffset=(t,e)=>{let n=true;if(void 0===e){e=t;n=false}return o=>{if(n)return o-t+e;t=o;n=true;return e}};const identity=t=>t;const createAttractor=(t=identity)=>(e,n,o)=>{const s=n-o;const r=-(0-e+1)*(0-t(Math.abs(s)));return s<=0?n+r:n-r};const G=createAttractor();const H=createAttractor(Math.sqrt);const degreesToRadians=t=>t*Math.PI/180;const isPoint=t=>t.hasOwnProperty(\"x\")&&t.hasOwnProperty(\"y\");const isPoint3D=t=>isPoint(t)&&t.hasOwnProperty(\"z\");const distance1D=(t,e)=>Math.abs(t-e);function distance(t,e){if(isNum(t)&&isNum(e))return distance1D(t,e);if(isPoint(t)&&isPoint(e)){const n=distance1D(t.x,e.x);const o=distance1D(t.y,e.y);const s=isPoint3D(t)&&isPoint3D(e)?distance1D(t.z,e.z):0;return Math.sqrt(Math.pow(n,2)+Math.pow(o,2)+Math.pow(s,2))}}const pointFromVector=(t,e,n)=>{e=degreesToRadians(e);return{x:n*Math.cos(e)+t.x,y:n*Math.sin(e)+t.y}};const toDecimal=(t,e=2)=>{e=Math.pow(10,e);return Math.round(t*e)/e};const smoothFrame=(t,e,n,o=0)=>toDecimal(t+n*(e-t)/Math.max(o,n));const smooth=(t=50)=>{let e=0;let n=0;return o=>{const s=f().timestamp;const r=s!==n?s-n:0;const i=r?smoothFrame(e,o,r,t):e;n=s;e=i;return i}};const snap=t=>{if(\"number\"===typeof t)return e=>Math.round(e/t)*t;{let e=0;const n=t.length;return o=>{let s=Math.abs(t[0]-o);for(e=1;e<n;e++){const r=t[e];const i=Math.abs(r-o);if(0===i)return r;if(i>s)return t[e-1];if(e===n-1)return r;s=i}}}};function velocityPerFrame(t,e){return t/(1e3/e)}const wrap=(t,e,n)=>{const o=e-t;return((n-t)%o+o)%o+t};const a=(t,e)=>1-3*e+3*t;const b=(t,e)=>3*e-6*t;const c=t=>3*t;const calcBezier=(t,e,n)=>((a(e,n)*t+b(e,n))*t+c(e))*t;const getSlope=(t,e,n)=>3*a(e,n)*t*t+2*b(e,n)*t+c(e);const L=1e-7;const X=10;function binarySubdivide(t,e,n,o,s){let r;let i;let u=0;do{i=e+(n-e)/2;r=calcBezier(i,o,s)-t;r>0?n=i:e=i}while(Math.abs(r)>L&&++u<X);return i}const J=8;const K=.001;function newtonRaphsonIterate(t,e,n,o){for(let s=0;s<J;++s){const s=getSlope(e,n,o);if(0===s)return e;const r=calcBezier(e,n,o)-t;e-=r/s}return e}const Q=11;const V=1/(Q-1);function cubicBezier(t,e,n,o){if(t===e&&n===o)return linear;const s=new Float32Array(Q);for(let e=0;e<Q;++e)s[e]=calcBezier(e*V,t,n);function getTForX(e){let o=0;let r=1;const i=Q-1;for(;r!==i&&s[r]<=e;++r)o+=V;--r;const u=(e-s[r])/(s[r+1]-s[r]);const l=o+u*V;const p=getSlope(l,t,n);return p>=K?newtonRaphsonIterate(e,l,t,n):0===p?l:binarySubdivide(e,o,o+V,t,n)}return t=>0===t||1===t?t:calcBezier(getTForX(t),e,o)}const steps=(t,e=\"end\")=>n=>{n=\"end\"===e?Math.min(n,.999):Math.max(n,.001);const o=n*t;const s=\"end\"===e?Math.floor(o):Math.ceil(o);return clamp(0,1,s/t)};export{angle,animate,B as anticipate,applyOffset,G as attract,H as attractExpo,P as backIn,E as backInOut,k as backOut,z as bounceIn,bounceInOut,bounceOut,circIn,I as circInOut,q as circOut,clamp,createAnticipate,createAttractor,createBackIn,createExpoIn,cubicBezier,decay,degreesToRadians,distance,F as easeIn,j as easeInOut,D as easeOut,inertia,interpolate,isPoint,isPoint3D,keyframes,linear,mirrorEasing,mix,mixColor,mixComplex,pipe,pointFromVector,progress,radiansToDegrees,reverseEasing,smooth,smoothFrame,snap,spring,steps,toDecimal,velocityPerFrame,velocityPerSecond,wrap};\n\n//# sourceMappingURL=index.mjs.map", "import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useRef}from\"react\";import{addPropertyControls,ControlType,Color}from\"framer\";import{useAnimationFrame}from\"framer-motion\";import{wrap}from\"popmotion\";/**\n * CONIC\n *\n * @framerIntrinsicWidth 200\n * @framerIntrinsicHeight 200\n * @framerDisableUnlink\n *\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */ export default function ConicGradient(props){const{colors,radius,from,axis,blur,shouldAnimate,rotate,speed}=props;const{xPos,yPos}=axis;const colorToValue=c=>Color(c).toValue();/* The CSS Background String */ const background=`conic-gradient(from ${from}deg at ${xPos}% ${yPos}%, ${colors.map(c=>colorToValue(c)).join(\",\")})`;/* Fallback variables */ let message=\"\";let isEmpty=false;let fallBackColor=colors[0];/* Fallback for 0 colors or 1 color in array */ if(colors.length==0){message=\"Please add 2+ colors.\";fallBackColor=\"rgba(136, 85, 255, 0.1)\";isEmpty=true;}else if(colors.length==1){isEmpty=true;fallBackColor=colors[0];}else{isEmpty=false;}const conicStyle={inset:\"-100%\",position:\"absolute\",display:\"flex\",placeItems:\"center\",placeContent:\"center\",color:\"#85F\",background:isEmpty?fallBackColor:background,willChange:\"transform\"};const blurStyle={WebkitBackdropFilter:`blur(${blur}px)`,MozBackdropFilter:`blur(${blur}px)`,backdropFilter:`blur(${blur}px)`};const absoluteStyle={position:\"absolute\",inset:0};/* Animation */ const transformRef=useRef(null);const initialTime=useRef(null);const prevTime=useRef(null);const rotationRef=useRef(0);const isNegative=rotate<0;useAnimationFrame(t=>{if(!transformRef.current||!rotate||!shouldAnimate){return;}if(initialTime.current===null){initialTime.current=t;}t=t-initialTime.current;const timeSince=prevTime.current===null?0:t-prevTime.current;let delta=timeSince*(speed/1e3);rotationRef.current+=delta;rotationRef.current=wrap(0,rotate,rotationRef.current);if(isNegative){rotationRef.current=wrap(0,-rotate,rotationRef.current);transformRef.current.style.transform=`translateZ(0) rotate(-${rotationRef.current}deg)`;}else{rotationRef.current=wrap(0,rotate,rotationRef.current);transformRef.current.style.transform=`translateZ(0) rotate(${rotationRef.current}deg)`;}prevTime.current=t;});return /*#__PURE__*/ _jsxs(\"div\",{style:{borderRadius:radius,overflow:\"hidden\",...absoluteStyle},children:[/*#__PURE__*/ _jsx(\"div\",{style:conicStyle,ref:transformRef,children:message}),/*#__PURE__*/ _jsx(\"div\",{style:{...absoluteStyle,...blurStyle}})]});};/* Default Properties */ ConicGradient.defaultProps={colors:[\"cyan\",\"magenta\",\"yellow\"],blur:0,radius:0,from:0,axis:{xPos:50,yPos:50}};ConicGradient.displayName=\"Conic Gradient\";/* Property Controls, Default Gradient */ addPropertyControls(ConicGradient,{colors:{type:ControlType.Array,title:\"Colors\",control:{type:ControlType.Color,title:\"Color\"},defaultValue:ConicGradient.defaultProps.colors},radius:{type:ControlType.Number,title:\"Radius\",min:0,max:500,displayStepper:true,step:10},from:{type:ControlType.Number,title:\"Angle\",unit:\"\\xb0\",min:0,max:1080,displayStepper:true,step:15},axis:{type:ControlType.Object,title:\"Axis\",controls:{xPos:{type:ControlType.Number,title:\"X\",unit:\"%\",min:0,max:100,defaultValue:50},yPos:{type:ControlType.Number,title:\"Y\",unit:\"%\",min:0,max:100,defaultValue:50}}},shouldAnimate:{type:ControlType.Boolean,title:\"Animate\",defaultValue:false},rotate:{type:ControlType.Number,min:-360,max:360,defaultValue:360,title:\"To\",unit:\"\\xb0\",hidden:props=>!props.shouldAnimate},speed:{type:ControlType.Number,title:\"Speed\",min:0,max:1e3,defaultValue:100,unit:\"%\",displayStepper:true,step:5,hidden:props=>!props.shouldAnimate},blur:{type:ControlType.Number,title:\"Blur\",min:0,max:100,defaultValue:0,description:\"Only visible on Canvas with Show Background Blur enabled in View.\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ConicGradient\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"200\",\"framerSupportedLayoutHeight\":\"fixed\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerIntrinsicWidth\":\"200\",\"framerDisableUnlink\":\"*\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ConicGradient.map", "// Generated by Framer (0f22d58)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,getFonts,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import ConicGradient from\"https://framerusercontent.com/modules/9vlcrQwDrbKSmD2xdWE5/HlCJ3urUTyvUKINNNEvI/ConicGradient.js\";const ConicGradientFonts=getFonts(ConicGradient);const cycleOrder=[\"JNRlfcorc\",\"mBkeWL7Br\",\"Yfqqmt4eA\",\"YFK08jqjX\"];const variantClassNames={JNRlfcorc:\"framer-v-14z5uc8\",mBkeWL7Br:\"framer-v-86fdh0\",YFK08jqjX:\"framer-v-1t9w15q\",Yfqqmt4eA:\"framer-v-ydph97\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants===null||variants===void 0?void 0:variants.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transitions={default:{damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"}};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value!==null&&value!==void 0?value:config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/ _jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const humanReadableVariantMap={Green:\"JNRlfcorc\",Purple:\"Yfqqmt4eA\",White:\"YFK08jqjX\",Yellow:\"mBkeWL7Br\"};const getProps=({animate,height,id,width,...props})=>{var ref,_variant,ref1;return{...props,DiZTcP1Wj:(ref=animate!==null&&animate!==void 0?animate:props.DiZTcP1Wj)!==null&&ref!==void 0?ref:true,variant:(ref1=(_variant=humanReadableVariantMap[props.variant])!==null&&_variant!==void 0?_variant:props.variant)!==null&&ref1!==void 0?ref1:\"JNRlfcorc\"};};const createLayoutDependency=(props,variants)=>variants.join(\"-\")+props.layoutDependency;const Component=/*#__PURE__*/ React.forwardRef(function(props,ref){const{activeLocale}=useLocaleInfo();const{style,className,layoutId,variant,DiZTcP1Wj,...restProps}=getProps(props);const{baseVariant,classNames,gestureVariant,setGestureState,setVariant,transition,variants}=useVariantState({cycleOrder,defaultVariant:\"JNRlfcorc\",transitions,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const defaultLayoutId=React.useId();return /*#__PURE__*/ _jsx(LayoutGroup,{id:layoutId!==null&&layoutId!==void 0?layoutId:defaultLayoutId,children:/*#__PURE__*/ _jsx(motion.div,{initial:variant,animate:variants,onHoverStart:()=>setGestureState({isHovered:true}),onHoverEnd:()=>setGestureState({isHovered:false}),onTapStart:()=>setGestureState({isPressed:true}),onTap:()=>setGestureState({isPressed:false}),onTapCancel:()=>setGestureState({isPressed:false}),className:cx(\"framer-ic1Tr\",classNames),style:{display:\"contents\"},children:/*#__PURE__*/ _jsx(Transition,{value:transition,children:/*#__PURE__*/ _jsx(motion.div,{...restProps,className:cx(\"framer-14z5uc8\",className),\"data-framer-name\":\"Green\",layoutDependency:layoutDependency,layoutId:\"JNRlfcorc\",ref:ref,style:{filter:\"blur(100px)\",WebkitFilter:\"blur(100px)\",...style},...addPropertyOverrides({mBkeWL7Br:{\"data-framer-name\":\"Yellow\"},YFK08jqjX:{\"data-framer-name\":\"White\"},Yfqqmt4eA:{\"data-framer-name\":\"Purple\"}},baseVariant,gestureVariant),children:/*#__PURE__*/ _jsx(motion.div,{className:\"framer-1keqhvs-container\",layoutDependency:layoutDependency,layoutId:\"RPPirx8NV-container\",children:/*#__PURE__*/ _jsx(ConicGradient,{axis:{xPos:50,yPos:50},blur:9,colors:['var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17)) /* {\"name\":\"Gray 900\"} */',\"rgb(0, 81, 68)\"],from:30,height:\"100%\",id:\"RPPirx8NV\",layoutId:\"RPPirx8NV\",radius:0,rotate:360,shouldAnimate:DiZTcP1Wj,speed:25,style:{height:\"100%\",width:\"100%\"},width:\"100%\",...addPropertyOverrides({mBkeWL7Br:{colors:['var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17)) /* {\"name\":\"Gray 900\"} */',\"rgb(205, 209, 73)\"]},YFK08jqjX:{colors:['var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17)) /* {\"name\":\"Gray 900\"} */',\"rgb(112, 112, 112)\"]},Yfqqmt4eA:{colors:['var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17)) /* {\"name\":\"Gray 900\"} */',\"rgb(123, 102, 255)\"]}},baseVariant,gestureVariant)})})})})})});});const css=['.framer-ic1Tr [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; pointer-events: none; }',\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-ic1Tr .framer-1946zqc { display: block; }\",\".framer-ic1Tr .framer-14z5uc8 { height: 548px; overflow: hidden; position: relative; width: 527px; }\",\".framer-ic1Tr .framer-1keqhvs-container { bottom: 0px; flex: none; left: 0px; position: absolute; right: 0px; top: 0px; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 548\n * @framerIntrinsicWidth 527\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"mBkeWL7Br\":{\"layout\":[\"fixed\",\"fixed\"]},\"Yfqqmt4eA\":{\"layout\":[\"fixed\",\"fixed\"]},\"YFK08jqjX\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerVariables {\"DiZTcP1Wj\":\"animate\"}\n */ const FramertQEy8yiPF=withCSS(Component,css,\"framer-ic1Tr\");export default FramertQEy8yiPF;FramertQEy8yiPF.displayName=\"Graphics / Conic gradient\";FramertQEy8yiPF.defaultProps={height:548,width:527};addPropertyControls(FramertQEy8yiPF,{variant:{options:[\"JNRlfcorc\",\"mBkeWL7Br\",\"Yfqqmt4eA\",\"YFK08jqjX\"],optionTitles:[\"Green\",\"Yellow\",\"Purple\",\"White\"],title:\"Variant\",type:ControlType.Enum},DiZTcP1Wj:{defaultValue:true,title:\"Animate\",type:ControlType.Boolean}});addFonts(FramertQEy8yiPF,[...ConicGradientFonts]);\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramertQEy8yiPF\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"527\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"548\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"mBkeWL7Br\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"Yfqqmt4eA\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"YFK08jqjX\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerVariables\":\"{\\\"DiZTcP1Wj\\\":\\\"animate\\\"}\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./tQEy8yiPF.map", "// Generated by Framer (38f2e7f)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,getLoadingLazyAtYPosition,getPropertyControls,Image,Link,RichText,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import GraphicsConicGradient from\"https://framerusercontent.com/modules/6TWLuZ3R3gafx8BAuiN4/qqiU78T7zH8rFkhksteD/tQEy8yiPF.js\";const GraphicsConicGradientFonts=getFonts(GraphicsConicGradient);const GraphicsConicGradientControls=getPropertyControls(GraphicsConicGradient);const enabledGestures={vZWVetYF4:{hover:true}};const serializationHash=\"framer-Zq9kZ\";const variantClassNames={vZWVetYF4:\"framer-v-ycd9nv\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants===null||variants===void 0?void 0:variants.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const toResponsiveImage=value=>{if(typeof value===\"object\"&&value!==null&&typeof value.src===\"string\"){return value;}return typeof value===\"string\"?{src:value}:undefined;};const transformTemplate1=(_,t)=>`translate(-50%, -50%) ${t}`;const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value!==null&&value!==void 0?value:config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion(React.Fragment);const humanReadableEnumMap={Green:\"JNRlfcorc\",Purple:\"Yfqqmt4eA\",White:\"YFK08jqjX\",Yellow:\"mBkeWL7Br\"};const getProps=({height,id,link,logo,title,variant1,width,...props})=>{var _ref,_ref1,_humanReadableEnumMap_variant1,_ref2,_ref3;return{...props,CnrcNZ0E1:(_ref=logo!==null&&logo!==void 0?logo:props.CnrcNZ0E1)!==null&&_ref!==void 0?_ref:{src:\"https://framerusercontent.com/images/r6SISe7HeN9vCwWO90SSL8UaWMQ.svg\"},m3vyrEPlf:(_ref1=title!==null&&title!==void 0?title:props.m3vyrEPlf)!==null&&_ref1!==void 0?_ref1:\"Hi-Rez Ventures\",P7_PhGiQ5:(_ref3=(_ref2=(_humanReadableEnumMap_variant1=humanReadableEnumMap[variant1])!==null&&_humanReadableEnumMap_variant1!==void 0?_humanReadableEnumMap_variant1:variant1)!==null&&_ref2!==void 0?_ref2:props.P7_PhGiQ5)!==null&&_ref3!==void 0?_ref3:\"Yfqqmt4eA\",u4ho7uXQk:link!==null&&link!==void 0?link:props.u4ho7uXQk};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,u4ho7uXQk,m3vyrEPlf,CnrcNZ0E1,P7_PhGiQ5,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"vZWVetYF4\",enabledGestures,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const ref1=React.useRef(null);const defaultLayoutId=React.useId();const sharedStyleClassNames=[];const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId!==null&&layoutId!==void 0?layoutId:defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(Link,{href:u4ho7uXQk,openInNewTab:false,smoothScroll:true,children:/*#__PURE__*/_jsx(motion.a,{...restProps,...gestureHandlers,className:`${cx(serializationHash,...sharedStyleClassNames,\"framer-ycd9nv\",className,classNames)} framer-1ls0w0o`,\"data-framer-name\":\"Variant 1\",layoutDependency:layoutDependency,layoutId:\"vZWVetYF4\",ref:ref!==null&&ref!==void 0?ref:ref1,style:{backgroundColor:\"rgba(255, 255, 255, 0)\",...style},...addPropertyOverrides({\"vZWVetYF4-hover\":{\"data-framer-name\":undefined}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-twgxrt\",\"data-border\":true,\"data-framer-name\":\"Image\",layoutDependency:layoutDependency,layoutId:\"ThLXtl0W2\",style:{\"--border-bottom-width\":\"0.5px\",\"--border-color\":\"var(--token-2b080329-29ba-481c-ac92-832881069b36, rgba(255, 255, 255, 0.1))\",\"--border-left-width\":\"0.5px\",\"--border-right-width\":\"0.5px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0.5px\",backgroundColor:\"rgba(255, 255, 255, 0.03)\",borderBottomLeftRadius:12,borderBottomRightRadius:12,borderTopLeftRadius:12,borderTopRightRadius:12,filter:\"grayscale(0)\",WebkitFilter:\"grayscale(0)\"},variants:{\"vZWVetYF4-hover\":{backgroundColor:\"rgba(255, 255, 255, 0.06)\"}},children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-x4p0zm-container\",layoutDependency:layoutDependency,layoutId:\"fh68LoSw9-container\",style:{opacity:0},variants:{\"vZWVetYF4-hover\":{opacity:1}},children:/*#__PURE__*/_jsx(GraphicsConicGradient,{animate:true,height:\"100%\",id:\"fh68LoSw9\",layoutId:\"fh68LoSw9\",style:{height:\"100%\",width:\"100%\"},variant:P7_PhGiQ5,width:\"100%\"})})}),/*#__PURE__*/_jsx(Image,{background:{alt:\"\",fit:\"fit\",intrinsicHeight:32,intrinsicWidth:89,loading:getLoadingLazyAtYPosition(((componentViewport===null||componentViewport===void 0?void 0:componentViewport.y)||0)+0+(((componentViewport===null||componentViewport===void 0?void 0:componentViewport.height)||72)-0-72+0+0)+21.000000000000014),pixelHeight:32,pixelWidth:104,sizes:\"73px\",...toResponsiveImage(CnrcNZ0E1),...{positionX:\"center\",positionY:\"center\"}},className:\"framer-oeqony\",\"data-framer-name\":\"Logo\",layoutDependency:layoutDependency,layoutId:\"p109bLXRo\",style:{opacity:1},variants:{\"vZWVetYF4-hover\":{opacity:0}}}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1RUIEhvdmVzIFJlZ3VsYXI=\",\"--framer-font-family\":'\"TT Hoves Regular\", \"TT Hoves Regular Placeholder\", sans-serif',\"--framer-font-size\":\"15px\",\"--framer-letter-spacing\":\"0px\",\"--framer-line-height\":\"1.5em\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255)))\"},children:\"Hi-Rez Ventures\"})}),className:\"framer-yxlwgb\",\"data-framer-name\":\"Title\",fonts:[\"CUSTOM;TT Hoves Regular\"],layoutDependency:layoutDependency,layoutId:\"LaSdleba5\",style:{\"--extracted-r6o4lv\":\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\",opacity:0},text:m3vyrEPlf,transformTemplate:transformTemplate1,variants:{\"vZWVetYF4-hover\":{opacity:1}},verticalAlignment:\"top\",withExternalLayout:true})]})})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-Zq9kZ.framer-1ls0w0o, .framer-Zq9kZ .framer-1ls0w0o { display: block; }\",\".framer-Zq9kZ.framer-ycd9nv { align-content: flex-start; align-items: flex-start; cursor: pointer; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 8px; height: min-content; justify-content: flex-end; overflow: hidden; padding: 0px; position: relative; text-decoration: none; width: 252px; }\",\".framer-Zq9kZ .framer-twgxrt { flex: none; height: 72px; overflow: hidden; position: relative; width: 100%; will-change: var(--framer-will-change-override, transform); z-index: 0; }\",\".framer-Zq9kZ .framer-x4p0zm-container { bottom: -142px; flex: none; left: -20px; position: absolute; right: -20px; top: -48px; }\",\".framer-Zq9kZ .framer-oeqony { flex: none; height: 30px; left: calc(50.00000000000002% - 73px / 2); overflow: visible; position: absolute; top: calc(50.00000000000002% - 30px / 2); width: 73px; z-index: 3; }\",\".framer-Zq9kZ .framer-yxlwgb { flex: none; height: auto; left: 50%; max-width: 100%; pointer-events: none; position: absolute; top: 50%; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-Zq9kZ.framer-ycd9nv { gap: 0px; } .framer-Zq9kZ.framer-ycd9nv > * { margin: 0px; margin-bottom: calc(8px / 2); margin-top: calc(8px / 2); } .framer-Zq9kZ.framer-ycd9nv > :first-child { margin-top: 0px; } .framer-Zq9kZ.framer-ycd9nv > :last-child { margin-bottom: 0px; } }\",'.framer-Zq9kZ[data-border=\"true\"]::after, .framer-Zq9kZ [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; pointer-events: none; }'];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 72\n * @framerIntrinsicWidth 252\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]},\"B7jC0QYqS\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerVariables {\"u4ho7uXQk\":\"link\",\"m3vyrEPlf\":\"title\",\"CnrcNZ0E1\":\"logo\",\"P7_PhGiQ5\":\"variant1\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerBN3HUyYzj=withCSS(Component,css,\"framer-Zq9kZ\");export default FramerBN3HUyYzj;FramerBN3HUyYzj.displayName=\"Nav / Tray \u2013 Customer card Copy\";FramerBN3HUyYzj.defaultProps={height:72,width:252};addPropertyControls(FramerBN3HUyYzj,{u4ho7uXQk:{title:\"Link\",type:ControlType.Link},m3vyrEPlf:{defaultValue:\"Hi-Rez Ventures\",displayTextArea:false,title:\"Title\",type:ControlType.String},CnrcNZ0E1:{__defaultAssetReference:\"data:framer/asset-reference,r6SISe7HeN9vCwWO90SSL8UaWMQ.svg?originalFilename=HiRez.svg&preferredSize=auto\",title:\"Logo\",type:ControlType.ResponsiveImage},P7_PhGiQ5:(GraphicsConicGradientControls===null||GraphicsConicGradientControls===void 0?void 0:GraphicsConicGradientControls[\"variant\"])&&{...GraphicsConicGradientControls[\"variant\"],defaultValue:\"Yfqqmt4eA\",description:undefined,hidden:undefined,title:\"Variant\"}});addFonts(FramerBN3HUyYzj,[{explicitInter:true,fonts:[{family:\"TT Hoves Regular\",source:\"custom\",url:\"https://framerusercontent.com/assets/wgABDVIWK1vZ3ZH97n7INv3AEY.woff2\"}]},...GraphicsConicGradientFonts],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerBN3HUyYzj\",\"slots\":[],\"annotations\":{\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"B7jC0QYqS\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerIntrinsicHeight\":\"72\",\"framerDisplayContentsDiv\":\"false\",\"framerContractVersion\":\"1\",\"framerComponentViewportWidth\":\"true\",\"framerIntrinsicWidth\":\"252\",\"framerImmutableVariables\":\"true\",\"framerVariables\":\"{\\\"u4ho7uXQk\\\":\\\"link\\\",\\\"m3vyrEPlf\\\":\\\"title\\\",\\\"CnrcNZ0E1\\\":\\\"logo\\\",\\\"P7_PhGiQ5\\\":\\\"variant1\\\"}\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./BN3HUyYzj.map", "import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";export default function Logos(props){return /*#__PURE__*/ _jsx(\"svg\",{width:\"100%\",height:\"100%\",fill:props.inheritColor?\"currentColor\":props.accent,viewBox:\"0 0 24 24\",children:Icons[props.icon]});};Logos.defaultProps={icon:\"Twingate\",accent:\"white\",inheritColor:false};addPropertyControls(Logos,{icon:{title:\"Icon\",type:ControlType.Enum,options:[\"Twingate\",\"AWS\",\"GCP\",\"Azure\",\"Apple\",\"Windows\",\"Linux\",\"Chrome\",\"Android\",\"Okta\",\"Okta Full\",\"Google\",\"Google Color\",\"Azure AD\",\"OneLogin\",\"KeyCloak\",\"CrowdStrike\",\"SentinelOne\",\"Kandji\",\"Jamf\",\"Intune\",\"JumpCloud\",\"Terraform\",\"Pulumi\",\"NextDNS\",\"Salesforce\",\"Jira\",\"Tableau\",\"Kubernetes\",\"Gitlab\",\"Elastic\",\"Database\",\"Connector\",\"API\",]},accent:{title:\"Accent\",type:ControlType.Color},inheritColor:{title:\"Inherit Color\",type:ControlType.Boolean}});const Icons={Twingate:/*#__PURE__*/ _jsx(\"path\",{d:\"M6 10.5162V19.2C6 19.2 7.2983 18.3091 8.75 17.2908V12.5162C8.75 10.1692 9.45659 9.41208 11.3697 7.98986C12.0122 7.51223 13.022 6.76243 13.9936 6.04114V2C13.9936 2 10.1983 4.81637 8.61974 5.98986C6.70659 7.41208 6 8.1692 6 10.5162ZM10 22V13.3162C10 10.9692 10.7066 10.2121 12.6197 8.78986C14.1983 7.61637 17.9936 4.8 17.9936 4.8V12.3774C17.9936 12.5949 17.9953 12.8023 17.997 13.001C18.0147 15.0995 18.0241 16.2192 15.8776 17.8425C14.1043 19.1836 10 22 10 22Z\"}),AWS:/*#__PURE__*/ _jsxs(_Fragment,{children:[/*#__PURE__*/ _jsx(\"path\",{fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M7.71 12.073a2.123 2.123 0 0 1-.074-.608h-.013V9.249c0-.752-.186-1.312-.552-1.682-.373-.369-.951-.553-1.743-.553a3.93 3.93 0 0 0-1.038.13 3.763 3.763 0 0 0-.838.307.5.5 0 0 0-.186.144c-.033.048-.047.13-.047.24v.334c0 .144.047.212.14.212.027 0 .06-.007.107-.02a1.81 1.81 0 0 0 .232-.09c.233-.095.473-.17.719-.232a2.97 2.97 0 0 1 .718-.089c.512 0 .872.103 1.084.315.207.212.313.574.313 1.094v.499a8.81 8.81 0 0 0-.765-.15 5.126 5.126 0 0 0-.705-.055c-.685 0-1.224.178-1.63.533-.405.356-.605.828-.605 1.409 0 .547.166.984.492 1.313.326.328.772.492 1.33.492.785 0 1.437-.315 1.956-.944.073.158.14.287.206.404.067.109.147.218.24.321.066.062.133.096.2.096.053 0 .112-.02.172-.062l.42-.287c.086-.068.126-.137.126-.205a.303.303 0 0 0-.047-.157 3.717 3.717 0 0 1-.213-.493Zm-2.09.308a2.098 2.098 0 0 1-.684.123c-.306 0-.54-.082-.699-.253-.166-.164-.246-.403-.246-.725 0-.341.106-.601.326-.786.22-.185.545-.274.991-.274.206 0 .412.014.625.042a5.4 5.4 0 0 1 .612.116v.287c0 .232-.026.43-.066.595a1.1 1.1 0 0 1-.226.437c-.18.206-.393.356-.632.438Z\"}),/*#__PURE__*/ _jsx(\"path\",{d:\"M10.024 13.174c.053.048.133.069.253.069h.572c.12 0 .213-.021.266-.069.053-.048.093-.137.127-.273l1.024-4.404 1.03 4.41c.027.137.074.226.127.274.053.048.14.068.266.068h.572c.114 0 .2-.027.253-.068.053-.041.1-.13.14-.267l1.603-5.285a1 1 0 0 0 .046-.17l.003-.018a.526.526 0 0 0 .01-.092c0-.117-.06-.171-.165-.171h-.62a.425.425 0 0 0-.258.068c-.047.041-.094.13-.134.267l-1.15 4.58-1.051-4.58c-.027-.13-.074-.226-.127-.267-.053-.048-.14-.068-.266-.068h-.532a.448.448 0 0 0-.266.068c-.053.041-.093.13-.126.267l-1.038 4.526-1.118-4.526c-.04-.13-.08-.226-.133-.267-.046-.048-.133-.068-.259-.068h-.652c-.106 0-.16.061-.16.17 0 .049.02.137.06.274l1.564 5.286c.04.13.086.225.14.266Zm7.776.13c.333.082.679.123 1.024.123.34 0 .652-.048.952-.143.286-.09.532-.212.738-.383.206-.165.366-.37.486-.602a1.8 1.8 0 0 0 .173-.793c0-.356-.1-.677-.306-.957-.207-.28-.553-.5-1.031-.657l-.945-.307c-.352-.117-.599-.247-.732-.377a.655.655 0 0 1-.2-.485c0-.28.107-.479.313-.609.207-.13.506-.191.885-.191.472 0 .898.089 1.277.267.113.054.2.082.253.082.1 0 .153-.075.153-.22v-.32a.377.377 0 0 0-.06-.226.58.58 0 0 0-.2-.171 1.432 1.432 0 0 0-.279-.123 5.058 5.058 0 0 0-.379-.11 8.045 8.045 0 0 0-.432-.075A3.25 3.25 0 0 0 19.044 7c-.293 0-.572.034-.838.116a2.09 2.09 0 0 0-.692.356c-.2.15-.36.342-.479.56-.12.22-.18.472-.18.76 0 .355.114.69.333.99.22.309.579.54 1.065.698l.964.308c.326.11.552.226.672.355.12.13.18.288.18.479 0 .28-.12.5-.346.65-.227.15-.553.225-.972.225a3.89 3.89 0 0 1-.791-.082 3.55 3.55 0 0 1-.732-.24l-.068-.028-.098-.04a.367.367 0 0 0-.12-.02c-.1 0-.153.068-.153.212v.349c0 .061.013.13.04.191.027.062.1.13.206.191.173.103.433.192.765.274Zm3.193 2.379c-.28-.369-1.85-.177-2.56-.088-.214.027-.247-.165-.054-.308 1.25-.903 3.306-.643 3.545-.342.24.308-.066 2.42-1.237 3.432-.18.158-.353.076-.273-.13.266-.677.858-2.201.579-2.564Z\"}),/*#__PURE__*/ _jsx(\"path\",{d:\"M20.082 16.75c-2.189 1.662-5.368 2.544-8.102 2.544a14.435 14.435 0 0 1-9.891-3.877c-.207-.192-.02-.451.226-.301 2.82 1.682 6.299 2.7 9.898 2.7 2.428 0 5.095-.519 7.55-1.585.365-.172.678.246.319.52Z\"})]}),GCP:/*#__PURE__*/ _jsx(\"path\",{fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M16.64 6.272c-2.851-2.593-7.384-2.3-9.954.613A7.233 7.233 0 0 0 5.16 9.743a5.084 5.084 0 0 0-.175 8.189 5.073 5.073 0 0 0 3.068 1.038h7.824c2.807.022 5.101-2.214 5.123-5.022a5.084 5.084 0 0 0-2.236-4.25 7.049 7.049 0 0 0-2.124-3.426Zm-9.388 9.393c.253.116.523.176.801.176h7.824c1.08 0 1.954-.853 1.954-1.933s-.875-1.954-1.954-1.954v-.39a3.904 3.904 0 0 0-1.433-3.096c-1.608-1.301-3.961-1.095-5.353.433l-.017.018a5.079 5.079 0 0 1 3.031 1.893l-2.267 2.267a1.954 1.954 0 1 0-2.586 2.586Z\"}),Azure:/*#__PURE__*/ _jsx(\"path\",{d:\"m15.624 17.498.04-.009-2.192-2.608c-.735-.87-1.466-1.743-2.192-2.62 0-.013 2.263-6.246 2.276-6.268.004-.008 1.545 2.652 3.734 6.446l3.756 6.511.029.05-13.935-.002 8.484-1.5ZM3 17.459c0-.004 1.033-1.797 2.296-3.985l2.296-3.98 2.675-2.245A891.76 891.76 0 0 1 12.95 5a.475.475 0 0 1-.043.108l-5.759 12.35-2.074.003c-1.141.002-2.075 0-2.075-.003Z\"}),Apple:/*#__PURE__*/ _jsx(\"path\",{d:\"M14.5391 5.74783C15.0696 5.10435 15.4435 4.22609 15.4435 3.33913C15.4435 3.21739 15.4348 3.09565 15.4174 3C14.5478 3.03478 13.5043 3.57391 12.887 4.30435C12.3913 4.86087 11.9391 5.74783 11.9391 6.63478C11.9391 6.77391 11.9652 6.90435 11.9739 6.94783C12.0261 6.95652 12.113 6.97391 12.2087 6.97391C12.9826 6.97391 13.9565 6.45217 14.5391 5.74783ZM15.1478 7.15652C13.8522 7.15652 12.7913 7.94783 12.113 7.94783C11.3913 7.94783 10.4522 7.2087 9.32174 7.2087C7.17391 7.2087 5 8.98261 5 12.3217C5 14.4087 5.8 16.6087 6.8 18.0261C7.65217 19.2261 8.4 20.2087 9.47826 20.2087C10.5391 20.2087 11.0087 19.5043 12.3304 19.5043C13.6696 19.5043 13.9739 20.1913 15.1478 20.1913C16.313 20.1913 17.087 19.1217 17.8261 18.0696C18.6435 16.8609 18.9913 15.687 19 15.6261C18.9304 15.6087 16.7043 14.6957 16.7043 12.1478C16.7043 9.93913 18.4522 8.94783 18.5565 8.86957C17.4 7.2087 15.6348 7.15652 15.1478 7.15652Z\"}),Windows:/*#__PURE__*/ _jsx(\"path\",{d:\"M12.1933 6.12791V11.2757H19V5L12.1933 6.12791ZM12.1933 17.571L19 18.6793V12.4072H12.1933V17.571ZM5 11.2739H10.7536V6.31501L5 7.2683V11.2739ZM5 16.4484L10.7536 17.3856V12.4072H5V16.4484Z\"}),Linux:/*#__PURE__*/ _jsx(\"path\",{d:\"M13.465 8.76181C13.15 8.97178 12.1527 9.5417 12.0027 9.65418C11.7102 9.88665 11.4403 9.87165 11.1478 9.64668C10.9978 9.5267 10.0005 8.95678 9.68552 8.75431C9.32558 8.52185 9.34807 8.22939 9.74551 8.06441C10.9753 7.54699 12.2052 7.58448 13.4275 8.08691C13.7949 8.24439 13.8099 8.53684 13.465 8.76181ZM18.8792 14.221C18.1818 12.6537 17.2294 11.229 15.9996 9.97664C15.6194 9.58172 15.3458 9.09658 15.2047 8.56684C15.1297 8.31938 15.0772 8.06441 15.0248 7.80945C14.8748 7.14954 14.8073 6.47464 14.4998 5.85223C13.9524 4.6674 13 4.05249 11.6202 4C10.2629 4.03749 9.25059 4.60741 8.65817 5.79974C8.5007 6.12219 8.38821 6.45964 8.31322 6.80459C8.18574 7.37451 8.07326 7.96693 7.93828 8.54434C7.82579 9.03177 7.60083 9.45171 7.21838 9.82666C6.01106 11.004 5.0437 12.3538 4.3088 13.8386C4.20382 14.056 4.09883 14.2735 4.03134 14.4985C3.88886 14.9934 4.24881 15.3384 4.77373 15.2184C5.10369 15.1509 5.43364 15.0834 5.74859 14.9859C6.05605 14.8734 6.17603 14.9484 6.25102 15.2484C6.73845 16.8606 7.8033 17.993 9.43056 18.6229C12.5201 19.7927 16.1271 18.128 16.907 15.1884C16.9595 14.9859 17.0345 14.9109 17.2594 14.9859C17.6044 15.0909 17.9568 15.1659 18.3093 15.2484C18.6767 15.3159 18.9467 15.1284 18.9992 14.7684C19.0217 14.5735 18.9542 14.401 18.8792 14.221Z\"}),Chrome:/*#__PURE__*/ _jsx(\"path\",{d:\"M10.2616 19.8104C6.68 19.0168 4 15.8216 4 12C4 10.5424 4.3896 9.176 5.0712 7.9984L8.4976 13.9336C8.88255 14.6313 9.46715 15.1981 10.1764 15.5613C10.8857 15.9245 11.6873 16.0675 12.4784 15.972L10.2624 19.8104H10.2616ZM12 20L15.4296 14.06C15.8039 13.4382 16.0012 12.7258 16 12C16.0013 11.1343 15.7204 10.2918 15.2 9.6H19.6336C19.8774 10.3766 20.0009 11.186 20 12C20 16.4184 16.4184 20 12 20ZM14.0576 13.236C13.8426 13.5944 13.5378 13.8903 13.1733 14.0947C12.8087 14.299 12.3972 14.4046 11.9793 14.4009C11.5614 14.3973 11.1518 14.2846 10.7908 14.0739C10.4299 13.8633 10.1303 13.562 9.9216 13.2L9.8984 13.16C9.69581 12.7929 9.59294 12.3791 9.60003 11.9599C9.60712 11.5406 9.72391 11.1306 9.93879 10.7705C10.1537 10.4105 10.4591 10.113 10.8247 9.90771C11.1904 9.70244 11.6034 9.59654 12.0227 9.60055C12.4419 9.60456 12.8528 9.71835 13.2145 9.93058C13.5761 10.1428 13.8758 10.4461 14.0837 10.8102C14.2917 11.1743 14.4006 11.5865 14.3997 12.0058C14.3987 12.4251 14.288 12.8368 14.0784 13.2L14.0576 13.236ZM6.1056 6.5912C6.85419 5.77352 7.76496 5.12079 8.77983 4.67465C9.79469 4.22851 10.8914 3.99875 12 4.00001C13.4046 3.99944 14.7846 4.36883 16.001 5.07102C17.2175 5.77321 18.2276 6.78343 18.9296 8H12C11.2163 7.9999 10.4499 8.22995 9.79584 8.66158C9.14177 9.09322 8.62887 9.70744 8.3208 10.428L6.1056 6.5912Z\"}),Android:/*#__PURE__*/ _jsx(\"path\",{fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M8.73483 3.73483C8.88128 3.58839 9.11872 3.58839 9.26516 3.73483L10.3744 4.84411C10.8711 4.62293 11.4212 4.5 12 4.5C12.5788 4.5 13.1289 4.62293 13.6256 4.84411L14.7348 3.73483C14.8813 3.58839 15.1187 3.58839 15.2652 3.73483C15.4116 3.88128 15.4116 4.11872 15.2652 4.26517L14.302 5.22836C15.3291 5.95238 16 7.14784 16 8.5H8C8 7.14784 8.67093 5.95238 9.69803 5.22836L8.73483 4.26517C8.58839 4.11872 8.58839 3.88128 8.73483 3.73483ZM5 10.5625C5 9.97458 5.47458 9.5 6.0625 9.5C6.65042 9.5 7.125 9.97458 7.125 10.5625V14.5208C7.125 15.1088 6.65042 15.5833 6.0625 15.5833C5.47458 15.5833 5 15.1088 5 14.5208V10.5625ZM17 10.5C17 9.94667 17.4467 9.5 18 9.5C18.5533 9.5 19 9.94667 19 10.5V14.5C19 15.0533 18.5533 15.5 18 15.5C17.4467 15.5 17 15.0533 17 14.5V10.5ZM9 16.5V19.5C9 20.0533 9.44667 20.5 10 20.5C10.5533 20.5 11 20.0533 11 19.5V16.5H13V19.5C13 20.0533 13.4467 20.5 14 20.5C14.5533 20.5 15 20.0533 15 19.5V16.5C15.5523 16.5 16 16.0523 16 15.5V9.5H8V15.5C8 16.0523 8.44772 16.5 9 16.5ZM11 6.5H10V7.5H11V6.5ZM13 6.5H14V7.5H13V6.5Z\"}),Okta:/*#__PURE__*/ _jsx(\"path\",{fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M12 20a8 8 0 1 0 0-16 8 8 0 0 0 0 16Zm0-4a4 4 0 1 0 0-8 4 4 0 0 0 0 8Z\"}),\"Okta Full\":/*#__PURE__*/ _jsx(\"path\",{fillRule:\"evenodd\",d:\"M9.046 13.966a.244.244 0 0 0-.418.171h-.005v1.61c0 .105-.094.21-.237.21h-.924c-.11 0-.242-.044-.242-.204V8.749c0-.094.077-.199.237-.199h.924c.104 0 .236.06.236.221v3.16c0 .226.275.337.43.17a638.13 638.13 0 0 0 1.343-1.452l.13-.14c.017-.023.044-.045.11-.067.033-.011.066-.011.11-.011h1.133c.231 0 .297.254.193.387l-1.64 1.842c-.269.288-.296.399-.06.68l.11.111 2.068 2.13c.105.133.039.393-.187.393H11.11c-.05 0-.094 0-.121-.011a.185.185 0 0 1-.091-.058l-.008-.008-.031-.034c-.19-.2-1.185-1.257-1.812-1.897ZM1 13.203a2.773 2.773 0 0 1 2.767-2.783 2.773 2.773 0 0 1 2.766 2.783 2.773 2.773 0 0 1-2.766 2.782A2.773 2.773 0 0 1 1 13.203Zm1.38 0c0 .768.622 1.394 1.387 1.394.764 0 1.386-.626 1.386-1.394 0-.77-.622-1.395-1.386-1.395-.765 0-1.386.626-1.386 1.395Zm13.795 2.517-.099-.93a.22.22 0 0 0-.258-.193 1.39 1.39 0 0 1-1.595-1.3v-1.218c0-.149.11-.27.258-.27h1.238c.088 0 .22-.078.22-.239v-.88c0-.17-.11-.26-.21-.26h-1.248a.258.258 0 0 1-.264-.248v-1.41a.224.224 0 0 0-.237-.222h-.918c-.115 0-.226.072-.226.216v4.53a2.771 2.771 0 0 0 2.767 2.706c.127 0 .248-.011.369-.028a.226.226 0 0 0 .203-.255Zm5.764-2.507c0 1.057.12 1.34.901 1.34.094 0 .16.093.16.176v.99c0 .267-.53.262-.681.26h-.023c-.654-.005-1.072-.27-1.331-.669a2.755 2.755 0 0 1-1.799.67 2.773 2.773 0 0 1-2.766-2.783 2.773 2.773 0 0 1 2.767-2.783c.494 0 .962.133 1.363.365v-.116c0-.144.127-.238.242-.238h.925c.175 0 .242.15.242.238v2.55Zm-4.153-.01c0 .768.621 1.394 1.386 1.394a1.4 1.4 0 0 0 1.386-1.394c0-.77-.622-1.395-1.386-1.395-.765 0-1.386.626-1.386 1.395Z\",clipRule:\"evenodd\"}),Google:/*#__PURE__*/ _jsxs(_Fragment,{children:[/*#__PURE__*/ _jsx(\"path\",{d:\"M21 12.168c0-.59-.05-1.182-.159-1.762h-8.66v3.338h4.96c-.206 1.077-.867 2.03-1.836 2.634v2.166h2.959c1.737-1.51 2.736-3.74 2.736-6.376Z\"}),/*#__PURE__*/ _jsx(\"path\",{d:\"M12.181 20.637c2.477 0 4.565-.768 6.086-2.093l-2.958-2.166c-.823.529-1.886.828-3.124.828-2.396 0-4.427-1.525-5.155-3.576H3.977v2.232c1.558 2.927 4.733 4.775 8.204 4.775Z\"}),/*#__PURE__*/ _jsx(\"path\",{d:\"M7.026 13.63a4.917 4.917 0 0 1 0-3.32V8.079h-3.05a8.244 8.244 0 0 0 0 7.784l3.05-2.232Z\"}),/*#__PURE__*/ _jsx(\"path\",{d:\"M12.181 6.73a5.155 5.155 0 0 1 3.522 1.3l2.622-2.474c-1.66-1.472-3.863-2.28-6.144-2.255-3.471 0-6.646 1.847-8.204 4.777l3.05 2.233c.725-2.055 2.759-3.58 5.154-3.58Z\"})]}),\"Google Color\":/*#__PURE__*/ _jsxs(_Fragment,{children:[/*#__PURE__*/ _jsx(\"path\",{d:\"M21 12.1677C21 11.5785 20.9494 10.986 20.8414 10.4064H12.1813V13.7443H17.1406C16.9348 14.8208 16.2735 15.7731 15.3053 16.3783V18.5441H18.264C20.0014 17.0344 21 14.8049 21 12.1677Z\",fill:\"#4285F4\"}),/*#__PURE__*/ _jsx(\"path\",{d:\"M12.1813 20.6367C14.6576 20.6367 16.7458 19.8691 18.2673 18.5441L15.3087 16.3783C14.4855 16.907 13.4228 17.2064 12.1847 17.2064C9.78942 17.2064 7.7585 15.6808 7.0298 13.6296H3.97667V15.8623C5.53528 18.7894 8.70986 20.6367 12.1813 20.6367Z\",fill:\"#34A853\"}),/*#__PURE__*/ _jsx(\"path\",{d:\"M7.02642 13.6296C6.64182 12.5531 6.64182 11.3874 7.02642 10.3108V8.07812H3.97666C2.67445 10.5274 2.67445 13.4131 3.97666 15.8623L7.02642 13.6296Z\",fill:\"#FBBC04\"}),/*#__PURE__*/ _jsx(\"path\",{d:\"M12.1813 6.73085C13.4903 6.71174 14.7554 7.17676 15.7034 8.03034L18.3247 5.55557C16.6649 4.08409 14.4619 3.27509 12.1813 3.30057C8.70986 3.30057 5.53528 5.14789 3.97667 8.07812L7.02642 10.3108C7.75175 8.25648 9.78605 6.73085 12.1813 6.73085Z\",fill:\"#EA4335\"})]}),\"Azure AD\":/*#__PURE__*/ _jsxs(_Fragment,{children:[/*#__PURE__*/ _jsx(\"path\",{d:\"M11.6 9.196a1.49 1.49 0 0 1-.34-.14L8.305 12.01a1.493 1.493 0 0 1 .074 1.331l2.742 2.194c.143-.104.304-.183.479-.231V9.196Zm1.14-.141a1.49 1.49 0 0 1-.34.141v6.108c.175.048.336.127.48.23l2.74-2.193a1.495 1.495 0 0 1 .075-1.33L12.74 9.054Z\"}),/*#__PURE__*/ _jsx(\"path\",{fillRule:\"evenodd\",d:\"M22 13.71 12 22 2 13.71 12 1l10 12.71Zm-8.5-5.96c0 .269-.07.521-.195.74l2.955 2.955a1.5 1.5 0 1 1-.14 2.52l-2.74 2.194a1.5 1.5 0 1 1-2.758 0l-2.743-2.193a1.5 1.5 0 1 1-.14-2.52l2.956-2.956a1.5 1.5 0 1 1 2.805-.74Z\",clipRule:\"evenodd\"})]}),OneLogin:/*#__PURE__*/ _jsx(\"path\",{fillRule:\"evenodd\",d:\"M3 11.996C3 7.029 7.035 3 12 3c4.973 0 9 4.029 9 8.996A8.999 8.999 0 0 1 12 21c-4.973 0-9-4.029-9-9.004Zm10.084 3.446c.17 0 .258-.089.258-.259h-.008V9.36c0-.122-.04-.21-.21-.21H9.97c-.17 0-.258.088-.258.258v1.618c0 .17.089.259.258.259h1.238v3.9c0 .17.088.258.258.258h1.618Z\",clipRule:\"evenodd\"}),KeyCloak:/*#__PURE__*/ _jsxs(_Fragment,{children:[/*#__PURE__*/ _jsx(\"path\",{d:\"m11.255 14.55-.437.752a.087.087 0 0 1-.028.028.089.089 0 0 1-.04.01h-.867a.076.076 0 0 1-.07-.042L8.52 13.056l-.127-.222-.464-.793a.058.058 0 0 1-.009-.039.08.08 0 0 1 .011-.039l1.883-3.259a.085.085 0 0 1 .071-.043h.864c.016 0 .03.005.046.011a.07.07 0 0 1 .028.028l.436.757a.085.085 0 0 1-.004.081l-1.4 2.425a.068.068 0 0 0-.008.035.09.09 0 0 0 .008.034l1.4 2.423a.088.088 0 0 1 0 .095Zm4.345-2.51-.465.794-.127.222-1.292 2.242a.083.083 0 0 1-.07.043h-.867a.09.09 0 0 1-.04-.01.07.07 0 0 1-.029-.029l-.436-.752a.081.081 0 0 1-.002-.09l1.4-2.424a.067.067 0 0 0 .008-.034.09.09 0 0 0-.009-.034l-1.4-2.425a.085.085 0 0 1-.004-.082l.437-.757a.079.079 0 0 1 .073-.039h.868c.03 0 .058.016.071.044l1.884 3.259c.006.013.01.026.01.038a.088.088 0 0 1-.01.035Z\"}),/*#__PURE__*/ _jsx(\"path\",{fillRule:\"evenodd\",d:\"M21.002 12a9.002 9.002 0 1 1-18.004 0 9.002 9.002 0 0 1 18.004 0Zm-4.738-2.222L14.66 7H8.887L6 12l2.887 5h5.773l1.604-2.778h2.176V9.778h-2.176Z\",clipRule:\"evenodd\"})]}),CrowdStrike:/*#__PURE__*/ _jsx(\"path\",{fillRule:\"evenodd\",d:\"M10.796 12.278c-.324-.883-.883-2.002-3.589-3.679-.157-.1-.322-.202-.496-.31C5.41 7.482 3.644 6.387 1.4 4c.18.721.992 2.615 5.032 5.086.37.244.769.463 1.181.688 1.078.589 2.244 1.226 3.183 2.504Zm10.48 3.84c.001-.265.003-.418-1.101-.521 0 0 .613.198 1.1.559v-.037ZM4.718 4.56c1.533 1.858 3.516 3.643 8.494 5.068 6.175 1.708 5.783 2.662 5.339 3.743l-.018.044c-.313.766.028.877.198.932l.018.006c.154.055.355.114.578.18.95.277 2.302.674 2.2 1.39.252.252 1.154 1.226.775 1.893-.13-.21-.45-.557-.903-.915a4.007 4.007 0 0 0-1.892.356c-1.028.487-1.443.505-1.948.45.144.253.45.596 1.389.668.937.054 1.406.09.901 1.19.018-.324-.072-.973-1.01-.865-.938.108-1.154.902-.144 1.28-.325.054-1.028.09-1.515-1.1l-.043.018c-.343.147-.863.369-1.797-.288.343.108.758.126.758.126-.848-.379-1.677-1.082-2.182-1.75.414.289.865.578 1.334.632-.54-.614-1.803-1.858-3.354-3.12.12.071.242.149.37.228.925.58 2.065 1.296 3.778 1.106.213-.023.42-.05.62-.074.745-.094 1.418-.178 2.137-.1a4.504 4.504 0 0 0-.142-.024c-.684-.109-1.346-.09-1.977-.072-1.05.03-2.019.058-2.875-.505-1.159-.82-1.348-1.13-2.485-2.984l-.04-.064a8.721 8.721 0 0 1-.302-.557c-.346-.676-.715-1.397-2.114-2.527a32.187 32.187 0 0 0-1.134-.865c-1.325-.979-2.462-1.82-3.013-3.5Zm8.837 12.138-.114-.042c-1.22-.452-1.523-.564-3.168-.914-1.678-.379-3.337-1.136-4.455-2.345.775.505 2.38 1.497 4.022 1.39-.253-.325-.704-.56-1.263-.812.613.126 2.49.54 4.978 2.723ZM7.37 10.89c2.47 1.352 3.12 2.308 3.427 3.047-.902-1.106-2.063-1.665-2.996-2.113a12.912 12.912 0 0 1-.81-.412C3.474 9.52 2.663 8.005 2.501 7.318c1.634 1.769 3.423 2.765 4.596 3.419l.273.152Z\",clipRule:\"evenodd\"}),SentinelOne:/*#__PURE__*/ _jsx(\"path\",{fillRule:\"evenodd\",d:\"M13.343 2.042h-2.682v16.04h2.682V2.041Zm.65 19.907 2.68-1.66V6.402a6.688 6.688 0 0 0-2.68-1.188v16.734Zm-3.988.008-2.683-1.66V6.402a6.683 6.683 0 0 1 2.683-1.179v16.735Zm7.318-19.153v17.194l1.246-.773A3.176 3.176 0 0 0 20 16.526v-8.12c.007-2.342-2.676-5.602-2.676-5.602ZM4.37 18.054A3.17 3.17 0 0 1 4 16.52V8.406c0-2.342 2.677-5.602 2.677-5.602v17.187L5.43 19.22a3.17 3.17 0 0 1-1.062-1.166Z\",clipRule:\"evenodd\"}),Kandji:/*#__PURE__*/ _jsx(\"path\",{fillRule:\"evenodd\",d:\"M13.407 12.298a1.72 1.72 0 0 0 .214-.448c.736 1.619 2.216 2.034 3.384 1.861.71-.107 1.304-.43 1.542-.836a.756.756 0 0 0-.27-1.04 2.351 2.351 0 0 0-.405-.186 3.46 3.46 0 0 0-.375-.11l.63-.318c1.396-.736 2.323-2.06 2.584-3.198.096-.366.101-.75.015-1.119a1.227 1.227 0 0 0-1.507-.862c-2.164.591-4.69 3.827-5.464 4.882l-.075.103a1.708 1.708 0 0 0-1.028-1.268 1.711 1.711 0 0 0-.324-.099l.802-.282a.756.756 0 0 0 .503-.711.754.754 0 0 0-.753-.752h-1.79a.753.753 0 0 0-.252 1.463l.806.284a1.714 1.714 0 0 0-1.344 1.346l-.054-.075c-.774-1.055-3.3-4.291-5.464-4.883a1.228 1.228 0 0 0-1.506.862 2.32 2.32 0 0 0 .014 1.12c.261 1.138 1.188 2.461 2.585 3.198l.63.318a3.45 3.45 0 0 0-.376.11c-.14.048-.276.11-.404.185a.758.758 0 0 0-.27 1.04c.237.407.83.73 1.541.837 1.158.171 2.622-.235 3.365-1.82a1.715 1.715 0 0 0 .985 1.036c-.737-.012-1.551.067-1.827.693-.09.226-.133.47-.126.713h5.17c0-.456-.092-.922-.53-1.16-.43-.234-.98-.23-1.48-.22l.083-.032c.314-.13.583-.35.772-.632ZM12.341 6.76l-.356-.434-.36.434-.581-.434v1.142h1.879V6.325l-.582.435Zm-2.906 8.207h5.082a6.57 6.57 0 0 1-.263 1.252h-4.57a5.553 5.553 0 0 1-.237-1.146.328.328 0 0 1-.012-.106Zm.51 1.877a3.384 3.384 0 0 0 1.258 1.373l.055.033c.202.123.549.332.767.28a2.917 2.917 0 0 0 1.979-1.686H9.946Z\",clipRule:\"evenodd\"}),Jamf:/*#__PURE__*/ _jsx(\"path\",{d:\"M16.53 6.662c-2.051 0-3.278.873-3.841 2.784l-1.418 4.532c-.523 1.49-1.378 2.097-2.906 2.097h-3.54a.844.844 0 0 0-.825.842v2.323c0 .42.332.76.784.76h14.391c.443 0 .825-.38.825-.843V7.463c0-.452-.332-.801-.784-.801H16.53ZM4.855 4C4.412 4 4 4.421 4 4.873v6.176a.85.85 0 0 0 .855.874h3.057c1.378 0 3.319-.308 3.842-2.816 0 0 .523-2.548.824-4.038.11-.576-.301-1.069-.855-1.069H4.855Z\"}),Intune:/*#__PURE__*/ _jsx(\"path\",{fillRule:\"evenodd\",d:\"M17.804 13.516H3.03V5.12h13.601v3.148h1.173V4.654c0-.35-.352-.7-.704-.7H2.561c-.351 0-.703.35-.703.7v9.328c0 .35.352.7.703.7h5.746c.003.218.004.417-.002.597-.049 1.158-.42 1.558-2.776 1.612-.194.004-.401.006-.622.006v.933h9.848v-.933c-2.9 0-3.345-.349-3.396-1.575a11.9 11.9 0 0 1-.004-.64h6.449v1.166l2.415-1.75-2.415-1.748v1.166Zm-6.59-4.78h10.342c.328 0 .586.256.586.582v10.144a.579.579 0 0 1-.586.583h-5.393a.579.579 0 0 1-.587-.583v-4.314h.938v3.381h4.69V9.901h-9.99c-.21.536-.75.91-1.383.91-.844 0-1.524-.677-1.524-1.493 0-.816.68-1.492 1.524-1.492.61 0 1.149.373 1.383.91Zm7.059 10.726h1.172v-.35h-1.172v.35Z\",clipRule:\"evenodd\"}),JumpCloud:/*#__PURE__*/ _jsx(\"path\",{fillRule:\"evenodd\",d:\"M4.864 14.554c-1.066.397-1.933 1.082-2.46 1.934a.26.26 0 0 0 .217.4h6.77a.272.272 0 0 0 .245-.188c.155-.518.436-.994.777-1.44a5.267 5.267 0 0 0-1.226-.682.234.234 0 0 1-.071-.39 3.117 3.117 0 0 0 .923-3.006A3.108 3.108 0 0 0 7.67 8.845 3.13 3.13 0 0 0 3.867 11.9c0 .935.414 1.77 1.065 2.342.106.093.064.262-.068.312Zm8.898-.708a6.036 6.036 0 0 0-2.267 1.394 5.023 5.023 0 0 0-.469.545 4.348 4.348 0 0 0-.452.747c-.078.165.053.355.236.355h10.57a.26.26 0 0 0 .23-.376 4.576 4.576 0 0 0-.83-1.194c-.612-.636-1.413-1.143-2.333-1.467-.144-.051-.186-.236-.068-.332a3.613 3.613 0 0 0 1.247-3.586 3.508 3.508 0 0 0-.956-1.722c-.76-.767-1.498-1.01-2.205-1.08-.046-.005-.091-.005-.137-.007a3.656 3.656 0 0 0-.27-.01c-.05 0-.1.005-.148.007-.083.005-.165.01-.247.02-.051.006-.103.015-.154.023a3.513 3.513 0 0 0-.951.297c-.044.02-.088.04-.131.063a3.426 3.426 0 0 0-.216.125c-.035.022-.07.041-.105.064a3.688 3.688 0 0 0-.268.197l-.03.023a3.704 3.704 0 0 0-.275.251c-.025.025-.047.053-.072.08-.06.063-.119.128-.173.197-.03.036-.056.073-.083.11a3.589 3.589 0 0 0-.135.192c-.027.04-.052.084-.077.127a3.618 3.618 0 0 0-.262.543 2.788 2.788 0 0 0-.053.144 3.695 3.695 0 0 0-.066.225c-.012.048-.026.095-.037.144-.018.084-.031.17-.044.256-.006.042-.014.083-.019.125a3.599 3.599 0 0 0 1.318 3.2c.114.092.07.272-.068.32Z\",clipRule:\"evenodd\"}),Terraform:/*#__PURE__*/ _jsx(\"path\",{d:\"m9.52 6.844 4.957 2.516v5.036L9.52 11.877V6.844Zm5.5 2.516v5.036l4.959-2.519V6.844L15.021 9.36ZM4.024 4.034v5.034l4.955 2.518V6.552L4.024 4.034ZM9.52 17.461l4.955 2.518v-5.031L9.52 12.43v5.03Z\"}),Pulumi:/*#__PURE__*/ _jsx(\"path\",{d:\"M11.998 6.157c1.249 0 2.262-.586 2.262-1.309 0-.722-1.013-1.308-2.262-1.308s-2.262.586-2.262 1.308c0 .723 1.013 1.309 2.262 1.309ZM7.734 8.616c1.25 0 2.262-.586 2.262-1.309C9.996 6.585 8.983 6 7.734 6s-2.261.586-2.261 1.308c0 .723 1.012 1.309 2.261 1.309ZM18.53 7.307c0 .723-1.013 1.309-2.262 1.309s-2.261-.586-2.261-1.309c0-.722 1.012-1.308 2.261-1.308 1.25 0 2.262.586 2.262 1.308Zm-6.531 3.773c1.249 0 2.262-.586 2.262-1.308 0-.723-1.013-1.309-2.262-1.309s-2.262.586-2.262 1.309c0 .722 1.013 1.308 2.262 1.308Zm-5.267 1.88c.625-.361.626-1.531.002-2.613-.625-1.081-1.638-1.665-2.264-1.304-.626.361-.627 1.531-.002 2.613.624 1.081 1.638 1.665 2.264 1.304Zm.003 2.316c.625 1.082.624 2.251-.002 2.613-.626.361-1.64-.223-2.264-1.305-.624-1.081-.623-2.251.002-2.612.626-.362 1.64.222 2.264 1.304ZM11 17.741c.624 1.081.623 2.251-.002 2.612-.626.362-1.64-.222-2.264-1.304-.625-1.082-.624-2.251.002-2.613.626-.361 1.64.223 2.264 1.305Zm-.002-4.93c.625 1.082.624 2.252-.002 2.614-.626.36-1.64-.223-2.264-1.305-.624-1.081-.623-2.251.003-2.612.625-.362 1.64.222 2.264 1.304Zm8.532-1.154c.624-1.081.623-2.251-.003-2.612-.625-.362-1.639.222-2.263 1.304-.625 1.082-.624 2.251.002 2.613.626.361 1.64-.223 2.264-1.305Zm0 2.315c.626.362.627 1.531.002 2.613-.624 1.082-1.638 1.666-2.264 1.304-.625-.361-.626-1.53-.002-2.612.625-1.082 1.638-1.666 2.264-1.305Zm-4.264 2.462c.626.361.627 1.53.002 2.613-.624 1.081-1.638 1.665-2.263 1.304-.626-.361-.627-1.531-.003-2.613.625-1.082 1.638-1.665 2.264-1.304Zm-.002-4.928c.626.361.627 1.531.002 2.613-.624 1.082-1.638 1.665-2.264 1.304-.626-.361-.627-1.53-.002-2.613.624-1.081 1.638-1.665 2.264-1.304Z\"}),NextDNS:/*#__PURE__*/ _jsx(\"path\",{d:\"M19.981 8.098v-.015a19.82 19.82 0 0 1-.017-.584 1.991 1.991 0 0 0-1.875-1.95c-2.16-.12-3.832-.825-5.26-2.217l-.012-.012a1.202 1.202 0 0 0-1.634 0l-.012.012c-1.428 1.392-3.1 2.096-5.26 2.217a1.991 1.991 0 0 0-1.874 1.95c-.004.212-.01.403-.017.584l-.001.034c-.042 2.203-.094 4.945.823 7.433a9.461 9.461 0 0 0 2.27 3.536c1.14 1.113 2.635 1.998 4.442 2.627a1.376 1.376 0 0 0 .71.05c.063-.013.124-.03.183-.05 1.805-.631 3.298-1.515 4.438-2.629a9.476 9.476 0 0 0 2.27-3.536c.92-2.496.868-5.243.826-7.45Z\"}),Salesforce:/*#__PURE__*/ _jsx(\"path\",{fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M10.49 7.37232C11.0707 6.76778 11.879 6.39342 12.7719 6.39342C13.9624 6.39342 14.9943 7.05484 15.5499 8.04036C16.043 7.81989 16.5772 7.70607 17.1174 7.70634C19.2605 7.70634 21 9.45912 21 11.622C21 13.7848 19.2605 15.5376 17.1174 15.5376C16.8555 15.5376 16.6002 15.5113 16.3502 15.4615C15.864 16.328 14.9347 16.9167 13.8765 16.9167C13.4456 16.9175 13.0203 16.8198 12.633 16.6309C12.1402 17.7884 10.9927 18.602 9.65657 18.602C8.26097 18.602 7.07702 17.7223 6.62064 16.4854C6.41751 16.5283 6.21047 16.5498 6.00287 16.5497C4.34269 16.5497 3 15.1872 3 13.5138C3 12.3894 3.60454 11.4105 4.50143 10.8813C4.31116 10.443 4.21322 9.97016 4.21371 9.49232C4.21371 7.56096 5.78129 6 7.71265 6C8.84368 6 9.85566 6.53906 10.4906 7.37576\"}),Jira:/*#__PURE__*/ _jsx(\"path\",{d:\"M12.003 2.2c-1.923 1.96-1.935 5.062.11 7.026l2.791 2.793-2.616 2.617a5.32 5.32 0 0 1 1.156 5.761l7.828-7.828a.779.779 0 0 0 0-1.1l-9.269-9.27Zm-1.43 1.424L2.728 11.47a.777.777 0 0 0 0 1.1C5.82 15.653 8.907 18.767 12 21.84a4.897 4.897 0 0 0-.066-6.982l-2.84-2.84 2.62-2.618a5.302 5.302 0 0 1-1.141-5.775v-.001Z\"}),Tableau:/*#__PURE__*/ _jsx(_Fragment,{children:/*#__PURE__*/ _jsx(\"path\",{d:\"M11.712 2v1.836h-1.644v.483h1.644v1.836h.58V4.319h1.641v-.483h-1.641V2h-.58Zm5.025 1.885-.002 1.353V6.59h-2.464v.772h2.464v2.657h.87l.008-1.318.017-1.314 1.22-.016 1.217-.009V6.59h-2.46V3.885h-.87Zm-10.34.05v2.658H3.91v.771h2.489v2.659h.82v-2.66H9.73v-.77H7.22V3.935h-.822Zm5.072 4.392v2.994H8.717v.99h2.753v2.996h1.067v-2.996h2.757v-.99h-2.758V8.327h-1.067Zm8.101 1.291v1.851h-1.677v.676h1.677v1.884h.74v-1.884H22v-.676h-1.69V9.62h-.74Zm-15.926.11v1.811H2v.518h1.644v1.828H4.2v-1.828h1.667v-.517H4.174V9.727h-.53Zm13.091 3.763v2.712h-2.513v.772h2.513v2.68h.893v-2.68h2.489v-.773h-2.489v-2.711h-.893Zm-10.386.007v2.705H3.885v.773h2.464v2.657h.918v-2.657h2.462v-.773H7.267v-2.706h-.918Zm5.264 3.815.001.919v.916H9.972v.677h1.642v1.885h.773l.01-.933.015-.952h1.64v-.677h-1.666v-1.835h-.773Z\"})}),Kubernetes:/*#__PURE__*/ _jsx(_Fragment,{children:/*#__PURE__*/ _jsx(\"path\",{d:\"M13.703 13.039h-.201c-.157.096-.227.28-.157.437l.75 1.842a3.862 3.862 0 0 0 1.563-1.965l-1.947-.314h-.008Zm-3.013.253a.362.362 0 0 0-.332-.253h-.07l-1.938.323a3.857 3.857 0 0 0 1.563 1.947l.742-1.807v-.026c.035-.044.035-.123.035-.184Zm1.598.707a.33.33 0 0 0-.445-.13c-.061.043-.105.07-.131.13h-.009l-.952 1.72a3.885 3.885 0 0 0 2.122.105c.122-.026.253-.06.376-.104L12.297 14h-.009Zm3.012-3.99-1.466 1.284.008.026a.323.323 0 0 0-.035.463.315.315 0 0 0 .158.104l.008.01 1.895.54a4.074 4.074 0 0 0-.568-2.427Zm-2.715.14a.324.324 0 0 0 .34.314c.07 0 .131-.017.184-.043h.009l1.598-1.144a3.886 3.886 0 0 0-2.244-1.083l.113 1.956Zm-1.694.27a.33.33 0 0 0 .454-.078.337.337 0 0 0 .07-.183h.009l.104-1.965c-.13.018-.261.044-.401.07a3.798 3.798 0 0 0-1.851 1.013l1.606 1.144h.01Zm-.864 1.476a.32.32 0 0 0 .227-.401c0-.07-.044-.123-.096-.166v-.01L8.69 9.984a3.896 3.896 0 0 0-.55 2.462l1.886-.541v-.009Zm1.432.577.541.261.541-.261.131-.585-.375-.463h-.603l-.375.463.14.585Zm9.508 1.152-1.545-6.697a1.19 1.19 0 0 0-.646-.82l-6.26-2.996a1.268 1.268 0 0 0-1.04 0L5.224 6.106a1.19 1.19 0 0 0-.646.821l-1.545 6.697a1.03 1.03 0 0 0 0 .515c.008.053.026.105.043.157.027.079.07.166.114.236.026.035.044.07.078.096l4.323 5.396c.017 0 .043.035.043.053.088.078.166.14.245.192.105.07.227.122.349.148.096.044.2.044.28.044h7.09c.06 0 .122-.026.174-.044.044-.009.087-.026.122-.035.035-.017.061-.026.096-.043a.978.978 0 0 0 .131-.07c.105-.07.201-.157.288-.245l.131-.174 4.192-5.222a1.06 1.06 0 0 0 .236-.489 1.03 1.03 0 0 0 0-.515Zm-6.487 2.61a.81.81 0 0 0 .06.15.293.293 0 0 0-.025.226c.104.21.2.402.332.594.07.096.14.2.209.297 0 .026.026.07.035.105a.375.375 0 0 1-.131.515.371.371 0 0 1-.515-.131c-.009-.026-.018-.044-.026-.07-.018-.026-.035-.079-.053-.079a3.929 3.929 0 0 1-.104-.358c-.08-.218-.149-.428-.263-.628a.327.327 0 0 0-.183-.122l-.07-.14a4.887 4.887 0 0 1-3.466-.009l-.087.157a.294.294 0 0 0-.166.079c-.123.21-.21.428-.288.672a3.121 3.121 0 0 1-.105.35c-.018 0-.035.06-.053.087a.376.376 0 1 1-.707-.253c.009-.027.026-.044.035-.07.035-.027.035-.07.035-.096.079-.105.14-.201.21-.306a2.74 2.74 0 0 0 .34-.602.472.472 0 0 0-.026-.219l.061-.157a4.899 4.899 0 0 1-2.157-2.698l-.174.026a.338.338 0 0 0-.201-.078 4.54 4.54 0 0 0-.672.192c-.097.052-.21.096-.324.13a.749.749 0 0 1-.113.027.382.382 0 0 1-.472-.236.378.378 0 0 1 .245-.48c.017 0 .044-.009.07-.009v-.009h.009l.096-.017c.122-.035.244-.035.358-.035.227 0 .454-.052.672-.105a.503.503 0 0 0 .166-.166l.166-.043a4.762 4.762 0 0 1 .75-3.38l-.122-.104a.382.382 0 0 0-.07-.218 3.572 3.572 0 0 0-.558-.393 2.929 2.929 0 0 1-.315-.184c-.017-.017-.052-.043-.07-.06l-.008-.01c-.175-.14-.219-.366-.096-.55a.396.396 0 0 1 .305-.13.492.492 0 0 1 .262.104l.079.061c.087.079.166.175.244.262.157.166.323.323.507.454.07.035.148.044.227.026l.13.096a4.799 4.799 0 0 1 3.127-1.501l.008-.158a.393.393 0 0 0 .123-.2 3.433 3.433 0 0 0-.044-.673 2.364 2.364 0 0 1-.053-.358v-.104a.388.388 0 0 1 .341-.42.373.373 0 0 1 .41.332v.192a2.364 2.364 0 0 1-.052.358 3.433 3.433 0 0 0-.044.673.298.298 0 0 0 .123.192l.008.166a4.868 4.868 0 0 1 3.109 1.501l.14-.104a.338.338 0 0 0 .226-.026c.184-.131.359-.289.507-.455a6.73 6.73 0 0 1 .244-.261c.027-.018.062-.053.088-.053.148-.157.384-.157.515 0 .166.14.157.376 0 .524 0 .018-.026.035-.053.052a2.138 2.138 0 0 1-.384.245 3.14 3.14 0 0 0-.558.393.268.268 0 0 0-.07.21l-.14.122c.67.987.945 2.19.768 3.37l.166.044c.035.07.096.122.166.157.218.06.445.096.672.122h.358c.027.026.07.035.105.044.21.026.35.218.323.428-.043.2-.21.349-.419.323-.026-.01-.06-.01-.06-.018v-.009a.457.457 0 0 1-.123-.017 1.7 1.7 0 0 1-.314-.131 3.073 3.073 0 0 0-.673-.183c-.078 0-.148 0-.2.07a7.462 7.462 0 0 1-.167-.027 4.907 4.907 0 0 1-2.156 2.716Z\"})}),Gitlab:/*#__PURE__*/ _jsx(\"path\",{d:\"m6.113 2.877 2.047 6.96h7.68l2.047-6.96a.384.384 0 0 1 .735-.01l3.355 10.488a.48.48 0 0 1-.166.528l-9.81 7.475-9.813-7.475a.48.48 0 0 1-.165-.528L5.378 2.867a.384.384 0 0 1 .735.01Z\"}),Elastic:/*#__PURE__*/ _jsx(\"path\",{d:\"m14.187 12.538-4.27-1.946-.833-1.78.72-3.718a4.81 4.81 0 0 1 8.78 2.72c.004.319-.026.637-.09.949l-4.307 3.775Zm-8.78 3.537a4.668 4.668 0 0 1 .09-.964l4.207-3.793 4.287 1.954.944 1.814-.707 3.701a4.83 4.83 0 0 1-8.821-2.712Zm.066-8.352 2.926.69.643-3.322a2.31 2.31 0 0 0-3.569 2.632ZM3.634 9.567c.397-.535.95-.935 1.583-1.143l3.216.76.75 1.608L5.077 14.5a3.224 3.224 0 0 1-1.443-4.934Zm11.337 9.22a2.307 2.307 0 0 0 3.561-2.63l-2.918-.684-.643 3.314Zm3.807-3.33-3.214-.75-.848-1.644 4.204-3.685a3.224 3.224 0 0 1-.142 6.078Z\"}),Database:/*#__PURE__*/ _jsx(\"path\",{d:\"M12 3C7.58 3 4 4.79 4 7C4 9.21 7.58 11 12 11C16.42 11 20 9.21 20 7C20 4.79 16.42 3 12 3ZM4 9V12C4 14.21 7.58 16 12 16C16.42 16 20 14.21 20 12V9C20 11.21 16.42 13 12 13C7.58 13 4 11.21 4 9ZM4 14V17C4 19.21 7.58 21 12 21C16.42 21 20 19.21 20 17V14C20 16.21 16.42 18 12 18C7.58 18 4 16.21 4 14Z\"}),Connector:/*#__PURE__*/ _jsx(\"path\",{d:\"M6 10V13C6 15.206 7.794 17 10 17H11V21H13V17H14C16.206 17 18 15.206 18 13V10V8H6V10ZM8 10H16V13C16 14.103 15.103 15 14 15H10C8.897 15 8 14.103 8 13V10ZM8 3H10V7H8V3ZM14 3H16V7H14V3Z\"}),API:/*#__PURE__*/ _jsx(\"path\",{fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M5.77778 4C4.79594 4 4 4.79594 4 5.77778V18.2222C4 19.2041 4.79594 20 5.77778 20H18.2222C19.2041 20 20 19.2041 20 18.2222V5.77778C20 4.79594 19.2041 4 18.2222 4H5.77778ZM5.77778 5.77778H18.2222V18.2222H5.77778V5.77778ZM9.85405 12.8889L7.81592 10.8508L9.073 9.5937L11.7397 12.2604L12.3682 12.8889L11.7397 13.5174L9.073 16.1841L7.81592 14.927L9.85405 12.8889ZM12.8889 14.6667H16.4445V16.4445H12.8889V14.6667Z\"})};\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Logos\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Logos.map", "// Generated by Framer (d213f04)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,SVG,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";const cycleOrder=[\"Ez6AL2vTh\",\"BNbfbktEW\",\"EjrLISIop\",\"m9F2Vlw0F\",\"RvL4_kC86\",\"uhSfrryf7\",\"uD5j7l2Ki\",\"cpSLXUwzV\"];const variantClassNames={BNbfbktEW:\"framer-v-a1vcmy\",cpSLXUwzV:\"framer-v-1u7y9t1\",EjrLISIop:\"framer-v-q71sdo\",Ez6AL2vTh:\"framer-v-1oza8zk\",m9F2Vlw0F:\"framer-v-1gpai48\",RvL4_kC86:\"framer-v-vjq1l7\",uD5j7l2Ki:\"framer-v-im10yw\",uhSfrryf7:\"framer-v-n0oe9p\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants===null||variants===void 0?void 0:variants.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transitions={default:{delay:0,duration:.15,ease:[0,0,1,1],type:\"tween\"}};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value!==null&&value!==void 0?value:config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/ _jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const humanReadableVariantMap={\"Black \u2013\\xa0Arrow\":\"m9F2Vlw0F\",\"White - Arrow back\":\"uD5j7l2Ki\",\"White \u2013\\xa0Arrow\":\"EjrLISIop\",\"Yellow - Arrow\":\"uhSfrryf7\",Back:\"cpSLXUwzV\",Black:\"BNbfbktEW\",White:\"Ez6AL2vTh\",Yellow:\"RvL4_kC86\"};const getProps=({height,id,width,...props})=>{var _variant,ref;return{...props,variant:(ref=(_variant=humanReadableVariantMap[props.variant])!==null&&_variant!==void 0?_variant:props.variant)!==null&&ref!==void 0?ref:\"Ez6AL2vTh\"};};const createLayoutDependency=(props,variants)=>variants.join(\"-\")+props.layoutDependency;const Component=/*#__PURE__*/ React.forwardRef(function(props,ref){const{activeLocale}=useLocaleInfo();const{style,className,layoutId,variant,...restProps}=getProps(props);const{baseVariant,classNames,gestureVariant,setGestureState,setVariant,transition,variants}=useVariantState({cycleOrder,defaultVariant:\"Ez6AL2vTh\",transitions,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const defaultLayoutId=React.useId();return /*#__PURE__*/ _jsx(LayoutGroup,{id:layoutId!==null&&layoutId!==void 0?layoutId:defaultLayoutId,children:/*#__PURE__*/ _jsx(motion.div,{initial:variant,animate:variants,onHoverStart:()=>setGestureState({isHovered:true}),onHoverEnd:()=>setGestureState({isHovered:false}),onTapStart:()=>setGestureState({isPressed:true}),onTap:()=>setGestureState({isPressed:false}),onTapCancel:()=>setGestureState({isPressed:false}),className:cx(\"framer-z1hiy\",classNames),style:{display:\"contents\"},children:/*#__PURE__*/ _jsx(Transition,{value:transition,children:/*#__PURE__*/ _jsxs(motion.div,{...restProps,className:cx(\"framer-1oza8zk\",className),\"data-framer-name\":\"White\",layoutDependency:layoutDependency,layoutId:\"Ez6AL2vTh\",ref:ref,style:{rotate:0,...style},variants:{cpSLXUwzV:{rotate:-180},uD5j7l2Ki:{rotate:-180}},...addPropertyOverrides({BNbfbktEW:{\"data-framer-name\":\"Black\"},cpSLXUwzV:{\"data-framer-name\":\"Back\"},EjrLISIop:{\"data-framer-name\":\"White \u2013\\xa0Arrow\"},m9F2Vlw0F:{\"data-framer-name\":\"Black \u2013\\xa0Arrow\"},RvL4_kC86:{\"data-framer-name\":\"Yellow\"},uD5j7l2Ki:{\"data-framer-name\":\"White - Arrow back\"},uhSfrryf7:{\"data-framer-name\":\"Yellow - Arrow\"}},baseVariant,gestureVariant),children:[/*#__PURE__*/ _jsx(SVG,{className:\"framer-158u9qp\",\"data-framer-name\":\"Chevron\",layout:\"position\",layoutDependency:layoutDependency,layoutId:\"z6fD6aidZ\",opacity:1,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 14 20\"><path d=\"M 5.25 5 L 10.25 10 L 5.25 15\" fill=\"transparent\" stroke-width=\"1.5\" stroke=\"hsl(0, 0%, 100%)\"></path></svg>',svgContentId:2638348318,withExternalLayout:true,...addPropertyOverrides({BNbfbktEW:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 14 20\"><path d=\"M 5.25 5 L 10.25 10 L 5.25 15\" fill=\"transparent\" stroke-width=\"1.5\" stroke=\"hsl(0, 0%, 0%)\"></path></svg>',svgContentId:3997864186},m9F2Vlw0F:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 14 20\"><path d=\"M 5.25 5 L 10.25 10 L 5.25 15\" fill=\"transparent\" stroke-width=\"1.5\" stroke=\"hsl(0, 0%, 0%)\"></path></svg>',svgContentId:3997864186},RvL4_kC86:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 14 20\"><path d=\"M 5.25 5 L 10.25 10 L 5.25 15\" fill=\"transparent\" stroke-width=\"1.5\" stroke=\"var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95)) /* {&quot;name&quot;:&quot;Primary&quot;} */\"></path></svg>',svgContentId:2900247283},uD5j7l2Ki:{svgContentId:1869636214},uhSfrryf7:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 14 20\"><path d=\"M 5.25 5 L 10.25 10 L 5.25 15\" fill=\"transparent\" stroke-width=\"1.5\" stroke=\"var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95)) /* {&quot;name&quot;:&quot;Primary&quot;} */\"></path></svg>',svgContentId:2900247283}},baseVariant,gestureVariant)}),/*#__PURE__*/ _jsx(motion.div,{className:\"framer-tarwdc\",\"data-framer-name\":\"Tail Container\",layoutDependency:layoutDependency,layoutId:\"tvqjBoQu5\",style:{opacity:0},variants:{EjrLISIop:{opacity:1},m9F2Vlw0F:{opacity:1},uD5j7l2Ki:{opacity:1},uhSfrryf7:{opacity:1}},children:/*#__PURE__*/ _jsx(SVG,{className:\"framer-15ab526\",\"data-framer-name\":\"Tail\",layout:\"position\",layoutDependency:layoutDependency,layoutId:\"VCSuC_dZ1\",opacity:1,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 14 20\"><path d=\"M 11.25 10 L 1 10\" fill=\"transparent\" stroke-width=\"1.5\" stroke=\"hsl(0, 0%, 100%)\"></path></svg>',svgContentId:2121449181,withExternalLayout:true,...addPropertyOverrides({BNbfbktEW:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 14 20\"><path d=\"M 11.25 10 L 1 10\" fill=\"transparent\" stroke-width=\"1.5\" stroke=\"hsl(0, 0%, 0%)\"></path></svg>',svgContentId:653454948},EjrLISIop:{svgContentId:3661122931},m9F2Vlw0F:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 14 20\"><path d=\"M 11.25 10 L 1 10\" fill=\"transparent\" stroke-width=\"1.5\" stroke=\"hsl(0, 0%, 0%)\"></path></svg>',svgContentId:2247734787},RvL4_kC86:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 14 20\"><path d=\"M 11.25 10 L 1 10\" fill=\"transparent\" stroke-width=\"1.5\" stroke=\"var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95)) /* {&quot;name&quot;:&quot;Primary&quot;} */\"></path></svg>',svgContentId:1844754104},uD5j7l2Ki:{svgContentId:3661122931},uhSfrryf7:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 14 20\"><path d=\"M 11.25 10 L 1 10\" fill=\"transparent\" stroke-width=\"1.5\" stroke=\"var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95)) /* {&quot;name&quot;:&quot;Primary&quot;} */\"></path></svg>',svgContentId:2897311639}},baseVariant,gestureVariant)})})]})})})});});const css=['.framer-z1hiy [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; pointer-events: none; }',\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-z1hiy .framer-c9dzdp { display: block; }\",\".framer-z1hiy .framer-1oza8zk { height: 20px; overflow: visible; position: relative; width: 10px; }\",\".framer-z1hiy .framer-158u9qp { flex: none; height: 20px; position: absolute; right: -4px; top: calc(50.00000000000002% - 20px / 2); width: 14px; }\",\".framer-z1hiy .framer-tarwdc { bottom: 0px; flex: none; overflow: hidden; position: absolute; right: 2px; top: 0px; width: 1px; }\",\".framer-z1hiy .framer-15ab526 { flex: none; height: 20px; position: absolute; right: -6px; top: calc(50.00000000000002% - 20px / 2); width: 14px; }\",\".framer-z1hiy.framer-v-q71sdo .framer-tarwdc, .framer-z1hiy.framer-v-1gpai48 .framer-tarwdc, .framer-z1hiy.framer-v-n0oe9p .framer-tarwdc { right: 0px; width: 10px; }\",\".framer-z1hiy.framer-v-q71sdo .framer-15ab526, .framer-z1hiy.framer-v-1gpai48 .framer-15ab526, .framer-z1hiy.framer-v-n0oe9p .framer-15ab526, .framer-z1hiy.framer-v-im10yw .framer-15ab526 { right: -4px; }\",\".framer-z1hiy.framer-v-im10yw .framer-158u9qp { right: -6px; }\",\".framer-z1hiy.framer-v-im10yw .framer-tarwdc { right: -2px; width: 10px; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 20\n * @framerIntrinsicWidth 10\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"BNbfbktEW\":{\"layout\":[\"fixed\",\"fixed\"]},\"EjrLISIop\":{\"layout\":[\"fixed\",\"fixed\"]},\"m9F2Vlw0F\":{\"layout\":[\"fixed\",\"fixed\"]},\"RvL4_kC86\":{\"layout\":[\"fixed\",\"fixed\"]},\"uhSfrryf7\":{\"layout\":[\"fixed\",\"fixed\"]},\"uD5j7l2Ki\":{\"layout\":[\"fixed\",\"fixed\"]},\"cpSLXUwzV\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n */ const FramerpRemd4fMu=withCSS(Component,css,\"framer-z1hiy\");export default FramerpRemd4fMu;FramerpRemd4fMu.displayName=\"Graphics / Button Arrow\";FramerpRemd4fMu.defaultProps={height:20,width:10};addPropertyControls(FramerpRemd4fMu,{variant:{options:[\"Ez6AL2vTh\",\"BNbfbktEW\",\"EjrLISIop\",\"m9F2Vlw0F\",\"RvL4_kC86\",\"uhSfrryf7\",\"uD5j7l2Ki\",\"cpSLXUwzV\"],optionTitles:[\"White\",\"Black\",\"White \u2013\\xa0Arrow\",\"Black \u2013\\xa0Arrow\",\"Yellow\",\"Yellow - Arrow\",\"White - Arrow back\",\"Back\"],title:\"Variant\",type:ControlType.Enum}});addFonts(FramerpRemd4fMu,[]);\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerpRemd4fMu\",\"slots\":[],\"annotations\":{\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"BNbfbktEW\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"EjrLISIop\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"m9F2Vlw0F\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"RvL4_kC86\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"uhSfrryf7\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"uD5j7l2Ki\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"cpSLXUwzV\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"20\",\"framerIntrinsicWidth\":\"10\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./pRemd4fMu.map", "// Generated by Framer (d65f646)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,SVG,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";const cycleOrder=[\"mRpTeKf3V\",\"PpaE0NinW\",\"tQp0ZQcow\",\"NrDjexu5A\",\"MCdAQ1WB1\",\"nVKy98A78\",\"wCoAJl1WU\",\"wvwwYzx1s\",\"dXT989ZNN\",\"GcSNeETD5\",\"vlLg6xeHq\",\"nwnCqM2RJ\",\"WPtUkdPXb\",\"aw6419Nd3\",\"oY1UsN78d\",\"VsosXQk2M\",\"ZCxx99ZW_\"];const serializationHash=\"framer-1dZeB\";const variantClassNames={aw6419Nd3:\"framer-v-14ew5f6\",dXT989ZNN:\"framer-v-e0hcs0\",GcSNeETD5:\"framer-v-1w808ct\",MCdAQ1WB1:\"framer-v-1llyf4p\",mRpTeKf3V:\"framer-v-auhldw\",NrDjexu5A:\"framer-v-1ldtib5\",nVKy98A78:\"framer-v-1cpi1hw\",nwnCqM2RJ:\"framer-v-1lexrye\",oY1UsN78d:\"framer-v-3ou12a\",PpaE0NinW:\"framer-v-v8w3oh\",tQp0ZQcow:\"framer-v-1v9za3r\",vlLg6xeHq:\"framer-v-15ffzyh\",VsosXQk2M:\"framer-v-138jnt5\",wCoAJl1WU:\"framer-v-usifg0\",WPtUkdPXb:\"framer-v-1df0ole\",wvwwYzx1s:\"framer-v-oofkt9\",ZCxx99ZW_:\"framer-v-178dr1r\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const humanReadableVariantMap={\"Customer Stories\":\"oY1UsN78d\",\"Internet Security\":\"vlLg6xeHq\",\"Kubernetes Access\":\"ZCxx99ZW_\",About:\"mRpTeKf3V\",Access:\"GcSNeETD5\",Blog:\"PpaE0NinW\",Careers:\"MCdAQ1WB1\",Changelog:\"tQp0ZQcow\",Demo:\"wCoAJl1WU\",Docs:\"dXT989ZNN\",Events:\"VsosXQk2M\",Help:\"WPtUkdPXb\",Integrations:\"NrDjexu5A\",Partners:\"wvwwYzx1s\",Testimonials:\"aw6419Nd3\",Whitepaper:\"nVKy98A78\",ZTNA:\"nwnCqM2RJ\"};const getProps=({height,id,width,...props})=>{return{...props,variant:humanReadableVariantMap[props.variant]??props.variant??\"mRpTeKf3V\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"mRpTeKf3V\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);const isDisplayed=()=>{if([\"PpaE0NinW\",\"tQp0ZQcow\",\"NrDjexu5A\",\"MCdAQ1WB1\",\"nVKy98A78\",\"wCoAJl1WU\",\"wvwwYzx1s\",\"dXT989ZNN\",\"GcSNeETD5\",\"vlLg6xeHq\",\"nwnCqM2RJ\",\"WPtUkdPXb\",\"aw6419Nd3\",\"oY1UsN78d\",\"VsosXQk2M\",\"ZCxx99ZW_\"].includes(baseVariant))return false;return true;};const isDisplayed1=()=>{if(baseVariant===\"MCdAQ1WB1\")return true;return false;};const isDisplayed2=()=>{if(baseVariant===\"nVKy98A78\")return true;return false;};const isDisplayed3=()=>{if(baseVariant===\"wvwwYzx1s\")return true;return false;};const isDisplayed4=()=>{if(baseVariant===\"PpaE0NinW\")return true;return false;};const isDisplayed5=()=>{if(baseVariant===\"NrDjexu5A\")return true;return false;};const isDisplayed6=()=>{if(baseVariant===\"tQp0ZQcow\")return true;return false;};const isDisplayed7=()=>{if(baseVariant===\"wCoAJl1WU\")return true;return false;};const isDisplayed8=()=>{if(baseVariant===\"dXT989ZNN\")return true;return false;};const isDisplayed9=()=>{if(baseVariant===\"GcSNeETD5\")return true;return false;};const isDisplayed10=()=>{if(baseVariant===\"vlLg6xeHq\")return true;return false;};const isDisplayed11=()=>{if(baseVariant===\"nwnCqM2RJ\")return true;return false;};const isDisplayed12=()=>{if(baseVariant===\"WPtUkdPXb\")return true;return false;};const isDisplayed13=()=>{if(baseVariant===\"aw6419Nd3\")return true;return false;};const isDisplayed14=()=>{if(baseVariant===\"oY1UsN78d\")return true;return false;};const isDisplayed15=()=>{if(baseVariant===\"VsosXQk2M\")return true;return false;};const isDisplayed16=()=>{if(baseVariant===\"ZCxx99ZW_\")return true;return false;};return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-auhldw\",className,classNames),\"data-framer-name\":\"About\",layoutDependency:layoutDependency,layoutId:\"mRpTeKf3V\",ref:refBinding,style:{...style},...addPropertyOverrides({aw6419Nd3:{\"data-framer-name\":\"Testimonials\"},dXT989ZNN:{\"data-framer-name\":\"Docs\"},GcSNeETD5:{\"data-framer-name\":\"Access\"},MCdAQ1WB1:{\"data-framer-name\":\"Careers\"},NrDjexu5A:{\"data-framer-name\":\"Integrations\"},nVKy98A78:{\"data-framer-name\":\"Whitepaper\"},nwnCqM2RJ:{\"data-framer-name\":\"ZTNA\"},oY1UsN78d:{\"data-framer-name\":\"Customer Stories\"},PpaE0NinW:{\"data-framer-name\":\"Blog\"},tQp0ZQcow:{\"data-framer-name\":\"Changelog\"},vlLg6xeHq:{\"data-framer-name\":\"Internet Security\"},VsosXQk2M:{\"data-framer-name\":\"Events\"},wCoAJl1WU:{\"data-framer-name\":\"Demo\"},WPtUkdPXb:{\"data-framer-name\":\"Help\"},wvwwYzx1s:{\"data-framer-name\":\"Partners\"},ZCxx99ZW_:{\"data-framer-name\":\"Kubernetes Access\"}},baseVariant,gestureVariant),children:[isDisplayed()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1ren2z7\",\"data-framer-name\":\"About\",layoutDependency:layoutDependency,layoutId:\"xFHc0Hc0s\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-1x69tpx\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:13,intrinsicWidth:16,layoutDependency:layoutDependency,layoutId:\"b1TRzYUxg\",svg:'<svg width=\"16\" height=\"13\" viewBox=\"0 0 16 13\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3.5 4C3.5 2.61929 4.61929 1.5 6 1.5C7.38071 1.5 8.5 2.61929 8.5 4C8.5 5.38071 7.38071 6.5 6 6.5C4.61929 6.5 3.5 5.38071 3.5 4ZM6 0.5C4.067 0.5 2.5 2.067 2.5 4C2.5 5.933 4.067 7.5 6 7.5C7.933 7.5 9.5 5.933 9.5 4C9.5 2.067 7.933 0.5 6 0.5ZM12.5 4C12.5 3.17157 11.8284 2.5 11 2.5V1.5C12.3807 1.5 13.5 2.61929 13.5 4C13.5 5.38071 12.3807 6.5 11 6.5V5.5C11.8284 5.5 12.5 4.82843 12.5 4ZM4 8.5C2.067 8.5 0.5 10.067 0.5 12V13H1.5V12C1.5 10.6193 2.61929 9.5 4 9.5H8C9.38071 9.5 10.5 10.6193 10.5 12V13H11.5V12C11.5 10.067 9.933 8.5 8 8.5H4ZM15.5 12C15.5 10.067 13.933 8.5 12 8.5V9.5C13.3807 9.5 14.5 10.6193 14.5 12V13H15.5V12Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed1()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1rbjvz1\",\"data-framer-name\":\"Careers\",layoutDependency:layoutDependency,layoutId:\"HL7rLJEnt\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-1s8xbol\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:14,intrinsicWidth:14,layoutDependency:layoutDependency,layoutId:\"RBWsoJZ4I\",svg:'<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6 0.5C4.61929 0.5 3.5 1.61929 3.5 3V4H2C0.895431 4 0 4.89543 0 6V12C0 13.1046 0.89543 14 2 14H12C13.1046 14 14 13.1046 14 12V6C14 4.89543 13.1046 4 12 4H10.5V3C10.5 1.61929 9.38071 0.5 8 0.5H6ZM9.5 4V3C9.5 2.17157 8.82843 1.5 8 1.5H6C5.17157 1.5 4.5 2.17157 4.5 3V4H9.5ZM2 5H12C12.5523 5 13 5.44772 13 6V12C13 12.5523 12.5523 13 12 13H2C1.44772 13 1 12.5523 1 12V6C1 5.44772 1.44772 5 2 5Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed2()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1us8y0m\",\"data-framer-name\":\"Whitepaper\",layoutDependency:layoutDependency,layoutId:\"FagJc8Flc\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-1mghwip\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:14,intrinsicWidth:12,layoutDependency:layoutDependency,layoutId:\"wdxpAsnxm\",svg:'<svg width=\"12\" height=\"14\" viewBox=\"0 0 12 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M10 13H2C1.44772 13 1 12.5523 1 12V2C1 1.44772 1.44772 1 2 1H5.5V6.5H11V12C11 12.5523 10.5523 13 10 13ZM12 5.5V6.5V12C12 13.1046 11.1046 14 10 14H2C0.895431 14 0 13.1046 0 12V2C0 0.895431 0.895431 0 2 0H5.5H6.5H7L12 5V5.5ZM6.5 1H6.58579L11 5.41421V5.5H6.5V1Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed3()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-bujgmj\",\"data-framer-name\":\"Partners\",layoutDependency:layoutDependency,layoutId:\"fuO00V6yq\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-7dgxpy\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:15,intrinsicWidth:15,layoutDependency:layoutDependency,layoutId:\"Z5RYW52K2\",svg:'<svg width=\"15\" height=\"15\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3.37866 1.20046C4.55023 0.0288849 6.44972 0.0288854 7.6213 1.20045L8.05534 1.63449C9.23053 0.751627 10.9064 0.844893 11.9758 1.91429L14.0856 4.02409C15.2572 5.19566 15.2572 7.09514 14.0856 8.26671L8.71744 13.635C8.13166 14.2208 7.18191 14.2208 6.59612 13.635C6.32445 13.3633 6.17877 13.0134 6.15909 12.6577C5.80347 12.6381 5.45352 12.4924 5.18186 12.2207C4.91021 11.9491 4.76453 11.5991 4.74483 11.2435C4.38928 11.2238 4.03941 11.0781 3.7678 10.8065C3.49613 10.5349 3.35045 10.1849 3.33076 9.82928C2.97512 9.80961 2.62515 9.66393 2.35346 9.39225C1.76767 8.80646 1.76767 7.85671 2.35346 7.27093L6.7 2.97815L7.18384 3.46689L8.86028 5.09374L8.86106 5.0945L8.86328 5.09658C8.86649 5.09958 8.87256 5.10516 8.88121 5.11278C8.89864 5.12812 8.9259 5.15114 8.96097 5.17774C9.03317 5.2325 9.12817 5.29461 9.23093 5.3392C9.33524 5.38446 9.4235 5.4013 9.49268 5.39602C9.54945 5.3917 9.61826 5.37167 9.7019 5.28846C9.80937 5.18155 9.83844 5.10226 9.84758 5.05767C9.85729 5.01027 9.85268 4.96075 9.83347 4.90525C9.81336 4.84715 9.78045 4.79268 9.74858 4.75011C9.7334 4.72984 9.72039 4.71484 9.71259 4.70629L9.70659 4.6999L9.70087 4.69448L6.91419 1.90756C6.13314 1.12652 4.86681 1.12652 4.08577 1.90756L1.85367 4.13966C1.17345 4.81988 1.17345 5.92274 1.85367 6.60296L1.14657 7.31007C0.0758189 6.23932 0.0758195 4.5033 1.14657 3.43255L3.37866 1.20046ZM9.92771 9.59619L9.92777 9.59625L7.30323 12.2208C7.10797 12.416 7.10797 12.7326 7.30323 12.9279C7.49849 13.1231 7.81507 13.1231 8.01033 12.9279L13.3785 7.55961C14.1596 6.77856 14.1596 5.51224 13.3785 4.7312L11.2687 2.6214C10.5909 1.94364 9.54777 1.85401 8.77336 2.35251L10.4055 3.98467L10.4063 3.98537L10.418 3.99704C10.427 4.00617 10.4383 4.01803 10.4515 4.03249C10.4778 4.06128 10.5119 4.1011 10.5491 4.15079C10.622 4.24815 10.7148 4.39414 10.7785 4.57819C10.8431 4.76484 10.8804 4.99916 10.8272 5.25845C10.7735 5.52054 10.635 5.77077 10.4072 5.99737C10.1556 6.24768 9.864 6.37062 9.5687 6.39313C9.28581 6.4147 9.03036 6.34226 8.83286 6.25655C8.6338 6.17018 8.46889 6.05962 8.35663 5.97447C8.29948 5.93111 8.25337 5.89236 8.22049 5.86341C8.20399 5.84889 8.19067 5.8367 8.18078 5.82747L8.16852 5.81588L8.16435 5.81186L8.16277 5.81031L8.1618 5.80937L6.69334 4.38434L3.06057 7.97803C2.86531 8.1733 2.86531 8.48988 3.06057 8.68514C3.25583 8.8804 3.57241 8.8804 3.76767 8.68514L6.39221 6.06061L6.3923 6.0607L6.39233 6.06067L7.09944 6.76778L4.4749 9.39231C4.27964 9.58757 4.27964 9.90416 4.4749 10.0994C4.66781 10.2923 4.97912 10.2947 5.17488 10.1064L5.18186 10.0994L7.8064 7.47485L7.80649 7.47494L7.80655 7.47488L8.51365 8.18199L5.88912 10.8065L5.88194 10.8137C5.69373 11.0094 5.69607 11.3207 5.88897 11.5136C6.08423 11.7089 6.40081 11.7089 6.59607 11.5136L9.22061 8.88907L9.92772 9.59617L9.92771 9.59619Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed4()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1dq4vmm\",\"data-framer-name\":\"Blog\",layoutDependency:layoutDependency,layoutId:\"sNcoWagON\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-15xzfgm\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:14,intrinsicWidth:14,layoutDependency:layoutDependency,layoutId:\"wjKC0moFR\",svg:'<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 1H2C1.44772 1 1 1.44772 1 2V6C1 6.55228 1.44772 7 2 7H12C12.5523 7 13 6.55228 13 6V2C13 1.44772 12.5523 1 12 1ZM2 0C0.895431 0 0 0.895431 0 2V6C0 7.10457 0.89543 8 2 8H12C13.1046 8 14 7.10457 14 6V2C14 0.895431 13.1046 0 12 0H2ZM0 10H13V11H0V10ZM9 13H0V14H9V13Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed5()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-iept9k\",\"data-framer-name\":\"Integrations\",layoutDependency:layoutDependency,layoutId:\"axxKfkum4\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-1yy1ydq\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:14,intrinsicWidth:14,layoutDependency:layoutDependency,layoutId:\"xL3BpqLjM\",svg:'<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M9.55556 1H13V4.44444H9.55556V1ZM8.55556 0H9.55556H13H14V1V4.44444V5.44444H13H9.55556H8.55556V4.44444V3.22222H4.72222C3.8938 3.22222 3.22222 3.8938 3.22222 4.72222V7H2.22222V4.72222C2.22222 3.34151 3.34151 2.22222 4.72222 2.22222H8.55556V1V0ZM1 9.55556H4.44444V13H1V9.55556ZM0 8.55556H1H4.44444H5.44444V9.55556V10.7778H9.27778C10.1062 10.7778 10.7778 10.1062 10.7778 9.27778V7H11.7778V9.27778C11.7778 10.6585 10.6585 11.7778 9.27778 11.7778H5.44444V13V14H4.44444H1H0V13V9.55556V8.55556Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed6()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-ev02k9\",\"data-framer-name\":\"Changelog\",layoutDependency:layoutDependency,layoutId:\"zfqKSXwPe\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-1nieumd\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:14,intrinsicWidth:14,layoutDependency:layoutDependency,layoutId:\"xmLQO0l9w\",svg:'<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8.03534 0.371338V0.371345C8.41101 0.373018 8.78538 0.415468 9.15188 0.497947C9.51413 0.578237 9.86549 0.701495 10.1985 0.865102C10.5288 1.02184 10.8423 1.21167 11.1342 1.43168L11.1428 1.43817L11.1511 1.44502C11.4343 1.67818 11.6945 1.93787 11.9282 2.22053C12.1776 2.49797 12.3985 2.79985 12.5875 3.12158C12.788 3.45201 12.9569 3.80058 13.0921 4.16268L12.1552 4.51236C12.0416 4.20804 11.8996 3.91513 11.7309 3.63753L11.7268 3.63083L11.7268 3.63079C11.57 3.36325 11.3862 3.11242 11.1783 2.88221L11.1707 2.87377L11.1635 2.86499C10.9711 2.6314 10.7569 2.41671 10.5237 2.22382C10.2874 2.04664 10.0339 1.89367 9.76699 1.76721L9.76019 1.76399L9.76022 1.76394C9.49765 1.63468 9.22053 1.53737 8.93479 1.4741L8.93303 1.47371C8.63733 1.40711 8.33528 1.37278 8.03218 1.37134C7.56196 1.37182 7.09471 1.44578 6.64732 1.59055L6.64338 1.59182L6.64338 1.5918C6.19535 1.7327 5.76679 1.9293 5.36776 2.17701L5.36555 2.17838L5.36555 2.17837C4.95691 2.42912 4.57024 2.714 4.20967 3.02998C3.85814 3.34042 3.52622 3.67238 3.21581 4.02393L3.20553 4.03556L3.19456 4.04654C2.92855 4.31255 2.68702 4.6397 2.45038 4.96025L2.40519 5.02144C2.1717 5.33734 1.97851 5.63382 1.80669 5.89869C1.76118 5.96887 1.71885 6.03636 1.67959 6.10052H5.1685V7.10052H0.871582H0.371582V6.60052V2.3036H1.37158V4.74774C1.44361 4.64392 1.51998 4.53669 1.60102 4.42705L1.65439 4.35471C1.87929 4.0497 2.15928 3.66995 2.47628 3.35065C2.8114 2.97205 3.16947 2.61442 3.54848 2.27976L3.54985 2.27855L3.54985 2.27855C3.95276 1.9254 4.38483 1.60699 4.84144 1.32672C5.31072 1.03553 5.81465 0.804312 6.34144 0.638473C6.88786 0.46189 7.45851 0.371758 8.03275 0.371338H8.03534ZM8.71213 7.77915H12.1997C12.1604 7.84336 12.118 7.91091 12.0725 7.98114C11.9006 8.24601 11.7075 8.54248 11.474 8.85838L11.4288 8.91956C11.1921 9.24011 10.9506 9.56726 10.6846 9.83327L10.6736 9.84425L10.6634 9.85588C10.3529 10.2075 10.021 10.5394 9.66941 10.8499C9.30887 11.1658 8.92224 11.4507 8.51364 11.7014L8.51143 11.7028C8.11241 11.9505 7.68385 12.1471 7.23583 12.288L7.23582 12.288L7.23189 12.2892C6.78451 12.434 6.31726 12.508 5.84705 12.5084C5.54395 12.507 5.24191 12.4727 4.94621 12.4061L4.94445 12.4057C4.65871 12.3424 4.3816 12.2451 4.11903 12.1158L4.11906 12.1158L4.11226 12.1126C3.84533 11.9861 3.59181 11.8331 3.35551 11.656C3.12237 11.4631 2.90817 11.2484 2.71581 11.0148L2.70858 11.006L2.70096 10.9976C2.49311 10.7674 2.30932 10.5166 2.15243 10.249L2.15248 10.249L2.14841 10.2423C1.97972 9.96468 1.83764 9.67177 1.72405 9.36745L0.787188 9.71714C0.922342 10.0792 1.09129 10.4278 1.29179 10.7582C1.48075 11.08 1.70164 11.3818 1.9511 11.6593C2.18481 11.9419 2.445 12.2016 2.72813 12.4348L2.73645 12.4416L2.74506 12.4481C3.03699 12.6681 3.35049 12.8579 3.68074 13.0147C4.01375 13.1783 4.3651 13.3015 4.72735 13.3818C5.09385 13.4643 5.46822 13.5068 5.84388 13.5084L5.84647 13.5084C6.42072 13.508 6.99137 13.4179 7.53778 13.2413C8.06456 13.0755 8.56848 12.8442 9.03775 12.5531C9.49436 12.2728 9.92642 11.9544 10.3293 11.6012L10.3307 11.6C10.7097 11.2654 11.0678 10.9077 11.4029 10.5292C11.7199 10.2099 11.9999 9.83014 12.2247 9.52513L12.2248 9.52511L12.2781 9.45277C12.3597 9.34241 12.4366 9.23448 12.509 9.13002V11.576H13.509V7.27915V6.77915H13.009H8.71213V7.77915ZM9.03775 12.5531L9.03664 12.5537L8.77516 12.1276L9.03885 12.5524L9.03775 12.5531ZM7.53778 13.2413L7.53581 13.2419L7.38582 12.7649L7.53976 13.2407L7.53778 13.2413ZM4.72735 13.3818L4.72648 13.3816L4.83635 12.8939L4.72824 13.382L4.72735 13.3818ZM3.68074 13.0147L3.67736 13.013L3.8982 12.5644L3.68413 13.0163L3.68074 13.0147ZM1.9511 11.6593L1.94387 11.6505L2.32984 11.3327L1.95872 11.6677L1.9511 11.6593ZM1.29179 10.7582L1.2898 10.7548L1.72112 10.5019L1.29382 10.7616L1.29179 10.7582ZM3.35551 11.656L3.36383 11.6628L3.04598 12.0488L3.34691 11.6495L3.35551 11.656ZM5.84705 12.5084L5.84834 12.5084L5.84611 13.0084L5.84575 12.5084L5.84705 12.5084ZM9.66941 10.8499L9.67017 10.8492L9.99973 11.2252L9.66881 10.8504L9.66941 10.8499Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed7()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-y3uqb7\",\"data-framer-name\":\"Demo\",layoutDependency:layoutDependency,layoutId:\"GvTa4bZZ4\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-1iszh3d\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:12,intrinsicWidth:14,layoutDependency:layoutDependency,layoutId:\"tXsIg_hwh\",svg:'<svg width=\"14\" height=\"12\" viewBox=\"0 0 14 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 1H2C1.44772 1 1 1.44772 1 2V8C1 8.55229 1.44772 9 2 9H12C12.5523 9 13 8.55228 13 8V2C13 1.44772 12.5523 1 12 1ZM2 0C0.895431 0 0 0.895431 0 2V8C0 9.10457 0.895431 10 2 10H12C13.1046 10 14 9.10457 14 8V2C14 0.895431 13.1046 0 12 0H2ZM3.5 7C3.5 5.067 5.067 3.5 7 3.5C8.933 3.5 10.5 5.067 10.5 7H9.5C9.5 5.61929 8.38071 4.5 7 4.5C5.61929 4.5 4.5 5.61929 4.5 7H3.5ZM10 12V11H4V12H10Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed8()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-ufad00\",\"data-framer-name\":\"Docs\",layoutDependency:layoutDependency,layoutId:\"aWcH3OiRd\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-j09j3d\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:14,intrinsicWidth:12,layoutDependency:layoutDependency,layoutId:\"FawRVJVB9\",svg:'<svg width=\"12\" height=\"14\" viewBox=\"0 0 12 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3 0.5C1.61929 0.5 0.5 1.61929 0.5 3V11.5C0.5 12.6046 1.39543 13.5 2.5 13.5H11.5V12.5H2.5C1.94772 12.5 1.5 12.0523 1.5 11.5C1.5 10.9477 1.94772 10.5 2.5 10.5H11.5V10.3333V9.5V0.5H3ZM10.5 9.5V1.5H3C2.17157 1.5 1.5 2.17157 1.5 3V9.76756C1.79417 9.59739 2.13571 9.5 2.5 9.5H10.5Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed9()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1fqywn7\",\"data-framer-name\":\"Access\",layoutDependency:layoutDependency,layoutId:\"MjG7GY8Xm\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-1i3lss1\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:14,intrinsicWidth:14,layoutDependency:layoutDependency,layoutId:\"OXZtiUGkt\",svg:'<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M2.33333 3.66667C3.06971 3.66667 3.66667 3.06971 3.66667 2.33333C3.66667 1.59695 3.06971 1 2.33333 1C1.59695 1 1 1.59695 1 2.33333C1 3.06971 1.59695 3.66667 2.33333 3.66667ZM2.33333 4.66667C3.622 4.66667 4.66667 3.622 4.66667 2.33333C4.66667 1.04467 3.622 0 2.33333 0C1.04467 0 0 1.04467 0 2.33333C0 3.622 1.04467 4.66667 2.33333 4.66667ZM11.6667 13C12.403 13 13 12.403 13 11.6667C13 10.9303 12.403 10.3333 11.6667 10.3333C10.9303 10.3333 10.3333 10.9303 10.3333 11.6667C10.3333 12.403 10.9303 13 11.6667 13ZM11.6667 14C12.9553 14 14 12.9553 14 11.6667C14 10.378 12.9553 9.33333 11.6667 9.33333C10.378 9.33333 9.33333 10.378 9.33333 11.6667C9.33333 12.9553 10.378 14 11.6667 14ZM13 3.5C13 4.88071 11.8807 6 10.5 6C9.11929 6 8 4.88071 8 3.5C8 2.11929 9.11929 1 10.5 1C11.8807 1 13 2.11929 13 3.5ZM14 3.5C14 5.433 12.433 7 10.5 7C9.71385 7 8.98824 6.74081 8.40396 6.30322L6.30322 8.40396C6.74081 8.98824 7 9.71385 7 10.5C7 12.433 5.433 14 3.5 14C1.567 14 0 12.433 0 10.5C0 8.567 1.567 7 3.5 7C4.28619 7 5.01183 7.25921 5.59613 7.69684L7.69684 5.59613C7.25921 5.01183 7 4.28619 7 3.5C7 1.567 8.567 0 10.5 0C12.433 0 14 1.567 14 3.5ZM3.5 13C4.88071 13 6 11.8807 6 10.5C6 9.11929 4.88071 8 3.5 8C2.11929 8 1 9.11929 1 10.5C1 11.8807 2.11929 13 3.5 13Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed10()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-18ko0b4\",\"data-framer-name\":\"Internet Security\",layoutDependency:layoutDependency,layoutId:\"N4msZjRJu\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-1iuef5b\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:12,intrinsicWidth:16,layoutDependency:layoutDependency,layoutId:\"fUTEB4t5i\",svg:'<svg width=\"16\" height=\"12\" viewBox=\"0 0 16 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 1H4C3.44772 1 3 1.44772 3 2V5H13V2C13 1.44772 12.5523 1 12 1ZM14 5V2C14 0.895431 13.1046 0 12 0H4C2.89543 0 2 0.895431 2 2V5H0V6H2H3H13H14H16V5H14ZM2 7H3V10C3 10.5523 3.44772 11 4 11H12C12.5523 11 13 10.5523 13 10V7H14V10C14 11.1046 13.1046 12 12 12H4C2.89543 12 2 11.1046 2 10V7Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed11()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-ev1r45\",\"data-framer-name\":\"ZTNA\",layoutDependency:layoutDependency,layoutId:\"O0DH2XgUO\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-14zhiam\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:12,intrinsicWidth:16,layoutDependency:layoutDependency,layoutId:\"fWFnjI8WI\",svg:'<svg width=\"16\" height=\"12\" viewBox=\"0 0 16 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3.33981 10C2.40997 10 1.62091 9.68849 0.972621 9.06549C0.324207 8.4426 0 7.68445 0 6.79104C0 5.91754 0.32466 5.15354 0.973981 4.49907C1.62317 3.84471 2.43715 3.52469 3.41592 3.53899C3.64401 2.46461 4.19443 1.60622 5.06718 0.963805C5.94006 0.321268 6.91767 0 8 0C9.26563 0 10.3717 0.386505 11.3181 1.15952C11.9539 1.6789 12.3762 2.2924 12.5849 3H11.5128C11.3295 2.5689 11.0291 2.18768 10.6117 1.85634C9.86731 1.26555 8.99676 0.970149 8 0.970149C7.15262 0.970149 6.39061 1.22631 5.71398 1.73862C5.03735 2.25106 4.59942 2.92917 4.40019 3.77295C5.07735 3.96524 5.62654 4.33719 6.04777 4.88881C6.469 5.44042 6.67961 6.0745 6.67961 6.79104H5.6699C5.6699 6.17276 5.44207 5.64502 4.98641 5.20784C4.53074 4.77077 3.98058 4.55224 3.33592 4.55224C2.69126 4.55224 2.1424 4.77114 1.68932 5.20896C1.23625 5.64677 1.00971 6.17537 1.00971 6.79478C1.00971 7.41418 1.23715 7.94154 1.69204 8.37687C2.14706 8.81219 2.69631 9.02985 3.33981 9.02985H9V10H3.33981ZM10.9999 5.2C10.9999 4.53726 11.5371 4 12.1999 4H13.7999C14.4626 4 14.9999 4.53726 14.9999 5.2V7H16V12H10V7H10.9999V5.2ZM13.9999 5V7H11.9999V5H13.9999ZM12.5 10.5H13.5V8.5H12.5V10.5Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed12()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1e9ntpy\",\"data-framer-name\":\"Help\",layoutDependency:layoutDependency,layoutId:\"FYECCBp_a\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-1j2ku8p\",\"data-framer-name\":\"Help center\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:16,intrinsicWidth:14,layoutDependency:layoutDependency,layoutId:\"ewvsNldL5\",svg:'<svg width=\"14\" height=\"16\" viewBox=\"0 0 14 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8.37468 14.8258L8.3461 13.5H7C5.05431 13.5 3.40122 13.2223 2.04073 11.8717C0.680245 10.5212 0 8.88022 0 6.94877C0 5.01731 0.680245 3.37633 2.04073 2.0258C3.40122 0.675263 5.05431 0 7 0C7.97284 0 8.88378 0.180821 9.7328 0.542467C10.5817 0.904267 11.3229 1.39964 11.9565 2.02858C12.59 2.65752 13.0891 3.39331 13.4535 4.23597C13.8178 5.07878 14 5.98304 14 6.94877C14 7.89303 13.8603 8.79992 13.5809 9.66944C13.3016 10.539 12.9151 11.3609 12.4215 12.1353C11.9279 12.9099 11.3368 13.6232 10.6482 14.2753C10.2479 14.6543 9.82716 15.0072 9.38587 15.3341C9.0679 15.5696 8.73928 15.7916 8.4 16L8.37468 14.8258ZM7 1C7.84551 1 8.62231 1.15642 9.34071 1.46239C10.0771 1.77624 10.7113 2.20157 11.252 2.73828C11.7926 3.27495 12.2203 3.90378 12.5357 4.63295C12.843 5.34399 13 6.1124 13 6.94877C13 7.79275 12.8754 8.5962 12.6289 9.36354C12.3758 10.1511 12.026 10.8953 11.5782 11.5979L11.5782 11.5979C11.13 12.3012 10.5917 12.9515 9.96059 13.5492C9.76529 13.7341 9.56474 13.9124 9.35892 14.0839L9.34587 13.4784L9.32477 12.5H8.3461H7C5.13839 12.5 3.8209 12.2298 2.74524 11.162C1.57548 10.0008 1 8.61599 1 6.94877C1 5.28154 1.57548 3.8967 2.74524 2.7355C3.91529 1.57401 5.31382 1 7 1ZM7.76375 10.786C7.62111 10.9287 7.44771 11 7.24354 11C7.03951 11 6.86618 10.9287 6.72354 10.786C6.5809 10.6434 6.50958 10.4701 6.50958 10.266C6.50958 10.062 6.5809 9.88868 6.72354 9.74604C6.86618 9.6034 7.03951 9.53208 7.24354 9.53208C7.44771 9.53208 7.62111 9.6034 7.76375 9.74604C7.90625 9.88868 7.9775 10.062 7.9775 10.266C7.9775 10.4701 7.90625 10.6434 7.76375 10.786ZM7.75313 8.45833H6.75958C6.75958 7.94556 6.81701 7.55826 6.93188 7.29646C7.04674 7.03479 7.3259 6.71167 7.76938 6.32708C7.97979 6.11653 8.15576 5.91618 8.29729 5.72604C8.43882 5.5359 8.50958 5.31208 8.50958 5.05458C8.50958 4.77792 8.40653 4.52333 8.20042 4.29083C7.99417 4.05847 7.67951 3.94229 7.25646 3.94229C6.87076 3.94229 6.57535 4.05021 6.37021 4.26604C6.16507 4.48188 6.01708 4.71049 5.92625 4.95188L5 4.58979C5.16667 4.15174 5.44368 3.77729 5.83104 3.46646C6.21826 3.15549 6.6934 3 7.25646 3C7.87715 3 8.41104 3.17444 8.85813 3.52333C9.30535 3.87208 9.52896 4.37396 9.52896 5.02896C9.52896 5.35688 9.45229 5.65597 9.29896 5.92625C9.14563 6.19667 8.9466 6.45417 8.70188 6.69875C8.27354 7.12722 8.01104 7.43278 7.91438 7.61542C7.81757 7.79819 7.76382 8.07917 7.75313 8.45833Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed13()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-189e1w7\",\"data-framer-name\":\"Testimonials\",layoutDependency:layoutDependency,layoutId:\"ptE2JuBSs\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-1qedmex\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:15,intrinsicWidth:15,layoutDependency:layoutDependency,layoutId:\"wcRGiRzxt\",svg:'<svg width=\"15\" height=\"15\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M2 1H10C10.5523 1 11 1.44772 11 2V8C11 8.55229 10.5523 9 10 9H3.60555C3.01328 9 2.43425 9.17531 1.94145 9.50385L1 10.1315V2C1 1.44772 1.44772 1 2 1ZM3.60555 10C3.2107 10 2.82469 10.1169 2.49615 10.3359L0 12V2C0 0.895431 0.895431 0 2 0H10C11.1046 0 12 0.895431 12 2V8C12 9.10457 11.1046 10 10 10H3.60555ZM13.5 3V10.1667C13.5 10.9951 12.8284 11.6667 12 11.6667H6.35555C5.86198 11.6667 5.37946 11.8128 4.96879 12.0865L3.27734 13.1989V14.416L5.52349 12.9186C5.7699 12.7543 6.05941 12.6667 6.35555 12.6667H12C13.3807 12.6667 14.5 11.5474 14.5 10.1667V3H13.5ZM3 3H9V4H3V3ZM7 6H3V7H7V6Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed14()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1hdubl0\",\"data-framer-name\":\"Customer stories\",layoutDependency:layoutDependency,layoutId:\"GnOwj4SRI\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-152xnqq\",\"data-framer-name\":\"Vector\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:16,intrinsicWidth:12,layoutDependency:layoutDependency,layoutId:\"QieuOjzmO\",svg:'<svg width=\"12\" height=\"16\" viewBox=\"0 0 12 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path d=\"M1.98077 15.4754C1.43594 15.4754 0.969605 15.2969 0.581772 14.9398C0.193939 14.5826 2.19345e-05 14.1407 2.19345e-05 13.6143L0 4.42419C0 3.91159 0.176583 3.46182 0.52975 3.0749C0.882917 2.68797 1.3185 2.44115 1.8365 2.33444L8.6155 0.5L8.61552 10.9387L1.75577 12.8377C1.55444 12.8834 1.37819 12.9744 1.22702 13.1108C1.07569 13.2472 1.00002 13.415 1.00002 13.6143C1.00002 13.8717 1.09744 14.0814 1.29227 14.2431C1.48711 14.4049 1.71661 14.4858 1.98077 14.4858H11V3.16669H12V15.4754H1.98077ZM3.38452 11.5L7.61552 10.1544L7.6155 1.7256L3.3845 3L3.38452 11.5ZM2.38452 11.7056L2.3845 3.23842L1.952 3.33169C1.67883 3.39008 1.45192 3.51922 1.27125 3.71911C1.09042 3.91885 1 4.15387 1 4.42419L1.00002 12.1433C1.22702 12.0581 1.90466 11.81 2.38452 11.7056Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed15()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1jr49x2\",\"data-framer-name\":\"Events\",layoutDependency:layoutDependency,layoutId:\"k6_oKnOa_\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-cfandl\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:14,intrinsicWidth:14,layoutDependency:layoutDependency,layoutId:\"HCs9y5a0R\",svg:'<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3.5 2V3H4.5V2H9.5V3H10.5V2H12C12.5523 2 13 2.44772 13 3V12C13 12.5523 12.5523 13 12 13H2C1.44772 13 1 12.5523 1 12V3C1 2.44772 1.44772 2 2 2H3.5ZM4.5 1H9.5V0H10.5V1H12C13.1046 1 14 1.89543 14 3V12C14 13.1046 13.1046 14 12 14H2C0.89543 14 0 13.1046 0 12V3C0 1.89543 0.895431 1 2 1H3.5V0H4.5V1ZM11 5.5H3V6.5H11V5.5Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed16()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1v08nke\",\"data-framer-name\":\"Kubernetes access\",layoutDependency:layoutDependency,layoutId:\"apsxQHxeh\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-1c98rcv\",\"data-framer-name\":\"Subtract\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:15,intrinsicWidth:15,layoutDependency:layoutDependency,layoutId:\"IqhSO0byH\",svg:'<svg width=\"15\" height=\"15\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.06585 0.097988C7.18547 0.0408408 7.3154 0.00796287 7.448 0.0012829C7.6148 -0.00715089 7.78106 0.0261014 7.93153 0.097988L13.1469 2.58831C13.2819 2.65277 13.4005 2.74656 13.4939 2.86271C13.5873 2.97886 13.6531 3.1144 13.6865 3.25924L14.975 8.85614C15.0083 9.00105 15.0083 9.15155 14.975 9.29646C14.9416 9.44137 14.8757 9.57695 14.7822 9.69313L11.1741 14.1816C11.0807 14.2976 10.962 14.3912 10.8271 14.4555C10.6921 14.5198 10.5442 14.5532 10.3945 14.5531L4.60621 14.5544C4.45642 14.5544 4.30854 14.521 4.17357 14.4566C4.0386 14.3921 3.91999 14.2984 3.82656 14.1823L0.21713 9.69447C0.19695 9.66917 0.178031 9.6429 0.16044 9.61577C0.0878928 9.50478 0.0385309 9.38048 0.0152761 9.25023C-0.00797881 9.11998 -0.00465413 8.98642 0.0250533 8.85747L1.31156 3.26058C1.34491 3.11573 1.41073 2.9802 1.50414 2.86404C1.59755 2.74789 1.71614 2.6541 1.85111 2.58964L7.06585 0.097988ZM7.1901 2.25215C7.19008 2.06063 7.32985 1.90537 7.50222 1.90535C7.6746 1.90533 7.81433 2.06063 7.81435 2.25215C7.81438 2.26179 7.8146 2.2726 7.81481 2.28366C7.81521 2.30375 7.81562 2.32466 7.81502 2.34086C7.8123 2.41373 7.8009 2.47532 7.78929 2.53802C7.78331 2.57037 7.77726 2.60301 7.77233 2.63764L7.77033 2.65421C7.74495 2.86466 7.72375 3.04031 7.73698 3.20387C7.74763 3.27635 7.78563 3.311 7.82196 3.34412C7.82773 3.34938 7.83346 3.3546 7.83903 3.35993C7.83995 3.38255 7.84359 3.45773 7.84636 3.49932C8.83879 3.58748 9.76045 4.04131 10.4374 4.75115L10.5561 4.66645C10.5609 4.66673 10.5663 4.66715 10.5724 4.66761C10.617 4.67105 10.6922 4.67683 10.7455 4.64577C10.8818 4.55401 11.0063 4.42757 11.1553 4.27621L11.1663 4.26496C11.1899 4.24001 11.2113 4.21547 11.2325 4.19116C11.275 4.14257 11.3166 4.09492 11.3724 4.04687C11.3862 4.03499 11.4051 4.02021 11.4226 4.00656C11.4293 4.0013 11.4359 3.99621 11.4418 3.99151C11.5915 3.87208 11.7998 3.88477 11.9073 4.01953C12.0148 4.15428 11.9803 4.36027 11.8306 4.47971C11.8236 4.48537 11.8158 4.49175 11.8079 4.49829C11.792 4.5114 11.7753 4.52516 11.7619 4.53506C11.7037 4.57802 11.6486 4.60726 11.5925 4.63694C11.5629 4.65263 11.5331 4.66843 11.5025 4.68646L11.5022 4.6866C11.3157 4.80183 11.161 4.89737 11.0383 5.01259C10.9881 5.0663 10.9846 5.11755 10.9813 5.1667C10.9808 5.17429 10.9803 5.18183 10.9796 5.18932C10.9713 5.19698 10.9528 5.21348 10.9323 5.23181C10.9102 5.25157 10.8857 5.27345 10.8689 5.2887C11.1379 5.68913 11.3396 6.14363 11.4538 6.64057C11.5669 7.13292 11.5845 7.625 11.5191 8.09781L11.6452 8.1345C11.6479 8.13825 11.6508 8.14264 11.6541 8.1475C11.679 8.1841 11.7221 8.24746 11.7799 8.26988C11.9389 8.31995 12.1177 8.33868 12.3329 8.36124L12.3395 8.36192C12.3747 8.36485 12.4083 8.36617 12.4416 8.36748C12.5051 8.36998 12.5677 8.37244 12.6389 8.38593C12.6551 8.389 12.676 8.39418 12.6959 8.39912C12.7079 8.40209 12.7196 8.40498 12.7296 8.40727C12.9136 8.45167 13.0317 8.62081 12.9937 8.78742C12.9557 8.95408 12.776 9.05536 12.5909 9.01551C12.5896 9.01521 12.5876 9.01516 12.5862 9.01485C12.5852 9.0146 12.5842 9.01421 12.5831 9.01382C12.5822 9.01346 12.5812 9.01309 12.5802 9.01285C12.5709 9.0108 12.5608 9.00876 12.5505 9.0067C12.5324 9.00306 12.514 8.99937 12.4995 8.99551C12.4293 8.97672 12.3719 8.95183 12.3135 8.92654C12.283 8.91335 12.2523 8.90006 12.2194 8.88746L12.21 8.88407C12.0077 8.81151 11.8393 8.75113 11.6752 8.7274C11.6022 8.72165 11.56 8.75093 11.5197 8.77896C11.5133 8.78342 11.5069 8.78785 11.5005 8.79209C11.4777 8.78752 11.4075 8.7751 11.3671 8.76875C11.068 9.70867 10.4311 10.5225 9.56771 11.0323C9.57249 11.0439 9.57835 11.0596 9.58448 11.0761C9.59746 11.1109 9.6117 11.1492 9.61973 11.1584C9.617 11.1656 9.61409 11.1729 9.61116 11.1801C9.59286 11.2255 9.57388 11.2726 9.59572 11.3424C9.65631 11.4995 9.75432 11.6531 9.8725 11.838C9.89207 11.8672 9.91179 11.8941 9.93134 11.9207C9.96896 11.972 10.0059 12.0224 10.0399 12.0867C10.0485 12.103 10.059 12.1253 10.0687 12.1457C10.0729 12.1547 10.0769 12.1632 10.0806 12.1708C10.1608 12.3424 10.1019 12.5401 9.94786 12.6143C9.79256 12.6891 9.59948 12.6101 9.51636 12.4375C9.51279 12.4302 9.50879 12.4221 9.50466 12.4138C9.49504 12.3944 9.48473 12.3737 9.47767 12.3575C9.44837 12.2904 9.43173 12.2296 9.4148 12.1678C9.40617 12.1363 9.39747 12.1045 9.38697 12.0714L9.38406 12.0629C9.31451 11.859 9.25677 11.6898 9.17289 11.5465C9.13164 11.4855 9.08226 11.4707 9.035 11.4565C9.02777 11.4543 9.02059 11.4521 9.01349 11.4498C9.00837 11.441 8.99601 11.4186 8.98253 11.3942C8.96995 11.3714 8.95638 11.3468 8.9468 11.3298C8.77437 11.3949 8.59601 11.4492 8.41125 11.4912C7.60136 11.6751 6.79062 11.6004 6.06632 11.3224L5.99562 11.4505C5.943 11.4646 5.89225 11.4789 5.86112 11.516C5.78122 11.6113 5.73507 11.7471 5.68602 11.8915C5.66528 11.9525 5.64402 12.0151 5.61947 12.0767C5.60881 12.1103 5.60006 12.1426 5.5914 12.1747C5.57481 12.236 5.55849 12.2963 5.52944 12.3628C5.52274 12.3782 5.51299 12.3976 5.50372 12.4161C5.49914 12.4253 5.49468 12.4342 5.49076 12.4422V12.4429L5.49009 12.4435C5.40679 12.6155 5.21432 12.6943 5.05925 12.6196C4.90516 12.5454 4.84631 12.3477 4.92653 12.1761C4.93086 12.1671 4.93568 12.1567 4.94066 12.1459C4.94942 12.127 4.95867 12.107 4.96655 12.0921C5.0007 12.0274 5.03787 11.9765 5.07568 11.9248C5.09505 11.8983 5.11457 11.8716 5.13395 11.8426C5.25211 11.6578 5.35588 11.4919 5.41647 11.3348C5.43169 11.2827 5.40915 11.2112 5.38872 11.1584L5.44541 11.0223C4.61458 10.53 3.95845 9.74544 3.64536 8.77475L3.5093 8.79809C3.50517 8.79578 3.50057 8.79311 3.49556 8.7902C3.45627 8.76741 3.39162 8.7299 3.3299 8.73473C3.16567 8.7585 2.99717 8.81894 2.79464 8.89158L2.78568 8.8948C2.75334 8.90719 2.72311 8.92018 2.69316 8.93304C2.63423 8.95836 2.57637 8.98322 2.50557 9.00217C2.48958 9.00646 2.46868 9.01087 2.44867 9.01509C2.44045 9.01683 2.43239 9.01853 2.42487 9.02018C2.4228 9.02069 2.42096 9.0217 2.41887 9.02218C2.41748 9.02249 2.41554 9.02254 2.4142 9.02285C2.22913 9.06274 2.04943 8.9614 2.01138 8.79476C1.97333 8.62815 2.09151 8.45906 2.27548 8.41461L2.28015 8.41327L2.28282 8.41261C2.29068 8.41076 2.2992 8.40868 2.30791 8.40656C2.32816 8.40163 2.34947 8.39643 2.36618 8.39326C2.43741 8.37977 2.49994 8.37731 2.56345 8.37482C2.59678 8.37351 2.63037 8.37219 2.66564 8.36926L2.67272 8.36851C2.88776 8.34597 3.06633 8.32725 3.22519 8.27722C3.27022 8.25874 3.31349 8.20187 3.34673 8.15819C3.35108 8.15247 3.35526 8.14698 3.35925 8.14183L3.48996 8.10382C3.34349 7.08948 3.59134 6.09397 4.12688 5.28803L4.02684 5.19866C4.02614 5.1944 4.02542 5.18952 4.02463 5.18415C4.01815 5.14047 4.00684 5.06409 3.96415 5.01859C3.8414 4.90333 3.68664 4.80774 3.49997 4.69246C3.46958 4.67458 3.44006 4.65889 3.4108 4.64333C3.35474 4.61351 3.29963 4.58421 3.2412 4.54107C3.22767 4.53108 3.21092 4.51729 3.19495 4.50415C3.18859 4.49892 3.18236 4.49379 3.17651 4.48904C3.17539 4.48818 3.17423 4.48745 3.1731 4.48665C3.17268 4.48635 3.17225 4.48604 3.17184 4.48571C3.02208 4.36631 2.98768 4.16031 3.09514 4.02553C3.15559 3.94971 3.24795 3.9122 3.3439 3.91548C3.41853 3.91804 3.49581 3.94528 3.56132 3.99752C3.56709 4.00208 3.57343 4.00703 3.57998 4.01216C3.59762 4.02593 3.61681 4.04094 3.63069 4.05287C3.68613 4.10056 3.72725 4.14787 3.76915 4.19608C3.79059 4.22075 3.81223 4.24565 3.8361 4.27096L3.84157 4.27652C3.99306 4.43038 4.11891 4.5582 4.25693 4.65111C4.32056 4.68817 4.37137 4.68015 4.4201 4.67246C4.42755 4.67128 4.43495 4.67011 4.44234 4.66912C4.46027 4.68237 4.52058 4.72563 4.55505 4.74915C5.0863 4.1855 5.78408 3.76803 6.59453 3.58402C6.78288 3.54125 6.97144 3.51284 7.15875 3.49732L7.16609 3.36526C7.20765 3.32503 7.25426 3.26715 7.26746 3.20387C7.28095 3.03719 7.25934 2.85796 7.23333 2.64213L7.23278 2.63764C7.22785 2.60301 7.22181 2.57037 7.21582 2.53802C7.20422 2.47532 7.19281 2.41373 7.1901 2.34086C7.18952 2.32538 7.18993 2.30586 7.19032 2.28674C7.1905 2.27786 7.19069 2.26908 7.19077 2.26082C7.19074 2.25945 7.19059 2.25809 7.19044 2.25674C7.19027 2.25522 7.1901 2.25371 7.1901 2.25215ZM7.0187 5.96363L7.1114 4.32631C7.00076 4.33972 6.88971 4.35844 6.7786 4.38367C6.17037 4.52177 5.6426 4.82161 5.22999 5.22734L6.57252 6.17905L6.57519 6.17772C6.62067 6.21093 6.67663 6.2304 6.73725 6.2304C6.88526 6.2304 7.00581 6.11344 7.01203 5.96697L7.0187 5.96363ZM9.76379 5.228C9.26055 4.7352 8.60383 4.41365 7.89371 4.32631L7.98642 5.96097L7.98775 5.96163C7.99014 6.0179 8.00997 6.07363 8.04777 6.12103C8.14006 6.23673 8.30687 6.25818 8.42526 6.17171L8.42993 6.17371L9.76379 5.228ZM5.96895 6.93535L4.74313 5.83891C4.37933 6.43158 4.20697 7.14244 4.28695 7.87372L5.85824 7.42021L5.85957 7.41488C5.9139 7.40003 5.9645 7.36824 6.0023 7.32084C6.09457 7.20512 6.07826 7.03821 5.96762 6.94202L5.96895 6.93535ZM10.6548 6.82197C10.5727 6.46451 10.4348 6.13479 10.2527 5.83958L9.0335 6.93068L9.03417 6.93402C8.99166 6.97096 8.96029 7.02097 8.9468 7.08007C8.91387 7.22436 9.00079 7.36822 9.14221 7.40687L9.14354 7.41354L10.7228 7.86839C10.7563 7.52768 10.7359 7.17514 10.6548 6.82197ZM7.75299 7.02005H7.25079L6.938 7.40954L7.05005 7.8964L7.50222 8.11382L7.95307 7.89707L8.06511 7.41021L7.75299 7.02005ZM8.92412 8.35992C8.90335 8.35609 8.88211 8.35417 8.86076 8.35525C8.82519 8.35705 8.78953 8.36615 8.75539 8.38259C8.62204 8.44681 8.56405 8.60473 8.622 8.7394L8.62 8.74207L9.25092 10.266C9.85907 9.87858 10.3142 9.29964 10.5521 8.63136L8.92679 8.35658L8.92412 8.35992ZM6.39512 8.576C6.3663 8.44974 6.25505 8.36366 6.13101 8.36192C6.11329 8.36167 6.09502 8.36327 6.07699 8.36659L6.07432 8.36325L4.46302 8.63669C4.71169 9.32472 5.17656 9.88549 5.7602 10.26L6.38445 8.75141L6.37978 8.7454C6.40204 8.69368 6.40861 8.63511 6.39512 8.576ZM7.62094 9.05019C7.57927 9.03013 7.53543 9.02126 7.49222 9.02285C7.39717 9.02634 7.307 9.07936 7.25946 9.16824H7.25813L6.46581 10.6008C7.01414 10.7877 7.61969 10.8294 8.22718 10.6915C8.33557 10.6669 8.44155 10.6374 8.54464 10.6028L7.75032 9.16757H7.74432C7.71776 9.11791 7.67556 9.0765 7.62094 9.05019Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})})]})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-1dZeB.framer-qx9wno, .framer-1dZeB .framer-qx9wno { display: block; }\",\".framer-1dZeB.framer-auhldw { align-content: center; align-items: center; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: 20px; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 20px; }\",\".framer-1dZeB .framer-1ren2z7, .framer-1dZeB .framer-1rbjvz1, .framer-1dZeB .framer-1us8y0m, .framer-1dZeB .framer-bujgmj, .framer-1dZeB .framer-1dq4vmm, .framer-1dZeB .framer-iept9k, .framer-1dZeB .framer-ev02k9, .framer-1dZeB .framer-y3uqb7, .framer-1dZeB .framer-ufad00, .framer-1dZeB .framer-1fqywn7, .framer-1dZeB .framer-18ko0b4, .framer-1dZeB .framer-ev1r45, .framer-1dZeB .framer-1e9ntpy, .framer-1dZeB .framer-189e1w7, .framer-1dZeB .framer-1hdubl0, .framer-1dZeB .framer-1jr49x2, .framer-1dZeB .framer-1v08nke { flex: none; gap: 0px; height: 20px; overflow: visible; position: relative; width: 20px; }\",\".framer-1dZeB .framer-1x69tpx { flex: none; height: 13px; left: 2px; position: absolute; top: 3px; width: 16px; }\",\".framer-1dZeB .framer-1s8xbol { flex: none; height: 14px; left: calc(50.00000000000002% - 14px / 2); position: absolute; top: 2px; width: 14px; }\",\".framer-1dZeB .framer-1mghwip, .framer-1dZeB .framer-j09j3d { flex: none; height: 14px; left: 4px; position: absolute; top: 3px; width: 12px; }\",\".framer-1dZeB .framer-7dgxpy, .framer-1dZeB .framer-1qedmex, .framer-1dZeB .framer-1c98rcv { flex: none; height: 15px; left: calc(50.00000000000002% - 15px / 2); position: absolute; top: calc(50.00000000000002% - 15px / 2); width: 15px; }\",\".framer-1dZeB .framer-15xzfgm, .framer-1dZeB .framer-1yy1ydq, .framer-1dZeB .framer-1nieumd { flex: none; height: 14px; left: 3px; position: absolute; top: 3px; width: 14px; }\",\".framer-1dZeB .framer-1iszh3d { flex: none; height: 12px; left: 3px; position: absolute; top: 4px; width: 14px; }\",\".framer-1dZeB .framer-1i3lss1, .framer-1dZeB .framer-cfandl { flex: none; height: 14px; left: calc(50.00000000000002% - 14px / 2); position: absolute; top: calc(50.00000000000002% - 14px / 2); width: 14px; }\",\".framer-1dZeB .framer-1iuef5b, .framer-1dZeB .framer-14zhiam { flex: none; height: 12px; left: calc(50.00000000000002% - 16px / 2); position: absolute; top: calc(50.00000000000002% - 12px / 2); width: 16px; }\",\".framer-1dZeB .framer-1j2ku8p { flex: none; height: 16px; left: calc(50.00000000000002% - 14px / 2); position: absolute; top: calc(50.00000000000002% - 16px / 2); width: 14px; }\",\".framer-1dZeB .framer-152xnqq { flex: none; height: 16px; left: calc(50.00000000000002% - 12px / 2); position: absolute; top: calc(50.00000000000002% - 16px / 2); width: 12px; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 20\n * @framerIntrinsicWidth 20\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"PpaE0NinW\":{\"layout\":[\"fixed\",\"fixed\"]},\"tQp0ZQcow\":{\"layout\":[\"fixed\",\"fixed\"]},\"NrDjexu5A\":{\"layout\":[\"fixed\",\"fixed\"]},\"MCdAQ1WB1\":{\"layout\":[\"fixed\",\"fixed\"]},\"nVKy98A78\":{\"layout\":[\"fixed\",\"fixed\"]},\"wCoAJl1WU\":{\"layout\":[\"fixed\",\"fixed\"]},\"wvwwYzx1s\":{\"layout\":[\"fixed\",\"fixed\"]},\"dXT989ZNN\":{\"layout\":[\"fixed\",\"fixed\"]},\"GcSNeETD5\":{\"layout\":[\"fixed\",\"fixed\"]},\"vlLg6xeHq\":{\"layout\":[\"fixed\",\"fixed\"]},\"nwnCqM2RJ\":{\"layout\":[\"fixed\",\"fixed\"]},\"WPtUkdPXb\":{\"layout\":[\"fixed\",\"fixed\"]},\"aw6419Nd3\":{\"layout\":[\"fixed\",\"fixed\"]},\"oY1UsN78d\":{\"layout\":[\"fixed\",\"fixed\"]},\"VsosXQk2M\":{\"layout\":[\"fixed\",\"fixed\"]},\"ZCxx99ZW_\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const Framerl9n5MpL99=withCSS(Component,css,\"framer-1dZeB\");export default Framerl9n5MpL99;Framerl9n5MpL99.displayName=\"Nav / Nav Icons NEW\";Framerl9n5MpL99.defaultProps={height:20,width:20};addPropertyControls(Framerl9n5MpL99,{variant:{options:[\"mRpTeKf3V\",\"PpaE0NinW\",\"tQp0ZQcow\",\"NrDjexu5A\",\"MCdAQ1WB1\",\"nVKy98A78\",\"wCoAJl1WU\",\"wvwwYzx1s\",\"dXT989ZNN\",\"GcSNeETD5\",\"vlLg6xeHq\",\"nwnCqM2RJ\",\"WPtUkdPXb\",\"aw6419Nd3\",\"oY1UsN78d\",\"VsosXQk2M\",\"ZCxx99ZW_\"],optionTitles:[\"About\",\"Blog\",\"Changelog\",\"Integrations\",\"Careers\",\"Whitepaper\",\"Demo\",\"Partners\",\"Docs\",\"Access\",\"Internet Security\",\"ZTNA\",\"Help\",\"Testimonials\",\"Customer Stories\",\"Events\",\"Kubernetes Access\"],title:\"Variant\",type:ControlType.Enum}});addFonts(Framerl9n5MpL99,[{explicitInter:true,fonts:[]}],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Framerl9n5MpL99\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"20\",\"framerColorSyntax\":\"true\",\"framerAutoSizeImages\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerIntrinsicWidth\":\"20\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"PpaE0NinW\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"tQp0ZQcow\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"NrDjexu5A\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"MCdAQ1WB1\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"nVKy98A78\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"wCoAJl1WU\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"wvwwYzx1s\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"dXT989ZNN\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"GcSNeETD5\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"vlLg6xeHq\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"nwnCqM2RJ\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"WPtUkdPXb\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"aw6419Nd3\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"oY1UsN78d\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"VsosXQk2M\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"ZCxx99ZW_\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerContractVersion\":\"1\",\"framerComponentViewportWidth\":\"true\",\"framerImmutableVariables\":\"true\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./l9n5MpL99.map", "// Generated by Framer (d65f646)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,getPropertyControls,Link,RichText,SmartComponentScopedContainer,SVG,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import Logos from\"https://framerusercontent.com/modules/egaMOikpEojDPGX2L17i/eEQR7UV1CgU2ftSfYSgt/Logos.js\";import GraphicsButtonArrow from\"https://framerusercontent.com/modules/k2LXqFXKLfH5xo6YMaO2/WNzbIRtDtprBjkAcMlG0/pRemd4fMu.js\";import Logos1 from\"https://framerusercontent.com/modules/9WTbYjGuJAwW0o4hDi0j/1qiorIROk1jAClbRf9rb/Logos.js\";import NavNavIconsNEW from\"https://framerusercontent.com/modules/GBT11usxDjWdoY9Bpyot/4xF4lAgdAlGMB1w2xCGS/l9n5MpL99.js\";const NavNavIconsNEWFonts=getFonts(NavNavIconsNEW);const LogosFonts=getFonts(Logos);const GraphicsButtonArrowFonts=getFonts(GraphicsButtonArrow);const NavNavIconsNEWControls=getPropertyControls(NavNavIconsNEW);const Logos1Controls=getPropertyControls(Logos1);const enabledGestures={E5Vvpf7SI:{hover:true},JBMHbmdlf:{hover:true},qyFX7T2dF:{hover:true},R1WDvXnK4:{hover:true}};const cycleOrder=[\"qyFX7T2dF\",\"H4g1vLl7w\",\"R1WDvXnK4\",\"LX7bcs5Lw\",\"E5Vvpf7SI\",\"JBMHbmdlf\"];const serializationHash=\"framer-tL9cK\";const variantClassNames={E5Vvpf7SI:\"framer-v-tf2ajq\",H4g1vLl7w:\"framer-v-1h852kb\",JBMHbmdlf:\"framer-v-9uge7y\",LX7bcs5Lw:\"framer-v-14yc5vo\",qyFX7T2dF:\"framer-v-1mtliow\",R1WDvXnK4:\"framer-v-t22syl\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={duration:0,type:\"tween\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const humanReadableEnumMap={\"Customer Stories\":\"oY1UsN78d\",\"Internet Security\":\"vlLg6xeHq\",\"Kubernetes Access\":\"ZCxx99ZW_\",About:\"mRpTeKf3V\",Access:\"GcSNeETD5\",Blog:\"PpaE0NinW\",Careers:\"MCdAQ1WB1\",Changelog:\"tQp0ZQcow\",Demo:\"wCoAJl1WU\",Docs:\"dXT989ZNN\",Events:\"VsosXQk2M\",Help:\"WPtUkdPXb\",Integrations:\"NrDjexu5A\",Partners:\"wvwwYzx1s\",Testimonials:\"aw6419Nd3\",Whitepaper:\"nVKy98A78\",ZTNA:\"nwnCqM2RJ\"};const humanReadableVariantMap={\"No arrow\":\"R1WDvXnK4\",Active:\"H4g1vLl7w\",Default:\"qyFX7T2dF\",Mobile:\"LX7bcs5Lw\",Secondary:\"E5Vvpf7SI\",Small:\"JBMHbmdlf\"};const getProps=({h1,h2,h2Visible,height,hover,hover2,hoverChevron,icon,iconVisible,id,link,smallIcon,smallIconVisible,width,...props})=>{return{...props,anQxL7bbx:hoverChevron??props.anQxL7bbx??true,hYnSN8Rbu:humanReadableEnumMap[icon]??icon??props.hYnSN8Rbu??\"mRpTeKf3V\",mhS_it8bS:smallIcon??props.mhS_it8bS??\"Twingate\",NF_p8Wl2r:hover2??props.NF_p8Wl2r,pf_L3YvVa:iconVisible??props.pf_L3YvVa??true,Rv7rN9T36:h2??props.Rv7rN9T36??\"Keep track of changes to our product\",SF4WeeABZ:smallIconVisible??props.SF4WeeABZ,taEtOIjYB:link??props.taEtOIjYB,variant:humanReadableVariantMap[props.variant]??props.variant??\"qyFX7T2dF\",vwOUPOH8n:h2Visible??props.vwOUPOH8n??true,XNt_0jHi5:h1??props.XNt_0jHi5??\"How Twingate Works?\",y3z9Kx4Wv:hover??props.y3z9Kx4Wv};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,y3z9Kx4Wv,XNt_0jHi5,Rv7rN9T36,hYnSN8Rbu,vwOUPOH8n,pf_L3YvVa,taEtOIjYB,mhS_it8bS,SF4WeeABZ,anQxL7bbx,NF_p8Wl2r,D6E2gRuG7Y42FZEMxi,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"qyFX7T2dF\",enabledGestures,ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onTap4zbyd6=activeVariantCallback(async(...args)=>{setGestureState({isPressed:false});});const onMouseEnterp84zha=activeVariantCallback(async(...args)=>{setGestureState({isHovered:true});if(y3z9Kx4Wv){const res=await y3z9Kx4Wv(...args);if(res===false)return false;}if(NF_p8Wl2r){const res=await NF_p8Wl2r(...args);if(res===false)return false;}});const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);const isDisplayed=value=>{if([\"E5Vvpf7SI-hover\",\"JBMHbmdlf-hover\"].includes(gestureVariant))return false;if([\"E5Vvpf7SI\",\"JBMHbmdlf\"].includes(baseVariant))return false;return value;};const isDisplayed1=()=>{if(gestureVariant===\"qyFX7T2dF-hover\")return false;return true;};const isDisplayed2=value=>{if(gestureVariant===\"JBMHbmdlf-hover\")return false;if(baseVariant===\"JBMHbmdlf\")return false;return value;};const isDisplayed3=()=>{if([\"R1WDvXnK4-hover\",\"E5Vvpf7SI-hover\",\"JBMHbmdlf-hover\"].includes(gestureVariant))return true;if([\"R1WDvXnK4\",\"E5Vvpf7SI\",\"JBMHbmdlf\"].includes(baseVariant))return true;return false;};const isDisplayed4=value=>{if(gestureVariant===\"qyFX7T2dF-hover\")return value;return true;};return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(Link,{href:taEtOIjYB,motionChild:true,nodeId:\"qyFX7T2dF\",scopeId:\"GgCR0HjY3\",children:/*#__PURE__*/_jsxs(motion.a,{...restProps,...gestureHandlers,className:`${cx(scopingClassNames,\"framer-1mtliow\",className,classNames)} framer-3mbr81`,\"data-framer-name\":\"Default\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"qyFX7T2dF\",onMouseEnter:onMouseEnterp84zha,onTap:onTap4zbyd6,ref:refBinding,style:{backgroundColor:\"rgba(255, 255, 255, 0)\",borderBottomLeftRadius:12,borderBottomRightRadius:12,borderTopLeftRadius:12,borderTopRightRadius:12,...style},variants:{\"E5Vvpf7SI-hover\":{backgroundColor:\"rgba(255, 255, 255, 0.03)\"},H4g1vLl7w:{backgroundColor:\"rgba(255, 255, 255, 0.04)\"},JBMHbmdlf:{backgroundColor:\"rgba(0, 0, 0, 0)\"},LX7bcs5Lw:{backgroundColor:\"rgba(0, 0, 0, 0)\"}},...addPropertyOverrides({\"E5Vvpf7SI-hover\":{\"data-framer-name\":undefined},\"JBMHbmdlf-hover\":{\"data-framer-name\":undefined},\"qyFX7T2dF-hover\":{\"data-framer-name\":undefined},\"R1WDvXnK4-hover\":{\"data-framer-name\":undefined},E5Vvpf7SI:{\"data-framer-name\":\"Secondary\"},H4g1vLl7w:{\"data-framer-name\":\"Active\"},JBMHbmdlf:{\"data-framer-name\":\"Small\"},LX7bcs5Lw:{\"data-framer-name\":\"Mobile\"},R1WDvXnK4:{\"data-framer-name\":\"No arrow\"}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-mrzuxt\",layoutDependency:layoutDependency,layoutId:\"jwkSJ3_b7\",children:[isDisplayed(pf_L3YvVa)&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1ddknej\",\"data-border\":true,\"data-framer-name\":\"Icon\",layoutDependency:layoutDependency,layoutId:\"n9mzZZ7_R\",style:{\"--border-bottom-width\":\"0.5px\",\"--border-color\":\"var(--token-66d0cf7b-9eb8-4245-b770-5d2d61dad950, rgba(245, 245, 255, 0.1))\",\"--border-left-width\":\"0.5px\",\"--border-right-width\":\"0.5px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0.5px\",backgroundColor:\"rgba(255, 255, 255, 0.1)\",borderBottomLeftRadius:7,borderBottomRightRadius:7,borderTopLeftRadius:7,borderTopRightRadius:7},variants:{\"qyFX7T2dF-hover\":{\"--border-color\":\"rgba(245, 245, 255, 0.2)\",backgroundColor:\"rgba(255, 255, 255, 0.15)\"},\"R1WDvXnK4-hover\":{\"--border-color\":\"rgba(245, 245, 255, 0.2)\",backgroundColor:\"rgba(255, 255, 255, 0.15)\"}},children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:20,width:\"20px\",y:(componentViewport?.y||0)+(8+((componentViewport?.height||58)-16-182)/2)+73+0+8,...addPropertyOverrides({LX7bcs5Lw:{y:(componentViewport?.y||0)+(8+((componentViewport?.height||200)-16-182)/2)+73+0+8}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-qaynes-container\",layoutDependency:layoutDependency,layoutId:\"gSM8tYgGv-container\",nodeId:\"gSM8tYgGv\",rendersWithMotion:true,scopeId:\"GgCR0HjY3\",children:/*#__PURE__*/_jsx(NavNavIconsNEW,{height:\"100%\",id:\"gSM8tYgGv\",layoutId:\"gSM8tYgGv\",style:{height:\"100%\",width:\"100%\"},variant:hYnSN8Rbu,width:\"100%\"})})})}),SF4WeeABZ&&/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1sffupb-container\",isAuthoredByUser:true,isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"t0eEudWHi-container\",nodeId:\"t0eEudWHi\",rendersWithMotion:true,scopeId:\"GgCR0HjY3\",children:/*#__PURE__*/_jsx(Logos,{accent:\"rgb(255, 255, 255)\",height:\"100%\",icon:mhS_it8bS,id:\"t0eEudWHi\",inheritColor:false,layoutId:\"t0eEudWHi\",style:{height:\"100%\",width:\"100%\"},width:\"100%\"})})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-zhqy85\",layoutDependency:layoutDependency,layoutId:\"vOkep7CpF\",children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1wi7io8\",\"data-framer-name\":\"Title\",layoutDependency:layoutDependency,layoutId:\"nnSLk5ijp\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1RUIEhvdmVzIFJlZ3VsYXI=\",\"--framer-font-family\":'\"TT Hoves Regular\", \"TT Hoves Regular Placeholder\", sans-serif',\"--framer-font-size\":\"15px\",\"--framer-letter-spacing\":\"0px\",\"--framer-line-height\":\"1.5em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255)))\"},children:\"How Twingate Works?\"})}),className:\"framer-wmyo4u\",\"data-framer-name\":\"Title\",fonts:[\"CUSTOM;TT Hoves Regular\"],layoutDependency:layoutDependency,layoutId:\"zr5wnE4ks\",style:{\"--extracted-r6o4lv\":\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:XNt_0jHi5,verticalAlignment:\"top\",withExternalLayout:true}),D6E2gRuG7Y42FZEMxi&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-7mjm3n\",\"data-framer-name\":\"New Badge\",layoutDependency:layoutDependency,layoutId:\"PKODgl6_U\",style:{backgroundColor:\"var(--token-66aad145-6043-4798-926f-87c538e5fcf8, rgb(71, 73, 13))\",borderBottomLeftRadius:17,borderBottomRightRadius:17,borderTopLeftRadius:17,borderTopRightRadius:17},children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1RUIEhvdmVzIE1lZGl1bQ==\",\"--framer-font-family\":'\"TT Hoves Medium\", \"TT Hoves Medium Placeholder\", sans-serif',\"--framer-font-size\":\"11px\",\"--framer-letter-spacing\":\"0.15px\",\"--framer-line-height\":\"1.5em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95)))\"},children:\"New\"})}),className:\"framer-1ai4v94\",\"data-framer-name\":\"Title\",fonts:[\"CUSTOM;TT Hoves Medium\"],layoutDependency:layoutDependency,layoutId:\"lAhIeFqeA\",style:{\"--extracted-r6o4lv\":\"var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})}),isDisplayed1()&&/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1syqswd-container\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"LklhkpWKp-container\",nodeId:\"LklhkpWKp\",rendersWithMotion:true,scopeId:\"GgCR0HjY3\",style:{opacity:0},variants:{\"JBMHbmdlf-hover\":{opacity:1}},children:/*#__PURE__*/_jsx(GraphicsButtonArrow,{height:\"100%\",id:\"LklhkpWKp\",layoutId:\"LklhkpWKp\",style:{height:\"100%\",width:\"100%\"},variant:\"Ez6AL2vTh\",width:\"100%\",...addPropertyOverrides({\"JBMHbmdlf-hover\":{variant:\"EjrLISIop\"}},baseVariant,gestureVariant)})})})]}),isDisplayed2(vwOUPOH8n)&&/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1RUIEhvdmVzIE1lZGl1bQ==\",\"--framer-font-family\":'\"TT Hoves Medium\", \"TT Hoves Medium Placeholder\", sans-serif',\"--framer-font-size\":\"13px\",\"--framer-letter-spacing\":\"0.15px\",\"--framer-line-height\":\"1.5em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-376d54cb-4db7-448c-b192-cf6ae3d1a8ff, rgb(161, 161, 170)))\"},children:\"Keep track of changes to our product\"})}),className:\"framer-lsspvw\",\"data-framer-name\":\"Subtitle\",fonts:[\"CUSTOM;TT Hoves Medium\"],layoutDependency:layoutDependency,layoutId:\"idI6xToPu\",style:{\"--extracted-r6o4lv\":\"var(--token-376d54cb-4db7-448c-b192-cf6ae3d1a8ff, rgb(161, 161, 170))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:Rv7rN9T36,variants:{\"qyFX7T2dF-hover\":{\"--extracted-r6o4lv\":\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\"},\"R1WDvXnK4-hover\":{\"--extracted-r6o4lv\":\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\"}},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({\"qyFX7T2dF-hover\":{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1RUIEhvdmVzIE1lZGl1bQ==\",\"--framer-font-family\":'\"TT Hoves Medium\", \"TT Hoves Medium Placeholder\", sans-serif',\"--framer-font-size\":\"13px\",\"--framer-letter-spacing\":\"0.15px\",\"--framer-line-height\":\"1.5em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255)))\"},children:\"Keep track of changes to our product\"})})},\"R1WDvXnK4-hover\":{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1RUIEhvdmVzIE1lZGl1bQ==\",\"--framer-font-family\":'\"TT Hoves Medium\", \"TT Hoves Medium Placeholder\", sans-serif',\"--framer-font-size\":\"13px\",\"--framer-letter-spacing\":\"0.15px\",\"--framer-line-height\":\"1.5em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255)))\"},children:\"Keep track of changes to our product\"})})}},baseVariant,gestureVariant)})]})]}),isDisplayed3()&&/*#__PURE__*/_jsx(SVG,{className:\"framer-z7j6qt\",\"data-framer-name\":\"Arrow\",layout:\"position\",layoutDependency:layoutDependency,layoutId:\"VxYgCgPS3\",opacity:.2,style:{opacity:.2},svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 20 20\"><path d=\"M 9 6 L 13 10 L 9 14\" fill=\"transparent\" stroke-width=\"1.5\" stroke=\"rgb(255, 255, 255)\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path></svg>',svgContentId:10985896011,variants:{\"E5Vvpf7SI-hover\":{opacity:.4},E5Vvpf7SI:{opacity:0},JBMHbmdlf:{opacity:0},R1WDvXnK4:{opacity:0}},withExternalLayout:true,...addPropertyOverrides({\"E5Vvpf7SI-hover\":{opacity:.4,svgContentId:10689355170},E5Vvpf7SI:{opacity:0,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 20 20\"><path d=\"M 9 6 L 12.293 9.293 C 12.683 9.683 12.683 10.317 12.293 10.707 L 9 14\" fill=\"transparent\" stroke-width=\"1.5\" stroke=\"rgb(255, 255, 255)\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path></svg>',svgContentId:11392545822},JBMHbmdlf:{opacity:0,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 20 20\"><path d=\"M 9 6 L 12.293 9.293 C 12.683 9.683 12.683 10.317 12.293 10.707 L 9 14\" fill=\"transparent\" stroke-width=\"1.5\" stroke=\"rgb(255, 255, 255)\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path></svg>',svgContentId:11392545822},R1WDvXnK4:{opacity:0,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 20 20\"><path d=\"M 9 6 L 12.293 9.293 C 12.683 9.683 12.683 10.317 12.293 10.707 L 9 14\" fill=\"transparent\" stroke-width=\"1.5\" stroke=\"rgb(255, 255, 255)\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path></svg>',svgContentId:11392545822}},baseVariant,gestureVariant)}),isDisplayed4(anQxL7bbx)&&/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-163fcg7-container\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"L4YchcYqL-container\",nodeId:\"L4YchcYqL\",rendersWithMotion:true,scopeId:\"GgCR0HjY3\",style:{opacity:0},variants:{\"qyFX7T2dF-hover\":{opacity:.3}},children:/*#__PURE__*/_jsx(GraphicsButtonArrow,{height:\"100%\",id:\"L4YchcYqL\",layoutId:\"L4YchcYqL\",style:{height:\"100%\",width:\"100%\"},variant:\"Ez6AL2vTh\",width:\"100%\"})})})]})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-tL9cK.framer-3mbr81, .framer-tL9cK .framer-3mbr81 { display: block; }\",\".framer-tL9cK.framer-1mtliow { align-content: center; align-items: center; cursor: pointer; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 12px; height: min-content; justify-content: flex-start; overflow: hidden; padding: 8px 10px 8px 10px; position: relative; text-decoration: none; width: 400px; will-change: var(--framer-will-change-override, transform); }\",\".framer-tL9cK .framer-mrzuxt { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 12px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: min-content; }\",\".framer-tL9cK .framer-1ddknej { align-content: center; align-items: center; aspect-ratio: 1 / 1; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 10px; height: var(--framer-aspect-ratio-supported, 36px); justify-content: center; overflow: hidden; padding: 0px; position: relative; width: 36px; will-change: var(--framer-will-change-override, transform); }\",\".framer-tL9cK .framer-qaynes-container { aspect-ratio: 1 / 1; flex: none; height: var(--framer-aspect-ratio-supported, 20px); position: relative; width: 20px; }\",\".framer-tL9cK .framer-1sffupb-container, .framer-tL9cK .framer-z7j6qt { flex: none; height: 20px; position: relative; width: 20px; }\",\".framer-tL9cK .framer-zhqy85 { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 305px; }\",\".framer-tL9cK .framer-1wi7io8 { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 4px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-tL9cK .framer-wmyo4u { flex: none; height: auto; max-width: 100%; pointer-events: none; position: relative; white-space: pre-wrap; width: auto; word-break: break-word; word-wrap: break-word; }\",\".framer-tL9cK .framer-7mjm3n { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: visible; padding: 1px 6px 1px 6px; position: relative; width: min-content; }\",\".framer-tL9cK .framer-1ai4v94 { flex: none; height: auto; max-width: 100%; pointer-events: none; position: relative; white-space: pre-wrap; width: 24px; word-break: break-word; word-wrap: break-word; }\",\".framer-tL9cK .framer-1syqswd-container, .framer-tL9cK .framer-163fcg7-container { flex: none; height: 20px; position: relative; width: 10px; }\",\".framer-tL9cK .framer-lsspvw { flex: none; height: auto; max-width: 100%; position: relative; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; }\",\".framer-tL9cK.framer-v-tf2ajq.framer-1mtliow { gap: unset; justify-content: space-between; }\",\".framer-tL9cK.framer-v-9uge7y.framer-1mtliow { gap: unset; justify-content: space-between; padding: 6px 10px 6px 10px; }\",\".framer-tL9cK.framer-v-tf2ajq.hover.framer-1mtliow, .framer-tL9cK.framer-v-9uge7y.hover.framer-1mtliow { gap: unset; }\",'.framer-tL9cK[data-border=\"true\"]::after, .framer-tL9cK [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; pointer-events: none; }'];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 58\n * @framerIntrinsicWidth 400\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]},\"H4g1vLl7w\":{\"layout\":[\"fixed\",\"auto\"]},\"R1WDvXnK4\":{\"layout\":[\"fixed\",\"auto\"]},\"LX7bcs5Lw\":{\"layout\":[\"fixed\",\"auto\"]},\"E5Vvpf7SI\":{\"layout\":[\"fixed\",\"auto\"]},\"JBMHbmdlf\":{\"layout\":[\"fixed\",\"auto\"]},\"YorKEnsoC\":{\"layout\":[\"fixed\",\"auto\"]},\"F7rF3Ogf7\":{\"layout\":[\"fixed\",\"auto\"]},\"DC4x5qLzR\":{\"layout\":[\"fixed\",\"auto\"]},\"C15IlXOnj\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerVariables {\"y3z9Kx4Wv\":\"hover\",\"XNt_0jHi5\":\"h1\",\"Rv7rN9T36\":\"h2\",\"hYnSN8Rbu\":\"icon\",\"vwOUPOH8n\":\"h2Visible\",\"pf_L3YvVa\":\"iconVisible\",\"taEtOIjYB\":\"link\",\"mhS_it8bS\":\"smallIcon\",\"SF4WeeABZ\":\"smallIconVisible\",\"anQxL7bbx\":\"hoverChevron\",\"NF_p8Wl2r\":\"hover2\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerGgCR0HjY3=withCSS(Component,css,\"framer-tL9cK\");export default FramerGgCR0HjY3;FramerGgCR0HjY3.displayName=\"Menu Row\";FramerGgCR0HjY3.defaultProps={height:58,width:400};addPropertyControls(FramerGgCR0HjY3,{variant:{options:[\"qyFX7T2dF\",\"H4g1vLl7w\",\"R1WDvXnK4\",\"LX7bcs5Lw\",\"E5Vvpf7SI\",\"JBMHbmdlf\"],optionTitles:[\"Default\",\"Active\",\"No arrow\",\"Mobile\",\"Secondary\",\"Small\"],title:\"Variant\",type:ControlType.Enum},y3z9Kx4Wv:{title:\"Hover\",type:ControlType.EventHandler},XNt_0jHi5:{defaultValue:\"How Twingate Works?\",displayTextArea:false,title:\"H1\",type:ControlType.String},Rv7rN9T36:{defaultValue:\"Keep track of changes to our product\",displayTextArea:false,title:\"H2\",type:ControlType.String},hYnSN8Rbu:NavNavIconsNEWControls?.[\"variant\"]&&{...NavNavIconsNEWControls[\"variant\"],defaultValue:\"mRpTeKf3V\",description:undefined,hidden:undefined,title:\"Icon\"},vwOUPOH8n:{defaultValue:true,title:\"H2 Visible\",type:ControlType.Boolean},pf_L3YvVa:{defaultValue:true,title:\"Icon Visible\",type:ControlType.Boolean},taEtOIjYB:{title:\"Link\",type:ControlType.Link},mhS_it8bS:Logos1Controls?.[\"icon\"]&&{...Logos1Controls[\"icon\"],defaultValue:\"Twingate\",description:undefined,hidden:undefined,title:\"Small Icon\"},SF4WeeABZ:{defaultValue:false,title:\"Small Icon Visible\",type:ControlType.Boolean},anQxL7bbx:{defaultValue:true,title:\"Hover chevron\",type:ControlType.Boolean},NF_p8Wl2r:{title:\"Hover 2\",type:ControlType.EventHandler}});addFonts(FramerGgCR0HjY3,[{explicitInter:true,fonts:[{family:\"TT Hoves Regular\",source:\"custom\",url:\"https://framerusercontent.com/assets/wgABDVIWK1vZ3ZH97n7INv3AEY.woff2\"},{family:\"TT Hoves Medium\",source:\"custom\",url:\"https://framerusercontent.com/assets/M4cAr8oQzbyO9Ynb0WkinOqcoI.woff2\"}]},...NavNavIconsNEWFonts,...LogosFonts,...GraphicsButtonArrowFonts],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerGgCR0HjY3\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerColorSyntax\":\"true\",\"framerIntrinsicWidth\":\"400\",\"framerDisplayContentsDiv\":\"false\",\"framerImmutableVariables\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"H4g1vLl7w\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"R1WDvXnK4\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"LX7bcs5Lw\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"E5Vvpf7SI\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"JBMHbmdlf\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"YorKEnsoC\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"F7rF3Ogf7\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"DC4x5qLzR\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"C15IlXOnj\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerIntrinsicHeight\":\"58\",\"framerVariables\":\"{\\\"y3z9Kx4Wv\\\":\\\"hover\\\",\\\"XNt_0jHi5\\\":\\\"h1\\\",\\\"Rv7rN9T36\\\":\\\"h2\\\",\\\"hYnSN8Rbu\\\":\\\"icon\\\",\\\"vwOUPOH8n\\\":\\\"h2Visible\\\",\\\"pf_L3YvVa\\\":\\\"iconVisible\\\",\\\"taEtOIjYB\\\":\\\"link\\\",\\\"mhS_it8bS\\\":\\\"smallIcon\\\",\\\"SF4WeeABZ\\\":\\\"smallIconVisible\\\",\\\"anQxL7bbx\\\":\\\"hoverChevron\\\",\\\"NF_p8Wl2r\\\":\\\"hover2\\\"}\",\"framerComponentViewportWidth\":\"true\",\"framerAutoSizeImages\":\"true\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./GgCR0HjY3.map", "// Generated by Framer (38f2e7f)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,getLoadingLazyAtYPosition,Image,Link,RichText,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import GraphicsButtonArrow from\"https://framerusercontent.com/modules/k2LXqFXKLfH5xo6YMaO2/WNzbIRtDtprBjkAcMlG0/pRemd4fMu.js\";import EasingGradient from\"https://framerusercontent.com/modules/TqPeWj5f410fFZQ7gAgf/qKhK4bnhsmwaenV1TcQz/EasingGradient.js\";const EasingGradientFonts=getFonts(EasingGradient);const GraphicsButtonArrowFonts=getFonts(GraphicsButtonArrow);const enabledGestures={bgALVQZde:{hover:true},DtmhzKALU:{hover:true}};const cycleOrder=[\"bgALVQZde\",\"DtmhzKALU\",\"GdmFgDXIk\"];const serializationHash=\"framer-xbIIt\";const variantClassNames={bgALVQZde:\"framer-v-1hh9r7n\",DtmhzKALU:\"framer-v-2zj79f\",GdmFgDXIk:\"framer-v-10q9gee\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants===null||variants===void 0?void 0:variants.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const toResponsiveImage=value=>{if(typeof value===\"object\"&&value!==null&&typeof value.src===\"string\"){return value;}return typeof value===\"string\"?{src:value}:undefined;};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value!==null&&value!==void 0?value:config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion(React.Fragment);const humanReadableVariantMap={\"Variant 3\":\"GdmFgDXIk\",Default:\"bgALVQZde\",New:\"DtmhzKALU\"};const getProps=({height,id,image,link,subtitle,subtitleVisiblity,title,width,...props})=>{var _ref,_ref1,_ref2,_humanReadableVariantMap_props_variant,_ref3;return{...props,FCJjotThg:(_ref=title!==null&&title!==void 0?title:props.FCJjotThg)!==null&&_ref!==void 0?_ref:\"WebAuthn 2FA\",gXZzLrrxC:(_ref1=subtitle!==null&&subtitle!==void 0?subtitle:props.gXZzLrrxC)!==null&&_ref1!==void 0?_ref1:\"Feb 13, 2023\",j_lkVn6wH:(_ref2=subtitleVisiblity!==null&&subtitleVisiblity!==void 0?subtitleVisiblity:props.j_lkVn6wH)!==null&&_ref2!==void 0?_ref2:true,variant:(_ref3=(_humanReadableVariantMap_props_variant=humanReadableVariantMap[props.variant])!==null&&_humanReadableVariantMap_props_variant!==void 0?_humanReadableVariantMap_props_variant:props.variant)!==null&&_ref3!==void 0?_ref3:\"bgALVQZde\",W8QKdoWYc:image!==null&&image!==void 0?image:props.W8QKdoWYc,xB6GQkGqy:link!==null&&link!==void 0?link:props.xB6GQkGqy};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,FCJjotThg,gXZzLrrxC,W8QKdoWYc,xB6GQkGqy,j_lkVn6wH,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"bgALVQZde\",enabledGestures,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const ref1=React.useRef(null);const isDisplayed=()=>{if(baseVariant===\"GdmFgDXIk\")return false;return true;};const defaultLayoutId=React.useId();const sharedStyleClassNames=[];const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId!==null&&layoutId!==void 0?layoutId:defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(Link,{href:xB6GQkGqy,openInNewTab:false,smoothScroll:true,children:/*#__PURE__*/_jsxs(motion.a,{...restProps,...gestureHandlers,className:`${cx(serializationHash,...sharedStyleClassNames,\"framer-1hh9r7n\",className,classNames)} framer-125fk6g`,\"data-border\":true,\"data-framer-name\":\"Default\",layoutDependency:layoutDependency,layoutId:\"bgALVQZde\",ref:ref!==null&&ref!==void 0?ref:ref1,style:{\"--border-bottom-width\":\"0.5px\",\"--border-color\":\"var(--token-66d0cf7b-9eb8-4245-b770-5d2d61dad950, rgba(255, 255, 255, 0.1))\",\"--border-left-width\":\"0.5px\",\"--border-right-width\":\"0.5px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0.5px\",backgroundColor:\"rgba(255, 255, 255, 0)\",borderBottomLeftRadius:12,borderBottomRightRadius:12,borderTopLeftRadius:12,borderTopRightRadius:12,...style},variants:{\"bgALVQZde-hover\":{\"--border-color\":\"var(--token-66d0cf7b-9eb8-4245-b770-5d2d61dad950, rgba(245, 245, 255, 0.1))\"},\"DtmhzKALU-hover\":{\"--border-bottom-width\":\"0px\",\"--border-left-width\":\"0px\",\"--border-right-width\":\"0px\",\"--border-top-width\":\"0px\",borderBottomLeftRadius:0,borderBottomRightRadius:0,borderTopLeftRadius:0,borderTopRightRadius:0},DtmhzKALU:{\"--border-bottom-width\":\"0px\",\"--border-left-width\":\"0px\",\"--border-right-width\":\"0px\",\"--border-top-width\":\"0px\",borderBottomLeftRadius:0,borderBottomRightRadius:0,borderTopLeftRadius:0,borderTopRightRadius:0},GdmFgDXIk:{\"--border-bottom-width\":\"0px\",\"--border-left-width\":\"0px\",\"--border-right-width\":\"0px\",\"--border-top-width\":\"0px\",borderBottomLeftRadius:0,borderBottomRightRadius:0,borderTopLeftRadius:0,borderTopRightRadius:0}},...addPropertyOverrides({\"bgALVQZde-hover\":{\"data-framer-name\":undefined},\"DtmhzKALU-hover\":{\"data-framer-name\":undefined},DtmhzKALU:{\"data-framer-name\":\"New\"},GdmFgDXIk:{\"data-framer-name\":\"Variant 3\"}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-e67q80\",\"data-framer-name\":\"Hover fade\",layoutDependency:layoutDependency,layoutId:\"JthLjQEK2\",style:{\"--border-bottom-width\":\"0px\",\"--border-color\":\"rgba(0, 0, 0, 0)\",\"--border-left-width\":\"0px\",\"--border-right-width\":\"0px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0px\",background:\"linear-gradient(180deg, rgba(84, 84, 84, 0) 0%, rgba(0, 0, 0, 0.65) 100%)\",borderBottomLeftRadius:12,borderBottomRightRadius:12,borderTopLeftRadius:12,borderTopRightRadius:12,opacity:.27},variants:{\"bgALVQZde-hover\":{\"--border-bottom-width\":\"1px\",\"--border-color\":\"var(--token-66d0cf7b-9eb8-4245-b770-5d2d61dad950, rgba(245, 245, 255, 0.1))\",\"--border-left-width\":\"1px\",\"--border-right-width\":\"1px\",\"--border-style\":\"solid\",\"--border-top-width\":\"1px\",opacity:1},\"DtmhzKALU-hover\":{opacity:1},DtmhzKALU:{\"--border-bottom-width\":\"1px\",\"--border-color\":\"var(--token-2b080329-29ba-481c-ac92-832881069b36, rgba(255, 255, 255, 0.1))\",\"--border-left-width\":\"1px\",\"--border-right-width\":\"1px\",\"--border-style\":\"solid\",\"--border-top-width\":\"1px\",opacity:0},GdmFgDXIk:{\"--border-bottom-width\":\"1px\",\"--border-color\":\"var(--token-2b080329-29ba-481c-ac92-832881069b36, rgba(255, 255, 255, 0.1))\",\"--border-left-width\":\"1px\",\"--border-right-width\":\"1px\",\"--border-style\":\"solid\",\"--border-top-width\":\"1px\",opacity:0}},...addPropertyOverrides({\"bgALVQZde-hover\":{\"data-border\":true},DtmhzKALU:{\"data-border\":true},GdmFgDXIk:{\"data-border\":true}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(Image,{background:{alt:\"\",fit:\"fill\",loading:getLoadingLazyAtYPosition(((componentViewport===null||componentViewport===void 0?void 0:componentViewport.y)||0)+0),sizes:(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\",...toResponsiveImage(W8QKdoWYc)},className:\"framer-132928a\",\"data-framer-name\":\"Image\",layoutDependency:layoutDependency,layoutId:\"bjGpzVkPB\",style:{\"--border-bottom-width\":\"0px\",\"--border-color\":\"rgba(0, 0, 0, 0)\",\"--border-left-width\":\"0px\",\"--border-right-width\":\"0px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0px\",borderBottomLeftRadius:0,borderBottomRightRadius:0,borderTopLeftRadius:0,borderTopRightRadius:0,filter:\"grayscale(0)\",WebkitFilter:\"grayscale(0)\"},variants:{DtmhzKALU:{\"--border-bottom-width\":\"0.5px\",\"--border-color\":\"var(--token-2b080329-29ba-481c-ac92-832881069b36, rgba(255, 255, 255, 0.1))\",\"--border-left-width\":\"0.5px\",\"--border-right-width\":\"0.5px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0.5px\",borderBottomLeftRadius:12,borderBottomRightRadius:12,borderTopLeftRadius:12,borderTopRightRadius:12},GdmFgDXIk:{\"--border-bottom-width\":\"0.5px\",\"--border-color\":\"var(--token-2b080329-29ba-481c-ac92-832881069b36, rgba(255, 255, 255, 0.1))\",\"--border-left-width\":\"0.5px\",\"--border-right-width\":\"0.5px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0.5px\",borderBottomLeftRadius:12,borderBottomRightRadius:12,borderTopLeftRadius:12,borderTopRightRadius:12}},...addPropertyOverrides({DtmhzKALU:{\"data-border\":true,background:{alt:\"\",fit:\"fill\",loading:getLoadingLazyAtYPosition(((componentViewport===null||componentViewport===void 0?void 0:componentViewport.y)||0)+0+(((componentViewport===null||componentViewport===void 0?void 0:componentViewport.height)||216)-0-(Math.max(0,(((componentViewport===null||componentViewport===void 0?void 0:componentViewport.height)||216)-0-218-0)/1)*1+210+8)+0+0)),sizes:(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\",...toResponsiveImage(W8QKdoWYc)}},GdmFgDXIk:{\"data-border\":true,background:{alt:\"\",fit:\"fill\",loading:getLoadingLazyAtYPosition(((componentViewport===null||componentViewport===void 0?void 0:componentViewport.y)||0)+0),sizes:`max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 8px) / 2, 1px)`,...toResponsiveImage(W8QKdoWYc)}}},baseVariant,gestureVariant)}),isDisplayed()&&/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-hju4sg-container\",layoutDependency:layoutDependency,layoutId:\"mhist9i7U-container\",style:{opacity:.5},variants:{DtmhzKALU:{opacity:0}},children:/*#__PURE__*/_jsx(EasingGradient,{angle:0,easeCustom:\"0.645, 0.045, 0.355, 1\",easeString:true,easing:\"ease-in-out\",from:\"rgb(14, 15, 17)\",height:\"100%\",id:\"mhist9i7U\",layoutId:\"mhist9i7U\",mode:\"husl\",radius:0,stops:5,style:{height:\"100%\",width:\"100%\"},to:\"rgba(14, 15, 17, 0)\",width:\"100%\"})})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1iwn4cj\",layoutDependency:layoutDependency,layoutId:\"YY4YvJAY2\",children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1vtxy\",\"data-framer-name\":\"Title\",layoutDependency:layoutDependency,layoutId:\"ru1Mij_X7\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1RUIEhvdmVzIFJlZ3VsYXI=\",\"--framer-font-family\":'\"TT Hoves Regular\", \"TT Hoves Regular Placeholder\", sans-serif',\"--framer-font-size\":\"15px\",\"--framer-letter-spacing\":\"0px\",\"--framer-line-height\":\"1.5em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255)))\"},children:\"WebAuthn 2FA\"})}),className:\"framer-jme18w\",\"data-framer-name\":\"Title\",fonts:[\"CUSTOM;TT Hoves Regular\"],layoutDependency:layoutDependency,layoutId:\"yvkkKNy15\",style:{\"--extracted-r6o4lv\":\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\",textShadow:\"0px 1px 3px rgba(0, 0, 0, 0.1)\"},text:FCJjotThg,verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1e2z8q0-container\",layoutDependency:layoutDependency,layoutId:\"RQNpwTeKt-container\",style:{opacity:0},variants:{\"DtmhzKALU-hover\":{opacity:1}},children:/*#__PURE__*/_jsx(GraphicsButtonArrow,{height:\"100%\",id:\"RQNpwTeKt\",layoutId:\"RQNpwTeKt\",style:{height:\"100%\",width:\"100%\"},variant:\"Ez6AL2vTh\",width:\"100%\",...addPropertyOverrides({\"bgALVQZde-hover\":{variant:\"EjrLISIop\"},\"DtmhzKALU-hover\":{variant:\"EjrLISIop\"}},baseVariant,gestureVariant)})})})]}),j_lkVn6wH&&/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1RUIEhvdmVzIE1lZGl1bQ==\",\"--framer-font-family\":'\"TT Hoves Medium\", \"TT Hoves Medium Placeholder\", sans-serif',\"--framer-font-size\":\"13px\",\"--framer-letter-spacing\":\"0.15px\",\"--framer-line-height\":\"1.5em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgba(255, 255, 255, 0.7))\"},children:\"Feb 13, 2023\"})}),className:\"framer-180tsy8\",\"data-framer-name\":\"Subtitle\",fonts:[\"CUSTOM;TT Hoves Medium\"],layoutDependency:layoutDependency,layoutId:\"VcbRrBVi1\",style:{\"--extracted-r6o4lv\":\"rgba(255, 255, 255, 0.7)\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\",textShadow:\"0px 1px 3px rgba(0, 0, 0, 0.1)\"},text:gXZzLrrxC,verticalAlignment:\"top\",withExternalLayout:true})]})]})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-xbIIt.framer-125fk6g, .framer-xbIIt .framer-125fk6g { display: block; }\",\".framer-xbIIt.framer-1hh9r7n { align-content: flex-start; align-items: flex-start; cursor: pointer; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: 216px; justify-content: flex-end; overflow: hidden; padding: 16px; position: relative; text-decoration: none; width: 244px; will-change: var(--framer-will-change-override, transform); }\",\".framer-xbIIt .framer-e67q80 { flex: none; height: 100%; left: 0px; overflow: visible; position: absolute; top: 0px; width: 100%; z-index: 1; }\",\".framer-xbIIt .framer-132928a { bottom: 0px; flex: none; left: 0px; overflow: hidden; position: absolute; right: 0px; top: 0px; z-index: 0; }\",\".framer-xbIIt .framer-hju4sg-container { bottom: 0px; flex: none; left: 0px; position: absolute; right: 0px; top: 0px; z-index: 0; }\",\".framer-xbIIt .framer-1iwn4cj { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 212px; }\",\".framer-xbIIt .framer-1vtxy { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 4px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-xbIIt .framer-jme18w { flex: 1 0 0px; height: auto; pointer-events: none; position: relative; white-space: pre-wrap; width: 1px; word-break: break-word; word-wrap: break-word; z-index: 1; }\",\".framer-xbIIt .framer-1e2z8q0-container { flex: none; height: 20px; position: relative; width: 10px; }\",\".framer-xbIIt .framer-180tsy8 { flex: none; height: auto; position: relative; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; z-index: 1; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-xbIIt.framer-1hh9r7n, .framer-xbIIt .framer-1iwn4cj, .framer-xbIIt .framer-1vtxy { gap: 0px; } .framer-xbIIt.framer-1hh9r7n > *, .framer-xbIIt .framer-1iwn4cj > * { margin: 0px; margin-bottom: calc(0px / 2); margin-top: calc(0px / 2); } .framer-xbIIt.framer-1hh9r7n > :first-child, .framer-xbIIt .framer-1iwn4cj > :first-child { margin-top: 0px; } .framer-xbIIt.framer-1hh9r7n > :last-child, .framer-xbIIt .framer-1iwn4cj > :last-child { margin-bottom: 0px; } .framer-xbIIt .framer-1vtxy > * { margin: 0px; margin-left: calc(4px / 2); margin-right: calc(4px / 2); } .framer-xbIIt .framer-1vtxy > :first-child { margin-left: 0px; } .framer-xbIIt .framer-1vtxy > :last-child { margin-right: 0px; } }\",\".framer-xbIIt.framer-v-2zj79f.framer-1hh9r7n { gap: 8px; padding: 0px; }\",\".framer-xbIIt.framer-v-2zj79f .framer-e67q80 { bottom: 30px; height: unset; right: 0px; width: unset; }\",\".framer-xbIIt.framer-v-2zj79f .framer-132928a { bottom: unset; flex: 1 0 0px; height: 1px; left: unset; position: relative; right: unset; top: unset; width: 100%; will-change: var(--framer-will-change-override, transform); }\",\".framer-xbIIt.framer-v-2zj79f .framer-1iwn4cj { width: 100%; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-xbIIt.framer-v-2zj79f.framer-1hh9r7n { gap: 0px; } .framer-xbIIt.framer-v-2zj79f.framer-1hh9r7n > * { margin: 0px; margin-bottom: calc(8px / 2); margin-top: calc(8px / 2); } .framer-xbIIt.framer-v-2zj79f.framer-1hh9r7n > :first-child { margin-top: 0px; } .framer-xbIIt.framer-v-2zj79f.framer-1hh9r7n > :last-child { margin-bottom: 0px; } }\",\".framer-xbIIt.framer-v-10q9gee.framer-1hh9r7n { cursor: unset; flex-direction: row; gap: 8px; height: min-content; padding: 0px; }\",\".framer-xbIIt.framer-v-10q9gee .framer-e67q80 { bottom: 0px; height: unset; right: 126px; width: unset; }\",\".framer-xbIIt.framer-v-10q9gee .framer-132928a { bottom: unset; flex: 1 0 0px; height: 108px; left: unset; position: relative; right: unset; top: unset; width: 1px; will-change: var(--framer-will-change-override, transform); }\",\".framer-xbIIt.framer-v-10q9gee .framer-1iwn4cj { flex: 1 0 0px; width: 1px; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-xbIIt.framer-v-10q9gee.framer-1hh9r7n { gap: 0px; } .framer-xbIIt.framer-v-10q9gee.framer-1hh9r7n > * { margin: 0px; margin-left: calc(8px / 2); margin-right: calc(8px / 2); } .framer-xbIIt.framer-v-10q9gee.framer-1hh9r7n > :first-child { margin-left: 0px; } .framer-xbIIt.framer-v-10q9gee.framer-1hh9r7n > :last-child { margin-right: 0px; } }\",\".framer-xbIIt.framer-v-1hh9r7n.hover .framer-e67q80 { order: 0; }\",\".framer-xbIIt.framer-v-1hh9r7n.hover .framer-132928a { order: 1; }\",\".framer-xbIIt.framer-v-1hh9r7n.hover .framer-hju4sg-container { order: 2; }\",\".framer-xbIIt.framer-v-1hh9r7n.hover .framer-1iwn4cj { order: 3; }\",\".framer-xbIIt.framer-v-2zj79f.hover .framer-e67q80 { height: unset; width: unset; }\",\".framer-xbIIt.framer-v-2zj79f.hover .framer-132928a { bottom: unset; left: unset; right: unset; top: unset; }\",'.framer-xbIIt[data-border=\"true\"]::after, .framer-xbIIt [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; pointer-events: none; }'];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 216\n * @framerIntrinsicWidth 244\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"DtmhzKALU\":{\"layout\":[\"fixed\",\"fixed\"]},\"GdmFgDXIk\":{\"layout\":[\"fixed\",\"auto\"]},\"CutSqm35y\":{\"layout\":[\"fixed\",\"fixed\"]},\"chwo8mfbQ\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerVariables {\"FCJjotThg\":\"title\",\"gXZzLrrxC\":\"subtitle\",\"W8QKdoWYc\":\"image\",\"xB6GQkGqy\":\"link\",\"j_lkVn6wH\":\"subtitleVisiblity\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerU5lud3mMK=withCSS(Component,css,\"framer-xbIIt\");export default FramerU5lud3mMK;FramerU5lud3mMK.displayName=\"Nav / Tray \u2013 Blog Card\";FramerU5lud3mMK.defaultProps={height:216,width:244};addPropertyControls(FramerU5lud3mMK,{variant:{options:[\"bgALVQZde\",\"DtmhzKALU\",\"GdmFgDXIk\"],optionTitles:[\"Default\",\"New\",\"Variant 3\"],title:\"Variant\",type:ControlType.Enum},FCJjotThg:{defaultValue:\"WebAuthn 2FA\",title:\"Title\",type:ControlType.String},gXZzLrrxC:{defaultValue:\"Feb 13, 2023\",displayTextArea:false,title:\"Subtitle\",type:ControlType.String},W8QKdoWYc:{title:\"Image\",type:ControlType.ResponsiveImage},xB6GQkGqy:{title:\"Link\",type:ControlType.Link},j_lkVn6wH:{defaultValue:true,title:\"Subtitle Visiblity\",type:ControlType.Boolean}});addFonts(FramerU5lud3mMK,[{explicitInter:true,fonts:[{family:\"TT Hoves Regular\",source:\"custom\",url:\"https://framerusercontent.com/assets/wgABDVIWK1vZ3ZH97n7INv3AEY.woff2\"},{family:\"TT Hoves Medium\",source:\"custom\",url:\"https://framerusercontent.com/assets/M4cAr8oQzbyO9Ynb0WkinOqcoI.woff2\"}]},...EasingGradientFonts,...GraphicsButtonArrowFonts],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerU5lud3mMK\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"216\",\"framerIntrinsicWidth\":\"244\",\"framerContractVersion\":\"1\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"DtmhzKALU\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"GdmFgDXIk\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"CutSqm35y\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"chwo8mfbQ\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerDisplayContentsDiv\":\"false\",\"framerComponentViewportWidth\":\"true\",\"framerImmutableVariables\":\"true\",\"framerVariables\":\"{\\\"FCJjotThg\\\":\\\"title\\\",\\\"gXZzLrrxC\\\":\\\"subtitle\\\",\\\"W8QKdoWYc\\\":\\\"image\\\",\\\"xB6GQkGqy\\\":\\\"link\\\",\\\"j_lkVn6wH\\\":\\\"subtitleVisiblity\\\"}\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./U5lud3mMK.map", "// Generated by Framer (e2fa450)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,SVG,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";const enabledGestures={f9wDOdW9u:{hover:true},huQgWWGNI:{hover:true},KdEF6O_gO:{hover:true}};const cycleOrder=[\"h6gn9ZswK\",\"fkcpDynXP\",\"f9wDOdW9u\",\"KdEF6O_gO\",\"huQgWWGNI\",\"fpic_LgJb\",\"ditA4Waj1\",\"R7zKhMY7Y\",\"EL2ujQB48\",\"ufdhjA39k\"];const serializationHash=\"framer-bVQwT\";const variantClassNames={ditA4Waj1:\"framer-v-1ikhjce\",EL2ujQB48:\"framer-v-1sxv3lq\",f9wDOdW9u:\"framer-v-9l5wo7\",fkcpDynXP:\"framer-v-1x8ysym\",fpic_LgJb:\"framer-v-iz3vft\",h6gn9ZswK:\"framer-v-zu858k\",huQgWWGNI:\"framer-v-1grt1q\",KdEF6O_gO:\"framer-v-nj3xud\",R7zKhMY7Y:\"framer-v-je2yy8\",ufdhjA39k:\"framer-v-2782lj\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants===null||variants===void 0?void 0:variants.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const transformTemplate1=(_,t)=>`translateY(-50%) ${t}`;const transformTemplate2=(_,t)=>`translate(-50%, -50%) ${t}`;const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value!==null&&value!==void 0?value:config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion(React.Fragment);const humanReadableVariantMap={\"API - Hover\":\"EL2ujQB48\",\"Device controls\":\"huQgWWGNI\",\"HIW \u2013\\xa0Hover\":\"fkcpDynXP\",\"Quick Start - Mobile\":\"ufdhjA39k\",\"Quick start- Hover\":\"ditA4Waj1\",\"Quick Start\":\"fpic_LgJb\",\"VPN Replacement\":\"f9wDOdW9u\",API:\"R7zKhMY7Y\",HIW:\"h6gn9ZswK\",Infrastructure:\"KdEF6O_gO\"};const getProps=({height,id,width,...props})=>{var _humanReadableVariantMap_props_variant,_ref;return{...props,variant:(_ref=(_humanReadableVariantMap_props_variant=humanReadableVariantMap[props.variant])!==null&&_humanReadableVariantMap_props_variant!==void 0?_humanReadableVariantMap_props_variant:props.variant)!==null&&_ref!==void 0?_ref:\"h6gn9ZswK\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"h6gn9ZswK\",enabledGestures,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const ref1=React.useRef(null);const isDisplayed=()=>{if([\"f9wDOdW9u-hover\",\"KdEF6O_gO-hover\",\"huQgWWGNI-hover\"].includes(gestureVariant))return false;if([\"f9wDOdW9u\",\"KdEF6O_gO\",\"huQgWWGNI\",\"fpic_LgJb\",\"ditA4Waj1\",\"R7zKhMY7Y\",\"EL2ujQB48\",\"ufdhjA39k\"].includes(baseVariant))return false;return true;};const isDisplayed1=()=>{if([\"fpic_LgJb\",\"ditA4Waj1\",\"ufdhjA39k\"].includes(baseVariant))return true;return false;};const isDisplayed2=()=>{if([\"ditA4Waj1\",\"ufdhjA39k\"].includes(baseVariant))return true;return false;};const isDisplayed3=()=>{if(gestureVariant===\"f9wDOdW9u-hover\")return true;if(baseVariant===\"f9wDOdW9u\")return true;return false;};const isDisplayed4=()=>{if(gestureVariant===\"f9wDOdW9u-hover\")return true;return false;};const isDisplayed5=()=>{if(gestureVariant===\"KdEF6O_gO-hover\")return true;if(baseVariant===\"KdEF6O_gO\")return true;return false;};const isDisplayed6=()=>{if(gestureVariant===\"huQgWWGNI-hover\")return true;if(baseVariant===\"huQgWWGNI\")return true;return false;};const isDisplayed7=()=>{if([\"R7zKhMY7Y\",\"EL2ujQB48\"].includes(baseVariant))return true;return false;};const defaultLayoutId=React.useId();const sharedStyleClassNames=[];const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId!==null&&layoutId!==void 0?layoutId:defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(serializationHash,...sharedStyleClassNames,\"framer-zu858k\",className,classNames),\"data-framer-name\":\"HIW\",layoutDependency:layoutDependency,layoutId:\"h6gn9ZswK\",ref:ref!==null&&ref!==void 0?ref:ref1,style:{...style},...addPropertyOverrides({\"f9wDOdW9u-hover\":{\"data-framer-name\":undefined},\"huQgWWGNI-hover\":{\"data-framer-name\":undefined},\"KdEF6O_gO-hover\":{\"data-framer-name\":undefined},ditA4Waj1:{\"data-framer-name\":\"Quick start- Hover\"},EL2ujQB48:{\"data-framer-name\":\"API - Hover\"},f9wDOdW9u:{\"data-framer-name\":\"VPN Replacement\"},fkcpDynXP:{\"data-framer-name\":\"HIW \u2013\\xa0Hover\"},fpic_LgJb:{\"data-framer-name\":\"Quick Start\"},huQgWWGNI:{\"data-framer-name\":\"Device controls\"},KdEF6O_gO:{\"data-framer-name\":\"Infrastructure\"},R7zKhMY7Y:{\"data-framer-name\":\"API\"},ufdhjA39k:{\"data-framer-name\":\"Quick Start - Mobile\"}},baseVariant,gestureVariant),children:[isDisplayed()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-lz5qet\",\"data-framer-name\":\"HIW\",layoutDependency:layoutDependency,layoutId:\"jJMghYVsM\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-130bf42\",\"data-framer-name\":\"Rectangle 628\",layoutDependency:layoutDependency,layoutId:\"d9uSWrqo_\",style:{backgroundColor:\"rgb(255, 255, 255)\",borderBottomLeftRadius:4,borderBottomRightRadius:4,borderTopLeftRadius:4,borderTopRightRadius:4,opacity:1},variants:{fkcpDynXP:{backgroundColor:\"var(--token-9cd45774-fe90-4931-bc24-bcdad47dc54c, rgb(123, 102, 255))\",opacity:.5}}}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-szu7t4\",\"data-framer-name\":\"Rectangle 632\",layoutDependency:layoutDependency,layoutId:\"CM6DQYwAc\",style:{backgroundColor:\"rgb(255, 255, 255)\",borderBottomLeftRadius:4,borderBottomRightRadius:4,borderTopLeftRadius:4,borderTopRightRadius:4,opacity:.5},variants:{fkcpDynXP:{backgroundColor:\"var(--token-9cd45774-fe90-4931-bc24-bcdad47dc54c, rgb(123, 102, 255))\",opacity:1}}}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-h3ps06\",\"data-framer-name\":\"Rectangle 631\",layoutDependency:layoutDependency,layoutId:\"qI3DUVIpG\",style:{backgroundColor:\"rgb(255, 255, 255)\",borderBottomLeftRadius:4,borderBottomRightRadius:4,borderTopLeftRadius:4,borderTopRightRadius:4,opacity:.5},variants:{fkcpDynXP:{backgroundColor:\"var(--token-9cd45774-fe90-4931-bc24-bcdad47dc54c, rgb(123, 102, 255))\",opacity:1}}}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-9a8arw\",\"data-framer-name\":\"Rectangle 633\",layoutDependency:layoutDependency,layoutId:\"GpWlAlKuj\",style:{backgroundColor:\"rgb(255, 255, 255)\",borderBottomLeftRadius:4,borderBottomRightRadius:4,borderTopLeftRadius:4,borderTopRightRadius:4,opacity:1},variants:{fkcpDynXP:{backgroundColor:\"var(--token-9cd45774-fe90-4931-bc24-bcdad47dc54c, rgb(123, 102, 255))\",opacity:.5}}})]}),isDisplayed1()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-unpa1o\",\"data-framer-name\":\"Quick start\",layoutDependency:layoutDependency,layoutId:\"X18mdq81S\",children:[isDisplayed2()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1gzl1hx\",layoutDependency:layoutDependency,layoutId:\"mFPggMACM\",style:{backgroundColor:\"var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95))\",borderBottomLeftRadius:26,borderBottomRightRadius:26,borderTopLeftRadius:26,borderTopRightRadius:26,opacity:.5},transformTemplate:transformTemplate1,variants:{ufdhjA39k:{opacity:1}}}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1omxe4z\",layoutDependency:layoutDependency,layoutId:\"JtBzTM4EL\",style:{backgroundColor:\"rgb(255, 255, 255)\",borderBottomLeftRadius:26,borderBottomRightRadius:26,borderTopLeftRadius:26,borderTopRightRadius:26,opacity:.5},variants:{ditA4Waj1:{backgroundColor:\"var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95))\"},ufdhjA39k:{backgroundColor:\"var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95))\",opacity:1}}}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-mq6dis\",\"data-framer-name\":\"Upper\",layoutDependency:layoutDependency,layoutId:\"mIywpSxxQ\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-16lvgb3\",layoutDependency:layoutDependency,layoutId:\"druEhzk85\",style:{backgroundColor:\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\",borderBottomLeftRadius:40,borderBottomRightRadius:40,borderTopLeftRadius:40,borderTopRightRadius:40}}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1nh3kie\",layoutDependency:layoutDependency,layoutId:\"aRThBq9Lm\",style:{backgroundColor:\"rgb(255, 255, 255)\",borderBottomLeftRadius:40,borderBottomRightRadius:40,borderTopLeftRadius:40,borderTopRightRadius:40},variants:{ditA4Waj1:{backgroundColor:\"var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95))\"},ufdhjA39k:{backgroundColor:\"var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95))\"}}}),/*#__PURE__*/_jsx(SVG,{className:\"framer-8ry6ek\",\"data-framer-name\":\"icon\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:20,intrinsicWidth:12,layoutDependency:layoutDependency,layoutId:\"cpIfcEv2k\",style:{opacity:0},svg:'<svg width=\"12\" height=\"20\" viewBox=\"0 0 12 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M0 8.51618V17.2C0 17.2 1.2983 16.3091 2.75 15.2908V10.5162C2.75 8.1692 3.45659 7.41208 5.36974 5.98986C6.01224 5.51223 7.02198 4.76243 7.99356 4.04114V0C7.99356 0 4.1983 2.81637 2.61974 3.98986C0.70659 5.41208 0 6.1692 0 8.51618ZM4 20V11.3162C4 8.9692 4.70659 8.21208 6.61974 6.78986C8.1983 5.61637 11.9936 2.8 11.9936 2.8V10.3774C11.9936 10.5949 11.9953 10.8023 11.997 11.001C12.0147 13.0995 12.0241 14.2192 9.87762 15.8425C8.10426 17.1836 4 20 4 20Z\" fill=\"#121315\"/>\\n</svg>\\n',variants:{ditA4Waj1:{opacity:1},ufdhjA39k:{opacity:1}},withExternalLayout:true,...addPropertyOverrides({ufdhjA39k:{transformTemplate:transformTemplate2}},baseVariant,gestureVariant)})]})]}),isDisplayed3()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1ynydue\",\"data-framer-name\":\"VPN replacement\",layoutDependency:layoutDependency,layoutId:\"m184MmX9_\",children:[isDisplayed3()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-18j1r\",\"data-framer-name\":\"TG\",layoutDependency:layoutDependency,layoutId:\"y9WoT2MSZ\",style:{opacity:.5},variants:{\"f9wDOdW9u-hover\":{opacity:1}},children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-1yds0jz\",layoutDependency:layoutDependency,layoutId:\"TvUEY4LM6\",style:{backgroundColor:\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\",borderBottomLeftRadius:7,borderBottomRightRadius:7,borderTopLeftRadius:7,borderTopRightRadius:7}}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1nrlgcy\",layoutDependency:layoutDependency,layoutId:\"BphcY3MXw\",style:{backgroundColor:\"rgb(255, 255, 255)\",borderBottomLeftRadius:4,borderBottomRightRadius:4,borderTopLeftRadius:4,borderTopRightRadius:4},variants:{\"f9wDOdW9u-hover\":{backgroundColor:\"rgb(87, 135, 255)\"}}}),isDisplayed4()&&/*#__PURE__*/_jsx(SVG,{className:\"framer-1c2xng0\",\"data-framer-name\":\"icon\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:20,intrinsicWidth:12,layoutDependency:layoutDependency,layoutId:\"bgAjvqsr8\",svg:'<svg width=\"12\" height=\"20\" viewBox=\"0 0 12 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M0 8.51618V17.2C0 17.2 1.2983 16.3091 2.75 15.2908V10.5162C2.75 8.1692 3.45659 7.41208 5.36974 5.98986C6.01224 5.51223 7.02198 4.76243 7.99356 4.04114V0C7.99356 0 4.1983 2.81637 2.61974 3.98986C0.70659 5.41208 0 6.1692 0 8.51618ZM4 20V11.3162C4 8.9692 4.70659 8.21208 6.61974 6.78986C8.1983 5.61637 11.9936 2.8 11.9936 2.8V10.3774C11.9936 10.5949 11.9953 10.8023 11.997 11.001C12.0147 13.0995 12.0241 14.2192 9.87762 15.8425C8.10426 17.1836 4 20 4 20Z\" fill=\"#121315\"/>\\n</svg>\\n',withExternalLayout:true})]}),isDisplayed3()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1mevz4n\",\"data-framer-name\":\"VPN\",layoutDependency:layoutDependency,layoutId:\"f8muYdVfr\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-2okix8\",layoutDependency:layoutDependency,layoutId:\"Eme6OQrZ_\",style:{backgroundColor:\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\",borderBottomLeftRadius:40,borderBottomRightRadius:40,borderTopLeftRadius:40,borderTopRightRadius:40}}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-5hodu\",layoutDependency:layoutDependency,layoutId:\"Qln4HOmSc\",style:{backgroundColor:\"rgb(255, 255, 255)\",borderBottomLeftRadius:40,borderBottomRightRadius:40,borderTopLeftRadius:40,borderTopRightRadius:40,opacity:1},variants:{\"f9wDOdW9u-hover\":{backgroundColor:\"rgb(87, 135, 255)\",opacity:.5}}})]})]}),isDisplayed5()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-198pskh\",\"data-framer-name\":\"Infrastructure\",layoutDependency:layoutDependency,layoutId:\"BY26CSFHx\",children:[isDisplayed5()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-10cvsw7\",layoutDependency:layoutDependency,layoutId:\"reJ6UUiYY\",style:{backgroundColor:\"rgb(255, 255, 255)\",borderBottomLeftRadius:50,borderBottomRightRadius:50,borderTopLeftRadius:50,borderTopRightRadius:50,opacity:1},variants:{\"KdEF6O_gO-hover\":{backgroundColor:\"rgb(247, 163, 0)\",opacity:.5}}}),isDisplayed5()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-13ci1jk\",layoutDependency:layoutDependency,layoutId:\"M466Jm2p5\",style:{backgroundColor:\"rgb(255, 255, 255)\",borderBottomLeftRadius:50,borderBottomRightRadius:50,borderTopLeftRadius:50,borderTopRightRadius:50,opacity:1},variants:{\"KdEF6O_gO-hover\":{backgroundColor:\"rgb(247, 163, 0)\",opacity:.5}}}),isDisplayed5()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-931ctv\",layoutDependency:layoutDependency,layoutId:\"RQB2tz8Af\",style:{backgroundColor:\"rgb(255, 255, 255)\",borderBottomLeftRadius:50,borderBottomRightRadius:50,borderTopLeftRadius:50,borderTopRightRadius:50,opacity:.5},variants:{\"KdEF6O_gO-hover\":{backgroundColor:\"rgb(247, 163, 0)\",opacity:1}}}),isDisplayed5()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-w3rhr\",layoutDependency:layoutDependency,layoutId:\"uwUN1IGFP\",style:{backgroundColor:\"rgb(255, 255, 255)\",borderBottomLeftRadius:50,borderBottomRightRadius:50,borderTopLeftRadius:50,borderTopRightRadius:50,opacity:.5},variants:{\"KdEF6O_gO-hover\":{backgroundColor:\"rgb(247, 163, 0)\",opacity:1}}})]}),isDisplayed6()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1crdlde\",\"data-framer-name\":\"Device\",layoutDependency:layoutDependency,layoutId:\"M6T7ibZ3S\",children:[isDisplayed6()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1ihie8l\",\"data-framer-name\":\"phone\",layoutDependency:layoutDependency,layoutId:\"BjfL_tkXG\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-1d8usjx\",layoutDependency:layoutDependency,layoutId:\"RnGOyIJbI\",style:{backgroundColor:\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\",borderBottomLeftRadius:7,borderBottomRightRadius:7,borderTopLeftRadius:7,borderTopRightRadius:7}}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-qbk7c9\",layoutDependency:layoutDependency,layoutId:\"rWprefUFC\",style:{backgroundColor:\"rgb(255, 255, 255)\",borderBottomLeftRadius:4,borderBottomRightRadius:4,borderTopLeftRadius:4,borderTopRightRadius:4,opacity:.5},variants:{\"huQgWWGNI-hover\":{backgroundColor:\"rgb(0, 183, 144)\",opacity:1}},children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1tolasd\",layoutDependency:layoutDependency,layoutId:\"Urus8ErqG\",style:{backgroundColor:\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\",borderBottomLeftRadius:4,borderBottomRightRadius:4,borderTopLeftRadius:4,borderTopRightRadius:4}})})]}),isDisplayed6()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1gyxrqk\",\"data-framer-name\":\"laptop\",layoutDependency:layoutDependency,layoutId:\"HM5hcYO7B\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-13fwrqu\",layoutDependency:layoutDependency,layoutId:\"RoKwb1WB5\",style:{backgroundColor:\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\",borderTopLeftRadius:7,borderTopRightRadius:7}}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-sbj7to\",layoutDependency:layoutDependency,layoutId:\"RJWvihyAO\",style:{backgroundColor:\"rgb(255, 255, 255)\",borderTopLeftRadius:4,borderTopRightRadius:4,opacity:1},variants:{\"huQgWWGNI-hover\":{backgroundColor:\"rgb(0, 183, 144)\",opacity:.5}}}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1duuz20\",layoutDependency:layoutDependency,layoutId:\"mPDsohNfs\",style:{backgroundColor:\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\",borderBottomLeftRadius:10,borderBottomRightRadius:10,borderTopLeftRadius:10,borderTopRightRadius:10}}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1c02eba\",layoutDependency:layoutDependency,layoutId:\"uHp28GxXl\",style:{backgroundColor:\"rgb(255, 255, 255)\",borderBottomLeftRadius:4,borderBottomRightRadius:4,borderTopLeftRadius:4,borderTopRightRadius:4,opacity:1},variants:{\"huQgWWGNI-hover\":{backgroundColor:\"rgb(0, 183, 144)\",opacity:.5}}})]})]}),isDisplayed7()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1br72mk\",\"data-framer-name\":\"API\",layoutDependency:layoutDependency,layoutId:\"Nzsj7S5Ah\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-1o6qfnk\",\"data-framer-name\":\"Lower\",layoutDependency:layoutDependency,layoutId:\"jX5p1J2rS\",style:{backgroundColor:\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\",borderBottomLeftRadius:4,borderBottomRightRadius:4,borderTopLeftRadius:4,borderTopRightRadius:4,opacity:.5},variants:{EL2ujQB48:{backgroundColor:\"var(--token-2bb3d2e7-6d68-4c74-8042-6cbb6412c976, rgb(0, 203, 170))\"}}}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-h3eva1\",\"data-framer-name\":\"Upper\",layoutDependency:layoutDependency,layoutId:\"au45nRqv8\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-1mfn0l4\",layoutDependency:layoutDependency,layoutId:\"G9tRBCUoS\",style:{backgroundColor:\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\",borderBottomLeftRadius:6,borderBottomRightRadius:6,borderTopLeftRadius:6,borderTopRightRadius:6}}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-rqj0yy\",layoutDependency:layoutDependency,layoutId:\"CdD_9wI4x\",style:{backgroundColor:\"rgb(255, 255, 255)\",borderBottomLeftRadius:4,borderBottomRightRadius:4,borderTopLeftRadius:4,borderTopRightRadius:4},variants:{EL2ujQB48:{backgroundColor:\"var(--token-2bb3d2e7-6d68-4c74-8042-6cbb6412c976, rgb(17, 190, 153))\"}}}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-75r7yg\",\"data-framer-name\":\"Rectangle 576\",layoutDependency:layoutDependency,layoutId:\"vwXXV3ku7\",style:{backgroundColor:\"rgb(18, 19, 21)\"}}),/*#__PURE__*/_jsx(SVG,{className:\"framer-1jlar7a\",\"data-framer-name\":\"Vector\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:18,intrinsicWidth:17,layoutDependency:layoutDependency,layoutId:\"BlqfqqJt5\",svg:'<svg width=\"17\" height=\"18\" viewBox=\"-2 -2 17 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path d=\"M6.33606 13.1639L12.6722 6.82782L6.33606 0.491699\" stroke=\"#121315\" stroke-width=\"3\"/>\\n</svg>\\n',withExternalLayout:true})]})]})]})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-bVQwT.framer-1lvgips, .framer-bVQwT .framer-1lvgips { display: block; }\",\".framer-bVQwT.framer-zu858k { height: 35px; overflow: visible; position: relative; width: 35px; }\",\".framer-bVQwT .framer-lz5qet { aspect-ratio: 1 / 1; flex: none; height: var(--framer-aspect-ratio-supported, 35px); left: 0px; overflow: visible; position: absolute; right: 0px; top: 0px; }\",\".framer-bVQwT .framer-130bf42 { bottom: 0px; flex: none; height: 19px; position: absolute; right: 0px; width: 26px; }\",\".framer-bVQwT .framer-szu7t4 { flex: none; height: 14px; position: absolute; right: 0px; top: 0px; width: 19px; }\",\".framer-bVQwT .framer-h3ps06 { bottom: 0px; flex: none; height: 19px; left: 0px; position: absolute; width: 7px; }\",\".framer-bVQwT .framer-9a8arw { flex: none; height: 14px; left: 0px; position: absolute; top: 0px; width: 14px; }\",\".framer-bVQwT .framer-unpa1o, .framer-bVQwT .framer-198pskh { bottom: 0px; flex: none; left: 0px; overflow: visible; position: absolute; right: 0px; top: 0px; }\",\".framer-bVQwT .framer-1gzl1hx { aspect-ratio: 1 / 1; flex: none; height: var(--framer-aspect-ratio-supported, 20px); left: 0px; overflow: hidden; position: absolute; top: 51%; width: 20px; will-change: var(--framer-will-change-override, transform); }\",\".framer-bVQwT .framer-1omxe4z { flex: none; height: 20px; overflow: hidden; position: absolute; right: -6px; top: calc(51.428571428571445% - 20px / 2); width: 20px; will-change: var(--framer-will-change-override, transform); }\",\".framer-bVQwT .framer-mq6dis { bottom: 0px; flex: none; left: 0px; overflow: visible; position: absolute; right: 0px; top: 0px; z-index: 1; }\",\".framer-bVQwT .framer-16lvgb3 { flex: none; height: 33px; left: calc(48.78048780487807% - 33px / 2); overflow: hidden; position: absolute; top: calc(48.78048780487807% - 33px / 2); width: 33px; will-change: var(--framer-will-change-override, transform); }\",\".framer-bVQwT .framer-1nh3kie { flex: none; height: 29px; left: calc(48.78048780487807% - 29px / 2); overflow: hidden; position: absolute; top: calc(48.78048780487807% - 29px / 2); width: 29px; will-change: var(--framer-will-change-override, transform); }\",\".framer-bVQwT .framer-8ry6ek { flex: none; height: 17px; left: calc(51.21951219512197% - 10px / 2); position: absolute; top: calc(48.78048780487807% - 17px / 2); width: 10px; }\",\".framer-bVQwT .framer-1ynydue { bottom: -8px; flex: none; left: 0px; overflow: visible; position: absolute; right: -7px; top: 0px; }\",\".framer-bVQwT .framer-18j1r { bottom: 0px; flex: none; height: 25px; overflow: visible; position: absolute; right: 0px; width: 26px; }\",\".framer-bVQwT .framer-1yds0jz { flex: none; height: 26px; left: 0px; overflow: visible; position: absolute; top: -1px; width: 26px; }\",\".framer-bVQwT .framer-1nrlgcy { flex: none; height: 20px; left: 3px; overflow: visible; position: absolute; top: 2px; width: 20px; }\",\".framer-bVQwT .framer-1c2xng0 { flex: none; height: 17px; left: calc(48.71794871794874% - 11px / 2); position: absolute; top: calc(48.71794871794874% - 17px / 2); width: 11px; }\",\".framer-bVQwT .framer-1mevz4n { flex: none; height: 38px; left: 0px; overflow: visible; position: absolute; top: 0px; width: 38px; }\",\".framer-bVQwT .framer-2okix8 { bottom: -1px; flex: none; left: 0px; overflow: hidden; position: absolute; right: -1px; top: 0px; will-change: var(--framer-will-change-override, transform); }\",\".framer-bVQwT .framer-5hodu { flex: none; height: 33px; left: calc(50.00000000000002% - 33px / 2); overflow: hidden; position: absolute; top: calc(50.00000000000002% - 33px / 2); width: 33px; will-change: var(--framer-will-change-override, transform); }\",\".framer-bVQwT .framer-10cvsw7 { aspect-ratio: 1 / 1; flex: none; height: var(--framer-aspect-ratio-supported, 25px); left: 0px; overflow: visible; position: absolute; top: 0px; width: 25px; }\",\".framer-bVQwT .framer-13ci1jk { aspect-ratio: 1 / 1; bottom: 0px; flex: none; height: var(--framer-aspect-ratio-supported, 19px); overflow: visible; position: absolute; right: 0px; width: 19px; }\",\".framer-bVQwT .framer-931ctv { aspect-ratio: 1 / 1; flex: none; height: var(--framer-aspect-ratio-supported, 12px); overflow: visible; position: absolute; right: 0px; top: 0px; width: 12px; }\",\".framer-bVQwT .framer-w3rhr { aspect-ratio: 1 / 1; bottom: 0px; flex: none; height: var(--framer-aspect-ratio-supported, 9px); left: 0px; overflow: visible; position: absolute; width: 9px; }\",\".framer-bVQwT .framer-1crdlde { bottom: 0px; flex: none; left: 0px; overflow: visible; position: absolute; right: -11px; top: 0px; }\",\".framer-bVQwT .framer-1ihie8l { bottom: 0px; flex: none; overflow: visible; position: absolute; right: -3px; top: 0px; width: 21px; }\",\".framer-bVQwT .framer-1d8usjx { flex: none; height: 35px; left: -1px; overflow: visible; position: absolute; right: 0px; top: calc(50.00000000000002% - 35px / 2); }\",\".framer-bVQwT .framer-qbk7c9 { flex: none; height: 29px; left: calc(47.61904761904764% - 16px / 2); overflow: visible; position: absolute; top: calc(50.00000000000002% - 29px / 2); width: 16px; }\",\".framer-bVQwT .framer-1tolasd { bottom: 5px; flex: none; height: 3px; left: calc(50.00000000000002% - 10px / 2); overflow: visible; position: absolute; width: 10px; }\",\".framer-bVQwT .framer-1gyxrqk { bottom: 0px; flex: none; left: -1px; overflow: visible; position: absolute; top: 0px; width: 48px; }\",\".framer-bVQwT .framer-13fwrqu { flex: none; height: 26px; left: calc(50.00000000000002% - 36px / 2); overflow: visible; position: absolute; top: 4px; width: 36px; }\",\".framer-bVQwT .framer-sbj7to { flex: none; height: 21px; left: calc(50.00000000000002% - 30px / 2); overflow: visible; position: absolute; top: 7px; width: 30px; }\",\".framer-bVQwT .framer-1duuz20 { bottom: 3px; flex: none; height: 11px; left: 0px; overflow: visible; position: absolute; right: -1px; }\",\".framer-bVQwT .framer-1c02eba { bottom: 6px; flex: none; height: 5px; left: calc(50.00000000000002% - 44px / 2); overflow: visible; position: absolute; width: 44px; }\",\".framer-bVQwT .framer-1br72mk { bottom: -7px; flex: none; left: -3px; overflow: visible; position: absolute; right: 0px; top: 0px; }\",\".framer-bVQwT .framer-1o6qfnk { flex: none; height: 27px; overflow: visible; position: absolute; right: 0px; top: 0px; width: 23px; }\",\".framer-bVQwT .framer-h3eva1 { bottom: 0px; flex: none; height: 34px; left: 1px; overflow: visible; position: absolute; width: 30px; }\",\".framer-bVQwT .framer-1mfn0l4 { bottom: 0px; flex: none; height: 34px; left: 0px; overflow: visible; position: absolute; right: 0px; }\",\".framer-bVQwT .framer-rqj0yy { flex: none; height: 30px; left: calc(50.00000000000002% - 26px / 2); overflow: visible; position: absolute; top: calc(50.00000000000002% - 30px / 2); width: 26px; }\",\".framer-bVQwT .framer-75r7yg { bottom: 8px; flex: none; height: 2px; position: absolute; right: 6px; width: 10px; }\",\".framer-bVQwT .framer-1jlar7a { bottom: 7px; flex: none; height: 12px; left: 2px; position: absolute; width: 11px; }\",\".framer-bVQwT.framer-v-1x8ysym .framer-130bf42 { height: 13px; width: 19px; }\",\".framer-bVQwT.framer-v-1x8ysym .framer-szu7t4 { height: 20px; width: 13px; }\",\".framer-bVQwT.framer-v-1x8ysym .framer-h3ps06 { height: 13px; width: 14px; }\",\".framer-bVQwT.framer-v-1x8ysym .framer-9a8arw { height: 20px; width: 19px; }\",\".framer-bVQwT.framer-v-9l5wo7.framer-zu858k, .framer-bVQwT.framer-v-nj3xud.framer-zu858k, .framer-bVQwT.framer-v-1grt1q.framer-zu858k { cursor: pointer; }\",\".framer-bVQwT.framer-v-iz3vft .framer-8ry6ek, .framer-bVQwT.framer-v-1ikhjce .framer-8ry6ek { height: 16px; left: calc(48.57142857142859% - 9px / 2); top: calc(51.428571428571445% - 16px / 2); width: 9px; }\",\".framer-bVQwT.framer-v-1ikhjce .framer-1omxe4z { right: -12px; }\",\".framer-bVQwT.framer-v-1ikhjce .framer-mq6dis { left: unset; right: -6px; width: 35px; }\",\".framer-bVQwT.framer-v-je2yy8 .framer-h3eva1 { bottom: unset; left: 2px; top: calc(52.38095238095241% - 34px / 2); }\",\".framer-bVQwT.framer-v-1sxv3lq .framer-1o6qfnk { bottom: 4px; left: 3px; right: unset; top: unset; }\",\".framer-bVQwT.framer-v-1sxv3lq .framer-h3eva1 { bottom: unset; left: unset; right: 0px; top: 0px; }\",\".framer-bVQwT.framer-v-2782lj .framer-1gzl1hx { left: -5px; }\",\".framer-bVQwT.framer-v-2782lj .framer-8ry6ek { aspect-ratio: 0.5882352941176471 / 1; height: var(--framer-aspect-ratio-supported, 16px); left: 51%; top: 51%; }\",\".framer-bVQwT.framer-v-9l5wo7.hover .framer-18j1r { bottom: unset; height: 39px; left: 0px; right: unset; top: 0px; width: 39px; z-index: 1; }\",\".framer-bVQwT.framer-v-9l5wo7.hover .framer-1yds0jz { bottom: 0px; height: unset; right: 0px; top: 0px; width: unset; }\",\".framer-bVQwT.framer-v-9l5wo7.hover .framer-1nrlgcy { height: 33px; left: calc(48.71794871794874% - 33px / 2); top: calc(48.71794871794874% - 33px / 2); width: 33px; }\",\".framer-bVQwT.framer-v-9l5wo7.hover .framer-1mevz4n { bottom: -2px; left: unset; right: -2px; top: unset; }\",\".framer-bVQwT.framer-v-9l5wo7.hover .framer-2okix8 { height: 29px; left: unset; top: unset; width: 29px; }\",\".framer-bVQwT.framer-v-9l5wo7.hover .framer-5hodu { bottom: 2px; height: 23px; left: unset; right: 2px; top: unset; width: 23px; }\",\".framer-bVQwT.framer-v-nj3xud.hover .framer-10cvsw7, .framer-bVQwT.framer-v-nj3xud.hover .framer-13ci1jk, .framer-bVQwT.framer-v-nj3xud.hover .framer-931ctv, .framer-bVQwT.framer-v-nj3xud.hover .framer-w3rhr { height: var(--framer-aspect-ratio-supported, 17px); width: 17px; }\",\".framer-bVQwT.framer-v-1grt1q.hover .framer-1ihie8l { right: 6px; width: 22px; z-index: 1; }\",\".framer-bVQwT.framer-v-1grt1q.hover .framer-1d8usjx { bottom: 0px; height: unset; left: 0px; right: -4px; top: 0px; }\",\".framer-bVQwT.framer-v-1grt1q.hover .framer-qbk7c9 { height: 36px; left: unset; right: -1px; top: calc(50.00000000000002% - 36px / 2); width: 20px; }\",\".framer-bVQwT.framer-v-1grt1q.hover .framer-1tolasd { bottom: 4px; left: calc(50.00000000000002% - 14px / 2); width: 14px; }\",\".framer-bVQwT.framer-v-1grt1q.hover .framer-1gyxrqk { left: -10px; }\",\".framer-bVQwT.framer-v-1grt1q.hover .framer-13fwrqu { height: 22px; left: unset; right: 6px; top: calc(45.23809523809526% - 22px / 2); width: 28px; }\",\".framer-bVQwT.framer-v-1grt1q.hover .framer-sbj7to { height: 17px; left: unset; right: 9px; top: calc(45.23809523809526% - 17px / 2); width: 22px; }\",\".framer-bVQwT.framer-v-1grt1q.hover .framer-1duuz20 { bottom: 4px; height: 10px; left: unset; width: 40px; }\",\".framer-bVQwT.framer-v-1grt1q.hover .framer-1c02eba { bottom: 7px; height: 4px; left: unset; right: 4px; width: 32px; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 35\n * @framerIntrinsicWidth 35\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"fkcpDynXP\":{\"layout\":[\"fixed\",\"fixed\"]},\"f9wDOdW9u\":{\"layout\":[\"fixed\",\"fixed\"]},\"KdEF6O_gO\":{\"layout\":[\"fixed\",\"fixed\"]},\"huQgWWGNI\":{\"layout\":[\"fixed\",\"fixed\"]},\"fpic_LgJb\":{\"layout\":[\"fixed\",\"fixed\"]},\"ditA4Waj1\":{\"layout\":[\"fixed\",\"fixed\"]},\"R7zKhMY7Y\":{\"layout\":[\"fixed\",\"fixed\"]},\"EL2ujQB48\":{\"layout\":[\"fixed\",\"fixed\"]},\"ufdhjA39k\":{\"layout\":[\"fixed\",\"fixed\"]},\"NokqRwYrT\":{\"layout\":[\"fixed\",\"fixed\"]},\"DMrzwqY6c\":{\"layout\":[\"fixed\",\"fixed\"]},\"w3jRPPzdk\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerSdbub5yUA=withCSS(Component,css,\"framer-bVQwT\");export default FramerSdbub5yUA;FramerSdbub5yUA.displayName=\"Nav / Tray \u2013 Icon Small\";FramerSdbub5yUA.defaultProps={height:35,width:35};addPropertyControls(FramerSdbub5yUA,{variant:{options:[\"h6gn9ZswK\",\"fkcpDynXP\",\"f9wDOdW9u\",\"KdEF6O_gO\",\"huQgWWGNI\",\"fpic_LgJb\",\"ditA4Waj1\",\"R7zKhMY7Y\",\"EL2ujQB48\",\"ufdhjA39k\"],optionTitles:[\"HIW\",\"HIW \u2013\\xa0Hover\",\"VPN Replacement\",\"Infrastructure\",\"Device controls\",\"Quick Start\",\"Quick start- Hover\",\"API\",\"API - Hover\",\"Quick Start - Mobile\"],title:\"Variant\",type:ControlType.Enum}});addFonts(FramerSdbub5yUA,[{explicitInter:true,fonts:[]}],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerSdbub5yUA\",\"slots\":[],\"annotations\":{\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"fkcpDynXP\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"f9wDOdW9u\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"KdEF6O_gO\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"huQgWWGNI\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"fpic_LgJb\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"ditA4Waj1\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"R7zKhMY7Y\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"EL2ujQB48\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"ufdhjA39k\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"NokqRwYrT\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"DMrzwqY6c\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"w3jRPPzdk\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerIntrinsicHeight\":\"35\",\"framerDisplayContentsDiv\":\"false\",\"framerIntrinsicWidth\":\"35\",\"framerContractVersion\":\"1\",\"framerImmutableVariables\":\"true\",\"framerComponentViewportWidth\":\"true\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Sdbub5yUA.map", "// Generated by Framer (e2fa450)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,getPropertyControls,Link,RichText,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import NavTrayIconSmall from\"https://framerusercontent.com/modules/FDTtENGsRCSeOM7gs3nZ/TDJ4CrYGaE4uKpLu9TaW/Sdbub5yUA.js\";const NavTrayIconSmallFonts=getFonts(NavTrayIconSmall);const NavTrayIconSmallControls=getPropertyControls(NavTrayIconSmall);const enabledGestures={GDmFqieIy:{hover:true}};const cycleOrder=[\"GDmFqieIy\",\"v5tq_8Oy_\"];const serializationHash=\"framer-rscEA\";const variantClassNames={GDmFqieIy:\"framer-v-egdpii\",v5tq_8Oy_:\"framer-v-bblip0\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants===null||variants===void 0?void 0:variants.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value!==null&&value!==void 0?value:config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion(React.Fragment);const humanReadableEnumMap={\"API - Hover\":\"EL2ujQB48\",\"Device controls\":\"huQgWWGNI\",\"HIW \u2013\\xa0Hover\":\"fkcpDynXP\",\"Quick Start - Mobile\":\"ufdhjA39k\",\"Quick start- Hover\":\"ditA4Waj1\",\"Quick Start\":\"fpic_LgJb\",\"VPN Replacement\":\"f9wDOdW9u\",API:\"R7zKhMY7Y\",HIW:\"h6gn9ZswK\",Infrastructure:\"KdEF6O_gO\"};const humanReadableVariantMap={Desktop:\"GDmFqieIy\",Phone:\"v5tq_8Oy_\"};const getProps=({height,icon,iconHover,id,link,title,width,...props})=>{var _humanReadableVariantMap_props_variant,_ref,_ref1,_humanReadableEnumMap_icon,_ref2,_ref3,_humanReadableEnumMap_iconHover,_ref4,_ref5;return{...props,TXl3JifQz:link!==null&&link!==void 0?link:props.TXl3JifQz,variant:(_ref=(_humanReadableVariantMap_props_variant=humanReadableVariantMap[props.variant])!==null&&_humanReadableVariantMap_props_variant!==void 0?_humanReadableVariantMap_props_variant:props.variant)!==null&&_ref!==void 0?_ref:\"GDmFqieIy\",WDE61Js6q:(_ref1=title!==null&&title!==void 0?title:props.WDE61Js6q)!==null&&_ref1!==void 0?_ref1:\"Quick Start\",wVcj6mpv0:(_ref3=(_ref2=(_humanReadableEnumMap_icon=humanReadableEnumMap[icon])!==null&&_humanReadableEnumMap_icon!==void 0?_humanReadableEnumMap_icon:icon)!==null&&_ref2!==void 0?_ref2:props.wVcj6mpv0)!==null&&_ref3!==void 0?_ref3:\"h6gn9ZswK\",ZH_djGBTZ:(_ref5=(_ref4=(_humanReadableEnumMap_iconHover=humanReadableEnumMap[iconHover])!==null&&_humanReadableEnumMap_iconHover!==void 0?_humanReadableEnumMap_iconHover:iconHover)!==null&&_ref4!==void 0?_ref4:props.ZH_djGBTZ)!==null&&_ref5!==void 0?_ref5:\"h6gn9ZswK\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,TXl3JifQz,WDE61Js6q,wVcj6mpv0,ZH_djGBTZ,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"GDmFqieIy\",enabledGestures,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const ref1=React.useRef(null);const defaultLayoutId=React.useId();const sharedStyleClassNames=[];const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId!==null&&layoutId!==void 0?layoutId:defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(Link,{href:TXl3JifQz,openInNewTab:false,smoothScroll:true,children:/*#__PURE__*/_jsx(motion.a,{...restProps,...gestureHandlers,className:`${cx(serializationHash,...sharedStyleClassNames,\"framer-egdpii\",className,classNames)} framer-13oxq3p`,\"data-border\":true,\"data-framer-name\":\"Desktop\",layoutDependency:layoutDependency,layoutId:\"GDmFqieIy\",ref:ref!==null&&ref!==void 0?ref:ref1,style:{\"--border-bottom-width\":\"0.5px\",\"--border-color\":\"var(--token-66d0cf7b-9eb8-4245-b770-5d2d61dad950, rgba(255, 255, 255, 0.1))\",\"--border-left-width\":\"0.5px\",\"--border-right-width\":\"0.5px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0.5px\",backgroundColor:\"rgba(255, 255, 255, 0)\",borderBottomLeftRadius:12,borderBottomRightRadius:12,borderTopLeftRadius:12,borderTopRightRadius:12,...style},variants:{\"GDmFqieIy-hover\":{\"--border-color\":\"rgba(245, 245, 255, 0.2)\",backgroundColor:\"rgba(255, 255, 255, 0.03)\"}},...addPropertyOverrides({\"GDmFqieIy-hover\":{\"data-framer-name\":undefined},v5tq_8Oy_:{\"data-framer-name\":\"Phone\"}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-3a5uun\",layoutDependency:layoutDependency,layoutId:\"yHtKW3KFS\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-u8yec3\",\"data-framer-name\":\"Icons\",layoutDependency:layoutDependency,layoutId:\"YHCsVADch\",children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:35,width:\"35px\",y:((componentViewport===null||componentViewport===void 0?void 0:componentViewport.y)||0)+10+((((componentViewport===null||componentViewport===void 0?void 0:componentViewport.height)||211)-20-(Math.max(0,(((componentViewport===null||componentViewport===void 0?void 0:componentViewport.height)||211)-20-0)/1)*1+0))/2+0+0)+0+(0+0+(Math.max(0,(((componentViewport===null||componentViewport===void 0?void 0:componentViewport.height)||211)-20-0)/1)*1-0-147.5)/1*0)+0,...addPropertyOverrides({v5tq_8Oy_:{y:((componentViewport===null||componentViewport===void 0?void 0:componentViewport.y)||0)+10+((((componentViewport===null||componentViewport===void 0?void 0:componentViewport.height)||55)-20-112.5)/2+0+0)+38.75+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1mwmisy-container\",layoutDependency:layoutDependency,layoutId:\"ThH3UoEiD-container\",children:/*#__PURE__*/_jsx(NavTrayIconSmall,{height:\"100%\",id:\"ThH3UoEiD\",layoutId:\"ThH3UoEiD\",style:{height:\"100%\",width:\"100%\"},variant:wVcj6mpv0,width:\"100%\",...addPropertyOverrides({\"GDmFqieIy-hover\":{variant:ZH_djGBTZ}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-143m7w6\",\"data-framer-name\":\"Text\",layoutDependency:layoutDependency,layoutId:\"Kz4zIISH1\",children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1RUIEhvdmVzIFJlZ3VsYXI=\",\"--framer-font-family\":'\"TT Hoves Regular\", \"TT Hoves Regular Placeholder\", sans-serif',\"--framer-font-size\":\"15px\",\"--framer-letter-spacing\":\"0px\",\"--framer-line-height\":\"1.5em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255)))\"},children:\"Quick Start\"})}),className:\"framer-1u70ldd\",\"data-framer-name\":\"Title\",fonts:[\"CUSTOM;TT Hoves Regular\"],layoutDependency:layoutDependency,layoutId:\"nPrySJNs1\",style:{\"--extracted-r6o4lv\":\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:WDE61Js6q,verticalAlignment:\"top\",withExternalLayout:true})})]})})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-rscEA.framer-13oxq3p, .framer-rscEA .framer-13oxq3p { display: block; }\",\".framer-rscEA.framer-egdpii { align-content: flex-start; align-items: flex-start; cursor: pointer; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 25px; height: 211px; justify-content: center; overflow: visible; padding: 10px; position: relative; text-decoration: none; width: 175px; }\",\".framer-rscEA .framer-3a5uun { align-content: flex-start; align-items: flex-start; display: flex; flex: 1 0 0px; flex-direction: column; flex-wrap: nowrap; height: 1px; justify-content: space-between; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-rscEA .framer-u8yec3 { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: min-content; }\",\".framer-rscEA .framer-1mwmisy-container { flex: none; height: 35px; position: relative; width: 35px; }\",\".framer-rscEA .framer-143m7w6 { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-end; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-rscEA .framer-1u70ldd { flex: none; height: auto; pointer-events: none; position: relative; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-rscEA.framer-egdpii, .framer-rscEA .framer-u8yec3, .framer-rscEA .framer-143m7w6 { gap: 0px; } .framer-rscEA.framer-egdpii > * { margin: 0px; margin-bottom: calc(25px / 2); margin-top: calc(25px / 2); } .framer-rscEA.framer-egdpii > :first-child, .framer-rscEA .framer-143m7w6 > :first-child { margin-top: 0px; } .framer-rscEA.framer-egdpii > :last-child, .framer-rscEA .framer-143m7w6 > :last-child { margin-bottom: 0px; } .framer-rscEA .framer-u8yec3 > * { margin: 0px; margin-left: calc(10px / 2); margin-right: calc(10px / 2); } .framer-rscEA .framer-u8yec3 > :first-child { margin-left: 0px; } .framer-rscEA .framer-u8yec3 > :last-child { margin-right: 0px; } .framer-rscEA .framer-143m7w6 > * { margin: 0px; margin-bottom: calc(0px / 2); margin-top: calc(0px / 2); } }\",\".framer-rscEA.framer-v-bblip0.framer-egdpii { cursor: unset; height: min-content; width: 300px; }\",\".framer-rscEA.framer-v-bblip0 .framer-3a5uun { align-content: center; align-items: center; flex: none; flex-direction: row; gap: 28px; height: min-content; justify-content: center; }\",\".framer-rscEA.framer-v-bblip0 .framer-1mwmisy-container { aspect-ratio: 1 / 1; height: var(--framer-aspect-ratio-supported, 35px); }\",\".framer-rscEA.framer-v-bblip0 .framer-143m7w6 { flex: 1 0 0px; width: 1px; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-rscEA.framer-v-bblip0 .framer-3a5uun { gap: 0px; } .framer-rscEA.framer-v-bblip0 .framer-3a5uun > * { margin: 0px; margin-left: calc(28px / 2); margin-right: calc(28px / 2); } .framer-rscEA.framer-v-bblip0 .framer-3a5uun > :first-child { margin-left: 0px; } .framer-rscEA.framer-v-bblip0 .framer-3a5uun > :last-child { margin-right: 0px; } }\",'.framer-rscEA[data-border=\"true\"]::after, .framer-rscEA [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; pointer-events: none; }'];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 211\n * @framerIntrinsicWidth 175\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"v5tq_8Oy_\":{\"layout\":[\"fixed\",\"auto\"]},\"ir1v2IXHW\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerVariables {\"TXl3JifQz\":\"link\",\"WDE61Js6q\":\"title\",\"wVcj6mpv0\":\"icon\",\"ZH_djGBTZ\":\"iconHover\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerVGKHrA53b=withCSS(Component,css,\"framer-rscEA\");export default FramerVGKHrA53b;FramerVGKHrA53b.displayName=\"Nav / Tray \u2013 Card Small\";FramerVGKHrA53b.defaultProps={height:211,width:175};addPropertyControls(FramerVGKHrA53b,{variant:{options:[\"GDmFqieIy\",\"v5tq_8Oy_\"],optionTitles:[\"Desktop\",\"Phone\"],title:\"Variant\",type:ControlType.Enum},TXl3JifQz:{title:\"Link\",type:ControlType.Link},WDE61Js6q:{defaultValue:\"Quick Start\",displayTextArea:false,title:\"Title\",type:ControlType.String},wVcj6mpv0:(NavTrayIconSmallControls===null||NavTrayIconSmallControls===void 0?void 0:NavTrayIconSmallControls[\"variant\"])&&{...NavTrayIconSmallControls[\"variant\"],defaultValue:\"h6gn9ZswK\",description:undefined,hidden:undefined,title:\"Icon\"},ZH_djGBTZ:(NavTrayIconSmallControls===null||NavTrayIconSmallControls===void 0?void 0:NavTrayIconSmallControls[\"variant\"])&&{...NavTrayIconSmallControls[\"variant\"],defaultValue:\"h6gn9ZswK\",description:undefined,hidden:undefined,title:\"Icon Hover\"}});addFonts(FramerVGKHrA53b,[{explicitInter:true,fonts:[{family:\"TT Hoves Regular\",source:\"custom\",url:\"https://framerusercontent.com/assets/wgABDVIWK1vZ3ZH97n7INv3AEY.woff2\"}]},...NavTrayIconSmallFonts],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerVGKHrA53b\",\"slots\":[],\"annotations\":{\"framerComponentViewportWidth\":\"true\",\"framerVariables\":\"{\\\"TXl3JifQz\\\":\\\"link\\\",\\\"WDE61Js6q\\\":\\\"title\\\",\\\"wVcj6mpv0\\\":\\\"icon\\\",\\\"ZH_djGBTZ\\\":\\\"iconHover\\\"}\",\"framerContractVersion\":\"1\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"v5tq_8Oy_\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"ir1v2IXHW\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerIntrinsicHeight\":\"211\",\"framerIntrinsicWidth\":\"175\",\"framerImmutableVariables\":\"true\",\"framerDisplayContentsDiv\":\"false\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}", "// Generated by Framer (d65f646)\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ChildrenCanSuspend,ComponentViewportProvider,ControlType,cx,getFonts,PathVariablesContext,ResolveLinks,RichText,SmartComponentScopedContainer,useActiveVariantCallback,useComponentViewport,useLocaleCode,useLocaleInfo,useQueryData,useRouter,useVariantState,withCSS,withFX,withOptimizedAppearEffect}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import NavTrayTitle from\"https://framerusercontent.com/modules/2LGk8D7zrJeUEiN2MPbl/DEXU4lmXSZL7354xn2GW/mnItz6A8F.js\";import Changelog from\"https://framerusercontent.com/modules/3FRnaStYzI2abN5UMevD/gkeN9UxhcmrMH1SVgRgO/p_ZRklbwL.js\";import Blog from\"https://framerusercontent.com/modules/TVp5dKgu3wsmk4cPXZHQ/uU3qka9FpDfGiqqzTGjs/wtyR92LHZ.js\";import NavTrayCustomerCardCopy from\"https://framerusercontent.com/modules/fF8qHxPyqD2TJKLmGuDj/p3ClgJwxIeo4mUCfrJ88/BN3HUyYzj.js\";import MenuRow from\"https://framerusercontent.com/modules/A2Rsle7J3GjexdFR6NE3/Nw7bI1MI3E1CvoCYgfEq/GgCR0HjY3.js\";import NavTrayBlogCard from\"https://framerusercontent.com/modules/Fu9S5nORSDNX12skB2jB/Kaz2un5xAK2JYvdRPV1f/U5lud3mMK.js\";import NavTrayCardSmall from\"https://framerusercontent.com/modules/rSx7oZndsMfFJ2V0TlH1/01pWvcZTFwMMRsBJap4Z/VGKHrA53b.js\";const MenuRowFonts=getFonts(MenuRow);const SmartComponentScopedContainerWithFXWithOptimizedAppearEffect=withOptimizedAppearEffect(withFX(SmartComponentScopedContainer));const NavTrayCardSmallFonts=getFonts(NavTrayCardSmall);const NavTrayTitleFonts=getFonts(NavTrayTitle);const NavTrayBlogCardFonts=getFonts(NavTrayBlogCard);const NavTrayCustomerCardCopyFonts=getFonts(NavTrayCustomerCardCopy);const cycleOrder=[\"FxKS9c1QZ\",\"VL591BGli\",\"WAlictYNc\",\"oEcodvQF5\",\"HX6YrZAXA\",\"rJEXYtTln\",\"mZ40WkNI3\",\"tL7RJw2hg\",\"kLY1RZQuF\",\"k97SfXEaS\",\"IhaMrdzYo\",\"QJqGglw8e\",\"BDxO75PJh\",\"v2XfKlbg_\",\"ywtKlFKo7\",\"O5olfCWLm\",\"RpKkYqfkq\"];const serializationHash=\"framer-WzRu9\";const variantClassNames={BDxO75PJh:\"framer-v-uc6eod\",FxKS9c1QZ:\"framer-v-1raxb9\",HX6YrZAXA:\"framer-v-8dhdyi\",IhaMrdzYo:\"framer-v-110xo30\",k97SfXEaS:\"framer-v-zi2qrq\",kLY1RZQuF:\"framer-v-1x4pqe5\",mZ40WkNI3:\"framer-v-17szsvj\",O5olfCWLm:\"framer-v-jbdq0u\",oEcodvQF5:\"framer-v-vedu1d\",QJqGglw8e:\"framer-v-1h1kn1t\",rJEXYtTln:\"framer-v-1f11sgh\",RpKkYqfkq:\"framer-v-1nwae4e\",tL7RJw2hg:\"framer-v-176agql\",v2XfKlbg_:\"framer-v-qu7xcb\",VL591BGli:\"framer-v-1jpl9g\",WAlictYNc:\"framer-v-9figxj\",ywtKlFKo7:\"framer-v-ey1q9a\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={duration:0,type:\"tween\"};const transition2={damping:30,delay:0,mass:1,stiffness:400,type:\"spring\"};const animation={opacity:1,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,transition:transition2,x:0,y:0};const animation1={opacity:.001,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,x:0,y:0};const transition3={delay:0,duration:.3,ease:[.44,0,.56,1],type:\"tween\"};const animation2={opacity:1,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,transition:transition3,x:0,y:0};const toDateString=(value,options={},activeLocale)=>{if(typeof value!==\"string\")return\"\";const date=new Date(value);if(isNaN(date.getTime()))return\"\";const display=options.display?options.display:\"date\";const dateOptions={dateStyle:display!==\"time\"?options.dateStyle:undefined,timeStyle:display===\"date\"?undefined:\"short\",timeZone:\"UTC\"};const fallbackLocale=\"en-US\";const locale=options.locale||activeLocale||fallbackLocale;// We add a try block because an invalid language code results in a crash\ntry{return date.toLocaleString(locale,dateOptions);}catch{return date.toLocaleString(fallbackLocale,dateOptions);}};const toResponsiveImage=value=>{if(typeof value===\"object\"&&value!==null&&typeof value.src===\"string\"){return value;}return typeof value===\"string\"?{src:value}:undefined;};const query=prequery=>prequery({from:{alias:\"v5pE4DR2B\",data:Changelog,type:\"Collection\"},limit:{type:\"LiteralValue\",value:2},select:[{collection:\"v5pE4DR2B\",name:\"royCFnGoE\",type:\"Identifier\"},{collection:\"v5pE4DR2B\",name:\"s78r_5Sfi\",type:\"Identifier\"},{collection:\"v5pE4DR2B\",name:\"drBimO239\",type:\"Identifier\"},{collection:\"v5pE4DR2B\",name:\"tB8hckVXV\",type:\"Identifier\"},{collection:\"v5pE4DR2B\",name:\"id\",type:\"Identifier\"}]});const QueryData=({query,pageSize,children})=>{const data=useQueryData(query);return children(data);};const addImageAlt=(image,alt)=>{if(!image||typeof image!==\"object\"){return;}return{...image,alt};};const query1=prequery=>prequery({from:{alias:\"F72vRNUS2\",data:Blog,type:\"Collection\"},limit:{type:\"LiteralValue\",value:2},select:[{collection:\"F72vRNUS2\",name:\"htIvfYBOu\",type:\"Identifier\"},{collection:\"F72vRNUS2\",name:\"BOY5LSewc\",type:\"Identifier\"},{collection:\"F72vRNUS2\",name:\"YnwyMK7wB\",type:\"Identifier\"},{collection:\"F72vRNUS2\",name:\"KppWsNgH6\",type:\"Identifier\"},{collection:\"F72vRNUS2\",name:\"id\",type:\"Identifier\"}],where:{left:{collection:\"F72vRNUS2\",name:\"WRWHbDdVF\",type:\"Identifier\"},operator:\"and\",right:{collection:\"F72vRNUS2\",name:\"xT_4SVBSB\",type:\"Identifier\"},type:\"BinaryOperation\"}});const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const humanReadableVariantMap={\"Customers - Mobile\":\"ywtKlFKo7\",\"Docs - Mobile\":\"v2XfKlbg_\",\"Internet Security\":\"oEcodvQF5\",\"Kubernetes Access\":\"rJEXYtTln\",\"Least Privilege\":\"WAlictYNc\",\"Partners - Mobile\":\"RpKkYqfkq\",\"Product - Mobile\":\"BDxO75PJh\",\"Resources - Mobile\":\"O5olfCWLm\",Changelog:\"HX6YrZAXA\",Customers:\"k97SfXEaS\",Docs:\"kLY1RZQuF\",Integrations:\"mZ40WkNI3\",Partners:\"QJqGglw8e\",Primary:\"FxKS9c1QZ\",Product:\"tL7RJw2hg\",Resources:\"IhaMrdzYo\",ZTNA:\"VL591BGli\"};const getProps=({height,id,width,...props})=>{return{...props,variant:humanReadableVariantMap[props.variant]??props.variant??\"FxKS9c1QZ\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,royCFnGoEv5pE4DR2B,s78r_5Sfiv5pE4DR2B,drBimO239v5pE4DR2B,tB8hckVXVv5pE4DR2B,idv5pE4DR2B,htIvfYBOuF72vRNUS2,BOY5LSewcF72vRNUS2,YnwyMK7wBF72vRNUS2,KppWsNgH6F72vRNUS2,idF72vRNUS2,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"FxKS9c1QZ\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const y3z9Kx4Wv1y741hu=activeVariantCallback(async(...args)=>{setVariant(\"VL591BGli\");});const y3z9Kx4Wv1cidhwv=activeVariantCallback(async(...args)=>{setVariant(\"WAlictYNc\");});const y3z9Kx4Wvhko4ym=activeVariantCallback(async(...args)=>{setVariant(\"oEcodvQF5\");});const y3z9Kx4Wv1xsndgp=activeVariantCallback(async(...args)=>{setVariant(\"rJEXYtTln\");});const y3z9Kx4Wvtraryq=activeVariantCallback(async(...args)=>{setVariant(\"mZ40WkNI3\");});const y3z9Kx4Wv19lkadz=activeVariantCallback(async(...args)=>{setVariant(\"HX6YrZAXA\");});const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);const isDisplayed=()=>{if([\"kLY1RZQuF\",\"k97SfXEaS\",\"IhaMrdzYo\",\"QJqGglw8e\",\"v2XfKlbg_\",\"ywtKlFKo7\",\"O5olfCWLm\",\"RpKkYqfkq\"].includes(baseVariant))return false;return true;};const router=useRouter();const isDisplayed1=()=>{if(baseVariant===\"BDxO75PJh\")return false;return true;};const isDisplayed2=()=>{if([\"HX6YrZAXA\",\"rJEXYtTln\",\"kLY1RZQuF\",\"k97SfXEaS\",\"IhaMrdzYo\",\"QJqGglw8e\",\"BDxO75PJh\",\"v2XfKlbg_\",\"ywtKlFKo7\",\"O5olfCWLm\",\"RpKkYqfkq\"].includes(baseVariant))return false;return true;};const isDisplayed3=()=>{if([\"WAlictYNc\",\"oEcodvQF5\",\"mZ40WkNI3\"].includes(baseVariant))return false;return true;};const isDisplayed4=()=>{if([\"VL591BGli\",\"oEcodvQF5\",\"mZ40WkNI3\",\"tL7RJw2hg\"].includes(baseVariant))return false;return true;};const isDisplayed5=()=>{if([\"VL591BGli\",\"WAlictYNc\",\"mZ40WkNI3\",\"tL7RJw2hg\"].includes(baseVariant))return false;return true;};const isDisplayed6=()=>{if([\"VL591BGli\",\"WAlictYNc\",\"oEcodvQF5\",\"tL7RJw2hg\"].includes(baseVariant))return false;return true;};const isDisplayed7=()=>{if([\"VL591BGli\",\"WAlictYNc\",\"oEcodvQF5\",\"HX6YrZAXA\",\"rJEXYtTln\",\"mZ40WkNI3\",\"tL7RJw2hg\",\"k97SfXEaS\",\"IhaMrdzYo\",\"QJqGglw8e\",\"BDxO75PJh\",\"ywtKlFKo7\",\"O5olfCWLm\",\"RpKkYqfkq\"].includes(baseVariant))return false;return true;};const isDisplayed8=()=>{if([\"VL591BGli\",\"WAlictYNc\",\"oEcodvQF5\",\"rJEXYtTln\",\"mZ40WkNI3\",\"tL7RJw2hg\",\"kLY1RZQuF\",\"k97SfXEaS\",\"IhaMrdzYo\",\"QJqGglw8e\",\"BDxO75PJh\",\"v2XfKlbg_\",\"ywtKlFKo7\",\"O5olfCWLm\",\"RpKkYqfkq\"].includes(baseVariant))return false;return true;};const activeLocaleCode=useLocaleCode();const isDisplayed9=()=>{if([\"VL591BGli\",\"WAlictYNc\",\"oEcodvQF5\",\"HX6YrZAXA\",\"rJEXYtTln\",\"mZ40WkNI3\",\"tL7RJw2hg\",\"kLY1RZQuF\",\"IhaMrdzYo\",\"QJqGglw8e\",\"BDxO75PJh\",\"v2XfKlbg_\",\"O5olfCWLm\",\"RpKkYqfkq\"].includes(baseVariant))return false;return true;};const isDisplayed10=()=>{if([\"VL591BGli\",\"WAlictYNc\",\"oEcodvQF5\",\"HX6YrZAXA\",\"rJEXYtTln\",\"mZ40WkNI3\",\"tL7RJw2hg\",\"kLY1RZQuF\",\"k97SfXEaS\",\"QJqGglw8e\",\"BDxO75PJh\",\"v2XfKlbg_\",\"ywtKlFKo7\",\"RpKkYqfkq\"].includes(baseVariant))return false;return true;};const isDisplayed11=()=>{if([\"VL591BGli\",\"WAlictYNc\",\"oEcodvQF5\",\"HX6YrZAXA\",\"rJEXYtTln\",\"mZ40WkNI3\",\"tL7RJw2hg\",\"kLY1RZQuF\",\"k97SfXEaS\",\"QJqGglw8e\",\"BDxO75PJh\",\"v2XfKlbg_\",\"ywtKlFKo7\",\"O5olfCWLm\",\"RpKkYqfkq\"].includes(baseVariant))return false;return true;};const isDisplayed12=()=>{if([\"VL591BGli\",\"WAlictYNc\",\"oEcodvQF5\",\"HX6YrZAXA\",\"rJEXYtTln\",\"mZ40WkNI3\",\"tL7RJw2hg\",\"kLY1RZQuF\",\"k97SfXEaS\",\"IhaMrdzYo\",\"BDxO75PJh\",\"v2XfKlbg_\",\"ywtKlFKo7\",\"O5olfCWLm\"].includes(baseVariant))return false;return true;};return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-1raxb9\",className,classNames),\"data-border\":true,\"data-framer-name\":\"Primary\",layoutDependency:layoutDependency,layoutId:\"FxKS9c1QZ\",ref:refBinding,style:{\"--border-bottom-width\":\"1px\",\"--border-color\":\"var(--token-66d0cf7b-9eb8-4245-b770-5d2d61dad950, rgba(245, 245, 255, 0.1))\",\"--border-left-width\":\"1px\",\"--border-right-width\":\"1px\",\"--border-style\":\"solid\",\"--border-top-width\":\"1px\",backgroundColor:\"var(--token-ecf0b5d8-e26c-4c77-8e04-1c3f071d6f24, rgb(20, 22, 23))\",borderBottomLeftRadius:18,borderBottomRightRadius:18,borderTopLeftRadius:18,borderTopRightRadius:18,boxShadow:\"0.18065619053231785px 0.3613123810646357px 2.0197976129320834px -0.25px rgba(0, 0, 0, 0.1), 0.6865599909730371px 1.3731199819460742px 7.675974052236766px -0.5px rgba(0, 0, 0, 0.16), 3px 6px 33.54101966249685px -0.75px rgba(0, 0, 0, 0.43)\",...style},variants:{BDxO75PJh:{borderBottomLeftRadius:0,borderBottomRightRadius:0,borderTopLeftRadius:0,borderTopRightRadius:0,boxShadow:\"none\"},O5olfCWLm:{borderBottomLeftRadius:0,borderBottomRightRadius:0,borderTopLeftRadius:0,borderTopRightRadius:0,boxShadow:\"none\"},RpKkYqfkq:{borderBottomLeftRadius:0,borderBottomRightRadius:0,borderTopLeftRadius:0,borderTopRightRadius:0,boxShadow:\"none\"},v2XfKlbg_:{borderBottomLeftRadius:0,borderBottomRightRadius:0,borderTopLeftRadius:0,borderTopRightRadius:0,boxShadow:\"none\"},ywtKlFKo7:{borderBottomLeftRadius:0,borderBottomRightRadius:0,borderTopLeftRadius:0,borderTopRightRadius:0,boxShadow:\"none\"}},...addPropertyOverrides({BDxO75PJh:{\"data-framer-name\":\"Product - Mobile\"},HX6YrZAXA:{\"data-framer-name\":\"Changelog\"},IhaMrdzYo:{\"data-framer-name\":\"Resources\"},k97SfXEaS:{\"data-framer-name\":\"Customers\"},kLY1RZQuF:{\"data-framer-name\":\"Docs\"},mZ40WkNI3:{\"data-framer-name\":\"Integrations\"},O5olfCWLm:{\"data-framer-name\":\"Resources - Mobile\"},oEcodvQF5:{\"data-framer-name\":\"Internet Security\"},QJqGglw8e:{\"data-framer-name\":\"Partners\"},rJEXYtTln:{\"data-framer-name\":\"Kubernetes Access\"},RpKkYqfkq:{\"data-framer-name\":\"Partners - Mobile\"},tL7RJw2hg:{\"data-framer-name\":\"Product\"},v2XfKlbg_:{\"data-framer-name\":\"Docs - Mobile\"},VL591BGli:{\"data-framer-name\":\"ZTNA\"},WAlictYNc:{\"data-framer-name\":\"Least Privilege\"},ywtKlFKo7:{\"data-framer-name\":\"Customers - Mobile\"}},baseVariant,gestureVariant),children:[isDisplayed()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-19vp2ch\",\"data-framer-name\":\"Product \",layoutDependency:layoutDependency,layoutId:\"eyCrJ8QBy\",children:[/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"bBhvgz0tk\"},implicitPathVariables:undefined},{href:{webPageId:\"bBhvgz0tk\"},implicitPathVariables:undefined},{href:{webPageId:\"bBhvgz0tk\"},implicitPathVariables:undefined},{href:{webPageId:\"bBhvgz0tk\"},implicitPathVariables:undefined},{href:{webPageId:\"bBhvgz0tk\"},implicitPathVariables:undefined},{href:{webPageId:\"bBhvgz0tk\"},implicitPathVariables:undefined},{href:{webPageId:\"bBhvgz0tk\"},implicitPathVariables:undefined},{href:{webPageId:\"bBhvgz0tk\"},implicitPathVariables:undefined},{href:{webPageId:\"bBhvgz0tk\"},implicitPathVariables:undefined}],children:resolvedLinks=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:58,y:(componentViewport?.y||0)+0+7+0,...addPropertyOverrides({BDxO75PJh:{width:`calc(${componentViewport?.width||\"100vw\"} - 14px)`,y:(componentViewport?.y||0)+0+0+7+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFXWithOptimizedAppearEffect,{__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,animate:animation,className:\"framer-s82iay-container\",\"data-framer-appear-id\":\"s82iay\",initial:animation1,layoutDependency:layoutDependency,layoutId:\"LzxRrZyFW-container\",nodeId:\"LzxRrZyFW\",optimized:true,rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:true,height:\"100%\",hYnSN8Rbu:\"nwnCqM2RJ\",id:\"LzxRrZyFW\",layoutId:\"LzxRrZyFW\",mhS_it8bS:\"Twingate\",pf_L3YvVa:true,Rv7rN9T36:\"Remote access for Zero Trust Network\",SF4WeeABZ:false,taEtOIjYB:resolvedLinks[0],variant:\"qyFX7T2dF\",vwOUPOH8n:true,width:\"100%\",XNt_0jHi5:\"ZTNA\",y3z9Kx4Wv:y3z9Kx4Wv1y741hu,...addPropertyOverrides({BDxO75PJh:{style:{width:\"100%\"},taEtOIjYB:resolvedLinks[8],variant:\"LX7bcs5Lw\",y3z9Kx4Wv:undefined},HX6YrZAXA:{taEtOIjYB:resolvedLinks[4]},mZ40WkNI3:{taEtOIjYB:resolvedLinks[6]},oEcodvQF5:{taEtOIjYB:resolvedLinks[3]},rJEXYtTln:{taEtOIjYB:resolvedLinks[5]},tL7RJw2hg:{taEtOIjYB:resolvedLinks[7]},VL591BGli:{taEtOIjYB:resolvedLinks[1]},WAlictYNc:{taEtOIjYB:resolvedLinks[2]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"rWzqN0quv\"},implicitPathVariables:undefined},{href:{webPageId:\"rWzqN0quv\"},implicitPathVariables:undefined},{href:{webPageId:\"rWzqN0quv\"},implicitPathVariables:undefined},{href:{webPageId:\"rWzqN0quv\"},implicitPathVariables:undefined},{href:{webPageId:\"rWzqN0quv\"},implicitPathVariables:undefined},{href:{webPageId:\"rWzqN0quv\"},implicitPathVariables:undefined},{href:{webPageId:\"rWzqN0quv\"},implicitPathVariables:undefined},{href:{webPageId:\"rWzqN0quv\"},implicitPathVariables:undefined},{href:{webPageId:\"rWzqN0quv\"},implicitPathVariables:undefined}],children:resolvedLinks1=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:58,y:(componentViewport?.y||0)+0+7+58,...addPropertyOverrides({BDxO75PJh:{width:`calc(${componentViewport?.width||\"100vw\"} - 14px)`,y:(componentViewport?.y||0)+0+0+7+58}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFXWithOptimizedAppearEffect,{__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,animate:animation,className:\"framer-kpsmlv-container\",\"data-framer-appear-id\":\"kpsmlv\",initial:animation1,layoutDependency:layoutDependency,layoutId:\"foA8eAnqu-container\",nodeId:\"foA8eAnqu\",optimized:true,rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:true,height:\"100%\",hYnSN8Rbu:\"GcSNeETD5\",id:\"foA8eAnqu\",layoutId:\"foA8eAnqu\",mhS_it8bS:\"Twingate\",pf_L3YvVa:true,Rv7rN9T36:\"Automated access controls on the network layer\",SF4WeeABZ:false,taEtOIjYB:resolvedLinks1[0],variant:\"qyFX7T2dF\",vwOUPOH8n:true,width:\"100%\",XNt_0jHi5:\"Least Privilege Access\",y3z9Kx4Wv:y3z9Kx4Wv1cidhwv,...addPropertyOverrides({BDxO75PJh:{style:{width:\"100%\"},taEtOIjYB:resolvedLinks1[8],variant:\"LX7bcs5Lw\",y3z9Kx4Wv:undefined},HX6YrZAXA:{taEtOIjYB:resolvedLinks1[4]},mZ40WkNI3:{taEtOIjYB:resolvedLinks1[6]},oEcodvQF5:{taEtOIjYB:resolvedLinks1[3]},rJEXYtTln:{taEtOIjYB:resolvedLinks1[5]},tL7RJw2hg:{taEtOIjYB:resolvedLinks1[7]},VL591BGli:{taEtOIjYB:resolvedLinks1[1]},WAlictYNc:{taEtOIjYB:resolvedLinks1[2]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"DT2IR2FQ8\"},implicitPathVariables:undefined},{href:{webPageId:\"DT2IR2FQ8\"},implicitPathVariables:undefined},{href:{webPageId:\"DT2IR2FQ8\"},implicitPathVariables:undefined},{href:{webPageId:\"DT2IR2FQ8\"},implicitPathVariables:undefined},{href:{webPageId:\"DT2IR2FQ8\"},implicitPathVariables:undefined},{href:{webPageId:\"DT2IR2FQ8\"},implicitPathVariables:undefined},{href:{webPageId:\"DT2IR2FQ8\"},implicitPathVariables:undefined},{href:{webPageId:\"DT2IR2FQ8\"},implicitPathVariables:undefined},{href:{webPageId:\"DT2IR2FQ8\"},implicitPathVariables:undefined}],children:resolvedLinks2=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:58,y:(componentViewport?.y||0)+0+7+116,...addPropertyOverrides({BDxO75PJh:{width:`calc(${componentViewport?.width||\"100vw\"} - 14px)`,y:(componentViewport?.y||0)+0+0+7+116}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFXWithOptimizedAppearEffect,{__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,animate:animation,className:\"framer-1e9dw5x-container\",\"data-framer-appear-id\":\"1e9dw5x\",initial:animation1,layoutDependency:layoutDependency,layoutId:\"ccnHosq8i-container\",nodeId:\"ccnHosq8i\",optimized:true,rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:true,height:\"100%\",hYnSN8Rbu:\"vlLg6xeHq\",id:\"ccnHosq8i\",layoutId:\"ccnHosq8i\",mhS_it8bS:\"Twingate\",pf_L3YvVa:true,Rv7rN9T36:\"Protect all of your internet traffic\",SF4WeeABZ:false,taEtOIjYB:resolvedLinks2[0],variant:\"qyFX7T2dF\",vwOUPOH8n:true,width:\"100%\",XNt_0jHi5:\"Internet Security\",y3z9Kx4Wv:y3z9Kx4Wvhko4ym,...addPropertyOverrides({BDxO75PJh:{style:{width:\"100%\"},taEtOIjYB:resolvedLinks2[8],variant:\"LX7bcs5Lw\",y3z9Kx4Wv:undefined},HX6YrZAXA:{taEtOIjYB:resolvedLinks2[4]},mZ40WkNI3:{taEtOIjYB:resolvedLinks2[6]},oEcodvQF5:{taEtOIjYB:resolvedLinks2[3]},rJEXYtTln:{taEtOIjYB:resolvedLinks2[5]},tL7RJw2hg:{taEtOIjYB:resolvedLinks2[7]},VL591BGli:{taEtOIjYB:resolvedLinks2[1]},WAlictYNc:{taEtOIjYB:resolvedLinks2[2]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"Ko9RxzhrZ\"},implicitPathVariables:undefined},{href:{webPageId:\"Ko9RxzhrZ\"},implicitPathVariables:undefined},{href:{webPageId:\"Ko9RxzhrZ\"},implicitPathVariables:undefined},{href:{webPageId:\"Ko9RxzhrZ\"},implicitPathVariables:undefined},{href:{webPageId:\"Ko9RxzhrZ\"},implicitPathVariables:undefined},{href:{webPageId:\"Ko9RxzhrZ\"},implicitPathVariables:undefined},{href:{webPageId:\"Ko9RxzhrZ\"},implicitPathVariables:undefined},{href:{webPageId:\"Ko9RxzhrZ\"},implicitPathVariables:undefined},{href:{webPageId:\"Ko9RxzhrZ\"},implicitPathVariables:undefined}],children:resolvedLinks3=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:58,y:(componentViewport?.y||0)+0+7+174,...addPropertyOverrides({BDxO75PJh:{width:`calc(${componentViewport?.width||\"100vw\"} - 14px)`,y:(componentViewport?.y||0)+0+0+7+174}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFXWithOptimizedAppearEffect,{__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,animate:animation2,className:\"framer-7klj5t-container\",\"data-framer-appear-id\":\"7klj5t\",initial:animation1,layoutDependency:layoutDependency,layoutId:\"eBiF4MD4s-container\",nodeId:\"eBiF4MD4s\",optimized:true,rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:true,height:\"100%\",hYnSN8Rbu:\"ZCxx99ZW_\",id:\"eBiF4MD4s\",layoutId:\"eBiF4MD4s\",mhS_it8bS:\"Twingate\",pf_L3YvVa:true,Rv7rN9T36:\"Identity-first access to Kubernetes\",SF4WeeABZ:false,taEtOIjYB:resolvedLinks3[0],variant:\"qyFX7T2dF\",vwOUPOH8n:true,width:\"100%\",XNt_0jHi5:\"Kubernetes Access\",y3z9Kx4Wv:y3z9Kx4Wv1xsndgp,...addPropertyOverrides({BDxO75PJh:{style:{width:\"100%\"},taEtOIjYB:resolvedLinks3[8],variant:\"LX7bcs5Lw\",y3z9Kx4Wv:undefined},HX6YrZAXA:{taEtOIjYB:resolvedLinks3[4]},mZ40WkNI3:{taEtOIjYB:resolvedLinks3[6]},oEcodvQF5:{taEtOIjYB:resolvedLinks3[3]},rJEXYtTln:{taEtOIjYB:resolvedLinks3[5]},tL7RJw2hg:{taEtOIjYB:resolvedLinks3[7]},VL591BGli:{taEtOIjYB:resolvedLinks3[1]},WAlictYNc:{taEtOIjYB:resolvedLinks3[2]}},baseVariant,gestureVariant)})})})}),isDisplayed1()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1jxurdo\",\"data-framer-name\":\"Border\",layoutDependency:layoutDependency,layoutId:\"itZnVdUGt\",children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1ywehu1\",\"data-framer-name\":\"Border\",layoutDependency:layoutDependency,layoutId:\"IfaNFwjqc\",style:{backgroundColor:\"var(--token-b2f2019d-7e74-40d7-9f5b-7b1e52a4bae4, rgb(29, 32, 35))\"}})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"oihjvnHXi\"},implicitPathVariables:undefined},{href:{webPageId:\"oihjvnHXi\"},implicitPathVariables:undefined},{href:{webPageId:\"oihjvnHXi\"},implicitPathVariables:undefined},{href:{webPageId:\"oihjvnHXi\"},implicitPathVariables:undefined},{href:{webPageId:\"oihjvnHXi\"},implicitPathVariables:undefined},{href:{webPageId:\"oihjvnHXi\"},implicitPathVariables:undefined},{href:{webPageId:\"oihjvnHXi\"},implicitPathVariables:undefined},{href:{webPageId:\"oihjvnHXi\"},implicitPathVariables:undefined},{href:{webPageId:\"oihjvnHXi\"},implicitPathVariables:undefined}],children:resolvedLinks4=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:58,y:(componentViewport?.y||0)+0+7+247,...addPropertyOverrides({BDxO75PJh:{width:`calc(${componentViewport?.width||\"100vw\"} - 14px)`,y:(componentViewport?.y||0)+0+0+7+232}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFXWithOptimizedAppearEffect,{__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,animate:animation,className:\"framer-xe185l-container\",\"data-framer-appear-id\":\"xe185l\",initial:animation1,layoutDependency:layoutDependency,layoutId:\"wx5B30yNR-container\",nodeId:\"wx5B30yNR\",optimized:true,rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:true,height:\"100%\",hYnSN8Rbu:\"NrDjexu5A\",id:\"wx5B30yNR\",layoutId:\"wx5B30yNR\",mhS_it8bS:\"Twingate\",pf_L3YvVa:true,Rv7rN9T36:\"Best-in-class security ecosystem\",SF4WeeABZ:false,taEtOIjYB:resolvedLinks4[0],variant:\"qyFX7T2dF\",vwOUPOH8n:true,width:\"100%\",XNt_0jHi5:\"Integrations\",y3z9Kx4Wv:y3z9Kx4Wvtraryq,...addPropertyOverrides({BDxO75PJh:{style:{width:\"100%\"},taEtOIjYB:resolvedLinks4[8],variant:\"LX7bcs5Lw\",y3z9Kx4Wv:undefined},HX6YrZAXA:{taEtOIjYB:resolvedLinks4[4]},mZ40WkNI3:{taEtOIjYB:resolvedLinks4[6]},oEcodvQF5:{taEtOIjYB:resolvedLinks4[3]},rJEXYtTln:{taEtOIjYB:resolvedLinks4[5]},tL7RJw2hg:{taEtOIjYB:resolvedLinks4[7]},VL591BGli:{taEtOIjYB:resolvedLinks4[1]},WAlictYNc:{taEtOIjYB:resolvedLinks4[2]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"P__7M8cd0\"},implicitPathVariables:undefined},{href:{webPageId:\"P__7M8cd0\"},implicitPathVariables:undefined},{href:{webPageId:\"P__7M8cd0\"},implicitPathVariables:undefined},{href:{webPageId:\"P__7M8cd0\"},implicitPathVariables:undefined},{href:{webPageId:\"P__7M8cd0\"},implicitPathVariables:undefined},{href:{webPageId:\"P__7M8cd0\"},implicitPathVariables:undefined},{href:{webPageId:\"P__7M8cd0\"},implicitPathVariables:undefined},{href:{webPageId:\"P__7M8cd0\"},implicitPathVariables:undefined},{href:{webPageId:\"P__7M8cd0\"},implicitPathVariables:undefined}],children:resolvedLinks5=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:58,y:(componentViewport?.y||0)+0+7+305,...addPropertyOverrides({BDxO75PJh:{width:`calc(${componentViewport?.width||\"100vw\"} - 14px)`,y:(componentViewport?.y||0)+0+0+7+290}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFXWithOptimizedAppearEffect,{__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,animate:animation,className:\"framer-lzengj-container\",\"data-framer-appear-id\":\"lzengj\",initial:animation1,layoutDependency:layoutDependency,layoutId:\"BajgfIjbC-container\",nodeId:\"BajgfIjbC\",optimized:true,rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:true,height:\"100%\",hYnSN8Rbu:\"tQp0ZQcow\",id:\"BajgfIjbC\",layoutId:\"BajgfIjbC\",mhS_it8bS:\"Twingate\",pf_L3YvVa:true,Rv7rN9T36:\"Track changes in our product\",SF4WeeABZ:false,taEtOIjYB:resolvedLinks5[0],variant:\"qyFX7T2dF\",vwOUPOH8n:true,width:\"100%\",XNt_0jHi5:\"Changelog\",y3z9Kx4Wv:y3z9Kx4Wv19lkadz,...addPropertyOverrides({BDxO75PJh:{style:{width:\"100%\"},taEtOIjYB:resolvedLinks5[8],variant:\"LX7bcs5Lw\",y3z9Kx4Wv:undefined},HX6YrZAXA:{taEtOIjYB:resolvedLinks5[4]},mZ40WkNI3:{taEtOIjYB:resolvedLinks5[6]},oEcodvQF5:{taEtOIjYB:resolvedLinks5[3]},rJEXYtTln:{taEtOIjYB:resolvedLinks5[5]},tL7RJw2hg:{taEtOIjYB:resolvedLinks5[7]},VL591BGli:{taEtOIjYB:resolvedLinks5[1]},WAlictYNc:{taEtOIjYB:resolvedLinks5[2]}},baseVariant,gestureVariant)})})})})]}),isDisplayed2()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1leh8xx\",\"data-border\":true,\"data-framer-name\":\"Product 2nd\",layoutDependency:layoutDependency,layoutId:\"OEBJbOkMR\",style:{\"--border-bottom-width\":\"0px\",\"--border-color\":\"var(--token-b2f2019d-7e74-40d7-9f5b-7b1e52a4bae4, rgb(29, 32, 35))\",\"--border-left-width\":\"1px\",\"--border-right-width\":\"0px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0px\"},children:[isDisplayed3()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-2wkcnx\",\"data-framer-name\":\"ZTNA\",layoutDependency:layoutDependency,layoutId:\"BbAuja8iy\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-zkmvku\",\"data-framer-name\":\"Section\",layoutDependency:layoutDependency,layoutId:\"VIfx59SKg\",style:{borderBottomLeftRadius:8,borderBottomRightRadius:8,borderTopLeftRadius:8,borderTopRightRadius:8},children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1RUIEhvdmVzIE1lZGl1bQ==\",\"--framer-font-family\":'\"TT Hoves Medium\", \"TT Hoves Medium Placeholder\", sans-serif',\"--framer-font-size\":\"13px\",\"--framer-letter-spacing\":\"0.15px\",\"--framer-line-height\":\"1.5em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-1891448d-bc9d-449f-8f82-d845951444bc, rgba(240, 240, 255, 0.6)))\"},children:\"Use Cases\"})}),className:\"framer-katiz1\",\"data-framer-name\":\"Title\",fonts:[\"CUSTOM;TT Hoves Medium\"],layoutDependency:layoutDependency,layoutId:\"k93lT4ZMN\",style:{\"--extracted-r6o4lv\":\"var(--token-1891448d-bc9d-449f-8f82-d845951444bc, rgba(240, 240, 255, 0.6))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"J3NULgg5z\"},implicitPathVariables:undefined},{href:{webPageId:\"J3NULgg5z\"},implicitPathVariables:undefined},{href:{webPageId:\"J3NULgg5z\"},implicitPathVariables:undefined}],children:resolvedLinks6=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:58,width:\"246px\",y:(componentViewport?.y||0)+0+7+0+0+44,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-kvubwi-container\",layoutDependency:layoutDependency,layoutId:\"nzrb0C7p3-container\",nodeId:\"nzrb0C7p3\",rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:false,height:\"100%\",hYnSN8Rbu:\"mRpTeKf3V\",id:\"nzrb0C7p3\",layoutId:\"nzrb0C7p3\",mhS_it8bS:\"Twingate\",pf_L3YvVa:false,Rv7rN9T36:\"Keep track of changes to our product\",SF4WeeABZ:false,style:{width:\"100%\"},taEtOIjYB:resolvedLinks6[0],variant:\"JBMHbmdlf\",vwOUPOH8n:false,width:\"100%\",XNt_0jHi5:\"VPN Replacement\",...addPropertyOverrides({tL7RJw2hg:{taEtOIjYB:resolvedLinks6[2]},VL591BGli:{taEtOIjYB:resolvedLinks6[1]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"C6tBVD2Bg\"},implicitPathVariables:undefined},{href:{webPageId:\"C6tBVD2Bg\"},implicitPathVariables:undefined},{href:{webPageId:\"C6tBVD2Bg\"},implicitPathVariables:undefined}],children:resolvedLinks7=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:58,width:\"246px\",y:(componentViewport?.y||0)+0+7+0+0+102,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1qb78d7-container\",layoutDependency:layoutDependency,layoutId:\"FKO3NxYwA-container\",nodeId:\"FKO3NxYwA\",rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:false,height:\"100%\",hYnSN8Rbu:\"mRpTeKf3V\",id:\"FKO3NxYwA\",layoutId:\"FKO3NxYwA\",mhS_it8bS:\"Twingate\",pf_L3YvVa:false,Rv7rN9T36:\"Keep track of changes to our product\",SF4WeeABZ:false,style:{width:\"100%\"},taEtOIjYB:resolvedLinks7[0],variant:\"JBMHbmdlf\",vwOUPOH8n:false,width:\"100%\",XNt_0jHi5:\"Intelligent Device Controls\",...addPropertyOverrides({tL7RJw2hg:{taEtOIjYB:resolvedLinks7[2]},VL591BGli:{taEtOIjYB:resolvedLinks7[1]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:58,width:\"246px\",y:(componentViewport?.y||0)+0+7+0+0+160,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-8r2tt3-container\",layoutDependency:layoutDependency,layoutId:\"kYH5q5JSw-container\",nodeId:\"kYH5q5JSw\",rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:false,height:\"100%\",hYnSN8Rbu:\"mRpTeKf3V\",id:\"kYH5q5JSw\",layoutId:\"kYH5q5JSw\",mhS_it8bS:\"Twingate\",pf_L3YvVa:false,Rv7rN9T36:\"Keep track of changes to our product\",SF4WeeABZ:false,style:{width:\"100%\"},taEtOIjYB:\"https://www.twingate.com/docs/connector-deployment#infrastructure-as-code-iac\",variant:\"JBMHbmdlf\",vwOUPOH8n:false,width:\"100%\",XNt_0jHi5:\"Zero Trust as Code\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:58,width:\"246px\",y:(componentViewport?.y||0)+0+7+0+0+218,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1amz1jv-container\",layoutDependency:layoutDependency,layoutId:\"y9gn9V35V-container\",nodeId:\"y9gn9V35V\",rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:false,height:\"100%\",hYnSN8Rbu:\"mRpTeKf3V\",id:\"y9gn9V35V\",layoutId:\"y9gn9V35V\",mhS_it8bS:\"Twingate\",pf_L3YvVa:false,Rv7rN9T36:\"Keep track of changes to our product\",SF4WeeABZ:false,style:{width:\"100%\"},taEtOIjYB:\"https://www.twingate.com/docs/ip-based-access-use-case\",variant:\"JBMHbmdlf\",vwOUPOH8n:false,width:\"100%\",XNt_0jHi5:\"IP-Based Access\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:58,width:\"246px\",y:(componentViewport?.y||0)+0+7+0+0+276,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-rw6kgk-container\",layoutDependency:layoutDependency,layoutId:\"jFiazxdMv-container\",nodeId:\"jFiazxdMv\",rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:false,height:\"100%\",hYnSN8Rbu:\"mRpTeKf3V\",id:\"jFiazxdMv\",layoutId:\"jFiazxdMv\",mhS_it8bS:\"Twingate\",pf_L3YvVa:false,Rv7rN9T36:\"Keep track of changes to our product\",SF4WeeABZ:false,style:{width:\"100%\"},taEtOIjYB:\"https://www.twingate.com/docs/infra-access-use-case\",variant:\"JBMHbmdlf\",vwOUPOH8n:false,width:\"100%\",XNt_0jHi5:\"Infrastructure Access\"})})})]}),isDisplayed4()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1lyw3ec\",\"data-framer-name\":\"Least priv\",layoutDependency:layoutDependency,layoutId:\"H7cZQxqyb\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-a86f4v\",\"data-framer-name\":\"Section\",layoutDependency:layoutDependency,layoutId:\"sk2Sz0KYz\",style:{borderBottomLeftRadius:8,borderBottomRightRadius:8,borderTopLeftRadius:8,borderTopRightRadius:8},children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1RUIEhvdmVzIE1lZGl1bQ==\",\"--framer-font-family\":'\"TT Hoves Medium\", \"TT Hoves Medium Placeholder\", sans-serif',\"--framer-font-size\":\"13px\",\"--framer-letter-spacing\":\"0.15px\",\"--framer-line-height\":\"1.5em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-1891448d-bc9d-449f-8f82-d845951444bc, rgba(240, 240, 255, 0.6)))\"},children:\"Use Cases\"})}),className:\"framer-1evedcy\",\"data-framer-name\":\"Title\",fonts:[\"CUSTOM;TT Hoves Medium\"],layoutDependency:layoutDependency,layoutId:\"ZWiXN5t5q\",style:{\"--extracted-r6o4lv\":\"var(--token-1891448d-bc9d-449f-8f82-d845951444bc, rgba(240, 240, 255, 0.6))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:58,width:\"246px\",y:(componentViewport?.y||0)+0+7+334+0+44,...addPropertyOverrides({WAlictYNc:{y:(componentViewport?.y||0)+0+7+0+0+44}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-aggerv-container\",layoutDependency:layoutDependency,layoutId:\"CAKD1lWxo-container\",nodeId:\"CAKD1lWxo\",rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:false,height:\"100%\",hYnSN8Rbu:\"mRpTeKf3V\",id:\"CAKD1lWxo\",layoutId:\"CAKD1lWxo\",mhS_it8bS:\"Twingate\",pf_L3YvVa:false,Rv7rN9T36:\"Keep track of changes to our product\",SF4WeeABZ:false,style:{width:\"100%\"},taEtOIjYB:\"https://www.twingate.com/docs/ephemeral-access-to-resources\",variant:\"JBMHbmdlf\",vwOUPOH8n:false,width:\"100%\",XNt_0jHi5:\"Ephemeral Access\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:58,width:\"246px\",y:(componentViewport?.y||0)+0+7+334+0+102,...addPropertyOverrides({WAlictYNc:{y:(componentViewport?.y||0)+0+7+0+0+102}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-vtdc9x-container\",layoutDependency:layoutDependency,layoutId:\"faNRn35UU-container\",nodeId:\"faNRn35UU\",rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:false,height:\"100%\",hYnSN8Rbu:\"mRpTeKf3V\",id:\"faNRn35UU\",layoutId:\"faNRn35UU\",mhS_it8bS:\"Twingate\",pf_L3YvVa:false,Rv7rN9T36:\"Keep track of changes to our product\",SF4WeeABZ:false,style:{width:\"100%\"},taEtOIjYB:\"https://www.twingate.com/docs/usage-based-auto-lock\",variant:\"JBMHbmdlf\",vwOUPOH8n:false,width:\"100%\",XNt_0jHi5:\"Usage Based Access\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:58,width:\"246px\",y:(componentViewport?.y||0)+0+7+334+0+160,...addPropertyOverrides({WAlictYNc:{y:(componentViewport?.y||0)+0+7+0+0+160}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-elf1vi-container\",layoutDependency:layoutDependency,layoutId:\"jf1H3N_OH-container\",nodeId:\"jf1H3N_OH\",rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:false,height:\"100%\",hYnSN8Rbu:\"mRpTeKf3V\",id:\"jf1H3N_OH\",layoutId:\"jf1H3N_OH\",mhS_it8bS:\"Twingate\",pf_L3YvVa:false,Rv7rN9T36:\"Keep track of changes to our product\",SF4WeeABZ:false,style:{width:\"100%\"},taEtOIjYB:\"https://www.twingate.com/docs/usage-based-auto-lock#requesting-access\",variant:\"JBMHbmdlf\",vwOUPOH8n:false,width:\"100%\",XNt_0jHi5:\"Access Request Workflows\"})})})]}),isDisplayed5()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-t4dfbi\",\"data-framer-name\":\"Int sec\",layoutDependency:layoutDependency,layoutId:\"euwcg0Fez\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-1tyvibj\",\"data-framer-name\":\"Section\",layoutDependency:layoutDependency,layoutId:\"RxymdILrR\",style:{borderBottomLeftRadius:8,borderBottomRightRadius:8,borderTopLeftRadius:8,borderTopRightRadius:8},children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1RUIEhvdmVzIE1lZGl1bQ==\",\"--framer-font-family\":'\"TT Hoves Medium\", \"TT Hoves Medium Placeholder\", sans-serif',\"--framer-font-size\":\"13px\",\"--framer-letter-spacing\":\"0.15px\",\"--framer-line-height\":\"1.5em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-1891448d-bc9d-449f-8f82-d845951444bc, rgba(240, 240, 255, 0.6)))\"},children:\"Use Cases\"})}),className:\"framer-acvc3p\",\"data-framer-name\":\"Title\",fonts:[\"CUSTOM;TT Hoves Medium\"],layoutDependency:layoutDependency,layoutId:\"bRcnIDkh1\",style:{\"--extracted-r6o4lv\":\"var(--token-1891448d-bc9d-449f-8f82-d845951444bc, rgba(240, 240, 255, 0.6))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"HkECBVK7E\"},implicitPathVariables:undefined},{href:{webPageId:\"HkECBVK7E\"},implicitPathVariables:undefined}],children:resolvedLinks8=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:58,width:\"246px\",y:(componentViewport?.y||0)+0+7+552+0+44,...addPropertyOverrides({oEcodvQF5:{y:(componentViewport?.y||0)+0+7+0+0+44}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-epwjkn-container\",layoutDependency:layoutDependency,layoutId:\"D8h7MwiuU-container\",nodeId:\"D8h7MwiuU\",rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:false,height:\"100%\",hYnSN8Rbu:\"mRpTeKf3V\",id:\"D8h7MwiuU\",layoutId:\"D8h7MwiuU\",mhS_it8bS:\"Twingate\",pf_L3YvVa:false,Rv7rN9T36:\"Keep track of changes to our product\",SF4WeeABZ:false,style:{width:\"100%\"},taEtOIjYB:resolvedLinks8[0],variant:\"JBMHbmdlf\",vwOUPOH8n:false,width:\"100%\",XNt_0jHi5:\"DNS Filtering\",...addPropertyOverrides({oEcodvQF5:{taEtOIjYB:resolvedLinks8[1]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"pIxgFPDid\"},implicitPathVariables:undefined},{href:{webPageId:\"pIxgFPDid\"},implicitPathVariables:undefined}],children:resolvedLinks9=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:58,width:\"246px\",y:(componentViewport?.y||0)+0+7+552+0+102,...addPropertyOverrides({oEcodvQF5:{y:(componentViewport?.y||0)+0+7+0+0+102}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-15xuml2-container\",layoutDependency:layoutDependency,layoutId:\"BBnPsvWVh-container\",nodeId:\"BBnPsvWVh\",rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:false,height:\"100%\",hYnSN8Rbu:\"mRpTeKf3V\",id:\"BBnPsvWVh\",layoutId:\"BBnPsvWVh\",mhS_it8bS:\"Twingate\",pf_L3YvVa:false,Rv7rN9T36:\"Keep track of changes to our product\",SF4WeeABZ:false,style:{width:\"100%\"},taEtOIjYB:resolvedLinks9[0],variant:\"JBMHbmdlf\",vwOUPOH8n:false,width:\"100%\",XNt_0jHi5:\"Content Filtering\",...addPropertyOverrides({oEcodvQF5:{taEtOIjYB:resolvedLinks9[1]}},baseVariant,gestureVariant)})})})})]}),isDisplayed6()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-18u5994\",\"data-framer-name\":\"Integrations\",layoutDependency:layoutDependency,layoutId:\"JnSsOCPpR\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-18f9pzh\",\"data-framer-name\":\"Section\",layoutDependency:layoutDependency,layoutId:\"XxJX2NAOA\",style:{borderBottomLeftRadius:8,borderBottomRightRadius:8,borderTopLeftRadius:8,borderTopRightRadius:8},children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1RUIEhvdmVzIE1lZGl1bQ==\",\"--framer-font-family\":'\"TT Hoves Medium\", \"TT Hoves Medium Placeholder\", sans-serif',\"--framer-font-size\":\"13px\",\"--framer-letter-spacing\":\"0.15px\",\"--framer-line-height\":\"1.5em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-1891448d-bc9d-449f-8f82-d845951444bc, rgba(240, 240, 255, 0.6)))\"},children:\"Featured Integrations\"})}),className:\"framer-1cs449g\",\"data-framer-name\":\"Title\",fonts:[\"CUSTOM;TT Hoves Medium\"],layoutDependency:layoutDependency,layoutId:\"zShky6p5Q\",style:{\"--extracted-r6o4lv\":\"var(--token-1891448d-bc9d-449f-8f82-d845951444bc, rgba(240, 240, 255, 0.6))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{pathVariables:{iciweDdlz:\"okta\"},unresolvedPathSlugs:{iciweDdlz:{collectionId:\"IdQbvMFmR\",collectionItemId:\"S9u1WgqrA\"}},webPageId:\"h61cEPo9M\"},implicitPathVariables:undefined},{href:{pathVariables:{iciweDdlz:\"okta\"},unresolvedPathSlugs:{iciweDdlz:{collectionId:\"IdQbvMFmR\",collectionItemId:\"S9u1WgqrA\"}},webPageId:\"h61cEPo9M\"},implicitPathVariables:undefined}],children:resolvedLinks10=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:34,width:\"246px\",y:(componentViewport?.y||0)+0+7+712+0+44,...addPropertyOverrides({mZ40WkNI3:{y:(componentViewport?.y||0)+0+7+0+0+44}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-gylppc-container\",layoutDependency:layoutDependency,layoutId:\"M5wH6KZMx-container\",nodeId:\"M5wH6KZMx\",rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:false,height:\"100%\",hYnSN8Rbu:\"mRpTeKf3V\",id:\"M5wH6KZMx\",layoutId:\"M5wH6KZMx\",mhS_it8bS:\"Okta\",pf_L3YvVa:false,Rv7rN9T36:\"Keep track of changes to our product\",SF4WeeABZ:true,style:{height:\"100%\",width:\"100%\"},taEtOIjYB:resolvedLinks10[0],variant:\"JBMHbmdlf\",vwOUPOH8n:false,width:\"100%\",XNt_0jHi5:\"Okta\",...addPropertyOverrides({mZ40WkNI3:{taEtOIjYB:resolvedLinks10[1]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{pathVariables:{iciweDdlz:\"google-workspace\"},unresolvedPathSlugs:{iciweDdlz:{collectionId:\"IdQbvMFmR\",collectionItemId:\"pi92pk_3K\"}},webPageId:\"h61cEPo9M\"},implicitPathVariables:undefined},{href:{pathVariables:{iciweDdlz:\"google-workspace\"},unresolvedPathSlugs:{iciweDdlz:{collectionId:\"IdQbvMFmR\",collectionItemId:\"pi92pk_3K\"}},webPageId:\"h61cEPo9M\"},implicitPathVariables:undefined}],children:resolvedLinks11=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:34,width:\"246px\",y:(componentViewport?.y||0)+0+7+712+0+78,...addPropertyOverrides({mZ40WkNI3:{y:(componentViewport?.y||0)+0+7+0+0+78}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-17jv9od-container\",layoutDependency:layoutDependency,layoutId:\"co2FeE1WH-container\",nodeId:\"co2FeE1WH\",rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:false,height:\"100%\",hYnSN8Rbu:\"mRpTeKf3V\",id:\"co2FeE1WH\",layoutId:\"co2FeE1WH\",mhS_it8bS:\"Google\",pf_L3YvVa:false,Rv7rN9T36:\"Keep track of changes to our product\",SF4WeeABZ:true,style:{height:\"100%\",width:\"100%\"},taEtOIjYB:resolvedLinks11[0],variant:\"JBMHbmdlf\",vwOUPOH8n:false,width:\"100%\",XNt_0jHi5:\"Google Workspace\",...addPropertyOverrides({mZ40WkNI3:{taEtOIjYB:resolvedLinks11[1]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{pathVariables:{iciweDdlz:\"aws\"},unresolvedPathSlugs:{iciweDdlz:{collectionId:\"IdQbvMFmR\",collectionItemId:\"sCY3G7KGc\"}},webPageId:\"h61cEPo9M\"},implicitPathVariables:undefined},{href:{pathVariables:{iciweDdlz:\"aws\"},unresolvedPathSlugs:{iciweDdlz:{collectionId:\"IdQbvMFmR\",collectionItemId:\"sCY3G7KGc\"}},webPageId:\"h61cEPo9M\"},implicitPathVariables:undefined}],children:resolvedLinks12=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:34,width:\"246px\",y:(componentViewport?.y||0)+0+7+712+0+112,...addPropertyOverrides({mZ40WkNI3:{y:(componentViewport?.y||0)+0+7+0+0+112}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-nzedet-container\",layoutDependency:layoutDependency,layoutId:\"HBRASMlvf-container\",nodeId:\"HBRASMlvf\",rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:false,height:\"100%\",hYnSN8Rbu:\"mRpTeKf3V\",id:\"HBRASMlvf\",layoutId:\"HBRASMlvf\",mhS_it8bS:\"AWS\",pf_L3YvVa:false,Rv7rN9T36:\"Keep track of changes to our product\",SF4WeeABZ:true,style:{height:\"100%\",width:\"100%\"},taEtOIjYB:resolvedLinks12[0],variant:\"JBMHbmdlf\",vwOUPOH8n:false,width:\"100%\",XNt_0jHi5:\"AWS\",...addPropertyOverrides({mZ40WkNI3:{taEtOIjYB:resolvedLinks12[1]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{pathVariables:{iciweDdlz:\"azure\"},unresolvedPathSlugs:{iciweDdlz:{collectionId:\"IdQbvMFmR\",collectionItemId:\"vubUF0fqQ\"}},webPageId:\"h61cEPo9M\"},implicitPathVariables:undefined},{href:{pathVariables:{iciweDdlz:\"azure\"},unresolvedPathSlugs:{iciweDdlz:{collectionId:\"IdQbvMFmR\",collectionItemId:\"vubUF0fqQ\"}},webPageId:\"h61cEPo9M\"},implicitPathVariables:undefined}],children:resolvedLinks13=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:34,width:\"246px\",y:(componentViewport?.y||0)+0+7+712+0+146,...addPropertyOverrides({mZ40WkNI3:{y:(componentViewport?.y||0)+0+7+0+0+146}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-108h0lm-container\",layoutDependency:layoutDependency,layoutId:\"tqpzzXwA_-container\",nodeId:\"tqpzzXwA_\",rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:false,height:\"100%\",hYnSN8Rbu:\"mRpTeKf3V\",id:\"tqpzzXwA_\",layoutId:\"tqpzzXwA_\",mhS_it8bS:\"Azure\",pf_L3YvVa:false,Rv7rN9T36:\"Keep track of changes to our product\",SF4WeeABZ:true,style:{height:\"100%\",width:\"100%\"},taEtOIjYB:resolvedLinks13[0],variant:\"JBMHbmdlf\",vwOUPOH8n:false,width:\"100%\",XNt_0jHi5:\"Azure\",...addPropertyOverrides({mZ40WkNI3:{taEtOIjYB:resolvedLinks13[1]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{pathVariables:{iciweDdlz:\"crowdstrike\"},unresolvedPathSlugs:{iciweDdlz:{collectionId:\"IdQbvMFmR\",collectionItemId:\"TlOPUH2SB\"}},webPageId:\"h61cEPo9M\"},implicitPathVariables:undefined},{href:{pathVariables:{iciweDdlz:\"crowdstrike\"},unresolvedPathSlugs:{iciweDdlz:{collectionId:\"IdQbvMFmR\",collectionItemId:\"TlOPUH2SB\"}},webPageId:\"h61cEPo9M\"},implicitPathVariables:undefined}],children:resolvedLinks14=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:34,width:\"246px\",y:(componentViewport?.y||0)+0+7+712+0+180,...addPropertyOverrides({mZ40WkNI3:{y:(componentViewport?.y||0)+0+7+0+0+180}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-2niaia-container\",layoutDependency:layoutDependency,layoutId:\"o2dDHMkgY-container\",nodeId:\"o2dDHMkgY\",rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:false,height:\"100%\",hYnSN8Rbu:\"mRpTeKf3V\",id:\"o2dDHMkgY\",layoutId:\"o2dDHMkgY\",mhS_it8bS:\"CrowdStrike\",pf_L3YvVa:false,Rv7rN9T36:\"Keep track of changes to our product\",SF4WeeABZ:true,style:{height:\"100%\",width:\"100%\"},taEtOIjYB:resolvedLinks14[0],variant:\"JBMHbmdlf\",vwOUPOH8n:false,width:\"100%\",XNt_0jHi5:\"Crowdstrike\",...addPropertyOverrides({mZ40WkNI3:{taEtOIjYB:resolvedLinks14[1]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{pathVariables:{iciweDdlz:\"jamf\"},unresolvedPathSlugs:{iciweDdlz:{collectionId:\"IdQbvMFmR\",collectionItemId:\"qVF2ObmBh\"}},webPageId:\"h61cEPo9M\"},implicitPathVariables:undefined},{href:{pathVariables:{iciweDdlz:\"jamf\"},unresolvedPathSlugs:{iciweDdlz:{collectionId:\"IdQbvMFmR\",collectionItemId:\"qVF2ObmBh\"}},webPageId:\"h61cEPo9M\"},implicitPathVariables:undefined}],children:resolvedLinks15=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:34,width:\"246px\",y:(componentViewport?.y||0)+0+7+712+0+214,...addPropertyOverrides({mZ40WkNI3:{y:(componentViewport?.y||0)+0+7+0+0+214}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1aca5cu-container\",layoutDependency:layoutDependency,layoutId:\"sOwROMf6g-container\",nodeId:\"sOwROMf6g\",rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:false,height:\"100%\",hYnSN8Rbu:\"mRpTeKf3V\",id:\"sOwROMf6g\",layoutId:\"sOwROMf6g\",mhS_it8bS:\"Jamf\",pf_L3YvVa:false,Rv7rN9T36:\"Keep track of changes to our product\",SF4WeeABZ:true,style:{height:\"100%\",width:\"100%\"},taEtOIjYB:resolvedLinks15[0],variant:\"JBMHbmdlf\",vwOUPOH8n:false,width:\"100%\",XNt_0jHi5:\"Jamf\",...addPropertyOverrides({mZ40WkNI3:{taEtOIjYB:resolvedLinks15[1]}},baseVariant,gestureVariant)})})})})]})]}),isDisplayed7()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1828w3g\",\"data-framer-name\":\"Docs\",layoutDependency:layoutDependency,layoutId:\"Q6wAZ9qsp\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:58,width:\"353px\",y:(componentViewport?.y||0)+0+7+0,...addPropertyOverrides({kLY1RZQuF:{y:(componentViewport?.y||0)+0+7+((((componentViewport?.height||230.5)-0)*1-14-(58+15+Math.max(0,(((componentViewport?.height||230.5)-0)*1-14-73)/1)*1+0))/2+0+0)},v2XfKlbg_:{width:`calc(${componentViewport?.width||\"100vw\"} - 14px)`,y:(componentViewport?.y||0)+0+0+7+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFXWithOptimizedAppearEffect,{__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,animate:animation,className:\"framer-1tglr06-container\",\"data-framer-appear-id\":\"1tglr06\",initial:animation1,layoutDependency:layoutDependency,layoutId:\"xRuN3_89B-container\",nodeId:\"xRuN3_89B\",optimized:true,rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:true,height:\"100%\",hYnSN8Rbu:\"dXT989ZNN\",id:\"xRuN3_89B\",layoutId:\"xRuN3_89B\",mhS_it8bS:\"Twingate\",pf_L3YvVa:true,Rv7rN9T36:\"Learn how to deploy Twingate to your network\",SF4WeeABZ:false,style:{width:\"100%\"},taEtOIjYB:\"https://www.twingate.com/docs/\",variant:\"qyFX7T2dF\",vwOUPOH8n:true,width:\"100%\",XNt_0jHi5:\"Documentation\",...addPropertyOverrides({v2XfKlbg_:{variant:\"LX7bcs5Lw\"}},baseVariant,gestureVariant)})})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-5c16ae\",\"data-framer-name\":\"Border\",layoutDependency:layoutDependency,layoutId:\"MbQKxOAuW\",children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-17vxkza\",\"data-framer-name\":\"Border\",layoutDependency:layoutDependency,layoutId:\"VUiX3pQA4\",style:{backgroundColor:\"var(--token-b2f2019d-7e74-40d7-9f5b-7b1e52a4bae4, rgb(29, 32, 35))\"}})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1ljeh1k\",\"data-framer-name\":\"Cards\",layoutDependency:layoutDependency,layoutId:\"naOYWm67z\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:116,y:(componentViewport?.y||0)+0+7+73+10,...addPropertyOverrides({kLY1RZQuF:{height:(Math.max(0,(((componentViewport?.height||230.5)-0)*1-14-73)/1)*1-20)*1,y:(componentViewport?.y||0)+0+7+((((componentViewport?.height||230.5)-0)*1-14-(58+15+Math.max(0,(((componentViewport?.height||230.5)-0)*1-14-73)/1)*1+0))/2+73+0)+(10+(Math.max(0,(((componentViewport?.height||230.5)-0)*1-14-73)/1)*1-20-(Math.max(0,(((componentViewport?.height||230.5)-0)*1-14-73)/1)*1-20)*1)/2)},v2XfKlbg_:{height:211,width:`calc(${componentViewport?.width||\"100vw\"} - 34px)`,y:(componentViewport?.y||0)+0+0+7+73+10+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-19mwhf9-container\",layoutDependency:layoutDependency,layoutId:\"XCCJsRMXO-container\",nodeId:\"XCCJsRMXO\",rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(NavTrayCardSmall,{height:\"100%\",id:\"XCCJsRMXO\",layoutId:\"XCCJsRMXO\",style:{height:\"100%\",width:\"100%\"},TXl3JifQz:\"https://www.twingate.com/docs/quick-start\",variant:\"GDmFqieIy\",WDE61Js6q:\"Quick Start\",width:\"100%\",wVcj6mpv0:\"fpic_LgJb\",ZH_djGBTZ:\"ditA4Waj1\",...addPropertyOverrides({v2XfKlbg_:{style:{width:\"100%\"},variant:\"v5tq_8Oy_\",wVcj6mpv0:\"ditA4Waj1\"}},baseVariant,gestureVariant)})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:116,y:(componentViewport?.y||0)+0+7+73+10,...addPropertyOverrides({kLY1RZQuF:{height:(Math.max(0,(((componentViewport?.height||230.5)-0)*1-14-73)/1)*1-20)*1,y:(componentViewport?.y||0)+0+7+((((componentViewport?.height||230.5)-0)*1-14-(58+15+Math.max(0,(((componentViewport?.height||230.5)-0)*1-14-73)/1)*1+0))/2+73+0)+(10+(Math.max(0,(((componentViewport?.height||230.5)-0)*1-14-73)/1)*1-20-(Math.max(0,(((componentViewport?.height||230.5)-0)*1-14-73)/1)*1-20)*1)/2)},v2XfKlbg_:{height:211,width:`calc(${componentViewport?.width||\"100vw\"} - 34px)`,y:(componentViewport?.y||0)+0+0+7+73+10+223}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-xsm8op-container\",layoutDependency:layoutDependency,layoutId:\"FEzR_ek4P-container\",nodeId:\"FEzR_ek4P\",rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(NavTrayCardSmall,{height:\"100%\",id:\"FEzR_ek4P\",layoutId:\"FEzR_ek4P\",style:{height:\"100%\",width:\"100%\"},TXl3JifQz:\"https://www.twingate.com/docs/architecture\",variant:\"GDmFqieIy\",WDE61Js6q:\"Architecture\",width:\"100%\",wVcj6mpv0:\"h6gn9ZswK\",ZH_djGBTZ:\"fkcpDynXP\",...addPropertyOverrides({v2XfKlbg_:{style:{width:\"100%\"},variant:\"v5tq_8Oy_\",wVcj6mpv0:\"fkcpDynXP\"}},baseVariant,gestureVariant)})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:116,y:(componentViewport?.y||0)+0+7+73+10,...addPropertyOverrides({kLY1RZQuF:{height:(Math.max(0,(((componentViewport?.height||230.5)-0)*1-14-73)/1)*1-20)*1,y:(componentViewport?.y||0)+0+7+((((componentViewport?.height||230.5)-0)*1-14-(58+15+Math.max(0,(((componentViewport?.height||230.5)-0)*1-14-73)/1)*1+0))/2+73+0)+(10+(Math.max(0,(((componentViewport?.height||230.5)-0)*1-14-73)/1)*1-20-(Math.max(0,(((componentViewport?.height||230.5)-0)*1-14-73)/1)*1-20)*1)/2)},v2XfKlbg_:{height:211,width:`calc(${componentViewport?.width||\"100vw\"} - 34px)`,y:(componentViewport?.y||0)+0+0+7+73+10+446}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1j6k4jf-container\",layoutDependency:layoutDependency,layoutId:\"ETj5XER1B-container\",nodeId:\"ETj5XER1B\",rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(NavTrayCardSmall,{height:\"100%\",id:\"ETj5XER1B\",layoutId:\"ETj5XER1B\",style:{height:\"100%\",width:\"100%\"},TXl3JifQz:\"https://www.twingate.com/docs/api-overview\",variant:\"GDmFqieIy\",WDE61Js6q:\"API\",width:\"100%\",wVcj6mpv0:\"R7zKhMY7Y\",ZH_djGBTZ:\"EL2ujQB48\",...addPropertyOverrides({v2XfKlbg_:{style:{width:\"100%\"},variant:\"v5tq_8Oy_\",wVcj6mpv0:\"EL2ujQB48\"}},baseVariant,gestureVariant)})})})]})]}),isDisplayed7()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-15yz7p5\",\"data-border\":true,\"data-framer-name\":\"Docs 2nd\",layoutDependency:layoutDependency,layoutId:\"v655cdjQm\",style:{\"--border-bottom-width\":\"0px\",\"--border-color\":\"var(--token-b2f2019d-7e74-40d7-9f5b-7b1e52a4bae4, rgb(29, 32, 35))\",\"--border-left-width\":\"1px\",\"--border-right-width\":\"0px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0px\"},children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-1ts9n1z\",\"data-framer-name\":\"Section\",layoutDependency:layoutDependency,layoutId:\"zdPDklkIw\",style:{borderBottomLeftRadius:8,borderBottomRightRadius:8,borderTopLeftRadius:8,borderTopRightRadius:8},children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1RUIEhvdmVzIE1lZGl1bQ==\",\"--framer-font-family\":'\"TT Hoves Medium\", \"TT Hoves Medium Placeholder\", sans-serif',\"--framer-font-size\":\"13px\",\"--framer-letter-spacing\":\"0.15px\",\"--framer-line-height\":\"1.5em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-1891448d-bc9d-449f-8f82-d845951444bc, rgba(240, 240, 255, 0.6)))\"},children:\"Deploying Twingate\"})}),className:\"framer-16gmb05\",\"data-framer-name\":\"Title\",fonts:[\"CUSTOM;TT Hoves Medium\"],layoutDependency:layoutDependency,layoutId:\"H96NtZaXO\",style:{\"--extracted-r6o4lv\":\"var(--token-1891448d-bc9d-449f-8f82-d845951444bc, rgba(240, 240, 255, 0.6))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:58,width:\"246px\",y:(componentViewport?.y||0)+0+7+44,...addPropertyOverrides({v2XfKlbg_:{width:`calc(${componentViewport?.width||\"100vw\"} - 14px)`,y:(componentViewport?.y||0)+0+764+7+44}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-nfwd6f-container\",layoutDependency:layoutDependency,layoutId:\"dOM6NZv8Q-container\",nodeId:\"dOM6NZv8Q\",rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:false,height:\"100%\",hYnSN8Rbu:\"mRpTeKf3V\",id:\"dOM6NZv8Q\",layoutId:\"dOM6NZv8Q\",mhS_it8bS:\"Twingate\",pf_L3YvVa:false,Rv7rN9T36:\"Keep track of changes to our product\",SF4WeeABZ:false,style:{width:\"100%\"},taEtOIjYB:\"https://www.twingate.com/docs/connector-deployment\",variant:\"JBMHbmdlf\",vwOUPOH8n:false,width:\"100%\",XNt_0jHi5:\"Cloud\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:58,width:\"246px\",y:(componentViewport?.y||0)+0+7+102,...addPropertyOverrides({v2XfKlbg_:{width:`calc(${componentViewport?.width||\"100vw\"} - 14px)`,y:(componentViewport?.y||0)+0+764+7+102}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-8zrgk3-container\",layoutDependency:layoutDependency,layoutId:\"qUzHD2J0i-container\",nodeId:\"qUzHD2J0i\",rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:false,height:\"100%\",hYnSN8Rbu:\"mRpTeKf3V\",id:\"qUzHD2J0i\",layoutId:\"qUzHD2J0i\",mhS_it8bS:\"Twingate\",pf_L3YvVa:false,Rv7rN9T36:\"Keep track of changes to our product\",SF4WeeABZ:false,style:{width:\"100%\"},taEtOIjYB:\"https://www.twingate.com/docs/connector-deployment#in-offices-or-data-centers\",variant:\"JBMHbmdlf\",vwOUPOH8n:false,width:\"100%\",XNt_0jHi5:\"Offices or Data Centers\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:58,width:\"246px\",y:(componentViewport?.y||0)+0+7+160,...addPropertyOverrides({v2XfKlbg_:{width:`calc(${componentViewport?.width||\"100vw\"} - 14px)`,y:(componentViewport?.y||0)+0+764+7+160}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-h5u4tc-container\",layoutDependency:layoutDependency,layoutId:\"NNTurGTZA-container\",nodeId:\"NNTurGTZA\",rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:false,height:\"100%\",hYnSN8Rbu:\"mRpTeKf3V\",id:\"NNTurGTZA\",layoutId:\"NNTurGTZA\",mhS_it8bS:\"Twingate\",pf_L3YvVa:false,Rv7rN9T36:\"Keep track of changes to our product\",SF4WeeABZ:false,style:{width:\"100%\"},taEtOIjYB:\"https://www.twingate.com/docs/connector-deployment#serverless-environments-paas\",variant:\"JBMHbmdlf\",vwOUPOH8n:false,width:\"100%\",XNt_0jHi5:\"Serverless Environments\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:58,width:\"246px\",y:(componentViewport?.y||0)+0+7+218,...addPropertyOverrides({v2XfKlbg_:{width:`calc(${componentViewport?.width||\"100vw\"} - 14px)`,y:(componentViewport?.y||0)+0+764+7+218}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1r1nknf-container\",layoutDependency:layoutDependency,layoutId:\"oTHSibOWe-container\",nodeId:\"oTHSibOWe\",rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:false,height:\"100%\",hYnSN8Rbu:\"mRpTeKf3V\",id:\"oTHSibOWe\",layoutId:\"oTHSibOWe\",mhS_it8bS:\"Twingate\",pf_L3YvVa:false,Rv7rN9T36:\"Keep track of changes to our product\",SF4WeeABZ:false,style:{width:\"100%\"},taEtOIjYB:\"https://www.twingate.com/docs/connector-deployment#infrastructure-as-code-iac\",variant:\"JBMHbmdlf\",vwOUPOH8n:false,width:\"100%\",XNt_0jHi5:\"Infrastructure-as-Code (IaC)\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:58,width:\"246px\",y:(componentViewport?.y||0)+0+7+276,...addPropertyOverrides({v2XfKlbg_:{width:`calc(${componentViewport?.width||\"100vw\"} - 14px)`,y:(componentViewport?.y||0)+0+764+7+276}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1inljzf-container\",layoutDependency:layoutDependency,layoutId:\"ODNfD9EdZ-container\",nodeId:\"ODNfD9EdZ\",rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:false,height:\"100%\",hYnSN8Rbu:\"mRpTeKf3V\",id:\"ODNfD9EdZ\",layoutId:\"ODNfD9EdZ\",mhS_it8bS:\"Twingate\",pf_L3YvVa:false,Rv7rN9T36:\"Keep track of changes to our product\",SF4WeeABZ:false,style:{width:\"100%\"},taEtOIjYB:\"https://www.twingate.com/docs/connector-deployment#home-network\",variant:\"JBMHbmdlf\",vwOUPOH8n:false,width:\"100%\",XNt_0jHi5:\"Home Networks\"})})})]}),isDisplayed8()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-hmx3go\",\"data-border\":true,\"data-framer-name\":\"Latest Changelogs\",layoutDependency:layoutDependency,layoutId:\"g8UPcXFP1\",style:{\"--border-bottom-width\":\"0px\",\"--border-color\":\"var(--token-b2f2019d-7e74-40d7-9f5b-7b1e52a4bae4, rgb(29, 32, 35))\",\"--border-left-width\":\"1px\",\"--border-right-width\":\"0px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0px\"},children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-jkioef\",\"data-framer-name\":\"Cards\",layoutDependency:layoutDependency,layoutId:\"n5_v9i72w\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:43,width:\"226px\",y:(componentViewport?.y||0)+0+7+0+0+0,...addPropertyOverrides({HX6YrZAXA:{y:(componentViewport?.y||0)+0+7+0+0+((Math.max(0,(((componentViewport?.height||377)-0)*1-14-0)/1)*1-10-(43+Math.max(0,(Math.max(0,(((componentViewport?.height||377)-0)*1-14-0)/1)*1-10-43)/244)*244+0))/2+0+0)}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1xa57np-container\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"HnnJ4FRp1-container\",nodeId:\"HnnJ4FRp1\",rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(NavTrayTitle,{height:\"100%\",id:\"HnnJ4FRp1\",kE6x8JtXN:\"Latest Changelogs\",layoutId:\"HnnJ4FRp1\",style:{width:\"100%\"},variant:\"yAQHjAcYe\",width:\"100%\"})})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-dx35vx\",layoutDependency:layoutDependency,layoutId:\"v5pE4DR2B\",children:/*#__PURE__*/_jsx(ChildrenCanSuspend,{children:/*#__PURE__*/_jsx(QueryData,{query:{from:{alias:\"v5pE4DR2B\",data:Changelog,type:\"Collection\"},limit:{type:\"LiteralValue\",value:2},select:[{collection:\"v5pE4DR2B\",name:\"royCFnGoE\",type:\"Identifier\"},{collection:\"v5pE4DR2B\",name:\"s78r_5Sfi\",type:\"Identifier\"},{collection:\"v5pE4DR2B\",name:\"drBimO239\",type:\"Identifier\"},{collection:\"v5pE4DR2B\",name:\"tB8hckVXV\",type:\"Identifier\"},{collection:\"v5pE4DR2B\",name:\"id\",type:\"Identifier\"}]},children:(collection,paginationInfo,loadMore)=>/*#__PURE__*/_jsx(_Fragment,{children:collection?.map(({drBimO239:drBimO239v5pE4DR2B,id:idv5pE4DR2B,royCFnGoE:royCFnGoEv5pE4DR2B,s78r_5Sfi:s78r_5Sfiv5pE4DR2B,tB8hckVXV:tB8hckVXVv5pE4DR2B},index)=>{royCFnGoEv5pE4DR2B??=\"\";tB8hckVXVv5pE4DR2B??=\"\";return /*#__PURE__*/_jsx(LayoutGroup,{id:`v5pE4DR2B-${idv5pE4DR2B}`,children:/*#__PURE__*/_jsx(PathVariablesContext.Provider,{value:{tB8hckVXV:tB8hckVXVv5pE4DR2B},children:/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{pathVariables:{tB8hckVXV:tB8hckVXVv5pE4DR2B},webPageId:\"Dbr2IURQW\"},implicitPathVariables:undefined},{href:{pathVariables:{tB8hckVXV:tB8hckVXVv5pE4DR2B},webPageId:\"Dbr2IURQW\"},implicitPathVariables:undefined}],children:resolvedLinks16=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:116,width:\"226px\",y:(componentViewport?.y||0)+0+7+0+0+43+0+0,...addPropertyOverrides({HX6YrZAXA:{height:Math.max(0,(Math.max(0,(Math.max(0,(((componentViewport?.height||377)-0)*1-14-0)/1)*1-10-43)/244)*244-0-0)/1)*1,y:(componentViewport?.y||0)+0+7+0+0+((Math.max(0,(((componentViewport?.height||377)-0)*1-14-0)/1)*1-10-(43+Math.max(0,(Math.max(0,(((componentViewport?.height||377)-0)*1-14-0)/1)*1-10-43)/244)*244+0))/2+43+0)+0+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-155grtr-container\",layoutDependency:layoutDependency,layoutId:\"ioXuOszkV-container\",nodeId:\"ioXuOszkV\",rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(NavTrayBlogCard,{FCJjotThg:royCFnGoEv5pE4DR2B,gXZzLrrxC:toDateString(s78r_5Sfiv5pE4DR2B,{dateStyle:\"medium\",locale:\"\"},activeLocaleCode),height:\"100%\",id:\"ioXuOszkV\",j_lkVn6wH:false,layoutId:\"ioXuOszkV\",style:{height:\"100%\",width:\"100%\"},variant:\"bgALVQZde\",W8QKdoWYc:toResponsiveImage(drBimO239v5pE4DR2B),width:\"100%\",xB6GQkGqy:resolvedLinks16[0],...addPropertyOverrides({HX6YrZAXA:{xB6GQkGqy:resolvedLinks16[1]}},baseVariant,gestureVariant)})})})})})},idv5pE4DR2B);})})})})})]})}),isDisplayed9()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1szxtzh\",\"data-framer-name\":\"Customers\",layoutDependency:layoutDependency,layoutId:\"ghqBgAqq6\",children:[/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"hEjPykOVp\"},implicitPathVariables:undefined},{href:{webPageId:\"hEjPykOVp\"},implicitPathVariables:undefined},{href:{webPageId:\"hEjPykOVp\"},implicitPathVariables:undefined}],children:resolvedLinks17=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:58,width:\"353px\",y:(componentViewport?.y||0)+0+7+0,...addPropertyOverrides({ywtKlFKo7:{width:`calc(${componentViewport?.width||\"100vw\"} - 14px)`,y:(componentViewport?.y||0)+0+0+7+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFXWithOptimizedAppearEffect,{__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,animate:animation,className:\"framer-1ugzlmr-container\",\"data-framer-appear-id\":\"1ugzlmr\",initial:animation1,layoutDependency:layoutDependency,layoutId:\"J8Hwd22Q_-container\",nodeId:\"J8Hwd22Q_\",optimized:true,rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:true,height:\"100%\",hYnSN8Rbu:\"oY1UsN78d\",id:\"J8Hwd22Q_\",layoutId:\"J8Hwd22Q_\",mhS_it8bS:\"Twingate\",pf_L3YvVa:true,Rv7rN9T36:\"Read about our customers\u2019 success\",SF4WeeABZ:false,style:{width:\"100%\"},taEtOIjYB:resolvedLinks17[0],variant:\"qyFX7T2dF\",vwOUPOH8n:true,width:\"100%\",XNt_0jHi5:\"Case Studies\",...addPropertyOverrides({k97SfXEaS:{taEtOIjYB:resolvedLinks17[1]},ywtKlFKo7:{taEtOIjYB:resolvedLinks17[2],variant:\"LX7bcs5Lw\"}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"UtMUnmGbJ\"},implicitPathVariables:undefined},{href:{webPageId:\"UtMUnmGbJ\"},implicitPathVariables:undefined},{href:{webPageId:\"UtMUnmGbJ\"},implicitPathVariables:undefined}],children:resolvedLinks18=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:58,width:\"353px\",y:(componentViewport?.y||0)+0+7+58,...addPropertyOverrides({ywtKlFKo7:{width:`calc(${componentViewport?.width||\"100vw\"} - 14px)`,y:(componentViewport?.y||0)+0+0+7+58}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFXWithOptimizedAppearEffect,{__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,animate:animation,className:\"framer-1reej45-container\",\"data-framer-appear-id\":\"1reej45\",initial:animation1,layoutDependency:layoutDependency,layoutId:\"W3JO8ZhhL-container\",nodeId:\"W3JO8ZhhL\",optimized:true,rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:true,height:\"100%\",hYnSN8Rbu:\"aw6419Nd3\",id:\"W3JO8ZhhL\",layoutId:\"W3JO8ZhhL\",mhS_it8bS:\"Twingate\",pf_L3YvVa:true,Rv7rN9T36:\"Join the conversation in the community\",SF4WeeABZ:false,style:{width:\"100%\"},taEtOIjYB:resolvedLinks18[0],variant:\"qyFX7T2dF\",vwOUPOH8n:true,width:\"100%\",XNt_0jHi5:\"Reviews & Testimonials\",...addPropertyOverrides({k97SfXEaS:{taEtOIjYB:resolvedLinks18[1]},ywtKlFKo7:{taEtOIjYB:resolvedLinks18[2],variant:\"LX7bcs5Lw\"}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-fbnpbm\",\"data-framer-name\":\"Border\",layoutDependency:layoutDependency,layoutId:\"z3InLgWZi\",children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-9tyn8m\",\"data-framer-name\":\"Border\",layoutDependency:layoutDependency,layoutId:\"UhVyUeU9b\",style:{backgroundColor:\"var(--token-b2f2019d-7e74-40d7-9f5b-7b1e52a4bae4, rgb(29, 32, 35))\"}})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1nbubuq\",\"data-framer-name\":\"Section\",layoutDependency:layoutDependency,layoutId:\"i8d_0too6\",children:[/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{pathVariables:{qUJTFCGQ6:\"hi-rez\"},unresolvedPathSlugs:{qUJTFCGQ6:{collectionId:\"eIwGKSSC3\",collectionItemId:\"CehnKgoO6\"}},webPageId:\"xy3zQ0r6L\"},implicitPathVariables:undefined},{href:{pathVariables:{qUJTFCGQ6:\"hi-rez\"},unresolvedPathSlugs:{qUJTFCGQ6:{collectionId:\"eIwGKSSC3\",collectionItemId:\"CehnKgoO6\"}},webPageId:\"xy3zQ0r6L\"},implicitPathVariables:undefined},{href:{pathVariables:{qUJTFCGQ6:\"hi-rez\"},unresolvedPathSlugs:{qUJTFCGQ6:{collectionId:\"eIwGKSSC3\",collectionItemId:\"CehnKgoO6\"}},webPageId:\"xy3zQ0r6L\"},implicitPathVariables:undefined}],children:resolvedLinks19=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:72,width:\"160.5px\",y:(componentViewport?.y||0)+0+7+131+10+0,...addPropertyOverrides({ywtKlFKo7:{width:`max((${componentViewport?.width||\"100vw\"} - 46px) / 2, 1px)`,y:(componentViewport?.y||0)+0+0+7+131+10+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1rxhf0j-container\",layoutDependency:layoutDependency,layoutId:\"Eo1u8qZn6-container\",nodeId:\"Eo1u8qZn6\",rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(NavTrayCustomerCardCopy,{height:\"100%\",id:\"Eo1u8qZn6\",layoutId:\"Eo1u8qZn6\",m3vyrEPlf:\"Hi-Rez Studios\",P7_PhGiQ5:\"Yfqqmt4eA\",style:{width:\"100%\"},u4ho7uXQk:resolvedLinks19[0],width:\"100%\",...addPropertyOverrides({k97SfXEaS:{u4ho7uXQk:resolvedLinks19[1]},ywtKlFKo7:{u4ho7uXQk:resolvedLinks19[2]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{pathVariables:{qUJTFCGQ6:\"criteria\"},unresolvedPathSlugs:{qUJTFCGQ6:{collectionId:\"eIwGKSSC3\",collectionItemId:\"xrMupDRdB\"}},webPageId:\"xy3zQ0r6L\"},implicitPathVariables:undefined},{href:{pathVariables:{qUJTFCGQ6:\"criteria\"},unresolvedPathSlugs:{qUJTFCGQ6:{collectionId:\"eIwGKSSC3\",collectionItemId:\"xrMupDRdB\"}},webPageId:\"xy3zQ0r6L\"},implicitPathVariables:undefined},{href:{pathVariables:{qUJTFCGQ6:\"criteria\"},unresolvedPathSlugs:{qUJTFCGQ6:{collectionId:\"eIwGKSSC3\",collectionItemId:\"xrMupDRdB\"}},webPageId:\"xy3zQ0r6L\"},implicitPathVariables:undefined}],children:resolvedLinks20=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:72,width:\"160.5px\",y:(componentViewport?.y||0)+0+7+131+10+0,...addPropertyOverrides({ywtKlFKo7:{width:`max((${componentViewport?.width||\"100vw\"} - 46px) / 2, 1px)`,y:(componentViewport?.y||0)+0+0+7+131+10+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1kvsscq-container\",layoutDependency:layoutDependency,layoutId:\"s0t1iXFyu-container\",nodeId:\"s0t1iXFyu\",rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(NavTrayCustomerCardCopy,{CnrcNZ0E1:addImageAlt({pixelHeight:32,pixelWidth:129,src:\"https://framerusercontent.com/images/q9vBOEp9iGQIQJO5knmOasFMc.svg\"},\"\"),height:\"100%\",id:\"s0t1iXFyu\",layoutId:\"s0t1iXFyu\",m3vyrEPlf:\"Criteria\",P7_PhGiQ5:\"mBkeWL7Br\",style:{width:\"100%\"},u4ho7uXQk:resolvedLinks20[0],width:\"100%\",...addPropertyOverrides({k97SfXEaS:{u4ho7uXQk:resolvedLinks20[1]},ywtKlFKo7:{u4ho7uXQk:resolvedLinks20[2]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{pathVariables:{qUJTFCGQ6:\"kooapps\"},unresolvedPathSlugs:{qUJTFCGQ6:{collectionId:\"eIwGKSSC3\",collectionItemId:\"h5guGfijx\"}},webPageId:\"xy3zQ0r6L\"},implicitPathVariables:undefined},{href:{pathVariables:{qUJTFCGQ6:\"kooapps\"},unresolvedPathSlugs:{qUJTFCGQ6:{collectionId:\"eIwGKSSC3\",collectionItemId:\"h5guGfijx\"}},webPageId:\"xy3zQ0r6L\"},implicitPathVariables:undefined},{href:{pathVariables:{qUJTFCGQ6:\"kooapps\"},unresolvedPathSlugs:{qUJTFCGQ6:{collectionId:\"eIwGKSSC3\",collectionItemId:\"h5guGfijx\"}},webPageId:\"xy3zQ0r6L\"},implicitPathVariables:undefined}],children:resolvedLinks21=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:72,width:\"160.5px\",y:(componentViewport?.y||0)+0+7+131+10+84,...addPropertyOverrides({ywtKlFKo7:{width:`max((${componentViewport?.width||\"100vw\"} - 46px) / 2, 1px)`,y:(componentViewport?.y||0)+0+0+7+131+10+84}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1ogqdbt-container\",layoutDependency:layoutDependency,layoutId:\"WgMrHxsub-container\",nodeId:\"WgMrHxsub\",rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(NavTrayCustomerCardCopy,{CnrcNZ0E1:addImageAlt({pixelHeight:32,pixelWidth:133,src:\"https://framerusercontent.com/images/u9ktjPf1uvY3DN10463GpRu2OM.svg\"},\"\"),height:\"100%\",id:\"WgMrHxsub\",layoutId:\"WgMrHxsub\",m3vyrEPlf:\"Kooapps\",P7_PhGiQ5:\"JNRlfcorc\",style:{width:\"100%\"},u4ho7uXQk:resolvedLinks21[0],width:\"100%\",...addPropertyOverrides({k97SfXEaS:{u4ho7uXQk:resolvedLinks21[1]},ywtKlFKo7:{u4ho7uXQk:resolvedLinks21[2]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{pathVariables:{qUJTFCGQ6:\"modern-health\"},unresolvedPathSlugs:{qUJTFCGQ6:{collectionId:\"eIwGKSSC3\",collectionItemId:\"jkjeTJE1f\"}},webPageId:\"xy3zQ0r6L\"},implicitPathVariables:undefined},{href:{pathVariables:{qUJTFCGQ6:\"modern-health\"},unresolvedPathSlugs:{qUJTFCGQ6:{collectionId:\"eIwGKSSC3\",collectionItemId:\"jkjeTJE1f\"}},webPageId:\"xy3zQ0r6L\"},implicitPathVariables:undefined},{href:{pathVariables:{qUJTFCGQ6:\"modern-health\"},unresolvedPathSlugs:{qUJTFCGQ6:{collectionId:\"eIwGKSSC3\",collectionItemId:\"jkjeTJE1f\"}},webPageId:\"xy3zQ0r6L\"},implicitPathVariables:undefined}],children:resolvedLinks22=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:72,width:\"160.5px\",y:(componentViewport?.y||0)+0+7+131+10+84,...addPropertyOverrides({ywtKlFKo7:{width:`max((${componentViewport?.width||\"100vw\"} - 46px) / 2, 1px)`,y:(componentViewport?.y||0)+0+0+7+131+10+84}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-pa6hfy-container\",layoutDependency:layoutDependency,layoutId:\"qd9BXJwaG-container\",nodeId:\"qd9BXJwaG\",rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(NavTrayCustomerCardCopy,{CnrcNZ0E1:addImageAlt({pixelHeight:32,pixelWidth:141,src:\"https://framerusercontent.com/images/k8xxR8tjO7Bi60CpTkJSiAjGJO8.svg\"},\"\"),height:\"100%\",id:\"qd9BXJwaG\",layoutId:\"qd9BXJwaG\",m3vyrEPlf:\"Modern Health\",P7_PhGiQ5:\"YFK08jqjX\",style:{width:\"100%\"},u4ho7uXQk:resolvedLinks22[0],width:\"100%\",...addPropertyOverrides({k97SfXEaS:{u4ho7uXQk:resolvedLinks22[1]},ywtKlFKo7:{u4ho7uXQk:resolvedLinks22[2]}},baseVariant,gestureVariant)})})})})]})]}),isDisplayed10()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-xs1fqs\",\"data-framer-name\":\"Resources\",layoutDependency:layoutDependency,layoutId:\"cJlqML5Wj\",children:[/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"RAc5AxsLG\"},implicitPathVariables:undefined},{href:{webPageId:\"RAc5AxsLG\"},implicitPathVariables:undefined},{href:{webPageId:\"RAc5AxsLG\"},implicitPathVariables:undefined}],children:resolvedLinks23=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:58,width:\"336px\",y:(componentViewport?.y||0)+0+7+0,...addPropertyOverrides({O5olfCWLm:{width:`calc(${componentViewport?.width||\"100vw\"} - 14px)`,y:(componentViewport?.y||0)+0+0+7+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFXWithOptimizedAppearEffect,{__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,animate:animation,className:\"framer-1cbiz8l-container\",\"data-framer-appear-id\":\"1cbiz8l\",initial:animation1,layoutDependency:layoutDependency,layoutId:\"yiXgESWq7-container\",nodeId:\"yiXgESWq7\",optimized:true,rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:true,height:\"100%\",hYnSN8Rbu:\"PpaE0NinW\",id:\"yiXgESWq7\",layoutId:\"yiXgESWq7\",mhS_it8bS:\"Twingate\",pf_L3YvVa:true,Rv7rN9T36:\"News and insights from Twingate\",SF4WeeABZ:false,style:{width:\"100%\"},taEtOIjYB:resolvedLinks23[0],variant:\"qyFX7T2dF\",vwOUPOH8n:true,width:\"100%\",XNt_0jHi5:\"Blog\",...addPropertyOverrides({IhaMrdzYo:{taEtOIjYB:resolvedLinks23[1]},O5olfCWLm:{taEtOIjYB:resolvedLinks23[2],variant:\"LX7bcs5Lw\"}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"P__7M8cd0\"},implicitPathVariables:undefined},{href:{webPageId:\"P__7M8cd0\"},implicitPathVariables:undefined},{href:{webPageId:\"P__7M8cd0\"},implicitPathVariables:undefined}],children:resolvedLinks24=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:58,width:\"336px\",y:(componentViewport?.y||0)+0+7+58,...addPropertyOverrides({O5olfCWLm:{width:`calc(${componentViewport?.width||\"100vw\"} - 14px)`,y:(componentViewport?.y||0)+0+0+7+58}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1bbnadr-container\",layoutDependency:layoutDependency,layoutId:\"TlJkFFnNA-container\",nodeId:\"TlJkFFnNA\",rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:true,height:\"100%\",hYnSN8Rbu:\"tQp0ZQcow\",id:\"TlJkFFnNA\",layoutId:\"TlJkFFnNA\",mhS_it8bS:\"Twingate\",pf_L3YvVa:true,Rv7rN9T36:\"Keep track of the product updates\",SF4WeeABZ:false,style:{width:\"100%\"},taEtOIjYB:resolvedLinks24[0],variant:\"qyFX7T2dF\",vwOUPOH8n:true,width:\"100%\",XNt_0jHi5:\"Changelog\",y3z9Kx4Wv:y3z9Kx4Wv1y741hu,...addPropertyOverrides({IhaMrdzYo:{taEtOIjYB:resolvedLinks24[1],y3z9Kx4Wv:undefined},O5olfCWLm:{taEtOIjYB:resolvedLinks24[2],variant:\"LX7bcs5Lw\",y3z9Kx4Wv:undefined}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"hQ1Na94sd\"},implicitPathVariables:undefined},{href:{webPageId:\"hQ1Na94sd\"},implicitPathVariables:undefined},{href:{webPageId:\"hQ1Na94sd\"},implicitPathVariables:undefined}],children:resolvedLinks25=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:58,width:\"336px\",y:(componentViewport?.y||0)+0+7+116,...addPropertyOverrides({O5olfCWLm:{width:`calc(${componentViewport?.width||\"100vw\"} - 14px)`,y:(componentViewport?.y||0)+0+0+7+116}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1h2xtfq-container\",layoutDependency:layoutDependency,layoutId:\"osKJ3xDoh-container\",nodeId:\"osKJ3xDoh\",rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:true,height:\"100%\",hYnSN8Rbu:\"VsosXQk2M\",id:\"osKJ3xDoh\",layoutId:\"osKJ3xDoh\",mhS_it8bS:\"Twingate\",pf_L3YvVa:true,Rv7rN9T36:\"Connect with Twingate in person and online\",SF4WeeABZ:false,style:{width:\"100%\"},taEtOIjYB:resolvedLinks25[0],variant:\"qyFX7T2dF\",vwOUPOH8n:true,width:\"100%\",XNt_0jHi5:\"Events & Webinars\",y3z9Kx4Wv:y3z9Kx4Wv1y741hu,...addPropertyOverrides({IhaMrdzYo:{taEtOIjYB:resolvedLinks25[1],y3z9Kx4Wv:undefined},O5olfCWLm:{taEtOIjYB:resolvedLinks25[2],variant:\"LX7bcs5Lw\",y3z9Kx4Wv:undefined}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"XNTkCUQVD\"},implicitPathVariables:undefined},{href:{webPageId:\"XNTkCUQVD\"},implicitPathVariables:undefined},{href:{webPageId:\"XNTkCUQVD\"},implicitPathVariables:undefined}],children:resolvedLinks26=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:58,width:\"336px\",y:(componentViewport?.y||0)+0+7+174,...addPropertyOverrides({O5olfCWLm:{width:`calc(${componentViewport?.width||\"100vw\"} - 14px)`,y:(componentViewport?.y||0)+0+0+7+174}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFXWithOptimizedAppearEffect,{__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,animate:animation,className:\"framer-1y12hb8-container\",\"data-framer-appear-id\":\"1y12hb8\",initial:animation1,layoutDependency:layoutDependency,layoutId:\"JRlj77bbC-container\",nodeId:\"JRlj77bbC\",optimized:true,rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:true,height:\"100%\",hYnSN8Rbu:\"WPtUkdPXb\",id:\"JRlj77bbC\",layoutId:\"JRlj77bbC\",mhS_it8bS:\"Twingate\",pf_L3YvVa:true,Rv7rN9T36:\"Troubleshoot issues with Twingate\",SF4WeeABZ:false,style:{width:\"100%\"},taEtOIjYB:resolvedLinks26[0],variant:\"qyFX7T2dF\",vwOUPOH8n:true,width:\"100%\",XNt_0jHi5:\"Help Center\",...addPropertyOverrides({IhaMrdzYo:{taEtOIjYB:resolvedLinks26[1]},O5olfCWLm:{taEtOIjYB:resolvedLinks26[2],variant:\"LX7bcs5Lw\"}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:58,width:\"336px\",y:(componentViewport?.y||0)+0+7+232,...addPropertyOverrides({O5olfCWLm:{width:`calc(${componentViewport?.width||\"100vw\"} - 14px)`,y:(componentViewport?.y||0)+0+0+7+232}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFXWithOptimizedAppearEffect,{__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,animate:animation,className:\"framer-1g65k3x-container\",\"data-framer-appear-id\":\"1g65k3x\",initial:animation1,layoutDependency:layoutDependency,layoutId:\"TwiG64MfM-container\",nodeId:\"TwiG64MfM\",optimized:true,rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:true,height:\"100%\",hYnSN8Rbu:\"nVKy98A78\",id:\"TwiG64MfM\",layoutId:\"TwiG64MfM\",mhS_it8bS:\"Twingate\",pf_L3YvVa:true,Rv7rN9T36:\"Learn why you should trust Twingate\",SF4WeeABZ:false,style:{width:\"100%\"},taEtOIjYB:\"https://www.twingate.com/docs/trust-center\",variant:\"qyFX7T2dF\",vwOUPOH8n:true,width:\"100%\",XNt_0jHi5:\"Trust Center\",...addPropertyOverrides({O5olfCWLm:{variant:\"LX7bcs5Lw\"}},baseVariant,gestureVariant)})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"QQxdUQBuE\"},implicitPathVariables:undefined},{href:{webPageId:\"QQxdUQBuE\"},implicitPathVariables:undefined},{href:{webPageId:\"QQxdUQBuE\"},implicitPathVariables:undefined}],children:resolvedLinks27=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:58,width:\"336px\",y:(componentViewport?.y||0)+0+7+290,...addPropertyOverrides({O5olfCWLm:{width:`calc(${componentViewport?.width||\"100vw\"} - 14px)`,y:(componentViewport?.y||0)+0+0+7+290}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFXWithOptimizedAppearEffect,{__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,animate:animation,className:\"framer-a3d63b-container\",\"data-framer-appear-id\":\"a3d63b\",initial:animation1,layoutDependency:layoutDependency,layoutId:\"Fs5ypZGKG-container\",nodeId:\"Fs5ypZGKG\",optimized:true,rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:true,height:\"100%\",hYnSN8Rbu:\"mRpTeKf3V\",id:\"Fs5ypZGKG\",layoutId:\"Fs5ypZGKG\",mhS_it8bS:\"Twingate\",pf_L3YvVa:true,Rv7rN9T36:\"Meet the team behind Twingate\",SF4WeeABZ:false,style:{width:\"100%\"},taEtOIjYB:resolvedLinks27[0],variant:\"qyFX7T2dF\",vwOUPOH8n:true,width:\"100%\",XNt_0jHi5:\"About us\",...addPropertyOverrides({IhaMrdzYo:{taEtOIjYB:resolvedLinks27[1]},O5olfCWLm:{taEtOIjYB:resolvedLinks27[2],variant:\"LX7bcs5Lw\"}},baseVariant,gestureVariant)})})})})]}),isDisplayed11()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-189txbs\",\"data-border\":true,\"data-framer-name\":\"Resources 2nd\",layoutDependency:layoutDependency,layoutId:\"SXReCjYAh\",style:{\"--border-bottom-width\":\"0px\",\"--border-color\":\"var(--token-b2f2019d-7e74-40d7-9f5b-7b1e52a4bae4, rgb(29, 32, 35))\",\"--border-left-width\":\"1px\",\"--border-right-width\":\"0px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0px\"},children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-f25vtm\",\"data-framer-name\":\"Cards\",layoutDependency:layoutDependency,layoutId:\"SRnmnFTJy\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:43,width:\"286px\",y:(componentViewport?.y||0)+0+7+0+0+0,...addPropertyOverrides({IhaMrdzYo:{y:(componentViewport?.y||0)+0+7+0+0+((Math.max(0,(((componentViewport?.height||362)-0)*1-14-0)/1)*1-10-(43+Math.max(0,(Math.max(0,(((componentViewport?.height||362)-0)*1-14-0)/1)*1-10-43)/1)*1+0))/2+0+0)}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1ec8p58-container\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"rE8VP03ba-container\",nodeId:\"rE8VP03ba\",rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(NavTrayTitle,{height:\"100%\",id:\"rE8VP03ba\",kE6x8JtXN:\"Latest Blogs\",layoutId:\"rE8VP03ba\",style:{width:\"100%\"},variant:\"yAQHjAcYe\",width:\"100%\"})})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-y0wsnn\",layoutDependency:layoutDependency,layoutId:\"F72vRNUS2\",children:/*#__PURE__*/_jsx(ChildrenCanSuspend,{children:/*#__PURE__*/_jsx(QueryData,{query:{from:{alias:\"F72vRNUS2\",data:Blog,type:\"Collection\"},limit:{type:\"LiteralValue\",value:2},select:[{collection:\"F72vRNUS2\",name:\"htIvfYBOu\",type:\"Identifier\"},{collection:\"F72vRNUS2\",name:\"BOY5LSewc\",type:\"Identifier\"},{collection:\"F72vRNUS2\",name:\"YnwyMK7wB\",type:\"Identifier\"},{collection:\"F72vRNUS2\",name:\"KppWsNgH6\",type:\"Identifier\"},{collection:\"F72vRNUS2\",name:\"id\",type:\"Identifier\"}],where:{left:{collection:\"F72vRNUS2\",name:\"WRWHbDdVF\",type:\"Identifier\"},operator:\"and\",right:{collection:\"F72vRNUS2\",name:\"xT_4SVBSB\",type:\"Identifier\"},type:\"BinaryOperation\"}},children:(collection1,paginationInfo1,loadMore1)=>/*#__PURE__*/_jsx(_Fragment,{children:collection1?.map(({BOY5LSewc:BOY5LSewcF72vRNUS2,htIvfYBOu:htIvfYBOuF72vRNUS2,id:idF72vRNUS2,KppWsNgH6:KppWsNgH6F72vRNUS2,YnwyMK7wB:YnwyMK7wBF72vRNUS2},index1)=>{htIvfYBOuF72vRNUS2??=\"\";KppWsNgH6F72vRNUS2??=\"\";return /*#__PURE__*/_jsx(LayoutGroup,{id:`F72vRNUS2-${idF72vRNUS2}`,children:/*#__PURE__*/_jsx(PathVariablesContext.Provider,{value:{KppWsNgH6:KppWsNgH6F72vRNUS2},children:/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{pathVariables:{KppWsNgH6:KppWsNgH6F72vRNUS2},webPageId:\"SLBKiX9Fj\"},implicitPathVariables:undefined},{href:{pathVariables:{KppWsNgH6:KppWsNgH6F72vRNUS2},webPageId:\"SLBKiX9Fj\"},implicitPathVariables:undefined}],children:resolvedLinks28=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:309,width:\"286px\",y:(componentViewport?.y||0)+0+7+0+0+43+0+0,...addPropertyOverrides({IhaMrdzYo:{height:Math.max(0,(Math.max(0,(Math.max(0,(((componentViewport?.height||362)-0)*1-14-0)/1)*1-10-43)/1)*1-0-0)/1)*1,y:(componentViewport?.y||0)+0+7+0+0+((Math.max(0,(((componentViewport?.height||362)-0)*1-14-0)/1)*1-10-(43+Math.max(0,(Math.max(0,(((componentViewport?.height||362)-0)*1-14-0)/1)*1-10-43)/1)*1+0))/2+43+0)+0+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-n5sv1o-container\",layoutDependency:layoutDependency,layoutId:\"yKXfit6Dk-container\",nodeId:\"yKXfit6Dk\",rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(NavTrayBlogCard,{FCJjotThg:htIvfYBOuF72vRNUS2,gXZzLrrxC:toDateString(BOY5LSewcF72vRNUS2,{dateStyle:\"medium\",locale:\"\"},activeLocaleCode),height:\"100%\",id:\"yKXfit6Dk\",j_lkVn6wH:false,layoutId:\"yKXfit6Dk\",style:{height:\"100%\",width:\"100%\"},variant:\"bgALVQZde\",W8QKdoWYc:toResponsiveImage(YnwyMK7wBF72vRNUS2),width:\"100%\",xB6GQkGqy:resolvedLinks28[0],...addPropertyOverrides({IhaMrdzYo:{xB6GQkGqy:resolvedLinks28[1]}},baseVariant,gestureVariant)})})})})})},idF72vRNUS2);})})})})})]})}),isDisplayed12()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-67oo7p\",\"data-framer-name\":\"Partners\",layoutDependency:layoutDependency,layoutId:\"Q9RJn0LG9\",children:[/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"Bq9yo6Aho\"},implicitPathVariables:undefined},{href:{webPageId:\"Bq9yo6Aho\"},implicitPathVariables:undefined},{href:{webPageId:\"Bq9yo6Aho\"},implicitPathVariables:undefined}],children:resolvedLinks29=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:58,width:\"366px\",y:(componentViewport?.y||0)+0+7+0,...addPropertyOverrides({RpKkYqfkq:{width:`calc(${componentViewport?.width||\"100vw\"} - 14px)`,y:(componentViewport?.y||0)+0+0+7+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFXWithOptimizedAppearEffect,{__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,animate:animation,className:\"framer-1tvt78c-container\",\"data-framer-appear-id\":\"1tvt78c\",initial:animation1,layoutDependency:layoutDependency,layoutId:\"xB6h2gk_B-container\",nodeId:\"xB6h2gk_B\",optimized:true,rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:true,height:\"100%\",hYnSN8Rbu:\"wvwwYzx1s\",id:\"xB6h2gk_B\",layoutId:\"xB6h2gk_B\",mhS_it8bS:\"Twingate\",pf_L3YvVa:true,Rv7rN9T36:\"Manage and monitor customer networks\",SF4WeeABZ:false,style:{width:\"100%\"},taEtOIjYB:resolvedLinks29[0],variant:\"qyFX7T2dF\",vwOUPOH8n:true,width:\"100%\",XNt_0jHi5:\"MSP / MSSP\",...addPropertyOverrides({QJqGglw8e:{taEtOIjYB:resolvedLinks29[1]},RpKkYqfkq:{taEtOIjYB:resolvedLinks29[2],variant:\"LX7bcs5Lw\"}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"fM499XwEy\"},implicitPathVariables:undefined},{href:{webPageId:\"fM499XwEy\"},implicitPathVariables:undefined},{href:{webPageId:\"fM499XwEy\"},implicitPathVariables:undefined}],children:resolvedLinks30=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:58,width:\"366px\",y:(componentViewport?.y||0)+0+7+58,...addPropertyOverrides({RpKkYqfkq:{width:`calc(${componentViewport?.width||\"100vw\"} - 14px)`,y:(componentViewport?.y||0)+0+0+7+58}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFXWithOptimizedAppearEffect,{__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,animate:animation,className:\"framer-lfhvhd-container\",\"data-framer-appear-id\":\"lfhvhd\",initial:animation1,layoutDependency:layoutDependency,layoutId:\"Kh7JZIoXe-container\",nodeId:\"Kh7JZIoXe\",optimized:true,rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:true,height:\"100%\",hYnSN8Rbu:\"NrDjexu5A\",id:\"Kh7JZIoXe\",layoutId:\"Kh7JZIoXe\",mhS_it8bS:\"Twingate\",pf_L3YvVa:true,Rv7rN9T36:\"Drive scale with best-in-class zero trust security\",SF4WeeABZ:false,style:{width:\"100%\"},taEtOIjYB:resolvedLinks30[0],variant:\"qyFX7T2dF\",vwOUPOH8n:true,width:\"100%\",XNt_0jHi5:\"Channel Partners\",...addPropertyOverrides({QJqGglw8e:{taEtOIjYB:resolvedLinks30[1]},RpKkYqfkq:{taEtOIjYB:resolvedLinks30[2],variant:\"LX7bcs5Lw\"}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"oihjvnHXi\"},implicitPathVariables:undefined},{href:{webPageId:\"oihjvnHXi\"},implicitPathVariables:undefined},{href:{webPageId:\"oihjvnHXi\"},implicitPathVariables:undefined}],children:resolvedLinks31=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:58,width:\"366px\",y:(componentViewport?.y||0)+0+7+116,...addPropertyOverrides({RpKkYqfkq:{width:`calc(${componentViewport?.width||\"100vw\"} - 14px)`,y:(componentViewport?.y||0)+0+0+7+116}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFXWithOptimizedAppearEffect,{__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,animate:animation,className:\"framer-13sc9ip-container\",\"data-framer-appear-id\":\"13sc9ip\",initial:animation1,layoutDependency:layoutDependency,layoutId:\"b6BTX_wqo-container\",nodeId:\"b6BTX_wqo\",optimized:true,rendersWithMotion:true,scopeId:\"QUH3pJRTz\",children:/*#__PURE__*/_jsx(MenuRow,{anQxL7bbx:true,height:\"100%\",hYnSN8Rbu:\"wCoAJl1WU\",id:\"b6BTX_wqo\",layoutId:\"b6BTX_wqo\",mhS_it8bS:\"Twingate\",pf_L3YvVa:true,Rv7rN9T36:\"Innovate through our rich technology systems \",SF4WeeABZ:false,style:{width:\"100%\"},taEtOIjYB:resolvedLinks31[0],variant:\"qyFX7T2dF\",vwOUPOH8n:true,width:\"100%\",XNt_0jHi5:\"Technology Partners\",y3z9Kx4Wv:y3z9Kx4Wv1y741hu,...addPropertyOverrides({QJqGglw8e:{taEtOIjYB:resolvedLinks31[1],y3z9Kx4Wv:undefined},RpKkYqfkq:{taEtOIjYB:resolvedLinks31[2],variant:\"LX7bcs5Lw\",y3z9Kx4Wv:undefined}},baseVariant,gestureVariant)})})})})]})]})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-WzRu9.framer-152s6ny, .framer-WzRu9 .framer-152s6ny { display: block; }\",\".framer-WzRu9.framer-1raxb9 { align-content: flex-start; align-items: flex-start; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; padding: 0px; position: relative; width: min-content; }\",\".framer-WzRu9 .framer-19vp2ch { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; overflow: visible; padding: 7px; position: relative; width: 414px; }\",\".framer-WzRu9 .framer-s82iay-container, .framer-WzRu9 .framer-kpsmlv-container, .framer-WzRu9 .framer-1e9dw5x-container, .framer-WzRu9 .framer-7klj5t-container, .framer-WzRu9 .framer-xe185l-container, .framer-WzRu9 .framer-lzengj-container { flex: none; height: auto; position: relative; width: auto; }\",\".framer-WzRu9 .framer-1jxurdo, .framer-WzRu9 .framer-fbnpbm { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: visible; padding: 7px 10px 7px 10px; position: relative; width: 100%; }\",\".framer-WzRu9 .framer-1ywehu1, .framer-WzRu9 .framer-17vxkza, .framer-WzRu9 .framer-9tyn8m { flex: 1 0 0px; height: 1px; overflow: visible; position: relative; width: 1px; }\",\".framer-WzRu9 .framer-1leh8xx, .framer-WzRu9 .framer-15yz7p5, .framer-WzRu9 .framer-hmx3go { align-content: flex-start; align-items: flex-start; align-self: stretch; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: auto; justify-content: flex-start; overflow: visible; padding: 7px; position: relative; width: 260px; }\",\".framer-WzRu9 .framer-2wkcnx, .framer-WzRu9 .framer-1lyw3ec, .framer-WzRu9 .framer-t4dfbi, .framer-WzRu9 .framer-18u5994 { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-WzRu9 .framer-zkmvku, .framer-WzRu9 .framer-a86f4v, .framer-WzRu9 .framer-1tyvibj, .framer-WzRu9 .framer-18f9pzh, .framer-WzRu9 .framer-1ts9n1z { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: 44px; justify-content: flex-start; overflow: visible; padding: 4px 10px 4px 10px; position: relative; width: 100%; }\",\".framer-WzRu9 .framer-katiz1, .framer-WzRu9 .framer-1evedcy, .framer-WzRu9 .framer-acvc3p, .framer-WzRu9 .framer-1cs449g, .framer-WzRu9 .framer-16gmb05 { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-WzRu9 .framer-kvubwi-container, .framer-WzRu9 .framer-1qb78d7-container, .framer-WzRu9 .framer-8r2tt3-container, .framer-WzRu9 .framer-1amz1jv-container, .framer-WzRu9 .framer-rw6kgk-container, .framer-WzRu9 .framer-aggerv-container, .framer-WzRu9 .framer-vtdc9x-container, .framer-WzRu9 .framer-elf1vi-container, .framer-WzRu9 .framer-epwjkn-container, .framer-WzRu9 .framer-15xuml2-container, .framer-WzRu9 .framer-nfwd6f-container, .framer-WzRu9 .framer-8zrgk3-container, .framer-WzRu9 .framer-h5u4tc-container, .framer-WzRu9 .framer-1r1nknf-container, .framer-WzRu9 .framer-1inljzf-container, .framer-WzRu9 .framer-1xa57np-container, .framer-WzRu9 .framer-1cbiz8l-container, .framer-WzRu9 .framer-1bbnadr-container, .framer-WzRu9 .framer-1h2xtfq-container, .framer-WzRu9 .framer-1y12hb8-container, .framer-WzRu9 .framer-1g65k3x-container, .framer-WzRu9 .framer-a3d63b-container, .framer-WzRu9 .framer-1ec8p58-container, .framer-WzRu9 .framer-1tvt78c-container, .framer-WzRu9 .framer-lfhvhd-container, .framer-WzRu9 .framer-13sc9ip-container { flex: none; height: auto; position: relative; width: 100%; }\",\".framer-WzRu9 .framer-gylppc-container, .framer-WzRu9 .framer-17jv9od-container, .framer-WzRu9 .framer-nzedet-container, .framer-WzRu9 .framer-108h0lm-container, .framer-WzRu9 .framer-2niaia-container, .framer-WzRu9 .framer-1aca5cu-container { flex: none; height: 34px; position: relative; width: 100%; }\",\".framer-WzRu9 .framer-1828w3g { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; overflow: visible; padding: 7px; position: relative; width: min-content; }\",\".framer-WzRu9 .framer-1tglr06-container, .framer-WzRu9 .framer-1ugzlmr-container, .framer-WzRu9 .framer-1reej45-container { flex: none; height: auto; position: relative; width: 353px; }\",\".framer-WzRu9 .framer-5c16ae { align-content: center; align-items: center; align-self: stretch; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: visible; padding: 7px 10px 7px 10px; position: relative; width: auto; }\",\".framer-WzRu9 .framer-1ljeh1k { align-content: center; align-items: center; align-self: stretch; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 12px; height: 136px; justify-content: flex-start; overflow: visible; padding: 10px; position: relative; width: auto; }\",\".framer-WzRu9 .framer-19mwhf9-container, .framer-WzRu9 .framer-xsm8op-container, .framer-WzRu9 .framer-1j6k4jf-container { flex: 1 0 0px; height: 100%; position: relative; width: 1px; }\",\".framer-WzRu9 .framer-jkioef { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; overflow: visible; padding: 0px 10px 10px 10px; position: relative; width: 100%; }\",\".framer-WzRu9 .framer-dx35vx { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 12px; height: min-content; justify-content: flex-start; padding: 0px; position: relative; width: 100%; }\",\".framer-WzRu9 .framer-155grtr-container { flex: none; height: 116px; position: relative; width: 100%; }\",\".framer-WzRu9 .framer-1szxtzh { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; overflow: visible; padding: 7px; position: relative; width: 367px; }\",\".framer-WzRu9 .framer-1nbubuq { display: grid; flex: none; gap: 12px; grid-auto-rows: min-content; grid-template-columns: repeat(2, minmax(1px, 1fr)); grid-template-rows: repeat(2, min-content); height: min-content; justify-content: center; overflow: visible; padding: 10px; position: relative; width: 353px; }\",\".framer-WzRu9 .framer-1rxhf0j-container, .framer-WzRu9 .framer-1kvsscq-container, .framer-WzRu9 .framer-1ogqdbt-container, .framer-WzRu9 .framer-pa6hfy-container { align-self: start; flex: none; height: auto; justify-self: start; position: relative; width: 100%; }\",\".framer-WzRu9 .framer-xs1fqs { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; overflow: visible; padding: 7px; position: relative; width: 350px; }\",\".framer-WzRu9 .framer-189txbs { align-content: flex-start; align-items: flex-start; align-self: stretch; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: auto; justify-content: flex-start; overflow: visible; padding: 7px; position: relative; width: 320px; }\",\".framer-WzRu9 .framer-f25vtm { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: 362px; justify-content: center; overflow: visible; padding: 0px 10px 10px 10px; position: relative; width: 100%; }\",\".framer-WzRu9 .framer-y0wsnn { align-content: flex-start; align-items: flex-start; display: flex; flex: 1 0 0px; flex-direction: column; flex-wrap: nowrap; gap: 12px; height: 1px; justify-content: flex-start; padding: 0px; position: relative; width: 100%; }\",\".framer-WzRu9 .framer-n5sv1o-container { flex: 1 0 0px; height: 1px; position: relative; width: 100%; }\",\".framer-WzRu9 .framer-67oo7p { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; overflow: visible; padding: 7px; position: relative; width: 380px; }\",\".framer-WzRu9.framer-v-9figxj .framer-1lyw3ec { order: 1; }\",\".framer-WzRu9.framer-v-8dhdyi .framer-jkioef, .framer-WzRu9.framer-v-8dhdyi .framer-155grtr-container, .framer-WzRu9.framer-v-1x4pqe5 .framer-1ljeh1k, .framer-WzRu9.framer-v-110xo30 .framer-f25vtm { flex: 1 0 0px; height: 1px; }\",\".framer-WzRu9.framer-v-8dhdyi .framer-dx35vx { flex: 244 0 0px; height: 1px; }\",\".framer-WzRu9.framer-v-1x4pqe5 .framer-1828w3g { align-self: stretch; height: auto; }\",\".framer-WzRu9.framer-v-uc6eod.framer-1raxb9, .framer-WzRu9.framer-v-qu7xcb.framer-1raxb9, .framer-WzRu9.framer-v-ey1q9a.framer-1raxb9, .framer-WzRu9.framer-v-jbdq0u.framer-1raxb9, .framer-WzRu9.framer-v-1nwae4e.framer-1raxb9 { flex-direction: column; max-width: 1056px; width: 400px; }\",\".framer-WzRu9.framer-v-uc6eod .framer-19vp2ch, .framer-WzRu9.framer-v-uc6eod .framer-s82iay-container, .framer-WzRu9.framer-v-uc6eod .framer-kpsmlv-container, .framer-WzRu9.framer-v-uc6eod .framer-1e9dw5x-container, .framer-WzRu9.framer-v-uc6eod .framer-7klj5t-container, .framer-WzRu9.framer-v-uc6eod .framer-xe185l-container, .framer-WzRu9.framer-v-uc6eod .framer-lzengj-container, .framer-WzRu9.framer-v-qu7xcb .framer-1828w3g, .framer-WzRu9.framer-v-qu7xcb .framer-1tglr06-container, .framer-WzRu9.framer-v-ey1q9a .framer-1szxtzh, .framer-WzRu9.framer-v-ey1q9a .framer-1ugzlmr-container, .framer-WzRu9.framer-v-ey1q9a .framer-1reej45-container, .framer-WzRu9.framer-v-ey1q9a .framer-1nbubuq { width: 100%; }\",\".framer-WzRu9.framer-v-qu7xcb .framer-5c16ae { align-self: unset; width: 100%; }\",\".framer-WzRu9.framer-v-qu7xcb .framer-1ljeh1k { align-self: unset; flex-direction: column; height: min-content; width: 100%; }\",\".framer-WzRu9.framer-v-qu7xcb .framer-19mwhf9-container, .framer-WzRu9.framer-v-qu7xcb .framer-xsm8op-container, .framer-WzRu9.framer-v-qu7xcb .framer-1j6k4jf-container { flex: none; height: auto; width: 100%; }\",\".framer-WzRu9.framer-v-qu7xcb .framer-15yz7p5 { align-self: unset; height: min-content; width: 100%; }\",\".framer-WzRu9.framer-v-jbdq0u .framer-xs1fqs { order: 6; width: 100%; }\",\".framer-WzRu9.framer-v-1nwae4e .framer-67oo7p { order: 8; width: 100%; }\",'.framer-WzRu9[data-border=\"true\"]::after, .framer-WzRu9 [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; pointer-events: none; }'];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 739\n * @framerIntrinsicWidth 2978\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"auto\",\"auto\"]},\"VL591BGli\":{\"layout\":[\"auto\",\"auto\"]},\"WAlictYNc\":{\"layout\":[\"auto\",\"auto\"]},\"oEcodvQF5\":{\"layout\":[\"auto\",\"auto\"]},\"HX6YrZAXA\":{\"layout\":[\"auto\",\"auto\"]},\"rJEXYtTln\":{\"layout\":[\"auto\",\"auto\"]},\"mZ40WkNI3\":{\"layout\":[\"auto\",\"auto\"]},\"tL7RJw2hg\":{\"layout\":[\"auto\",\"auto\"]},\"kLY1RZQuF\":{\"layout\":[\"auto\",\"auto\"]},\"k97SfXEaS\":{\"layout\":[\"auto\",\"auto\"]},\"IhaMrdzYo\":{\"layout\":[\"auto\",\"auto\"]},\"QJqGglw8e\":{\"layout\":[\"auto\",\"auto\"]},\"BDxO75PJh\":{\"layout\":[\"fixed\",\"auto\"],\"constraints\":[null,\"1056px\",null,null]},\"v2XfKlbg_\":{\"layout\":[\"fixed\",\"auto\"],\"constraints\":[null,\"1056px\",null,null]},\"ywtKlFKo7\":{\"layout\":[\"fixed\",\"auto\"],\"constraints\":[null,\"1056px\",null,null]},\"O5olfCWLm\":{\"layout\":[\"fixed\",\"auto\"],\"constraints\":[null,\"1056px\",null,null]},\"RpKkYqfkq\":{\"layout\":[\"fixed\",\"auto\"],\"constraints\":[null,\"1056px\",null,null]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerQUH3pJRTz=withCSS(Component,css,\"framer-WzRu9\");export default FramerQUH3pJRTz;FramerQUH3pJRTz.displayName=\"Nav / Menu\";FramerQUH3pJRTz.defaultProps={height:739,width:2978};addPropertyControls(FramerQUH3pJRTz,{variant:{options:[\"FxKS9c1QZ\",\"VL591BGli\",\"WAlictYNc\",\"oEcodvQF5\",\"HX6YrZAXA\",\"rJEXYtTln\",\"mZ40WkNI3\",\"tL7RJw2hg\",\"kLY1RZQuF\",\"k97SfXEaS\",\"IhaMrdzYo\",\"QJqGglw8e\",\"BDxO75PJh\",\"v2XfKlbg_\",\"ywtKlFKo7\",\"O5olfCWLm\",\"RpKkYqfkq\"],optionTitles:[\"Primary\",\"ZTNA\",\"Least Privilege\",\"Internet Security\",\"Changelog\",\"Kubernetes Access\",\"Integrations\",\"Product\",\"Docs\",\"Customers\",\"Resources\",\"Partners\",\"Product - Mobile\",\"Docs - Mobile\",\"Customers - Mobile\",\"Resources - Mobile\",\"Partners - Mobile\"],title:\"Variant\",type:ControlType.Enum}});addFonts(FramerQUH3pJRTz,[{explicitInter:true,fonts:[{family:\"TT Hoves Medium\",source:\"custom\",url:\"https://framerusercontent.com/assets/M4cAr8oQzbyO9Ynb0WkinOqcoI.woff2\"}]},...MenuRowFonts,...NavTrayCardSmallFonts,...NavTrayTitleFonts,...NavTrayBlogCardFonts,...NavTrayCustomerCardCopyFonts],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerQUH3pJRTz\",\"slots\":[],\"annotations\":{\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"VL591BGli\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"WAlictYNc\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"oEcodvQF5\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"HX6YrZAXA\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"rJEXYtTln\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"mZ40WkNI3\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"tL7RJw2hg\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"kLY1RZQuF\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"k97SfXEaS\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"IhaMrdzYo\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"QJqGglw8e\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"BDxO75PJh\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"],\\\"constraints\\\":[null,\\\"1056px\\\",null,null]},\\\"v2XfKlbg_\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"],\\\"constraints\\\":[null,\\\"1056px\\\",null,null]},\\\"ywtKlFKo7\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"],\\\"constraints\\\":[null,\\\"1056px\\\",null,null]},\\\"O5olfCWLm\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"],\\\"constraints\\\":[null,\\\"1056px\\\",null,null]},\\\"RpKkYqfkq\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"],\\\"constraints\\\":[null,\\\"1056px\\\",null,null]}}}\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"739\",\"framerDisplayContentsDiv\":\"false\",\"framerIntrinsicWidth\":\"2978\",\"framerComponentViewportWidth\":\"true\",\"framerColorSyntax\":\"true\",\"framerAutoSizeImages\":\"true\",\"framerImmutableVariables\":\"true\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}", "// Generated by Framer (cf4c6d7)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,getFontsFromSharedStyle,getPropertyControls,Link,RichText,SmartComponentScopedContainer,SVG,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import*as sharedStyle from\"https://framerusercontent.com/modules/8D5Yrl7noAgh91Nqk8Op/33BzxBWnQs99wRDuXfcP/M6hbwtZyh.js\";import NavMenu from\"https://framerusercontent.com/modules/ukyfgndQmGPyGl5LU54I/hFuQ655HqW24mBwz7R2w/QUH3pJRTz.js\";const NavMenuFonts=getFonts(NavMenu);const NavMenuControls=getPropertyControls(NavMenu);const enabledGestures={S1HgDZL8w:{hover:true},xd0WuXaRi:{hover:true}};const cycleOrder=[\"S1HgDZL8w\",\"s4vX3n6SA\",\"xd0WuXaRi\"];const serializationHash=\"framer-5Ab8D\";const variantClassNames={S1HgDZL8w:\"framer-v-nugitm\",s4vX3n6SA:\"framer-v-wmevyc\",xd0WuXaRi:\"framer-v-k6jyed\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:1e3,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const humanReadableEnumMap={\"Customers - Mobile\":\"ywtKlFKo7\",\"Docs - Mobile\":\"v2XfKlbg_\",\"Internet Security\":\"oEcodvQF5\",\"Least Privilege\":\"WAlictYNc\",\"Partners - Mobile\":\"RpKkYqfkq\",\"Product - Mobile\":\"BDxO75PJh\",\"Resources - Mobile\":\"O5olfCWLm\",Changelog:\"HX6YrZAXA\",Customers:\"k97SfXEaS\",Docs:\"kLY1RZQuF\",Integrations:\"mZ40WkNI3\",Partners:\"QJqGglw8e\",Primary:\"FxKS9c1QZ\",Product:\"tL7RJw2hg\",Resources:\"IhaMrdzYo\",ZTNA:\"VL591BGli\"};const humanReadableVariantMap={Closed:\"xd0WuXaRi\",Default:\"S1HgDZL8w\",Open:\"s4vX3n6SA\"};const getProps=({height,id,link,menu,title,width,...props})=>{return{...props,bp1wF9P5x:humanReadableEnumMap[menu]??menu??props.bp1wF9P5x??\"BDxO75PJh\",n1VAzJUI_:title??props.n1VAzJUI_??\"Product\",u51ZvRHqi:link??props.u51ZvRHqi,variant:humanReadableVariantMap[props.variant]??props.variant??\"S1HgDZL8w\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,u51ZvRHqi,n1VAzJUI_,bp1wF9P5x,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"S1HgDZL8w\",enabledGestures,ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onTap14fneg2=activeVariantCallback(async(...args)=>{setVariant(\"xd0WuXaRi\");});const onTap7svolr=activeVariantCallback(async(...args)=>{setVariant(\"s4vX3n6SA\");});const sharedStyleClassNames=[sharedStyle.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);const isDisplayed=()=>{if(gestureVariant===\"xd0WuXaRi-hover\")return true;if([\"s4vX3n6SA\",\"xd0WuXaRi\"].includes(baseVariant))return true;return false;};const isDisplayed1=()=>{if(baseVariant===\"s4vX3n6SA\")return true;return false;};return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(Link,{href:u51ZvRHqi,motionChild:true,nodeId:\"S1HgDZL8w\",openInNewTab:false,scopeId:\"Nf5Ragpam\",...addPropertyOverrides({\"xd0WuXaRi-hover\":{href:undefined},s4vX3n6SA:{href:undefined},xd0WuXaRi:{href:undefined}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsxs(motion.a,{...restProps,...gestureHandlers,className:`${cx(scopingClassNames,\"framer-nugitm\",className,classNames)} framer-4ngxvx`,\"data-framer-name\":\"Default\",layoutDependency:layoutDependency,layoutId:\"S1HgDZL8w\",ref:refBinding,style:{...style},...addPropertyOverrides({\"S1HgDZL8w-hover\":{\"data-framer-name\":undefined},\"xd0WuXaRi-hover\":{\"data-framer-name\":undefined},s4vX3n6SA:{\"data-framer-name\":\"Open\"},xd0WuXaRi:{\"data-framer-name\":\"Closed\"}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-psj0pr\",\"data-border\":true,\"data-framer-name\":\"Parent\",layoutDependency:layoutDependency,layoutId:\"lnSx6cS9H\",style:{\"--border-bottom-width\":\"0px\",\"--border-color\":\"var(--token-2b080329-29ba-481c-ac92-832881069b36, rgba(255, 255, 255, 0.1))\",\"--border-left-width\":\"0px\",\"--border-right-width\":\"0px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0.5px\",backgroundColor:\"rgba(0, 0, 0, 0)\"},variants:{\"S1HgDZL8w-hover\":{backgroundColor:\"rgba(255, 255, 255, 0.03)\"},\"xd0WuXaRi-hover\":{backgroundColor:\"rgba(255, 255, 255, 0.03)\"}},...addPropertyOverrides({s4vX3n6SA:{\"data-highlight\":true,onTap:onTap14fneg2},xd0WuXaRi:{\"data-highlight\":true,onTap:onTap7svolr}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-87abjg\",\"data-styles-preset\":\"M6hbwtZyh\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255)))\"},children:\"Product\"})}),className:\"framer-uof5zj\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"MUCjedpAs\",style:{\"--extracted-r6o4lv\":\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:n1VAzJUI_,verticalAlignment:\"top\",withExternalLayout:true}),isDisplayed()&&/*#__PURE__*/_jsx(SVG,{className:\"framer-ulgi1r\",\"data-framer-name\":\"Chevron\",layout:\"position\",layoutDependency:layoutDependency,layoutId:\"cyZ963ou1\",opacity:.4,style:{opacity:.4},svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 24 24\"><path d=\"M 6 9 L 12 15 L 18 9\" fill=\"transparent\" stroke-width=\"1.5\" stroke=\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(18, 19, 21))\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path></svg>',svgContentId:12296790341,withExternalLayout:true,...addPropertyOverrides({s4vX3n6SA:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 24 24\"><path d=\"M 0 0 L 6 6 L 12 0\" transform=\"translate(6 9) rotate(180 6 3)\" fill=\"transparent\" stroke-width=\"1.5\" stroke=\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path></svg>',svgContentId:10366636597},xd0WuXaRi:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 24 24\"><path d=\"M 6 9 L 12 15 L 18 9\" fill=\"transparent\" stroke-width=\"1.5\" stroke=\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path></svg>',svgContentId:12033173427}},baseVariant,gestureVariant)})]}),isDisplayed1()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1n12s63\",\"data-framer-name\":\"Child\",layoutDependency:layoutDependency,layoutId:\"RRjdZrkeH\",style:{backgroundColor:\"rgba(0, 0, 0, 0.2)\"},children:isDisplayed1()&&/*#__PURE__*/_jsx(ComponentViewportProvider,{...addPropertyOverrides({s4vX3n6SA:{height:739,width:`max(${componentViewport?.width||\"100vw\"}, 1px)`,y:(componentViewport?.y||0)+0+48+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1x9lksd-container\",layoutDependency:layoutDependency,layoutId:\"ZaRlaezJk-container\",nodeId:\"ZaRlaezJk\",rendersWithMotion:true,scopeId:\"Nf5Ragpam\",children:/*#__PURE__*/_jsx(NavMenu,{height:\"100%\",id:\"ZaRlaezJk\",layoutId:\"ZaRlaezJk\",style:{width:\"100%\"},variant:bp1wF9P5x,width:\"100%\"})})})})]})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-5Ab8D.framer-4ngxvx, .framer-5Ab8D .framer-4ngxvx { display: block; }\",\".framer-5Ab8D.framer-nugitm { align-content: center; align-items: center; cursor: pointer; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; text-decoration: none; width: 400px; }\",\".framer-5Ab8D .framer-psj0pr { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; height: 48px; justify-content: space-between; overflow: visible; padding: 16px; position: relative; width: 100%; }\",\".framer-5Ab8D .framer-uof5zj { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-5Ab8D .framer-ulgi1r { flex: none; height: 24px; position: relative; width: 24px; }\",\".framer-5Ab8D .framer-1n12s63 { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; min-height: 1643px; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-5Ab8D .framer-1x9lksd-container { flex: 1 0 0px; height: auto; position: relative; width: 1px; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-5Ab8D.framer-nugitm, .framer-5Ab8D .framer-1n12s63 { gap: 0px; } .framer-5Ab8D.framer-nugitm > * { margin: 0px; margin-bottom: calc(0px / 2); margin-top: calc(0px / 2); } .framer-5Ab8D.framer-nugitm > :first-child { margin-top: 0px; } .framer-5Ab8D.framer-nugitm > :last-child { margin-bottom: 0px; } .framer-5Ab8D .framer-1n12s63 > * { margin: 0px; margin-left: calc(0px / 2); margin-right: calc(0px / 2); } .framer-5Ab8D .framer-1n12s63 > :first-child { margin-left: 0px; } .framer-5Ab8D .framer-1n12s63 > :last-child { margin-right: 0px; } }\",\".framer-5Ab8D.framer-v-wmevyc.framer-nugitm { cursor: unset; }\",\".framer-5Ab8D.framer-v-wmevyc .framer-psj0pr, .framer-5Ab8D.framer-v-k6jyed .framer-psj0pr { cursor: pointer; }\",\".framer-5Ab8D.framer-v-wmevyc .framer-1n12s63 { min-height: unset; }\",...sharedStyle.css,'.framer-5Ab8D[data-border=\"true\"]::after, .framer-5Ab8D [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; pointer-events: none; }'];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 48\n * @framerIntrinsicWidth 400\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]},\"s4vX3n6SA\":{\"layout\":[\"fixed\",\"auto\"]},\"xd0WuXaRi\":{\"layout\":[\"fixed\",\"auto\"]},\"czzegYjd8\":{\"layout\":[\"fixed\",\"auto\"]},\"t1rx7WCqH\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerVariables {\"u51ZvRHqi\":\"link\",\"n1VAzJUI_\":\"title\",\"bp1wF9P5x\":\"menu\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerNf5Ragpam=withCSS(Component,css,\"framer-5Ab8D\");export default FramerNf5Ragpam;FramerNf5Ragpam.displayName=\"Nav / Mobile Nav \u2013\\xa0Row\";FramerNf5Ragpam.defaultProps={height:48,width:400};addPropertyControls(FramerNf5Ragpam,{variant:{options:[\"S1HgDZL8w\",\"s4vX3n6SA\",\"xd0WuXaRi\"],optionTitles:[\"Default\",\"Open\",\"Closed\"],title:\"Variant\",type:ControlType.Enum},u51ZvRHqi:{title:\"Link\",type:ControlType.Link},n1VAzJUI_:{defaultValue:\"Product\",displayTextArea:false,placeholder:\"\",title:\"Title\",type:ControlType.String},bp1wF9P5x:NavMenuControls?.[\"variant\"]&&{...NavMenuControls[\"variant\"],defaultValue:\"BDxO75PJh\",description:undefined,hidden:undefined,title:\"Menu\"}});addFonts(FramerNf5Ragpam,[{explicitInter:true,fonts:[{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/5vvr9Vy74if2I6bQbJvbw7SY1pQ.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/EOr0mi4hNtlgWNn9if640EZzXCo.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/Y9k9QrlZAqio88Klkmbd8VoMQc.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/OYrD2tBIBPvoJXiIHnLoOXnY9M.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/JeYwfuaPfZHQhEG8U5gtPDZ7WQ.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/vQyevYAyHtARFwPqUzQGpnDs.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/b6Y37FthZeALduNqHicBT6FutY.woff2\",weight:\"400\"}]},...NavMenuFonts,...getFontsFromSharedStyle(sharedStyle.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerNf5Ragpam\",\"slots\":[],\"annotations\":{\"framerVariables\":\"{\\\"u51ZvRHqi\\\":\\\"link\\\",\\\"n1VAzJUI_\\\":\\\"title\\\",\\\"bp1wF9P5x\\\":\\\"menu\\\"}\",\"framerImmutableVariables\":\"true\",\"framerComponentViewportWidth\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"s4vX3n6SA\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"xd0WuXaRi\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"czzegYjd8\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"t1rx7WCqH\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerIntrinsicWidth\":\"400\",\"framerIntrinsicHeight\":\"48\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}", "// Generated by Framer (cf4c6d7)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,RichText,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";const enabledGestures={S2IKBNrsn:{hover:true}};const serializationHash=\"framer-UndAo\";const variantClassNames={S2IKBNrsn:\"framer-v-mw9zcs\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={delay:0,duration:.2,ease:[0,0,1,1],type:\"tween\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const getProps=({height,id,tenantFirstLetter,tenantName,tenantSlug,width,...props})=>{return{...props,n9wmhVubQ:tenantSlug??props.n9wmhVubQ??\"<tenantSlugCouldBeSuperDuperLong>.twingate.com\",OnZ_3axVX:tenantName??props.OnZ_3axVX??\"TenantName\",QBgC5od6m:tenantFirstLetter??props.QBgC5od6m??\"Z\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,OnZ_3axVX,n9wmhVubQ,QBgC5od6m,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"S2IKBNrsn\",enabledGestures,ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-mw9zcs\",className,classNames),\"data-framer-name\":\"Default\",layoutDependency:layoutDependency,layoutId:\"S2IKBNrsn\",ref:refBinding,style:{backgroundColor:\"rgba(0, 0, 0, 0)\",borderBottomLeftRadius:6,borderBottomRightRadius:6,borderTopLeftRadius:6,borderTopRightRadius:6,...style},variants:{\"S2IKBNrsn-hover\":{backgroundColor:\"rgba(0, 0, 0, 0.15)\"}},...addPropertyOverrides({\"S2IKBNrsn-hover\":{\"data-framer-name\":undefined}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-1gdl5b4\",\"data-framer-name\":\"Avatar\",layoutDependency:layoutDependency,layoutId:\"Sfn_coCe4\",style:{backgroundColor:\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\",borderBottomLeftRadius:4,borderBottomRightRadius:4,borderTopLeftRadius:4,borderTopRightRadius:4},children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1RUIEhvdmVzIE1lZGl1bQ==\",\"--framer-font-family\":'\"TT Hoves Medium\", \"TT Hoves Medium Placeholder\", sans-serif',\"--framer-font-size\":\"17px\",\"--framer-line-height\":\"1.5em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17)))\"},children:\"Z\"})}),className:\"framer-60avut\",fonts:[\"CUSTOM;TT Hoves Medium\"],layoutDependency:layoutDependency,layoutId:\"Xc3qHs27l\",style:{\"--extracted-r6o4lv\":\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:QBgC5od6m,verticalAlignment:\"top\",withExternalLayout:true})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1luljhh\",layoutDependency:layoutDependency,layoutId:\"Dp2YuAq8M\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1RUIEhvdmVzIE1lZGl1bQ==\",\"--framer-font-family\":'\"TT Hoves Medium\", \"TT Hoves Medium Placeholder\", sans-serif',\"--framer-font-size\":\"13px\",\"--framer-letter-spacing\":\"0.15px\",\"--framer-line-height\":\"1em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255)))\"},children:\"TenantName\"})}),className:\"framer-14jiu4e\",fonts:[\"CUSTOM;TT Hoves Medium\"],layoutDependency:layoutDependency,layoutId:\"ju6RwXmPt\",style:{\"--extracted-r6o4lv\":\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:OnZ_3axVX,verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1RUIEhvdmVzIE1lZGl1bQ==\",\"--framer-font-family\":'\"TT Hoves Medium\", \"TT Hoves Medium Placeholder\", sans-serif',\"--framer-font-size\":\"11px\",\"--framer-letter-spacing\":\"0.25px\",\"--framer-line-height\":\"1em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-376d54cb-4db7-448c-b192-cf6ae3d1a8ff, rgb(161, 161, 170)))\"},children:\"<tenantSlugCouldBeSuperDuperLong>.twingate.com\"})}),className:\"framer-19803tp\",fonts:[\"CUSTOM;TT Hoves Medium\"],layoutDependency:layoutDependency,layoutId:\"bZOGIPrh0\",style:{\"--extracted-r6o4lv\":\"var(--token-376d54cb-4db7-448c-b192-cf6ae3d1a8ff, rgb(161, 161, 170))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:n9wmhVubQ,verticalAlignment:\"top\",withExternalLayout:true})]})]})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-UndAo.framer-1md6fbg, .framer-UndAo .framer-1md6fbg { display: block; }\",\".framer-UndAo.framer-mw9zcs { align-content: center; align-items: center; cursor: pointer; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: flex-start; overflow: hidden; padding: 6px; position: relative; width: 332px; will-change: var(--framer-will-change-override, transform); }\",\".framer-UndAo .framer-1gdl5b4 { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: 32px; justify-content: center; overflow: hidden; padding: 0px; position: relative; width: 32px; will-change: var(--framer-will-change-override, transform); }\",\".framer-UndAo .framer-60avut, .framer-UndAo .framer-14jiu4e, .framer-UndAo .framer-19803tp { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-UndAo .framer-1luljhh { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 4px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: min-content; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-UndAo.framer-mw9zcs, .framer-UndAo .framer-1gdl5b4, .framer-UndAo .framer-1luljhh { gap: 0px; } .framer-UndAo.framer-mw9zcs > * { margin: 0px; margin-left: calc(10px / 2); margin-right: calc(10px / 2); } .framer-UndAo.framer-mw9zcs > :first-child { margin-left: 0px; } .framer-UndAo.framer-mw9zcs > :last-child { margin-right: 0px; } .framer-UndAo .framer-1gdl5b4 > * { margin: 0px; margin-bottom: calc(0px / 2); margin-top: calc(0px / 2); } .framer-UndAo .framer-1gdl5b4 > :first-child, .framer-UndAo .framer-1luljhh > :first-child { margin-top: 0px; } .framer-UndAo .framer-1gdl5b4 > :last-child, .framer-UndAo .framer-1luljhh > :last-child { margin-bottom: 0px; } .framer-UndAo .framer-1luljhh > * { margin: 0px; margin-bottom: calc(4px / 2); margin-top: calc(4px / 2); } }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 44\n * @framerIntrinsicWidth 332\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]},\"rzJkjqyMh\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerVariables {\"OnZ_3axVX\":\"tenantName\",\"n9wmhVubQ\":\"tenantSlug\",\"QBgC5od6m\":\"tenantFirstLetter\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerPjC4CsJaK=withCSS(Component,css,\"framer-UndAo\");export default FramerPjC4CsJaK;FramerPjC4CsJaK.displayName=\"Nav / TenantRow\";FramerPjC4CsJaK.defaultProps={height:44,width:332};addPropertyControls(FramerPjC4CsJaK,{OnZ_3axVX:{defaultValue:\"TenantName\",displayTextArea:false,title:\"TenantName\",type:ControlType.String},n9wmhVubQ:{defaultValue:\"<tenantSlugCouldBeSuperDuperLong>.twingate.com\",displayTextArea:false,title:\"Tenant Slug\",type:ControlType.String},QBgC5od6m:{defaultValue:\"Z\",displayTextArea:false,title:\"Tenant First Letter\",type:ControlType.String}});addFonts(FramerPjC4CsJaK,[{explicitInter:true,fonts:[{family:\"TT Hoves Medium\",source:\"custom\",url:\"https://framerusercontent.com/assets/M4cAr8oQzbyO9Ynb0WkinOqcoI.woff2\"}]}],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerPjC4CsJaK\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"44\",\"framerComponentViewportWidth\":\"true\",\"framerIntrinsicWidth\":\"332\",\"framerContractVersion\":\"1\",\"framerVariables\":\"{\\\"OnZ_3axVX\\\":\\\"tenantName\\\",\\\"n9wmhVubQ\\\":\\\"tenantSlug\\\",\\\"QBgC5od6m\\\":\\\"tenantFirstLetter\\\"}\",\"framerDisplayContentsDiv\":\"false\",\"framerImmutableVariables\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"rzJkjqyMh\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./PjC4CsJaK.map", "// Generated by Framer (cf4c6d7)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,getFontsFromSharedStyle,Link,RichText,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import*as sharedStyle from\"https://framerusercontent.com/modules/iSeRdQLTVmRrhWISCw0l/c55PksAizAWSQp01iTR3/PihfgTAR5.js\";const enabledGestures={I8zBahkEa:{hover:true}};const serializationHash=\"framer-aIBgk\";const variantClassNames={I8zBahkEa:\"framer-v-3cbl9f\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={delay:0,duration:.3,ease:[0,0,1,1],type:\"tween\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const getProps=({height,id,link,title,width,...props})=>{return{...props,jGReyLla_:title??props.jGReyLla_??\"Create Network\",uVJDdqVqp:link??props.uVJDdqVqp};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,jGReyLla_,uVJDdqVqp,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"I8zBahkEa\",enabledGestures,ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[sharedStyle.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(Link,{href:uVJDdqVqp,motionChild:true,nodeId:\"I8zBahkEa\",scopeId:\"Qa82X1Z0U\",children:/*#__PURE__*/_jsx(motion.a,{...restProps,...gestureHandlers,className:`${cx(scopingClassNames,\"framer-3cbl9f\",className,classNames)} framer-u33slz`,\"data-framer-name\":\"Default\",layoutDependency:layoutDependency,layoutId:\"I8zBahkEa\",ref:refBinding,style:{backgroundColor:\"var(--token-66d0cf7b-9eb8-4245-b770-5d2d61dad950, rgba(245, 245, 255, 0.1))\",borderBottomLeftRadius:6,borderBottomRightRadius:6,borderTopLeftRadius:6,borderTopRightRadius:6,...style},variants:{\"I8zBahkEa-hover\":{backgroundColor:\"rgba(245, 245, 255, 0.15)\"}},...addPropertyOverrides({\"I8zBahkEa-hover\":{\"data-framer-name\":undefined}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-137gzas\",\"data-styles-preset\":\"PihfgTAR5\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255)))\"},children:\"Create Network\"})}),className:\"framer-1ay0ie7\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"EmQ2zDYll\",style:{\"--extracted-r6o4lv\":\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:jGReyLla_,verticalAlignment:\"top\",withExternalLayout:true})})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-aIBgk.framer-u33slz, .framer-aIBgk .framer-u33slz { display: block; }\",\".framer-aIBgk.framer-3cbl9f { align-content: center; align-items: center; cursor: pointer; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: 32px; justify-content: center; overflow: visible; padding: 0px; position: relative; text-decoration: none; width: 154px; }\",\".framer-aIBgk .framer-1ay0ie7 { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-aIBgk.framer-3cbl9f { gap: 0px; } .framer-aIBgk.framer-3cbl9f > * { margin: 0px; margin-left: calc(0px / 2); margin-right: calc(0px / 2); } .framer-aIBgk.framer-3cbl9f > :first-child { margin-left: 0px; } .framer-aIBgk.framer-3cbl9f > :last-child { margin-right: 0px; } }\",...sharedStyle.css];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 32\n * @framerIntrinsicWidth 154\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"Ko2FfyCw7\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerVariables {\"jGReyLla_\":\"title\",\"uVJDdqVqp\":\"link\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerQa82X1Z0U=withCSS(Component,css,\"framer-aIBgk\");export default FramerQa82X1Z0U;FramerQa82X1Z0U.displayName=\"Buttons / Menu Button\";FramerQa82X1Z0U.defaultProps={height:32,width:154};addPropertyControls(FramerQa82X1Z0U,{jGReyLla_:{defaultValue:\"Create Network\",displayTextArea:false,title:\"Title\",type:ControlType.String},uVJDdqVqp:{title:\"Link\",type:ControlType.Link}});addFonts(FramerQa82X1Z0U,[{explicitInter:true,fonts:[{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/5vvr9Vy74if2I6bQbJvbw7SY1pQ.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/EOr0mi4hNtlgWNn9if640EZzXCo.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/Y9k9QrlZAqio88Klkmbd8VoMQc.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/OYrD2tBIBPvoJXiIHnLoOXnY9M.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/JeYwfuaPfZHQhEG8U5gtPDZ7WQ.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/vQyevYAyHtARFwPqUzQGpnDs.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/b6Y37FthZeALduNqHicBT6FutY.woff2\",weight:\"400\"}]},...getFontsFromSharedStyle(sharedStyle.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerQa82X1Z0U\",\"slots\":[],\"annotations\":{\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"Ko2FfyCw7\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerComponentViewportWidth\":\"true\",\"framerContractVersion\":\"1\",\"framerImmutableVariables\":\"true\",\"framerIntrinsicHeight\":\"32\",\"framerVariables\":\"{\\\"jGReyLla_\\\":\\\"title\\\",\\\"uVJDdqVqp\\\":\\\"link\\\"}\",\"framerIntrinsicWidth\":\"154\",\"framerDisplayContentsDiv\":\"false\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Qa82X1Z0U.map", "// Generated by Framer (cf240c2)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,ResolveLinks,SVG,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useRouter,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{tenantRows,withShowIfTenants}from\"https://framerusercontent.com/modules/pdRBrxZgIyvBss2CqANa/GwPe7hhMcRcQI7SMcoIS/TenantChecks.js\";import ButtonsButton from\"https://framerusercontent.com/modules/7AM6DNYiokdKmR3FgvBn/DNb9r8GouMuBcZXr5kzS/AiU29R1w5.js\";import NavMobileNavRow from\"https://framerusercontent.com/modules/fkGgVlOCLldzIqG6EWIf/neSoJ2UFMLUedcqU6sHR/Nf5Ragpam.js\";import NavTenantRow from\"https://framerusercontent.com/modules/HLOjcBuHUk2SohwWmcNb/794WP057oNa6VAyST9B8/PjC4CsJaK.js\";import ButtonsMenuButton from\"https://framerusercontent.com/modules/HUBYTwKFByzjWw3oHGyL/RO1c3jYHv3saoZbGS7g5/Qa82X1Z0U.js\";const ButtonsButtonFonts=getFonts(ButtonsButton);const NavMobileNavRowFonts=getFonts(NavMobileNavRow);const NavTenantRowFonts=getFonts(NavTenantRow);const MotionDivTenantRows=tenantRows(motion.div);const ButtonsMenuButtonFonts=getFonts(ButtonsMenuButton);const MotionDivWithShowIfTenants=withShowIfTenants(motion.div);const cycleOrder=[\"gYbO3EfpD\",\"MwreIT4I3\"];const serializationHash=\"framer-aMVT0\";const variantClassNames={gYbO3EfpD:\"framer-v-dwc2lq\",MwreIT4I3:\"framer-v-1laoepl\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const transformTemplate1=(_,t)=>`translateY(-50%) ${t}`;const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const humanReadableVariantMap={Default:\"gYbO3EfpD\",MSP:\"MwreIT4I3\"};const getProps=({height,id,tapClose,width,...props})=>{return{...props,lFvMJ0SS0:tapClose??props.lFvMJ0SS0,variant:humanReadableVariantMap[props.variant]??props.variant??\"gYbO3EfpD\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,lFvMJ0SS0,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"gYbO3EfpD\",variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onTap16um3j6=activeVariantCallback(async(...args)=>{if(lFvMJ0SS0){const res=await lFvMJ0SS0(...args);if(res===false)return false;}});const ref1=React.useRef(null);const router=useRouter();const defaultLayoutId=React.useId();const sharedStyleClassNames=[];const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(serializationHash,...sharedStyleClassNames,\"framer-dwc2lq\",className,classNames),\"data-border\":true,\"data-framer-name\":\"Default\",layoutDependency:layoutDependency,layoutId:\"gYbO3EfpD\",ref:ref??ref1,style:{\"--border-bottom-width\":\"0.5px\",\"--border-color\":\"var(--token-66d0cf7b-9eb8-4245-b770-5d2d61dad950, rgba(245, 245, 255, 0.1))\",\"--border-left-width\":\"0.5px\",\"--border-right-width\":\"0.5px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0.5px\",backdropFilter:\"blur(40px)\",backgroundColor:\"var(--token-66d0cf7b-9eb8-4245-b770-5d2d61dad950, rgba(245, 245, 255, 0.1))\",borderBottomLeftRadius:14,borderBottomRightRadius:14,borderTopLeftRadius:14,borderTopRightRadius:14,boxShadow:\"0px 0.6021873017743928px 0.6021873017743928px -1.25px rgba(0, 0, 0, 0.17997), 0px 2.288533303243457px 2.288533303243457px -2.5px rgba(0, 0, 0, 0.15889), 0px 10px 10px -3.75px rgba(0, 0, 0, 0.0625), inset 0px 0.5px 0px 0px rgba(255, 255, 255, 0.05)\",WebkitBackdropFilter:\"blur(40px)\",...style},...addPropertyOverrides({MwreIT4I3:{\"data-framer-name\":\"MSP\"}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-uukeo2\",\"data-framer-name\":\"Header\",layoutDependency:layoutDependency,layoutId:\"rhPWKvguK\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-1d47s3m\",\"data-framer-name\":\"Button\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"KLr1pJ2du\",onTap:onTap16um3j6,style:{borderBottomLeftRadius:8,borderBottomRightRadius:8,borderTopLeftRadius:8,borderTopRightRadius:8},children:/*#__PURE__*/_jsx(SVG,{className:\"framer-1l7am1w\",\"data-framer-name\":\"x\",layout:\"position\",layoutDependency:layoutDependency,layoutId:\"ockPIWiBL\",opacity:1,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 24 24\"><g transform=\"translate(6 6)\" id=\"ss9742684675_1\"><path d=\"M 0 0 L 12 12\" fill=\"transparent\" stroke-width=\"1.5\" stroke=\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\" stroke-linecap=\"round\"></path><path d=\"M 12 0 L 0 12\" fill=\"transparent\" stroke-width=\"1.5\" stroke=\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\" stroke-linecap=\"round\"></path></g></svg>',svgContentId:9742684675,withExternalLayout:true})}),/*#__PURE__*/_jsx(SVG,{className:\"framer-ygc02\",\"data-framer-name\":\"graphic\",fill:\"black\",intrinsicHeight:20,intrinsicWidth:86,layoutDependency:layoutDependency,layoutId:\"r87AfCp47\",svg:'<svg width=\"86\" height=\"20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M0 8.516V17.2s1.298-.89 2.75-1.91v-4.774c0-2.347.707-3.104 2.62-4.526l2.624-1.95V0S4.198 2.816 2.62 3.99C.707 5.412 0 6.17 0 8.516ZM4 20v-8.684c0-2.347.707-3.104 2.62-4.526 1.578-1.174 5.374-3.99 5.374-3.99v7.577c0 .218.001.425.003.624.018 2.099.027 3.218-2.12 4.841C8.105 17.184 4 20 4 20ZM26.8 5.617h-3.4v9.825h-2V5.617H18V3.72h8.802L26.8 5.617Zm5.336 3.947h.017l1.925 5.878h1.866l2.989-8.57h-2l-1.931 6.16-1.944-6.16h-1.814l-1.965 6.144-1.915-6.143h-2.032l2.995 8.57h1.865l1.944-5.88Zm8-2.691h2.47v8.57h-1.964v-6.82h-1.134l.627-1.75Zm.259-2.642a1.231 1.231 0 0 1 2.461 0c0 .71-.511 1.205-1.221 1.205-.71 0-1.242-.495-1.242-1.205h.002Zm8.451 2.444c-1.403 0-2.277.66-2.642 1.337l-.002-1.14h-1.814v8.576h1.965v-4.97c0-1.336.776-2.114 2.015-2.114 1.173 0 1.7.771 1.7 1.944v5.134h1.966V10.06c0-1.998-1.107-3.385-3.188-3.385Zm11.207.198h1.814v8.207c0 2.262-1.454 3.979-4.096 3.979-2.576 0-3.748-1.651-3.93-2.988h1.966c.181.66.759 1.303 1.998 1.303 1.354 0 2.096-.825 2.096-2.03v-1.337c-.48.742-1.388 1.32-2.708 1.32-2.444 0-3.947-1.964-3.947-4.326 0-2.362 1.503-4.326 3.947-4.326 1.32 0 2.295.528 2.857 1.425l.003-1.227ZM57.59 8.408c-1.425 0-2.378 1.09-2.378 2.591 0 1.502.958 2.592 2.378 2.592 1.452 0 2.394-1.107 2.394-2.591 0-1.485-.94-2.592-2.393-2.592h-.001ZM70 15.441h1.814V6.89h-1.817v1.227c-.546-.897-1.552-1.426-2.89-1.426-2.525 0-3.96 2.033-3.96 4.478s1.437 4.476 3.962 4.476c1.336 0 2.345-.534 2.89-1.426v1.222Zm-.068-4.276c0 1.537-.908 2.742-2.411 2.742-1.486 0-2.411-1.206-2.411-2.742 0-1.535.907-2.74 2.411-2.74s2.411 1.204 2.411 2.74Zm3.448-6.52h1.964v2.228h1.602v1.569h-1.602v4.326c0 .676.282 1.007.958 1.007a2.42 2.42 0 0 0 .611-.083v1.701a4.31 4.31 0 0 1-1.023.099c-1.75 0-2.51-.907-2.51-2.526V4.644Zm8.474 9.311c-1.371 0-2.246-.874-2.395-2.228h6.524s.017-.298.017-.612c0-2.51-1.668-4.441-4.211-4.441s-4.26 1.98-4.26 4.475c0 2.559 1.684 4.49 4.276 4.49 1.997 0 3.516-1.204 4.028-2.905h-1.981c-.314.759-1.091 1.221-1.998 1.221Zm2.196-3.682h-4.557c.198-1.173 1.024-1.998 2.295-1.998 1.27 0 2.097.81 2.262 1.998Z\" fill=\"#fff\"/></svg>',transformTemplate:transformTemplate1,withExternalLayout:true})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-197s55\",\"data-framer-name\":\"Button Group\",layoutDependency:layoutDependency,layoutId:\"VsccftyQv\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:34,width:`max((${componentViewport?.width||\"100vw\"} - 40px) / 2, 1px)`,y:(componentViewport?.y||0)+0+56+8,children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-15s9g7e-container\",layoutDependency:layoutDependency,layoutId:\"jG9b9PBua-container\",children:/*#__PURE__*/_jsx(ButtonsButton,{CiwGQDcAN:\"BNbfbktEW\",csPpyV4tk:\"m9F2Vlw0F\",DZNn6_WWp:\"https://auth.twingate.com/signup\",FdDV8gLxh:\"var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95))\",gW2IdKNHn:\"Try Twingate\",height:\"100%\",id:\"jG9b9PBua\",layoutId:\"jG9b9PBua\",OA2ahGR0N:false,style:{height:\"100%\",width:\"100%\"},uirRaCarc:true,Urz2Ffy21:\"Terraform\",variant:\"YD2gIXV2L\",width:\"100%\",WJoF2TywT:\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\",xjfxHTVGH:false,...addPropertyOverrides({MwreIT4I3:{DZNn6_WWp:\"https://auth.twingate.com/msp-signup\"}},baseVariant,gestureVariant)})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"Sgazhdlve\"},implicitPathVariables:undefined},{href:{webPageId:\"fM499XwEy\"},implicitPathVariables:undefined}],children:resolvedLinks=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:34,width:`max((${componentViewport?.width||\"100vw\"} - 40px) / 2, 1px)`,y:(componentViewport?.y||0)+0+56+8,children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1id1yzv-container\",layoutDependency:layoutDependency,layoutId:\"EuvBHJDpb-container\",children:/*#__PURE__*/_jsx(ButtonsButton,{CiwGQDcAN:\"BNbfbktEW\",csPpyV4tk:\"m9F2Vlw0F\",DZNn6_WWp:resolvedLinks[0],FdDV8gLxh:\"var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95))\",gW2IdKNHn:\"Request a Demo\",height:\"100%\",id:\"EuvBHJDpb\",layoutId:\"EuvBHJDpb\",OA2ahGR0N:false,style:{height:\"100%\",width:\"100%\"},uirRaCarc:true,Urz2Ffy21:\"Terraform\",variant:\"L82Oy0Uy8\",width:\"100%\",WJoF2TywT:\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\",xjfxHTVGH:false,...addPropertyOverrides({MwreIT4I3:{DZNn6_WWp:resolvedLinks[1]}},baseVariant,gestureVariant)})})})})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-uepd05\",\"data-framer-name\":\"Scroll List\",layoutDependency:layoutDependency,layoutId:\"L741wE384\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:48,width:componentViewport?.width||\"100vw\",y:(componentViewport?.y||0)+0+114+0+0,children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-189bpgp-container\",layoutDependency:layoutDependency,layoutId:\"gFSaVjyTX-container\",children:/*#__PURE__*/_jsx(NavMobileNavRow,{bp1wF9P5x:\"BDxO75PJh\",height:\"100%\",id:\"gFSaVjyTX\",layoutId:\"gFSaVjyTX\",n1VAzJUI_:\"Product\",style:{width:\"100%\"},variant:\"xd0WuXaRi\",width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:48,width:componentViewport?.width||\"100vw\",y:(componentViewport?.y||0)+0+114+0+48,children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-wufo2r-container\",layoutDependency:layoutDependency,layoutId:\"CsHk8oNw0-container\",children:/*#__PURE__*/_jsx(NavMobileNavRow,{bp1wF9P5x:\"v2XfKlbg_\",height:\"100%\",id:\"CsHk8oNw0\",layoutId:\"CsHk8oNw0\",n1VAzJUI_:\"Docs\",style:{width:\"100%\"},variant:\"xd0WuXaRi\",width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:48,width:componentViewport?.width||\"100vw\",y:(componentViewport?.y||0)+0+114+0+96,children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1tyr82n-container\",layoutDependency:layoutDependency,layoutId:\"ctidGw8_x-container\",children:/*#__PURE__*/_jsx(NavMobileNavRow,{bp1wF9P5x:\"ywtKlFKo7\",height:\"100%\",id:\"ctidGw8_x\",layoutId:\"ctidGw8_x\",n1VAzJUI_:\"Customers\",style:{width:\"100%\"},variant:\"xd0WuXaRi\",width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:48,width:componentViewport?.width||\"100vw\",y:(componentViewport?.y||0)+0+114+0+144,children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-a3j9me-container\",layoutDependency:layoutDependency,layoutId:\"U8sY9JJX1-container\",children:/*#__PURE__*/_jsx(NavMobileNavRow,{bp1wF9P5x:\"O5olfCWLm\",height:\"100%\",id:\"U8sY9JJX1\",layoutId:\"U8sY9JJX1\",n1VAzJUI_:\"Resources\",style:{width:\"100%\"},variant:\"xd0WuXaRi\",width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:48,width:componentViewport?.width||\"100vw\",y:(componentViewport?.y||0)+0+114+0+192,children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-199x6u9-container\",layoutDependency:layoutDependency,layoutId:\"U2Yx5n14P-container\",children:/*#__PURE__*/_jsx(NavMobileNavRow,{bp1wF9P5x:\"RpKkYqfkq\",height:\"100%\",id:\"U2Yx5n14P\",layoutId:\"U2Yx5n14P\",n1VAzJUI_:\"Partners\",style:{width:\"100%\"},variant:\"xd0WuXaRi\",width:\"100%\"})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"HDyY4Pa7U\"},implicitPathVariables:undefined},{href:{webPageId:\"HDyY4Pa7U\"},implicitPathVariables:undefined}],children:resolvedLinks1=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:48,width:componentViewport?.width||\"100vw\",y:(componentViewport?.y||0)+0+114+0+240,children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1bkm3rs-container\",layoutDependency:layoutDependency,layoutId:\"gUFMXpguo-container\",children:/*#__PURE__*/_jsx(NavMobileNavRow,{bp1wF9P5x:\"BDxO75PJh\",height:\"100%\",id:\"gUFMXpguo\",layoutId:\"gUFMXpguo\",n1VAzJUI_:\"Pricing\",style:{width:\"100%\"},u51ZvRHqi:resolvedLinks1[0],variant:\"S1HgDZL8w\",width:\"100%\",...addPropertyOverrides({MwreIT4I3:{u51ZvRHqi:resolvedLinks1[1]}},baseVariant,gestureVariant)})})})})]}),/*#__PURE__*/_jsx(MotionDivWithShowIfTenants,{className:\"framer-vb14vd\",\"data-framer-name\":\"Footer\",layoutDependency:layoutDependency,layoutId:\"SRYtWU19b\",children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-lcn4pa\",\"data-border\":true,\"data-framer-name\":\"Tenant Popover\",layoutDependency:layoutDependency,layoutId:\"HybTm4a62\",style:{\"--border-bottom-width\":\"0.5px\",\"--border-color\":\"var(--token-66d0cf7b-9eb8-4245-b770-5d2d61dad950, rgba(245, 245, 255, 0.1))\",\"--border-left-width\":\"0.5px\",\"--border-right-width\":\"0.5px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0.5px\",backdropFilter:\"blur(40px)\",backgroundColor:\"var(--token-66d0cf7b-9eb8-4245-b770-5d2d61dad950, rgba(245, 245, 255, 0.1))\",borderBottomLeftRadius:10,borderBottomRightRadius:10,borderTopLeftRadius:10,borderTopRightRadius:10,boxShadow:\"0px 0.6021873017743928px 0.6021873017743928px -1.25px rgba(0, 0, 0, 0.17997), 0px 2.288533303243457px 2.288533303243457px -2.5px rgba(0, 0, 0, 0.15889), 0px 10px 10px -3.75px rgba(0, 0, 0, 0.0625), inset 0px 0.5px 0px 0px rgba(255, 255, 255, 0.05)\",WebkitBackdropFilter:\"blur(40px)\"},children:[/*#__PURE__*/_jsxs(MotionDivTenantRows,{className:\"framer-izvvad\",layoutDependency:layoutDependency,layoutId:\"Rm1UhLUdH\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:44,width:`calc(${componentViewport?.width||\"100vw\"} - 36px)`,y:(componentViewport?.y||0)+0+402+12+0+6+0+0+0,children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-mohiny-container\",layoutDependency:layoutDependency,layoutId:\"VM1FYFr7o-container\",children:/*#__PURE__*/_jsx(NavTenantRow,{height:\"100%\",id:\"VM1FYFr7o\",layoutId:\"VM1FYFr7o\",n9wmhVubQ:\"<tenantSlugCouldBeSuperDuperLong>.twingate.com\",OnZ_3axVX:\"TenantName\",QBgC5od6m:\"Z\",style:{width:\"100%\"},width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:44,width:`calc(${componentViewport?.width||\"100vw\"} - 36px)`,y:(componentViewport?.y||0)+0+402+12+0+6+0+0+44,children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-wojkhx-container\",layoutDependency:layoutDependency,layoutId:\"Q2_bcvyTa-container\",children:/*#__PURE__*/_jsx(NavTenantRow,{height:\"100%\",id:\"Q2_bcvyTa\",layoutId:\"Q2_bcvyTa\",n9wmhVubQ:\"<tenantSlugCouldBeSuperDuperLong>.twingate.com\",OnZ_3axVX:\"TenantName\",QBgC5od6m:\"Z\",style:{width:\"100%\"},width:\"100%\"})})})]}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1fycsre\",\"data-framer-name\":\"Divider\",layoutDependency:layoutDependency,layoutId:\"D7aJUIk95\",children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-atxlij\",\"data-border\":true,\"data-framer-name\":\"Line\",layoutDependency:layoutDependency,layoutId:\"gddh31R0o\",style:{\"--border-bottom-width\":\"0px\",\"--border-color\":\"rgba(255, 255, 255, 0.1)\",\"--border-left-width\":\"0px\",\"--border-right-width\":\"0px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0.5px\"}})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1ahrq0a\",\"data-framer-name\":\"Button Group\",layoutDependency:layoutDependency,layoutId:\"CvAFMahOA\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:32,width:`max((${componentViewport?.width||\"100vw\"} - 56px) / 2, 1px)`,y:(componentViewport?.y||0)+0+402+12+0+6+100+6,children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-5x90m1-container\",layoutDependency:layoutDependency,layoutId:\"ZcSrWH6Lr-container\",children:/*#__PURE__*/_jsx(ButtonsMenuButton,{height:\"100%\",id:\"ZcSrWH6Lr\",jGReyLla_:\"Create Network\",layoutId:\"ZcSrWH6Lr\",style:{width:\"100%\"},uVJDdqVqp:\"https://auth.twingate.com/signup\",width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:32,width:`max((${componentViewport?.width||\"100vw\"} - 56px) / 2, 1px)`,y:(componentViewport?.y||0)+0+402+12+0+6+100+6,children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-ajvnmd-container\",layoutDependency:layoutDependency,layoutId:\"oRmZeQ5hg-container\",children:/*#__PURE__*/_jsx(ButtonsMenuButton,{height:\"100%\",id:\"oRmZeQ5hg\",jGReyLla_:\"Find Network\",layoutId:\"oRmZeQ5hg\",style:{width:\"100%\"},uVJDdqVqp:\"https://auth.twingate.com\",width:\"100%\"})})})]})]})})]})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-aMVT0.framer-vw4i4q, .framer-aMVT0 .framer-vw4i4q { display: block; }\",\".framer-aMVT0.framer-dwc2lq { align-content: flex-start; align-items: flex-start; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; padding: 0px 0px 12px 0px; position: relative; width: 400px; }\",\".framer-aMVT0 .framer-uukeo2 { flex: none; height: 56px; overflow: hidden; position: relative; width: 100%; z-index: 1; }\",\".framer-aMVT0 .framer-1d47s3m { cursor: pointer; flex: none; height: 34px; overflow: hidden; position: absolute; right: 8px; top: calc(50.00000000000002% - 34px / 2); width: 37px; will-change: var(--framer-will-change-override, transform); }\",\".framer-aMVT0 .framer-1l7am1w { flex: none; height: 24px; left: calc(50.00000000000002% - 24px / 2); position: absolute; top: calc(50.00000000000002% - 24px / 2); width: 24px; }\",\".framer-aMVT0 .framer-ygc02 { aspect-ratio: 4.3 / 1; flex: none; height: var(--framer-aspect-ratio-supported, 20px); left: 18px; position: absolute; top: 50%; width: 86px; }\",\".framer-aMVT0 .framer-197s55 { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 8px; height: min-content; justify-content: flex-start; overflow: hidden; padding: 8px 16px 16px 16px; position: relative; width: 100%; }\",\".framer-aMVT0 .framer-15s9g7e-container, .framer-aMVT0 .framer-1id1yzv-container { flex: 1 0 0px; height: 34px; position: relative; width: 1px; }\",\".framer-aMVT0 .framer-uepd05 { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; max-height: 500px; overflow: auto; padding: 0px; position: relative; width: 100%; }\",\".framer-aMVT0 .framer-189bpgp-container, .framer-aMVT0 .framer-wufo2r-container, .framer-aMVT0 .framer-1tyr82n-container, .framer-aMVT0 .framer-a3j9me-container, .framer-aMVT0 .framer-199x6u9-container, .framer-aMVT0 .framer-1bkm3rs-container, .framer-aMVT0 .framer-mohiny-container, .framer-aMVT0 .framer-wojkhx-container { flex: none; height: auto; position: relative; width: 100%; }\",\".framer-aMVT0 .framer-vb14vd { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 16px; height: min-content; justify-content: flex-start; overflow: visible; padding: 12px 12px 0px 12px; position: relative; width: 100%; }\",\".framer-aMVT0 .framer-lcn4pa { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; padding: 6px; position: relative; width: 100%; z-index: 1; }\",\".framer-aMVT0 .framer-izvvad { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-aMVT0 .framer-1fycsre { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: 12px; justify-content: center; overflow: visible; padding: 6px; position: relative; width: 100%; }\",\".framer-aMVT0 .framer-atxlij { flex: none; height: 1px; overflow: visible; position: relative; width: 100%; }\",\".framer-aMVT0 .framer-1ahrq0a { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 8px; height: min-content; justify-content: flex-start; overflow: hidden; padding: 6px; position: relative; width: 100%; }\",\".framer-aMVT0 .framer-5x90m1-container, .framer-aMVT0 .framer-ajvnmd-container { flex: 1 0 0px; height: auto; position: relative; width: 1px; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-aMVT0.framer-dwc2lq, .framer-aMVT0 .framer-197s55, .framer-aMVT0 .framer-uepd05, .framer-aMVT0 .framer-vb14vd, .framer-aMVT0 .framer-lcn4pa, .framer-aMVT0 .framer-izvvad, .framer-aMVT0 .framer-1fycsre, .framer-aMVT0 .framer-1ahrq0a { gap: 0px; } .framer-aMVT0.framer-dwc2lq > *, .framer-aMVT0 .framer-uepd05 > *, .framer-aMVT0 .framer-lcn4pa > *, .framer-aMVT0 .framer-izvvad > *, .framer-aMVT0 .framer-1fycsre > * { margin: 0px; margin-bottom: calc(0px / 2); margin-top: calc(0px / 2); } .framer-aMVT0.framer-dwc2lq > :first-child, .framer-aMVT0 .framer-uepd05 > :first-child, .framer-aMVT0 .framer-vb14vd > :first-child, .framer-aMVT0 .framer-lcn4pa > :first-child, .framer-aMVT0 .framer-izvvad > :first-child, .framer-aMVT0 .framer-1fycsre > :first-child { margin-top: 0px; } .framer-aMVT0.framer-dwc2lq > :last-child, .framer-aMVT0 .framer-uepd05 > :last-child, .framer-aMVT0 .framer-vb14vd > :last-child, .framer-aMVT0 .framer-lcn4pa > :last-child, .framer-aMVT0 .framer-izvvad > :last-child, .framer-aMVT0 .framer-1fycsre > :last-child { margin-bottom: 0px; } .framer-aMVT0 .framer-197s55 > *, .framer-aMVT0 .framer-1ahrq0a > * { margin: 0px; margin-left: calc(8px / 2); margin-right: calc(8px / 2); } .framer-aMVT0 .framer-197s55 > :first-child, .framer-aMVT0 .framer-1ahrq0a > :first-child { margin-left: 0px; } .framer-aMVT0 .framer-197s55 > :last-child, .framer-aMVT0 .framer-1ahrq0a > :last-child { margin-right: 0px; } .framer-aMVT0 .framer-vb14vd > * { margin: 0px; margin-bottom: calc(16px / 2); margin-top: calc(16px / 2); } }\",'.framer-aMVT0[data-border=\"true\"]::after, .framer-aMVT0 [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; pointer-events: none; }'];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 582\n * @framerIntrinsicWidth 400\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]},\"MwreIT4I3\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerVariables {\"lFvMJ0SS0\":\"tapClose\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerjtDh_M46J=withCSS(Component,css,\"framer-aMVT0\");export default FramerjtDh_M46J;FramerjtDh_M46J.displayName=\"Nav / Mobile Nav\";FramerjtDh_M46J.defaultProps={height:582,width:400};addPropertyControls(FramerjtDh_M46J,{variant:{options:[\"gYbO3EfpD\",\"MwreIT4I3\"],optionTitles:[\"Default\",\"MSP\"],title:\"Variant\",type:ControlType.Enum},lFvMJ0SS0:{title:\"Tap Close\",type:ControlType.EventHandler}});addFonts(FramerjtDh_M46J,[{explicitInter:true,fonts:[]},...ButtonsButtonFonts,...NavMobileNavRowFonts,...NavTenantRowFonts,...ButtonsMenuButtonFonts],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerjtDh_M46J\",\"slots\":[],\"annotations\":{\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"MwreIT4I3\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"582\",\"framerIntrinsicWidth\":\"400\",\"framerImmutableVariables\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerComponentViewportWidth\":\"true\",\"framerVariables\":\"{\\\"lFvMJ0SS0\\\":\\\"tapClose\\\"}\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}", "// Generated by Framer (cf4c6d7)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,ComponentViewportProvider,cx,getFonts,getFontsFromSharedStyle,RichText,SmartComponentScopedContainer,SVG,useComponentViewport,useLocaleInfo,useVariantState,withCodeBoundaryForOverrides,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import{tenantRows}from\"https://framerusercontent.com/modules/pdRBrxZgIyvBss2CqANa/GwPe7hhMcRcQI7SMcoIS/TenantChecks.js\";import*as sharedStyle from\"https://framerusercontent.com/modules/8D5Yrl7noAgh91Nqk8Op/33BzxBWnQs99wRDuXfcP/M6hbwtZyh.js\";import NavTenantRow from\"https://framerusercontent.com/modules/HLOjcBuHUk2SohwWmcNb/794WP057oNa6VAyST9B8/PjC4CsJaK.js\";import ButtonsMenuButton from\"https://framerusercontent.com/modules/HUBYTwKFByzjWw3oHGyL/RO1c3jYHv3saoZbGS7g5/Qa82X1Z0U.js\";const NavTenantRowFonts=getFonts(NavTenantRow);const MotionDivTenantRows5gk6b=withCodeBoundaryForOverrides(motion.div,{nodeId:\"MaBaaXsrG\",override:tenantRows,scopeId:\"OIB1sWCoj\"});const ButtonsMenuButtonFonts=getFonts(ButtonsMenuButton);const enabledGestures={q7PHv3L2E:{hover:true}};const serializationHash=\"framer-ODkxC\";const variantClassNames={q7PHv3L2E:\"framer-v-j4ce7i\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={duration:0,type:\"tween\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const getProps=({height,id,width,...props})=>{return{...props};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"q7PHv3L2E\",enabledGestures,ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[sharedStyle.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);const isDisplayed=()=>{if(gestureVariant===\"q7PHv3L2E-hover\")return true;return false;};return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-j4ce7i\",className,classNames),\"data-framer-name\":\"Default\",layoutDependency:layoutDependency,layoutId:\"q7PHv3L2E\",ref:refBinding,style:{...style},...addPropertyOverrides({\"q7PHv3L2E-hover\":{\"data-framer-name\":undefined}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-cmenor\",\"data-border\":true,\"data-framer-name\":\"Button\",layoutDependency:layoutDependency,layoutId:\"QTWsjT_vk\",style:{\"--border-bottom-width\":\"0px\",\"--border-color\":\"var(--token-2b080329-29ba-481c-ac92-832881069b36, rgba(255, 255, 255, 0.05))\",\"--border-left-width\":\"0.5px\",\"--border-right-width\":\"0.5px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0.5px\",backgroundColor:\"rgba(255, 255, 255, 0.1)\",borderBottomLeftRadius:50,borderBottomRightRadius:50,borderTopLeftRadius:50,borderTopRightRadius:50,boxShadow:\"inset 0px 2.5px 0px -2px var(--token-2b080329-29ba-481c-ac92-832881069b36, rgba(255, 255, 255, 0.1))\"},children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-87abjg\",\"data-styles-preset\":\"M6hbwtZyh\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255)))\"},children:\"Launch Twingate\"})}),className:\"framer-1vdzlzb\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"icZHLVGDh\",style:{\"--extracted-r6o4lv\":\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-lxzq2k\",layoutDependency:layoutDependency,layoutId:\"tUrnIK7Xm\",style:{rotate:0},variants:{\"q7PHv3L2E-hover\":{rotate:180}},children:/*#__PURE__*/_jsx(SVG,{className:\"framer-16st72h\",\"data-framer-name\":\"Chevron \u2013\\xa0Down\",layout:\"position\",layoutDependency:layoutDependency,layoutId:\"v125ugmLJ\",opacity:1,style:{backgroundColor:\"rgba(0, 0, 0, 0)\"},svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 24 24\"><path d=\"M 12 13.439 L 15.97 9.47 L 17.03 10.53 L 12 15.561 L 6.97 10.53 L 8.03 9.47 Z\" fill=\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\"></path></svg>',svgContentId:9195755789,withExternalLayout:true})})]}),isDisplayed()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1fiksj3\",\"data-border\":true,\"data-framer-name\":\"Dropdown\",layoutDependency:layoutDependency,layoutId:\"I0M9YCBcc\",style:{\"--border-bottom-width\":\"0.5px\",\"--border-color\":\"var(--token-66d0cf7b-9eb8-4245-b770-5d2d61dad950, rgba(245, 245, 255, 0.1))\",\"--border-left-width\":\"0.5px\",\"--border-right-width\":\"0.5px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0.5px\",backdropFilter:\"blur(40px)\",backgroundColor:\"var(--token-66d0cf7b-9eb8-4245-b770-5d2d61dad950, rgba(245, 245, 255, 0.1))\",borderBottomLeftRadius:10,borderBottomRightRadius:10,borderTopLeftRadius:10,borderTopRightRadius:10,boxShadow:\"0px 0.6021873017743928px 0.6021873017743928px -1.25px rgba(0, 0, 0, 0.17997), 0px 2.288533303243457px 2.288533303243457px -2.5px rgba(0, 0, 0, 0.15889), 0px 10px 10px -3.75px rgba(0, 0, 0, 0.0625), inset 0px 0.5px 0px 0px rgba(255, 255, 255, 0.05)\",opacity:0,WebkitBackdropFilter:\"blur(40px)\"},variants:{\"q7PHv3L2E-hover\":{opacity:1}},children:[/*#__PURE__*/_jsxs(MotionDivTenantRows5gk6b,{className:\"framer-5gk6b\",layoutDependency:layoutDependency,layoutId:\"MaBaaXsrG\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:44,...addPropertyOverrides({\"q7PHv3L2E-hover\":{y:(componentViewport?.y||0)+0+42+6+0+0+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1mhid6h-container\",layoutDependency:layoutDependency,layoutId:\"unfpETMYS-container\",nodeId:\"unfpETMYS\",rendersWithMotion:true,scopeId:\"OIB1sWCoj\",children:/*#__PURE__*/_jsx(NavTenantRow,{height:\"100%\",id:\"unfpETMYS\",layoutId:\"unfpETMYS\",n9wmhVubQ:\"<tenantSlugCouldBeSuperDuperLong>.twingate.com\",OnZ_3axVX:\"TenantName\",QBgC5od6m:\"Z\",style:{width:\"100%\"},width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:44,...addPropertyOverrides({\"q7PHv3L2E-hover\":{y:(componentViewport?.y||0)+0+42+6+0+0+44}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-17gwnza-container\",layoutDependency:layoutDependency,layoutId:\"NooMu7Ily-container\",nodeId:\"NooMu7Ily\",rendersWithMotion:true,scopeId:\"OIB1sWCoj\",children:/*#__PURE__*/_jsx(NavTenantRow,{height:\"100%\",id:\"NooMu7Ily\",layoutId:\"NooMu7Ily\",n9wmhVubQ:\"<tenantSlugCouldBeSuperDuperLong>.twingate.com\",OnZ_3axVX:\"TenantName\",QBgC5od6m:\"Z\",style:{width:\"100%\"},width:\"100%\"})})})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-xcfthe\",\"data-framer-name\":\"Button Group\",layoutDependency:layoutDependency,layoutId:\"R_ERd5DwF\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:32,...addPropertyOverrides({\"q7PHv3L2E-hover\":{y:(componentViewport?.y||0)+0+42+6+98+6}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1j05knv-container\",layoutDependency:layoutDependency,layoutId:\"pHAHGpdu1-container\",nodeId:\"pHAHGpdu1\",rendersWithMotion:true,scopeId:\"OIB1sWCoj\",children:/*#__PURE__*/_jsx(ButtonsMenuButton,{height:\"100%\",id:\"pHAHGpdu1\",jGReyLla_:\"Create Network\",layoutId:\"pHAHGpdu1\",style:{width:\"100%\"},uVJDdqVqp:\"https://auth.twingate.com/signup\",width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:32,...addPropertyOverrides({\"q7PHv3L2E-hover\":{y:(componentViewport?.y||0)+0+42+6+98+6}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-o1azpg-container\",layoutDependency:layoutDependency,layoutId:\"irG1bC70M-container\",nodeId:\"irG1bC70M\",rendersWithMotion:true,scopeId:\"OIB1sWCoj\",children:/*#__PURE__*/_jsx(ButtonsMenuButton,{height:\"100%\",id:\"irG1bC70M\",jGReyLla_:\"Find Network\",layoutId:\"irG1bC70M\",style:{width:\"100%\"},uVJDdqVqp:\"https://auth.twingate.com\",width:\"100%\"})})})]}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1v7408s\",\"data-framer-name\":\"Divider\",layoutDependency:layoutDependency,layoutId:\"rF46q2_D_\",children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-labx2q\",\"data-border\":true,\"data-framer-name\":\"Line\",layoutDependency:layoutDependency,layoutId:\"TUeJTBzdk\",style:{\"--border-bottom-width\":\"0px\",\"--border-color\":\"rgba(255, 255, 255, 0.1)\",\"--border-left-width\":\"0px\",\"--border-right-width\":\"0px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0.5px\"}})})]})]})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-ODkxC.framer-rayoxy, .framer-ODkxC .framer-rayoxy { display: block; }\",\".framer-ODkxC.framer-j4ce7i { align-content: flex-end; align-items: flex-end; cursor: pointer; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 8px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 160px; }\",\".framer-ODkxC .framer-cmenor { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 1px; height: 34px; justify-content: center; overflow: visible; padding: 0px 8px 0px 12px; position: relative; width: min-content; }\",\".framer-ODkxC .framer-1vdzlzb { -webkit-user-select: none; cursor: default; flex: none; height: auto; position: relative; user-select: none; white-space: pre; width: auto; }\",\".framer-ODkxC .framer-lxzq2k { flex: none; height: 24px; overflow: visible; position: relative; width: 25px; }\",\".framer-ODkxC .framer-16st72h { flex: none; height: 24px; left: calc(48.00000000000002% - 24px / 2); position: absolute; top: calc(50.00000000000002% - 24px / 2); width: 24px; }\",\".framer-ODkxC .framer-1fiksj3 { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; min-width: 280px; padding: 6px; position: relative; width: min-content; z-index: 1; }\",\".framer-ODkxC .framer-5gk6b { align-content: flex-start; align-items: flex-start; align-self: stretch; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: auto; }\",\".framer-ODkxC .framer-1mhid6h-container, .framer-ODkxC .framer-17gwnza-container { flex: none; height: auto; position: relative; width: 100%; }\",\".framer-ODkxC .framer-xcfthe { align-content: center; align-items: center; align-self: stretch; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 8px; height: min-content; justify-content: flex-start; overflow: hidden; padding: 6px; position: relative; width: auto; }\",\".framer-ODkxC .framer-1j05knv-container, .framer-ODkxC .framer-o1azpg-container { flex: 1 0 0px; height: auto; position: relative; width: 1px; }\",\".framer-ODkxC .framer-1v7408s { align-content: center; align-items: center; align-self: stretch; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: 10px; justify-content: center; overflow: visible; padding: 6px; position: relative; width: auto; }\",\".framer-ODkxC .framer-labx2q { flex: none; height: 1px; overflow: visible; position: relative; width: 100%; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-ODkxC.framer-j4ce7i, .framer-ODkxC .framer-cmenor, .framer-ODkxC .framer-1fiksj3, .framer-ODkxC .framer-5gk6b, .framer-ODkxC .framer-xcfthe, .framer-ODkxC .framer-1v7408s { gap: 0px; } .framer-ODkxC.framer-j4ce7i > * { margin: 0px; margin-bottom: calc(8px / 2); margin-top: calc(8px / 2); } .framer-ODkxC.framer-j4ce7i > :first-child, .framer-ODkxC .framer-1fiksj3 > :first-child, .framer-ODkxC .framer-5gk6b > :first-child, .framer-ODkxC .framer-1v7408s > :first-child { margin-top: 0px; } .framer-ODkxC.framer-j4ce7i > :last-child, .framer-ODkxC .framer-1fiksj3 > :last-child, .framer-ODkxC .framer-5gk6b > :last-child, .framer-ODkxC .framer-1v7408s > :last-child { margin-bottom: 0px; } .framer-ODkxC .framer-cmenor > * { margin: 0px; margin-left: calc(1px / 2); margin-right: calc(1px / 2); } .framer-ODkxC .framer-cmenor > :first-child, .framer-ODkxC .framer-xcfthe > :first-child { margin-left: 0px; } .framer-ODkxC .framer-cmenor > :last-child, .framer-ODkxC .framer-xcfthe > :last-child { margin-right: 0px; } .framer-ODkxC .framer-1fiksj3 > *, .framer-ODkxC .framer-5gk6b > *, .framer-ODkxC .framer-1v7408s > * { margin: 0px; margin-bottom: calc(0px / 2); margin-top: calc(0px / 2); } .framer-ODkxC .framer-xcfthe > * { margin: 0px; margin-left: calc(8px / 2); margin-right: calc(8px / 2); } }\",\".framer-ODkxC.framer-v-j4ce7i.hover .framer-5gk6b { order: 0; }\",\".framer-ODkxC.framer-v-j4ce7i.hover .framer-xcfthe { order: 2; }\",\".framer-ODkxC.framer-v-j4ce7i.hover .framer-1v7408s { order: 1; }\",...sharedStyle.css,'.framer-ODkxC[data-border=\"true\"]::after, .framer-ODkxC [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; pointer-events: none; }'];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 34\n * @framerIntrinsicWidth 160\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]},\"FJKRqWOgD\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerOIB1sWCoj=withCSS(Component,css,\"framer-ODkxC\");export default FramerOIB1sWCoj;FramerOIB1sWCoj.displayName=\"Nav / LaunchTwingateButton\";FramerOIB1sWCoj.defaultProps={height:34,width:160};addFonts(FramerOIB1sWCoj,[{explicitInter:true,fonts:[{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/5vvr9Vy74if2I6bQbJvbw7SY1pQ.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/EOr0mi4hNtlgWNn9if640EZzXCo.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/Y9k9QrlZAqio88Klkmbd8VoMQc.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/OYrD2tBIBPvoJXiIHnLoOXnY9M.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/JeYwfuaPfZHQhEG8U5gtPDZ7WQ.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/vQyevYAyHtARFwPqUzQGpnDs.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/b6Y37FthZeALduNqHicBT6FutY.woff2\",weight:\"400\"}]},...NavTenantRowFonts,...ButtonsMenuButtonFonts,...getFontsFromSharedStyle(sharedStyle.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerOIB1sWCoj\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"FJKRqWOgD\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerIntrinsicHeight\":\"34\",\"framerDisplayContentsDiv\":\"false\",\"framerComponentViewportWidth\":\"true\",\"framerImmutableVariables\":\"true\",\"framerIntrinsicWidth\":\"160\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}", "// Generated by Framer (575e68f)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,ResolveLinks,SVG,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useRouter,useVariantState,withCSS,withMappedReactProps}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{withHideIfTenants,withShowIfTenants}from\"https://framerusercontent.com/modules/pdRBrxZgIyvBss2CqANa/GwPe7hhMcRcQI7SMcoIS/TenantChecks.js\";import ButtonsButton,*as ButtonsButtonInfo from\"https://framerusercontent.com/modules/7AM6DNYiokdKmR3FgvBn/DNb9r8GouMuBcZXr5kzS/AiU29R1w5.js\";import NavLaunchTwingateButton,*as NavLaunchTwingateButtonInfo from\"https://framerusercontent.com/modules/a6DfdqVVfgEK1lKSj4Np/D0GpDJ0nXNlwicdp34NE/OIB1sWCoj.js\";const ButtonsButtonFonts=getFonts(ButtonsButton);const ButtonsButtonWithHideIfTenantsWithMappedReactPropsmf7a38=withMappedReactProps(withHideIfTenants(ButtonsButton),ButtonsButtonInfo);const NavLaunchTwingateButtonFonts=getFonts(NavLaunchTwingateButton);const NavLaunchTwingateButtonWithShowIfTenantsWithMappedReactPropspjn4ln=withMappedReactProps(withShowIfTenants(NavLaunchTwingateButton),NavLaunchTwingateButtonInfo);const cycleOrder=[\"f1fa5L71s\",\"NUfbp9gV9\",\"We5skBAdz\",\"HoUu2fI1L\"];const serializationHash=\"framer-RUiLD\";const variantClassNames={f1fa5L71s:\"framer-v-1wqkj84\",HoUu2fI1L:\"framer-v-g45bxt\",NUfbp9gV9:\"framer-v-1jbok7i\",We5skBAdz:\"framer-v-98atrw\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={duration:0,type:\"tween\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion(React.Fragment);const humanReadableVariantMap={\"Desktop - MSP\":\"HoUu2fI1L\",\"Desktop \u2013\\xa0Home\":\"NUfbp9gV9\",Desktop:\"f1fa5L71s\",Phone:\"We5skBAdz\"};const getProps=({height,id,tapMenu,width,...props})=>{return{...props,jnvUEL2ut:tapMenu??props.jnvUEL2ut,variant:humanReadableVariantMap[props.variant]??props.variant??\"f1fa5L71s\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,jnvUEL2ut,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"f1fa5L71s\",variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onTap1gidreh=activeVariantCallback(async(...args)=>{if(jnvUEL2ut){const res=await jnvUEL2ut(...args);if(res===false)return false;}});const ref1=React.useRef(null);const isDisplayed=()=>{if(baseVariant===\"We5skBAdz\")return false;return true;};const isDisplayed1=()=>{if(baseVariant===\"NUfbp9gV9\")return false;return true;};const router=useRouter();const isDisplayed2=()=>{if(baseVariant===\"We5skBAdz\")return true;return false;};const defaultLayoutId=React.useId();const sharedStyleClassNames=[];const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(serializationHash,...sharedStyleClassNames,\"framer-1wqkj84\",className,classNames),\"data-framer-name\":\"Desktop\",layoutDependency:layoutDependency,layoutId:\"f1fa5L71s\",ref:ref??ref1,style:{...style},...addPropertyOverrides({HoUu2fI1L:{\"data-framer-name\":\"Desktop - MSP\"},NUfbp9gV9:{\"data-framer-name\":\"Desktop \u2013\\xa0Home\"},We5skBAdz:{\"data-framer-name\":\"Phone\"}},baseVariant,gestureVariant),children:[isDisplayed()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-eg1yqn\",\"data-framer-name\":\"Desktop Buttons\",layoutDependency:layoutDependency,layoutId:\"HkCHyMeBV\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-psmp3u\",\"data-framer-name\":\"Button Container\",layoutDependency:layoutDependency,layoutId:\"m8s3gX_Wm\",children:isDisplayed1()&&/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-18mgjrp-container\",layoutDependency:layoutDependency,layoutId:\"IhouAbcgA-container\",children:/*#__PURE__*/_jsx(ButtonsButton,{CiwGQDcAN:\"BNbfbktEW\",csPpyV4tk:\"m9F2Vlw0F\",DZNn6_WWp:\"https://auth.twingate.com/\",FdDV8gLxh:\"var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95))\",gW2IdKNHn:\"Sign in\",height:\"100%\",id:\"IhouAbcgA\",layoutId:\"IhouAbcgA\",OA2ahGR0N:false,style:{height:\"100%\"},uirRaCarc:true,Urz2Ffy21:\"Terraform\",variant:\"QOjFoD6FQ\",width:\"100%\",WJoF2TywT:\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\",xjfxHTVGH:false})})})}),isDisplayed1()&&/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"Sgazhdlve\"},implicitPathVariables:undefined},{href:{webPageId:\"fM499XwEy\"},implicitPathVariables:undefined}],children:resolvedLinks=>/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1wyvryc-container\",layoutDependency:layoutDependency,layoutId:\"za6QAwetU-container\",children:/*#__PURE__*/_jsx(ButtonsButton,{CiwGQDcAN:\"BNbfbktEW\",csPpyV4tk:\"m9F2Vlw0F\",DZNn6_WWp:resolvedLinks[0],FdDV8gLxh:\"var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95))\",gW2IdKNHn:\"Request Demo\",height:\"100%\",id:\"za6QAwetU\",layoutId:\"za6QAwetU\",OA2ahGR0N:false,style:{height:\"100%\"},uirRaCarc:true,Urz2Ffy21:\"Terraform\",variant:\"YD2gIXV2L\",width:\"100%\",WJoF2TywT:\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\",xjfxHTVGH:false,...addPropertyOverrides({HoUu2fI1L:{DZNn6_WWp:resolvedLinks[1]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1sgohm3\",\"data-framer-name\":\"Sign in or Launch\",layoutDependency:layoutDependency,layoutId:\"iJcCajo2U\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-77ehic-container\",layoutDependency:layoutDependency,layoutId:\"GV9CBfg6q-container\",children:/*#__PURE__*/_jsx(ButtonsButtonWithHideIfTenantsWithMappedReactPropsmf7a38,{CiwGQDcAN:\"BNbfbktEW\",csPpyV4tk:\"m9F2Vlw0F\",DZNn6_WWp:\"https://auth.twingate.com/signup\",FdDV8gLxh:\"var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95))\",gW2IdKNHn:\"Try for Free\",height:\"100%\",id:\"GV9CBfg6q\",layoutId:\"GV9CBfg6q\",OA2ahGR0N:false,style:{height:\"100%\"},uirRaCarc:true,Urz2Ffy21:\"Terraform\",variant:\"L82Oy0Uy8\",width:\"100%\",WJoF2TywT:\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\",xjfxHTVGH:false,...addPropertyOverrides({HoUu2fI1L:{DZNn6_WWp:\"https://auth.twingate.com/msp-signup\"}},baseVariant,gestureVariant)})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1hwiqrn-container\",layoutDependency:layoutDependency,layoutId:\"iCjXQ7Ugf-container\",children:/*#__PURE__*/_jsx(NavLaunchTwingateButtonWithShowIfTenantsWithMappedReactPropspjn4ln,{height:\"100%\",id:\"iCjXQ7Ugf\",layoutId:\"iCjXQ7Ugf\",width:\"100%\"})})})]})]}),isDisplayed2()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-hmx4q5\",\"data-framer-name\":\"Menu Button\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"kFQsAUtiV\",onTap:onTap1gidreh,style:{backgroundColor:\"rgba(240, 240, 240, 0.1)\",borderBottomLeftRadius:8,borderBottomRightRadius:8,borderTopLeftRadius:8,borderTopRightRadius:8},children:/*#__PURE__*/_jsx(SVG,{className:\"framer-1dq9oi8\",layout:\"position\",layoutDependency:layoutDependency,layoutId:\"VVbdbnFo6\",opacity:1,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 24 24\"><path d=\"M 3 7 C 3 6.448 3.448 6 4 6 L 20 6 C 20.552 6 21 6.448 21 7 L 21 7 C 21 7.552 20.552 8 20 8 L 4 8 C 3.448 8 3 7.552 3 7 Z\" fill=\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\"></path><path d=\"M 3 12 C 3 11.448 3.448 11 4 11 L 20 11 C 20.552 11 21 11.448 21 12 L 21 12 C 21 12.552 20.552 13 20 13 L 4 13 C 3.448 13 3 12.552 3 12 Z\" fill=\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\"></path><path d=\"M 3 17 C 3 16.448 3.448 16 4 16 L 20 16 C 20.552 16 21 16.448 21 17 L 21 17 C 21 17.552 20.552 18 20 18 L 4 18 C 3.448 18 3 17.552 3 17 Z\" fill=\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\"></path></svg>',svgContentId:11397363566,withExternalLayout:true})})]})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-RUiLD.framer-zyigmz, .framer-RUiLD .framer-zyigmz { display: block; }\",\".framer-RUiLD.framer-1wqkj84 { align-content: flex-start; align-items: flex-start; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-end; overflow: visible; padding: 0px; position: relative; width: 463px; }\",\".framer-RUiLD .framer-eg1yqn { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 8px; height: 34px; justify-content: center; overflow: visible; padding: 0px; position: relative; width: min-content; }\",\".framer-RUiLD .framer-psmp3u { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; overflow: visible; padding: 0px 8px 0px 0px; position: relative; width: min-content; }\",\".framer-RUiLD .framer-18mgjrp-container, .framer-RUiLD .framer-1wyvryc-container, .framer-RUiLD .framer-77ehic-container { flex: none; height: 34px; position: relative; width: auto; }\",\".framer-RUiLD .framer-1sgohm3 { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: min-content; }\",\".framer-RUiLD .framer-1hwiqrn-container { flex: none; height: auto; position: relative; width: auto; }\",\".framer-RUiLD .framer-hmx4q5 { cursor: pointer; flex: none; height: 34px; overflow: hidden; position: relative; width: 54px; will-change: var(--framer-will-change-override, transform); }\",\".framer-RUiLD .framer-1dq9oi8 { flex: none; height: 24px; left: calc(50.00000000000002% - 24px / 2); position: absolute; top: calc(50.00000000000002% - 24px / 2); width: 24px; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-RUiLD.framer-1wqkj84, .framer-RUiLD .framer-eg1yqn, .framer-RUiLD .framer-psmp3u, .framer-RUiLD .framer-1sgohm3 { gap: 0px; } .framer-RUiLD.framer-1wqkj84 > *, .framer-RUiLD .framer-psmp3u > *, .framer-RUiLD .framer-1sgohm3 > * { margin: 0px; margin-left: calc(0px / 2); margin-right: calc(0px / 2); } .framer-RUiLD.framer-1wqkj84 > :first-child, .framer-RUiLD .framer-eg1yqn > :first-child, .framer-RUiLD .framer-psmp3u > :first-child, .framer-RUiLD .framer-1sgohm3 > :first-child { margin-left: 0px; } .framer-RUiLD.framer-1wqkj84 > :last-child, .framer-RUiLD .framer-eg1yqn > :last-child, .framer-RUiLD .framer-psmp3u > :last-child, .framer-RUiLD .framer-1sgohm3 > :last-child { margin-right: 0px; } .framer-RUiLD .framer-eg1yqn > * { margin: 0px; margin-left: calc(8px / 2); margin-right: calc(8px / 2); } }\",\".framer-RUiLD.framer-v-1jbok7i.framer-1wqkj84 { width: 343px; }\",\".framer-RUiLD.framer-v-1jbok7i .framer-psmp3u { min-height: 34px; min-width: 101px; }\",\".framer-RUiLD.framer-v-1jbok7i .framer-1sgohm3 { justify-content: flex-end; }\",\".framer-RUiLD.framer-v-98atrw.framer-1wqkj84 { width: min-content; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 34\n * @framerIntrinsicWidth 463\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]},\"NUfbp9gV9\":{\"layout\":[\"fixed\",\"auto\"]},\"We5skBAdz\":{\"layout\":[\"auto\",\"auto\"]},\"HoUu2fI1L\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerVariables {\"jnvUEL2ut\":\"tapMenu\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const Framerm1Dw3gDw_=withCSS(Component,css,\"framer-RUiLD\");export default Framerm1Dw3gDw_;Framerm1Dw3gDw_.displayName=\"Nav / Primary Nav \u2013\\xa0Right\";Framerm1Dw3gDw_.defaultProps={height:34,width:463};addPropertyControls(Framerm1Dw3gDw_,{variant:{options:[\"f1fa5L71s\",\"NUfbp9gV9\",\"We5skBAdz\",\"HoUu2fI1L\"],optionTitles:[\"Desktop\",\"Desktop \u2013\\xa0Home\",\"Phone\",\"Desktop - MSP\"],title:\"Variant\",type:ControlType.Enum},jnvUEL2ut:{title:\"Tap Menu\",type:ControlType.EventHandler}});addFonts(Framerm1Dw3gDw_,[{explicitInter:true,fonts:[]},...ButtonsButtonFonts,...NavLaunchTwingateButtonFonts],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Framerm1Dw3gDw_\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"34\",\"framerContractVersion\":\"1\",\"framerImmutableVariables\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerVariables\":\"{\\\"jnvUEL2ut\\\":\\\"tapMenu\\\"}\",\"framerIntrinsicWidth\":\"463\",\"framerComponentViewportWidth\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"NUfbp9gV9\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"We5skBAdz\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"HoUu2fI1L\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}", "// Generated by Framer (8d84d1c)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,SVG,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";const cycleOrder=[\"vZeeZmyVJ\",\"UZnvvYoUZ\",\"XioEzfJ61\",\"QHZQdXUok\",\"bart134iP\",\"unQEaWlPP\",\"bnffWKLnC\",\"ZQM788nVg\",\"kCAil_vci\",\"LOI_lBRgD\",\"ArOhNgCb9\",\"RYwLLzsEP\",\"fSZxKdliR\",\"Zza8uvaWK\",\"DmVv_TrP5\"];const serializationHash=\"framer-wJr65\";const variantClassNames={ArOhNgCb9:\"framer-v-1x9z1rz\",bart134iP:\"framer-v-16xzbcw\",bnffWKLnC:\"framer-v-u0vair\",DmVv_TrP5:\"framer-v-fp2ati\",fSZxKdliR:\"framer-v-1s0rpv5\",kCAil_vci:\"framer-v-frc7ru\",LOI_lBRgD:\"framer-v-198j7o5\",QHZQdXUok:\"framer-v-11mwjqi\",RYwLLzsEP:\"framer-v-8d1c6j\",unQEaWlPP:\"framer-v-1f45wtw\",UZnvvYoUZ:\"framer-v-rxrdei\",vZeeZmyVJ:\"framer-v-oqrnjh\",XioEzfJ61:\"framer-v-5o2a5f\",ZQM788nVg:\"framer-v-11v7jk4\",Zza8uvaWK:\"framer-v-z4x19r\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants===null||variants===void 0?void 0:variants.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value!==null&&value!==void 0?value:config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion(React.Fragment);const humanReadableVariantMap={\"Customer stories\":\"DmVv_TrP5\",\"Help center\":\"fSZxKdliR\",\"Internet Security\":\"ArOhNgCb9\",About:\"vZeeZmyVJ\",Access:\"LOI_lBRgD\",Blog:\"UZnvvYoUZ\",Careers:\"bart134iP\",Changelog:\"XioEzfJ61\",Demo:\"bnffWKLnC\",Docs:\"kCAil_vci\",Integrations:\"QHZQdXUok\",Partners:\"ZQM788nVg\",Testimonials:\"Zza8uvaWK\",Whitepaper:\"unQEaWlPP\",ZTNA:\"RYwLLzsEP\"};const getProps=({height,id,width,...props})=>{var _humanReadableVariantMap_props_variant,_ref;return{...props,variant:(_ref=(_humanReadableVariantMap_props_variant=humanReadableVariantMap[props.variant])!==null&&_humanReadableVariantMap_props_variant!==void 0?_humanReadableVariantMap_props_variant:props.variant)!==null&&_ref!==void 0?_ref:\"vZeeZmyVJ\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"vZeeZmyVJ\",variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const ref1=React.useRef(null);const isDisplayed=()=>{if([\"UZnvvYoUZ\",\"XioEzfJ61\",\"QHZQdXUok\",\"bart134iP\",\"unQEaWlPP\",\"bnffWKLnC\",\"ZQM788nVg\",\"kCAil_vci\",\"LOI_lBRgD\",\"ArOhNgCb9\",\"RYwLLzsEP\",\"fSZxKdliR\",\"Zza8uvaWK\",\"DmVv_TrP5\"].includes(baseVariant))return false;return true;};const isDisplayed1=()=>{if(baseVariant===\"bart134iP\")return true;return false;};const isDisplayed2=()=>{if(baseVariant===\"unQEaWlPP\")return true;return false;};const isDisplayed3=()=>{if(baseVariant===\"ZQM788nVg\")return true;return false;};const isDisplayed4=()=>{if(baseVariant===\"UZnvvYoUZ\")return true;return false;};const isDisplayed5=()=>{if(baseVariant===\"QHZQdXUok\")return true;return false;};const isDisplayed6=()=>{if(baseVariant===\"XioEzfJ61\")return true;return false;};const isDisplayed7=()=>{if(baseVariant===\"bnffWKLnC\")return true;return false;};const isDisplayed8=()=>{if(baseVariant===\"kCAil_vci\")return true;return false;};const isDisplayed9=()=>{if(baseVariant===\"LOI_lBRgD\")return true;return false;};const isDisplayed10=()=>{if(baseVariant===\"ArOhNgCb9\")return true;return false;};const isDisplayed11=()=>{if(baseVariant===\"RYwLLzsEP\")return true;return false;};const isDisplayed12=()=>{if(baseVariant===\"fSZxKdliR\")return true;return false;};const isDisplayed13=()=>{if(baseVariant===\"Zza8uvaWK\")return true;return false;};const isDisplayed14=()=>{if(baseVariant===\"DmVv_TrP5\")return true;return false;};const defaultLayoutId=React.useId();const sharedStyleClassNames=[];const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId!==null&&layoutId!==void 0?layoutId:defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(serializationHash,...sharedStyleClassNames,\"framer-oqrnjh\",className,classNames),\"data-framer-name\":\"About\",layoutDependency:layoutDependency,layoutId:\"vZeeZmyVJ\",ref:ref!==null&&ref!==void 0?ref:ref1,style:{...style},...addPropertyOverrides({ArOhNgCb9:{\"data-framer-name\":\"Internet Security\"},bart134iP:{\"data-framer-name\":\"Careers\"},bnffWKLnC:{\"data-framer-name\":\"Demo\"},DmVv_TrP5:{\"data-framer-name\":\"Customer stories\"},fSZxKdliR:{\"data-framer-name\":\"Help center\"},kCAil_vci:{\"data-framer-name\":\"Docs\"},LOI_lBRgD:{\"data-framer-name\":\"Access\"},QHZQdXUok:{\"data-framer-name\":\"Integrations\"},RYwLLzsEP:{\"data-framer-name\":\"ZTNA\"},unQEaWlPP:{\"data-framer-name\":\"Whitepaper\"},UZnvvYoUZ:{\"data-framer-name\":\"Blog\"},XioEzfJ61:{\"data-framer-name\":\"Changelog\"},ZQM788nVg:{\"data-framer-name\":\"Partners\"},Zza8uvaWK:{\"data-framer-name\":\"Testimonials\"}},baseVariant,gestureVariant),children:[isDisplayed()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-qi0z0h\",\"data-framer-name\":\"About\",layoutDependency:layoutDependency,layoutId:\"II3H9raCF\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-15gyfr8\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:13,intrinsicWidth:16,layoutDependency:layoutDependency,layoutId:\"PNTJOXSVU\",svg:'<svg width=\"16\" height=\"13\" viewBox=\"0 0 16 13\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3.5 4C3.5 2.61929 4.61929 1.5 6 1.5C7.38071 1.5 8.5 2.61929 8.5 4C8.5 5.38071 7.38071 6.5 6 6.5C4.61929 6.5 3.5 5.38071 3.5 4ZM6 0.5C4.067 0.5 2.5 2.067 2.5 4C2.5 5.933 4.067 7.5 6 7.5C7.933 7.5 9.5 5.933 9.5 4C9.5 2.067 7.933 0.5 6 0.5ZM12.5 4C12.5 3.17157 11.8284 2.5 11 2.5V1.5C12.3807 1.5 13.5 2.61929 13.5 4C13.5 5.38071 12.3807 6.5 11 6.5V5.5C11.8284 5.5 12.5 4.82843 12.5 4ZM4 8.5C2.067 8.5 0.5 10.067 0.5 12V13H1.5V12C1.5 10.6193 2.61929 9.5 4 9.5H8C9.38071 9.5 10.5 10.6193 10.5 12V13H11.5V12C11.5 10.067 9.933 8.5 8 8.5H4ZM15.5 12C15.5 10.067 13.933 8.5 12 8.5V9.5C13.3807 9.5 14.5 10.6193 14.5 12V13H15.5V12Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed1()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-4v3c1n\",\"data-framer-name\":\"Careers\",layoutDependency:layoutDependency,layoutId:\"j98aOxIUO\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-10p0sih\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:14,intrinsicWidth:14,layoutDependency:layoutDependency,layoutId:\"Elxs4E0SE\",svg:'<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6 0.5C4.61929 0.5 3.5 1.61929 3.5 3V4H2C0.895431 4 0 4.89543 0 6V12C0 13.1046 0.89543 14 2 14H12C13.1046 14 14 13.1046 14 12V6C14 4.89543 13.1046 4 12 4H10.5V3C10.5 1.61929 9.38071 0.5 8 0.5H6ZM9.5 4V3C9.5 2.17157 8.82843 1.5 8 1.5H6C5.17157 1.5 4.5 2.17157 4.5 3V4H9.5ZM2 5H12C12.5523 5 13 5.44772 13 6V12C13 12.5523 12.5523 13 12 13H2C1.44772 13 1 12.5523 1 12V6C1 5.44772 1.44772 5 2 5Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed2()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1t8owyb\",\"data-framer-name\":\"Whitepaper\",layoutDependency:layoutDependency,layoutId:\"s_cN3Y_NT\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-11wgr2r\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:14,intrinsicWidth:12,layoutDependency:layoutDependency,layoutId:\"vjDxGkWhL\",svg:'<svg width=\"12\" height=\"14\" viewBox=\"0 0 12 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M10 13H2C1.44772 13 1 12.5523 1 12V2C1 1.44772 1.44772 1 2 1H5.5V6.5H11V12C11 12.5523 10.5523 13 10 13ZM12 5.5V6.5V12C12 13.1046 11.1046 14 10 14H2C0.895431 14 0 13.1046 0 12V2C0 0.895431 0.895431 0 2 0H5.5H6.5H7L12 5V5.5ZM6.5 1H6.58579L11 5.41421V5.5H6.5V1Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed3()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-12hnefn\",\"data-framer-name\":\"Partners\",layoutDependency:layoutDependency,layoutId:\"MlV1_pEwA\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-1e2bayc\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:15,intrinsicWidth:15,layoutDependency:layoutDependency,layoutId:\"HXoGfJKGy\",svg:'<svg width=\"15\" height=\"15\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3.37866 1.20046C4.55023 0.0288849 6.44972 0.0288854 7.6213 1.20045L8.05534 1.63449C9.23053 0.751627 10.9064 0.844893 11.9758 1.91429L14.0856 4.02409C15.2572 5.19566 15.2572 7.09514 14.0856 8.26671L8.71744 13.635C8.13166 14.2208 7.18191 14.2208 6.59612 13.635C6.32445 13.3633 6.17877 13.0134 6.15909 12.6577C5.80347 12.6381 5.45352 12.4924 5.18186 12.2207C4.91021 11.9491 4.76453 11.5991 4.74483 11.2435C4.38928 11.2238 4.03941 11.0781 3.7678 10.8065C3.49613 10.5349 3.35045 10.1849 3.33076 9.82928C2.97512 9.80961 2.62515 9.66393 2.35346 9.39225C1.76767 8.80646 1.76767 7.85671 2.35346 7.27093L6.7 2.97815L7.18384 3.46689L8.86028 5.09374L8.86106 5.0945L8.86328 5.09658C8.86649 5.09958 8.87256 5.10516 8.88121 5.11278C8.89864 5.12812 8.9259 5.15114 8.96097 5.17774C9.03317 5.2325 9.12817 5.29461 9.23093 5.3392C9.33524 5.38446 9.4235 5.4013 9.49268 5.39602C9.54945 5.3917 9.61826 5.37167 9.7019 5.28846C9.80937 5.18155 9.83844 5.10226 9.84758 5.05767C9.85729 5.01027 9.85268 4.96075 9.83347 4.90525C9.81336 4.84715 9.78045 4.79268 9.74858 4.75011C9.7334 4.72984 9.72039 4.71484 9.71259 4.70629L9.70659 4.6999L9.70087 4.69448L6.91419 1.90756C6.13314 1.12652 4.86681 1.12652 4.08577 1.90756L1.85367 4.13966C1.17345 4.81988 1.17345 5.92274 1.85367 6.60296L1.14657 7.31007C0.0758189 6.23932 0.0758195 4.5033 1.14657 3.43255L3.37866 1.20046ZM9.92771 9.59619L9.92777 9.59625L7.30323 12.2208C7.10797 12.416 7.10797 12.7326 7.30323 12.9279C7.49849 13.1231 7.81507 13.1231 8.01033 12.9279L13.3785 7.55961C14.1596 6.77856 14.1596 5.51224 13.3785 4.7312L11.2687 2.6214C10.5909 1.94364 9.54777 1.85401 8.77336 2.35251L10.4055 3.98467L10.4063 3.98537L10.418 3.99704C10.427 4.00617 10.4383 4.01803 10.4515 4.03249C10.4778 4.06128 10.5119 4.1011 10.5491 4.15079C10.622 4.24815 10.7148 4.39414 10.7785 4.57819C10.8431 4.76484 10.8804 4.99916 10.8272 5.25845C10.7735 5.52054 10.635 5.77077 10.4072 5.99737C10.1556 6.24768 9.864 6.37062 9.5687 6.39313C9.28581 6.4147 9.03036 6.34226 8.83286 6.25655C8.6338 6.17018 8.46889 6.05962 8.35663 5.97447C8.29948 5.93111 8.25337 5.89236 8.22049 5.86341C8.20399 5.84889 8.19067 5.8367 8.18078 5.82747L8.16852 5.81588L8.16435 5.81186L8.16277 5.81031L8.1618 5.80937L6.69334 4.38434L3.06057 7.97803C2.86531 8.1733 2.86531 8.48988 3.06057 8.68514C3.25583 8.8804 3.57241 8.8804 3.76767 8.68514L6.39221 6.06061L6.3923 6.0607L6.39233 6.06067L7.09944 6.76778L4.4749 9.39231C4.27964 9.58757 4.27964 9.90416 4.4749 10.0994C4.66781 10.2923 4.97912 10.2947 5.17488 10.1064L5.18186 10.0994L7.8064 7.47485L7.80649 7.47494L7.80655 7.47488L8.51365 8.18199L5.88912 10.8065L5.88194 10.8137C5.69373 11.0094 5.69607 11.3207 5.88897 11.5136C6.08423 11.7089 6.40081 11.7089 6.59607 11.5136L9.22061 8.88907L9.92772 9.59617L9.92771 9.59619Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed4()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-vskdio\",\"data-framer-name\":\"Blog\",layoutDependency:layoutDependency,layoutId:\"UOGgr1e1_\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-1ko84cx\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:14,intrinsicWidth:14,layoutDependency:layoutDependency,layoutId:\"ple3KcMGw\",svg:'<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 1H2C1.44772 1 1 1.44772 1 2V6C1 6.55228 1.44772 7 2 7H12C12.5523 7 13 6.55228 13 6V2C13 1.44772 12.5523 1 12 1ZM2 0C0.895431 0 0 0.895431 0 2V6C0 7.10457 0.89543 8 2 8H12C13.1046 8 14 7.10457 14 6V2C14 0.895431 13.1046 0 12 0H2ZM0 10H13V11H0V10ZM9 13H0V14H9V13Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed5()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-umasq6\",\"data-framer-name\":\"Integrations\",layoutDependency:layoutDependency,layoutId:\"cmPJMEk7O\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-1t2278c\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:14,intrinsicWidth:14,layoutDependency:layoutDependency,layoutId:\"fEQ9xOuep\",svg:'<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M9.55556 1H13V4.44444H9.55556V1ZM8.55556 0H9.55556H13H14V1V4.44444V5.44444H13H9.55556H8.55556V4.44444V3.22222H4.72222C3.8938 3.22222 3.22222 3.8938 3.22222 4.72222V7H2.22222V4.72222C2.22222 3.34151 3.34151 2.22222 4.72222 2.22222H8.55556V1V0ZM1 9.55556H4.44444V13H1V9.55556ZM0 8.55556H1H4.44444H5.44444V9.55556V10.7778H9.27778C10.1062 10.7778 10.7778 10.1062 10.7778 9.27778V7H11.7778V9.27778C11.7778 10.6585 10.6585 11.7778 9.27778 11.7778H5.44444V13V14H4.44444H1H0V13V9.55556V8.55556Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed6()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-t2oaxz\",\"data-framer-name\":\"Changelog\",layoutDependency:layoutDependency,layoutId:\"zcv2_gdO1\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-fkxkmr\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:14,intrinsicWidth:14,layoutDependency:layoutDependency,layoutId:\"NZr5lnhHX\",svg:'<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8.03534 0.371338V0.371345C8.41101 0.373018 8.78538 0.415468 9.15188 0.497947C9.51413 0.578237 9.86549 0.701495 10.1985 0.865102C10.5288 1.02184 10.8423 1.21167 11.1342 1.43168L11.1428 1.43817L11.1511 1.44502C11.4343 1.67818 11.6945 1.93787 11.9282 2.22053C12.1776 2.49797 12.3985 2.79985 12.5875 3.12158C12.788 3.45201 12.9569 3.80058 13.0921 4.16268L12.1552 4.51236C12.0416 4.20804 11.8996 3.91513 11.7309 3.63753L11.7268 3.63083L11.7268 3.63079C11.57 3.36325 11.3862 3.11242 11.1783 2.88221L11.1707 2.87377L11.1635 2.86499C10.9711 2.6314 10.7569 2.41671 10.5237 2.22382C10.2874 2.04664 10.0339 1.89367 9.76699 1.76721L9.76019 1.76399L9.76022 1.76394C9.49765 1.63468 9.22053 1.53737 8.93479 1.4741L8.93303 1.47371C8.63733 1.40711 8.33528 1.37278 8.03218 1.37134C7.56196 1.37182 7.09471 1.44578 6.64732 1.59055L6.64338 1.59182L6.64338 1.5918C6.19535 1.7327 5.76679 1.9293 5.36776 2.17701L5.36555 2.17838L5.36555 2.17837C4.95691 2.42912 4.57024 2.714 4.20967 3.02998C3.85814 3.34042 3.52622 3.67238 3.21581 4.02393L3.20553 4.03556L3.19456 4.04654C2.92855 4.31255 2.68702 4.6397 2.45038 4.96025L2.40519 5.02144C2.1717 5.33734 1.97851 5.63382 1.80669 5.89869C1.76118 5.96887 1.71885 6.03636 1.67959 6.10052H5.1685V7.10052H0.871582H0.371582V6.60052V2.3036H1.37158V4.74774C1.44361 4.64392 1.51998 4.53669 1.60102 4.42705L1.65439 4.35471C1.87929 4.0497 2.15928 3.66995 2.47628 3.35065C2.8114 2.97205 3.16947 2.61442 3.54848 2.27976L3.54985 2.27855L3.54985 2.27855C3.95276 1.9254 4.38483 1.60699 4.84144 1.32672C5.31072 1.03553 5.81465 0.804312 6.34144 0.638473C6.88786 0.46189 7.45851 0.371758 8.03275 0.371338H8.03534ZM8.71213 7.77915H12.1997C12.1604 7.84336 12.118 7.91091 12.0725 7.98114C11.9006 8.24601 11.7075 8.54248 11.474 8.85838L11.4288 8.91956C11.1921 9.24011 10.9506 9.56726 10.6846 9.83327L10.6736 9.84425L10.6634 9.85588C10.3529 10.2075 10.021 10.5394 9.66941 10.8499C9.30887 11.1658 8.92224 11.4507 8.51364 11.7014L8.51143 11.7028C8.11241 11.9505 7.68385 12.1471 7.23583 12.288L7.23582 12.288L7.23189 12.2892C6.78451 12.434 6.31726 12.508 5.84705 12.5084C5.54395 12.507 5.24191 12.4727 4.94621 12.4061L4.94445 12.4057C4.65871 12.3424 4.3816 12.2451 4.11903 12.1158L4.11906 12.1158L4.11226 12.1126C3.84533 11.9861 3.59181 11.8331 3.35551 11.656C3.12237 11.4631 2.90817 11.2484 2.71581 11.0148L2.70858 11.006L2.70096 10.9976C2.49311 10.7674 2.30932 10.5166 2.15243 10.249L2.15248 10.249L2.14841 10.2423C1.97972 9.96468 1.83764 9.67177 1.72405 9.36745L0.787188 9.71714C0.922342 10.0792 1.09129 10.4278 1.29179 10.7582C1.48075 11.08 1.70164 11.3818 1.9511 11.6593C2.18481 11.9419 2.445 12.2016 2.72813 12.4348L2.73645 12.4416L2.74506 12.4481C3.03699 12.6681 3.35049 12.8579 3.68074 13.0147C4.01375 13.1783 4.3651 13.3015 4.72735 13.3818C5.09385 13.4643 5.46822 13.5068 5.84388 13.5084L5.84647 13.5084C6.42072 13.508 6.99137 13.4179 7.53778 13.2413C8.06456 13.0755 8.56848 12.8442 9.03775 12.5531C9.49436 12.2728 9.92642 11.9544 10.3293 11.6012L10.3307 11.6C10.7097 11.2654 11.0678 10.9077 11.4029 10.5292C11.7199 10.2099 11.9999 9.83014 12.2247 9.52513L12.2248 9.52511L12.2781 9.45277C12.3597 9.34241 12.4366 9.23448 12.509 9.13002V11.576H13.509V7.27915V6.77915H13.009H8.71213V7.77915ZM9.03775 12.5531L9.03664 12.5537L8.77516 12.1276L9.03885 12.5524L9.03775 12.5531ZM7.53778 13.2413L7.53581 13.2419L7.38582 12.7649L7.53976 13.2407L7.53778 13.2413ZM4.72735 13.3818L4.72648 13.3816L4.83635 12.8939L4.72824 13.382L4.72735 13.3818ZM3.68074 13.0147L3.67736 13.013L3.8982 12.5644L3.68413 13.0163L3.68074 13.0147ZM1.9511 11.6593L1.94387 11.6505L2.32984 11.3327L1.95872 11.6677L1.9511 11.6593ZM1.29179 10.7582L1.2898 10.7548L1.72112 10.5019L1.29382 10.7616L1.29179 10.7582ZM3.35551 11.656L3.36383 11.6628L3.04598 12.0488L3.34691 11.6495L3.35551 11.656ZM5.84705 12.5084L5.84834 12.5084L5.84611 13.0084L5.84575 12.5084L5.84705 12.5084ZM9.66941 10.8499L9.67017 10.8492L9.99973 11.2252L9.66881 10.8504L9.66941 10.8499Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed7()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-kk6jss\",\"data-framer-name\":\"Demo\",layoutDependency:layoutDependency,layoutId:\"MsHKUDKed\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-1po6c6c\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:12,intrinsicWidth:14,layoutDependency:layoutDependency,layoutId:\"TAXrMRe9P\",svg:'<svg width=\"14\" height=\"12\" viewBox=\"0 0 14 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 1H2C1.44772 1 1 1.44772 1 2V8C1 8.55229 1.44772 9 2 9H12C12.5523 9 13 8.55228 13 8V2C13 1.44772 12.5523 1 12 1ZM2 0C0.895431 0 0 0.895431 0 2V8C0 9.10457 0.895431 10 2 10H12C13.1046 10 14 9.10457 14 8V2C14 0.895431 13.1046 0 12 0H2ZM3.5 7C3.5 5.067 5.067 3.5 7 3.5C8.933 3.5 10.5 5.067 10.5 7H9.5C9.5 5.61929 8.38071 4.5 7 4.5C5.61929 4.5 4.5 5.61929 4.5 7H3.5ZM10 12V11H4V12H10Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed8()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1admngf\",\"data-framer-name\":\"Docs\",layoutDependency:layoutDependency,layoutId:\"L9nrroOAO\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-ardnhx\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:14,intrinsicWidth:12,layoutDependency:layoutDependency,layoutId:\"RR8uBab8z\",svg:'<svg width=\"12\" height=\"14\" viewBox=\"0 0 12 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3 0.5C1.61929 0.5 0.5 1.61929 0.5 3V11.5C0.5 12.6046 1.39543 13.5 2.5 13.5H11.5V12.5H2.5C1.94772 12.5 1.5 12.0523 1.5 11.5C1.5 10.9477 1.94772 10.5 2.5 10.5H11.5V10.3333V9.5V0.5H3ZM10.5 9.5V1.5H3C2.17157 1.5 1.5 2.17157 1.5 3V9.76756C1.79417 9.59739 2.13571 9.5 2.5 9.5H10.5Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed9()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1f4y6bm\",\"data-framer-name\":\"Access\",layoutDependency:layoutDependency,layoutId:\"PXSr2BPEq\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-158bv4x\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:14,intrinsicWidth:14,layoutDependency:layoutDependency,layoutId:\"INAsc6fiJ\",svg:'<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M2.33333 3.66667C3.06971 3.66667 3.66667 3.06971 3.66667 2.33333C3.66667 1.59695 3.06971 1 2.33333 1C1.59695 1 1 1.59695 1 2.33333C1 3.06971 1.59695 3.66667 2.33333 3.66667ZM2.33333 4.66667C3.622 4.66667 4.66667 3.622 4.66667 2.33333C4.66667 1.04467 3.622 0 2.33333 0C1.04467 0 0 1.04467 0 2.33333C0 3.622 1.04467 4.66667 2.33333 4.66667ZM11.6667 13C12.403 13 13 12.403 13 11.6667C13 10.9303 12.403 10.3333 11.6667 10.3333C10.9303 10.3333 10.3333 10.9303 10.3333 11.6667C10.3333 12.403 10.9303 13 11.6667 13ZM11.6667 14C12.9553 14 14 12.9553 14 11.6667C14 10.378 12.9553 9.33333 11.6667 9.33333C10.378 9.33333 9.33333 10.378 9.33333 11.6667C9.33333 12.9553 10.378 14 11.6667 14ZM13 3.5C13 4.88071 11.8807 6 10.5 6C9.11929 6 8 4.88071 8 3.5C8 2.11929 9.11929 1 10.5 1C11.8807 1 13 2.11929 13 3.5ZM14 3.5C14 5.433 12.433 7 10.5 7C9.71385 7 8.98824 6.74081 8.40396 6.30322L6.30322 8.40396C6.74081 8.98824 7 9.71385 7 10.5C7 12.433 5.433 14 3.5 14C1.567 14 0 12.433 0 10.5C0 8.567 1.567 7 3.5 7C4.28619 7 5.01183 7.25921 5.59613 7.69684L7.69684 5.59613C7.25921 5.01183 7 4.28619 7 3.5C7 1.567 8.567 0 10.5 0C12.433 0 14 1.567 14 3.5ZM3.5 13C4.88071 13 6 11.8807 6 10.5C6 9.11929 4.88071 8 3.5 8C2.11929 8 1 9.11929 1 10.5C1 11.8807 2.11929 13 3.5 13Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed10()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1n4r5ec\",\"data-framer-name\":\"Internet Security\",layoutDependency:layoutDependency,layoutId:\"yaEqYP9lP\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-fnstm3\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:12,intrinsicWidth:16,layoutDependency:layoutDependency,layoutId:\"ifZZuoNoz\",svg:'<svg width=\"16\" height=\"12\" viewBox=\"0 0 16 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 1H4C3.44772 1 3 1.44772 3 2V5H13V2C13 1.44772 12.5523 1 12 1ZM14 5V2C14 0.895431 13.1046 0 12 0H4C2.89543 0 2 0.895431 2 2V5H0V6H2H3H13H14H16V5H14ZM2 7H3V10C3 10.5523 3.44772 11 4 11H12C12.5523 11 13 10.5523 13 10V7H14V10C14 11.1046 13.1046 12 12 12H4C2.89543 12 2 11.1046 2 10V7Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed11()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1yeyoni\",\"data-framer-name\":\"ZTNA\",layoutDependency:layoutDependency,layoutId:\"krD7g3R78\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-1yblk61\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:12,intrinsicWidth:16,layoutDependency:layoutDependency,layoutId:\"uqOBpe6Ms\",svg:'<svg width=\"16\" height=\"12\" viewBox=\"0 0 16 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3.33981 10C2.40997 10 1.62091 9.68849 0.972621 9.06549C0.324207 8.4426 0 7.68445 0 6.79104C0 5.91754 0.32466 5.15354 0.973981 4.49907C1.62317 3.84471 2.43715 3.52469 3.41592 3.53899C3.64401 2.46461 4.19443 1.60622 5.06718 0.963805C5.94006 0.321268 6.91767 0 8 0C9.26563 0 10.3717 0.386505 11.3181 1.15952C11.9539 1.6789 12.3762 2.2924 12.5849 3H11.5128C11.3295 2.5689 11.0291 2.18768 10.6117 1.85634C9.86731 1.26555 8.99676 0.970149 8 0.970149C7.15262 0.970149 6.39061 1.22631 5.71398 1.73862C5.03735 2.25106 4.59942 2.92917 4.40019 3.77295C5.07735 3.96524 5.62654 4.33719 6.04777 4.88881C6.469 5.44042 6.67961 6.0745 6.67961 6.79104H5.6699C5.6699 6.17276 5.44207 5.64502 4.98641 5.20784C4.53074 4.77077 3.98058 4.55224 3.33592 4.55224C2.69126 4.55224 2.1424 4.77114 1.68932 5.20896C1.23625 5.64677 1.00971 6.17537 1.00971 6.79478C1.00971 7.41418 1.23715 7.94154 1.69204 8.37687C2.14706 8.81219 2.69631 9.02985 3.33981 9.02985H9V10H3.33981ZM10.9999 5.2C10.9999 4.53726 11.5371 4 12.1999 4H13.7999C14.4626 4 14.9999 4.53726 14.9999 5.2V7H16V12H10V7H10.9999V5.2ZM13.9999 5V7H11.9999V5H13.9999ZM12.5 10.5H13.5V8.5H12.5V10.5Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed12()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1cj9oj5\",\"data-framer-name\":\"Help\",layoutDependency:layoutDependency,layoutId:\"CJr3naMFb\",children:isDisplayed12()&&/*#__PURE__*/_jsx(SVG,{className:\"framer-1b83eoj\",\"data-framer-name\":\"Help center\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:16,intrinsicWidth:14,layoutDependency:layoutDependency,layoutId:\"kgyNDcE2z\",svg:'<svg width=\"14\" height=\"16\" viewBox=\"0 0 14 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8.37468 14.8258L8.3461 13.5H7C5.05431 13.5 3.40122 13.2223 2.04073 11.8717C0.680245 10.5212 0 8.88022 0 6.94877C0 5.01731 0.680245 3.37633 2.04073 2.0258C3.40122 0.675263 5.05431 0 7 0C7.97284 0 8.88378 0.180821 9.7328 0.542467C10.5817 0.904267 11.3229 1.39964 11.9565 2.02858C12.59 2.65752 13.0891 3.39331 13.4535 4.23597C13.8178 5.07878 14 5.98304 14 6.94877C14 7.89303 13.8603 8.79992 13.5809 9.66944C13.3016 10.539 12.9151 11.3609 12.4215 12.1353C11.9279 12.9099 11.3368 13.6232 10.6482 14.2753C10.2479 14.6543 9.82716 15.0072 9.38587 15.3341C9.0679 15.5696 8.73928 15.7916 8.4 16L8.37468 14.8258ZM7 1C7.84551 1 8.62231 1.15642 9.34071 1.46239C10.0771 1.77624 10.7113 2.20157 11.252 2.73828C11.7926 3.27495 12.2203 3.90378 12.5357 4.63295C12.843 5.34399 13 6.1124 13 6.94877C13 7.79275 12.8754 8.5962 12.6289 9.36354C12.3758 10.1511 12.026 10.8953 11.5782 11.5979L11.5782 11.5979C11.13 12.3012 10.5917 12.9515 9.96059 13.5492C9.76529 13.7341 9.56474 13.9124 9.35892 14.0839L9.34587 13.4784L9.32477 12.5H8.3461H7C5.13839 12.5 3.8209 12.2298 2.74524 11.162C1.57548 10.0008 1 8.61599 1 6.94877C1 5.28154 1.57548 3.8967 2.74524 2.7355C3.91529 1.57401 5.31382 1 7 1ZM7.76375 10.786C7.62111 10.9287 7.44771 11 7.24354 11C7.03951 11 6.86618 10.9287 6.72354 10.786C6.5809 10.6434 6.50958 10.4701 6.50958 10.266C6.50958 10.062 6.5809 9.88868 6.72354 9.74604C6.86618 9.6034 7.03951 9.53208 7.24354 9.53208C7.44771 9.53208 7.62111 9.6034 7.76375 9.74604C7.90625 9.88868 7.9775 10.062 7.9775 10.266C7.9775 10.4701 7.90625 10.6434 7.76375 10.786ZM7.75313 8.45833H6.75958C6.75958 7.94556 6.81701 7.55826 6.93188 7.29646C7.04674 7.03479 7.3259 6.71167 7.76938 6.32708C7.97979 6.11653 8.15576 5.91618 8.29729 5.72604C8.43882 5.5359 8.50958 5.31208 8.50958 5.05458C8.50958 4.77792 8.40653 4.52333 8.20042 4.29083C7.99417 4.05847 7.67951 3.94229 7.25646 3.94229C6.87076 3.94229 6.57535 4.05021 6.37021 4.26604C6.16507 4.48188 6.01708 4.71049 5.92625 4.95188L5 4.58979C5.16667 4.15174 5.44368 3.77729 5.83104 3.46646C6.21826 3.15549 6.6934 3 7.25646 3C7.87715 3 8.41104 3.17444 8.85813 3.52333C9.30535 3.87208 9.52896 4.37396 9.52896 5.02896C9.52896 5.35688 9.45229 5.65597 9.29896 5.92625C9.14563 6.19667 8.9466 6.45417 8.70188 6.69875C8.27354 7.12722 8.01104 7.43278 7.91438 7.61542C7.81757 7.79819 7.76382 8.07917 7.75313 8.45833Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed13()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-9vlqj7\",\"data-framer-name\":\"Testimonials\",layoutDependency:layoutDependency,layoutId:\"ARmZ36qLm\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-zpjepi\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:15,intrinsicWidth:15,layoutDependency:layoutDependency,layoutId:\"F_uhwXlwS\",svg:'<svg width=\"15\" height=\"15\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M2 1H10C10.5523 1 11 1.44772 11 2V8C11 8.55229 10.5523 9 10 9H3.60555C3.01328 9 2.43425 9.17531 1.94145 9.50385L1 10.1315V2C1 1.44772 1.44772 1 2 1ZM3.60555 10C3.2107 10 2.82469 10.1169 2.49615 10.3359L0 12V2C0 0.895431 0.895431 0 2 0H10C11.1046 0 12 0.895431 12 2V8C12 9.10457 11.1046 10 10 10H3.60555ZM13.5 3V10.1667C13.5 10.9951 12.8284 11.6667 12 11.6667H6.35555C5.86198 11.6667 5.37946 11.8128 4.96879 12.0865L3.27734 13.1989V14.416L5.52349 12.9186C5.7699 12.7543 6.05941 12.6667 6.35555 12.6667H12C13.3807 12.6667 14.5 11.5474 14.5 10.1667V3H13.5ZM3 3H9V4H3V3ZM7 6H3V7H7V6Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed14()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1my664y\",\"data-framer-name\":\"Customer stories\",layoutDependency:layoutDependency,layoutId:\"EHYfgc20n\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-k90j0c\",\"data-framer-name\":\"Vector\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:16,intrinsicWidth:12,layoutDependency:layoutDependency,layoutId:\"aTES2HhIx\",svg:'<svg width=\"12\" height=\"16\" viewBox=\"0 0 12 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path d=\"M1.98077 15.4754C1.43594 15.4754 0.969605 15.2969 0.581772 14.9398C0.193939 14.5826 2.19345e-05 14.1407 2.19345e-05 13.6143L0 4.42419C0 3.91159 0.176583 3.46182 0.52975 3.0749C0.882917 2.68797 1.3185 2.44115 1.8365 2.33444L8.6155 0.5L8.61552 10.9387L1.75577 12.8377C1.55444 12.8834 1.37819 12.9744 1.22702 13.1108C1.07569 13.2472 1.00002 13.415 1.00002 13.6143C1.00002 13.8717 1.09744 14.0814 1.29227 14.2431C1.48711 14.4049 1.71661 14.4858 1.98077 14.4858H11V3.16669H12V15.4754H1.98077ZM3.38452 11.5L7.61552 10.1544L7.6155 1.7256L3.3845 3L3.38452 11.5ZM2.38452 11.7056L2.3845 3.23842L1.952 3.33169C1.67883 3.39008 1.45192 3.51922 1.27125 3.71911C1.09042 3.91885 1 4.15387 1 4.42419L1.00002 12.1433C1.22702 12.0581 1.90466 11.81 2.38452 11.7056Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})})]})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-wJr65.framer-1xh12vi, .framer-wJr65 .framer-1xh12vi { display: block; }\",\".framer-wJr65.framer-oqrnjh { align-content: center; align-items: center; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: 20px; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 20px; }\",\".framer-wJr65 .framer-qi0z0h, .framer-wJr65 .framer-4v3c1n, .framer-wJr65 .framer-1t8owyb, .framer-wJr65 .framer-12hnefn, .framer-wJr65 .framer-vskdio, .framer-wJr65 .framer-umasq6, .framer-wJr65 .framer-t2oaxz, .framer-wJr65 .framer-kk6jss, .framer-wJr65 .framer-1admngf, .framer-wJr65 .framer-1f4y6bm, .framer-wJr65 .framer-1n4r5ec, .framer-wJr65 .framer-1yeyoni, .framer-wJr65 .framer-1cj9oj5, .framer-wJr65 .framer-9vlqj7, .framer-wJr65 .framer-1my664y { flex: none; height: 20px; overflow: visible; position: relative; width: 20px; }\",\".framer-wJr65 .framer-15gyfr8 { flex: none; height: 13px; left: 2px; position: absolute; top: 3px; width: 16px; }\",\".framer-wJr65 .framer-10p0sih { flex: none; height: 14px; left: calc(50.00000000000002% - 14px / 2); position: absolute; top: 2px; width: 14px; }\",\".framer-wJr65 .framer-11wgr2r, .framer-wJr65 .framer-ardnhx { flex: none; height: 14px; left: 4px; position: absolute; top: 3px; width: 12px; }\",\".framer-wJr65 .framer-1e2bayc, .framer-wJr65 .framer-zpjepi { flex: none; height: 15px; left: calc(50.00000000000002% - 15px / 2); position: absolute; top: calc(50.00000000000002% - 15px / 2); width: 15px; }\",\".framer-wJr65 .framer-1ko84cx, .framer-wJr65 .framer-1t2278c, .framer-wJr65 .framer-fkxkmr { flex: none; height: 14px; left: 3px; position: absolute; top: 3px; width: 14px; }\",\".framer-wJr65 .framer-1po6c6c { flex: none; height: 12px; left: 3px; position: absolute; top: 4px; width: 14px; }\",\".framer-wJr65 .framer-158bv4x { flex: none; height: 14px; left: calc(50.00000000000002% - 14px / 2); position: absolute; top: calc(50.00000000000002% - 14px / 2); width: 14px; }\",\".framer-wJr65 .framer-fnstm3, .framer-wJr65 .framer-1yblk61 { flex: none; height: 12px; left: calc(50.00000000000002% - 16px / 2); position: absolute; top: calc(50.00000000000002% - 12px / 2); width: 16px; }\",\".framer-wJr65 .framer-1b83eoj { flex: none; height: 16px; left: calc(50.00000000000002% - 14px / 2); position: absolute; top: calc(50.00000000000002% - 16px / 2); width: 14px; }\",\".framer-wJr65 .framer-k90j0c { flex: none; height: 16px; left: calc(50.00000000000002% - 12px / 2); position: absolute; top: calc(50.00000000000002% - 16px / 2); width: 12px; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-wJr65.framer-oqrnjh { gap: 0px; } .framer-wJr65.framer-oqrnjh > * { margin: 0px; margin-left: calc(10px / 2); margin-right: calc(10px / 2); } .framer-wJr65.framer-oqrnjh > :first-child { margin-left: 0px; } .framer-wJr65.framer-oqrnjh > :last-child { margin-right: 0px; } }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 20\n * @framerIntrinsicWidth 20\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"UZnvvYoUZ\":{\"layout\":[\"fixed\",\"fixed\"]},\"XioEzfJ61\":{\"layout\":[\"fixed\",\"fixed\"]},\"QHZQdXUok\":{\"layout\":[\"fixed\",\"fixed\"]},\"bart134iP\":{\"layout\":[\"fixed\",\"fixed\"]},\"unQEaWlPP\":{\"layout\":[\"fixed\",\"fixed\"]},\"bnffWKLnC\":{\"layout\":[\"fixed\",\"fixed\"]},\"ZQM788nVg\":{\"layout\":[\"fixed\",\"fixed\"]},\"kCAil_vci\":{\"layout\":[\"fixed\",\"fixed\"]},\"LOI_lBRgD\":{\"layout\":[\"fixed\",\"fixed\"]},\"ArOhNgCb9\":{\"layout\":[\"fixed\",\"fixed\"]},\"RYwLLzsEP\":{\"layout\":[\"fixed\",\"fixed\"]},\"fSZxKdliR\":{\"layout\":[\"fixed\",\"fixed\"]},\"Zza8uvaWK\":{\"layout\":[\"fixed\",\"fixed\"]},\"DmVv_TrP5\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerlLkcBkgJT=withCSS(Component,css,\"framer-wJr65\");export default FramerlLkcBkgJT;FramerlLkcBkgJT.displayName=\"Nav / Nav Icons\";FramerlLkcBkgJT.defaultProps={height:20,width:20};addPropertyControls(FramerlLkcBkgJT,{variant:{options:[\"vZeeZmyVJ\",\"UZnvvYoUZ\",\"XioEzfJ61\",\"QHZQdXUok\",\"bart134iP\",\"unQEaWlPP\",\"bnffWKLnC\",\"ZQM788nVg\",\"kCAil_vci\",\"LOI_lBRgD\",\"ArOhNgCb9\",\"RYwLLzsEP\",\"fSZxKdliR\",\"Zza8uvaWK\",\"DmVv_TrP5\"],optionTitles:[\"About\",\"Blog\",\"Changelog\",\"Integrations\",\"Careers\",\"Whitepaper\",\"Demo\",\"Partners\",\"Docs\",\"Access\",\"Internet Security\",\"ZTNA\",\"Help center\",\"Testimonials\",\"Customer stories\"],title:\"Variant\",type:ControlType.Enum}});addFonts(FramerlLkcBkgJT,[{explicitInter:true,fonts:[]}],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerlLkcBkgJT\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"20\",\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"20\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"UZnvvYoUZ\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"XioEzfJ61\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"QHZQdXUok\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"bart134iP\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"unQEaWlPP\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"bnffWKLnC\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"ZQM788nVg\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"kCAil_vci\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"LOI_lBRgD\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"ArOhNgCb9\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"RYwLLzsEP\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"fSZxKdliR\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"Zza8uvaWK\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"DmVv_TrP5\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerImmutableVariables\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerComponentViewportWidth\":\"true\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./lLkcBkgJT.map", "// Generated by Framer (cf4c6d7)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,getFontsFromSharedStyle,getPropertyControls,Link,RichText,SmartComponentScopedContainer,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import*as sharedStyle1 from\"https://framerusercontent.com/modules/iSeRdQLTVmRrhWISCw0l/c55PksAizAWSQp01iTR3/PihfgTAR5.js\";import*as sharedStyle from\"https://framerusercontent.com/modules/g4IOzU8jABenlv54BPmR/1GNZvqRUZevOCeQx8Fga/xoAKFFJ8r.js\";import NavNavIcons from\"https://framerusercontent.com/modules/JbpcIAyn0u5cv6vdTXoP/qvG69KX65rbGHmot79mK/lLkcBkgJT.js\";import GraphicsButtonArrow from\"https://framerusercontent.com/modules/xPjbsMR6WyZIrRxgwZO7/JjHfXKlzAHHgG5R9o3n0/pRemd4fMu.js\";const NavNavIconsFonts=getFonts(NavNavIcons);const GraphicsButtonArrowFonts=getFonts(GraphicsButtonArrow);const NavNavIconsControls=getPropertyControls(NavNavIcons);const enabledGestures={vIU4cbfWE:{hover:true}};const serializationHash=\"framer-RDAI1\";const variantClassNames={vIU4cbfWE:\"framer-v-gu9ghg\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={delay:0,duration:.15,ease:[0,0,1,1],type:\"tween\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const humanReadableEnumMap={\"Customer stories\":\"DmVv_TrP5\",\"Help center\":\"fSZxKdliR\",\"Internet Security\":\"ArOhNgCb9\",About:\"vZeeZmyVJ\",Access:\"LOI_lBRgD\",Blog:\"UZnvvYoUZ\",Careers:\"bart134iP\",Changelog:\"XioEzfJ61\",Demo:\"bnffWKLnC\",Docs:\"kCAil_vci\",Integrations:\"QHZQdXUok\",Partners:\"ZQM788nVg\",Testimonials:\"Zza8uvaWK\",Whitepaper:\"unQEaWlPP\",ZTNA:\"RYwLLzsEP\"};const getProps=({height,id,link,navIconVariant,new1,subtitle,tap,title,width,...props})=>{return{...props,B1BRdzB7u:subtitle??props.B1BRdzB7u??\"Keep track of changes to our product\",D6E2gRuG7:new1??props.D6E2gRuG7,gpily6XUb:humanReadableEnumMap[navIconVariant]??navIconVariant??props.gpily6XUb??\"vZeeZmyVJ\",HlFA9k7gu:link??props.HlFA9k7gu,NZ73Mn_3q:title??props.NZ73Mn_3q??\"How Twingate Works?\",Z7laBHveb:tap??props.Z7laBHveb};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,HlFA9k7gu,NZ73Mn_3q,B1BRdzB7u,Z7laBHveb,gpily6XUb,D6E2gRuG7,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"vIU4cbfWE\",enabledGestures,ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onTap1ggisjn=activeVariantCallback(async(...args)=>{setGestureState({isPressed:false});if(Z7laBHveb){const res=await Z7laBHveb(...args);if(res===false)return false;}});const sharedStyleClassNames=[sharedStyle.className,sharedStyle1.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(Link,{href:HlFA9k7gu,motionChild:true,nodeId:\"vIU4cbfWE\",openInNewTab:false,scopeId:\"AQ823k8yZ\",smoothScroll:true,children:/*#__PURE__*/_jsx(motion.a,{...restProps,...gestureHandlers,className:`${cx(scopingClassNames,\"framer-gu9ghg\",className,classNames)} framer-vx9igk`,\"data-framer-name\":\"Default\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"vIU4cbfWE\",onTap:onTap1ggisjn,ref:refBinding,style:{borderBottomLeftRadius:8,borderBottomRightRadius:8,borderTopLeftRadius:8,borderTopRightRadius:8,...style},...addPropertyOverrides({\"vIU4cbfWE-hover\":{\"data-framer-name\":undefined}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1yhe57x\",\"data-framer-name\":\"Title\",layoutDependency:layoutDependency,layoutId:\"lrS3yay3V\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-1qf4mhm\",\"data-border\":true,layoutDependency:layoutDependency,layoutId:\"N2vyF7Opp\",style:{\"--border-bottom-width\":\"0.5px\",\"--border-color\":\"var(--token-66d0cf7b-9eb8-4245-b770-5d2d61dad950, rgba(245, 245, 255, 0.1))\",\"--border-left-width\":\"0.5px\",\"--border-right-width\":\"0.5px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0.5px\",backgroundColor:\"rgba(255, 255, 255, 0)\",borderBottomLeftRadius:6,borderBottomRightRadius:6,borderTopLeftRadius:6,borderTopRightRadius:6},variants:{\"vIU4cbfWE-hover\":{\"--border-color\":\"rgba(245, 245, 255, 0.2)\",backgroundColor:\"rgba(255, 255, 255, 0.03)\"}},children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:20,width:\"20px\",y:(componentViewport?.y||0)+2+(((componentViewport?.height||200)-4-120)/2+0+0)+41+9,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-16f1yy5-container\",layoutDependency:layoutDependency,layoutId:\"HvDx7mGWp-container\",nodeId:\"HvDx7mGWp\",rendersWithMotion:true,scopeId:\"AQ823k8yZ\",children:/*#__PURE__*/_jsx(NavNavIcons,{height:\"100%\",id:\"HvDx7mGWp\",layoutId:\"HvDx7mGWp\",style:{height:\"100%\",width:\"100%\"},variant:gpily6XUb,width:\"100%\"})})})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-102ch0d\",layoutDependency:layoutDependency,layoutId:\"Qvi47en2D\",children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-yn8jws\",\"data-framer-name\":\"Title\",layoutDependency:layoutDependency,layoutId:\"ovloQ_8TS\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1btjufx\",\"data-styles-preset\":\"xoAKFFJ8r\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255)))\"},children:\"How Twingate Works?\"})}),className:\"framer-12sigxb\",\"data-framer-name\":\"Title\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"CORf0AbJ6\",style:{\"--extracted-r6o4lv\":\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:NZ73Mn_3q,verticalAlignment:\"top\",withExternalLayout:true}),D6E2gRuG7&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1qkk047\",\"data-framer-name\":\"New Badge\",layoutDependency:layoutDependency,layoutId:\"IYiBlmVsR\",style:{backgroundColor:\"var(--token-66aad145-6043-4798-926f-87c538e5fcf8, rgb(71, 73, 13))\",borderBottomLeftRadius:17,borderBottomRightRadius:17,borderTopLeftRadius:17,borderTopRightRadius:17},children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1RUIEhvdmVzIE1lZGl1bQ==\",\"--framer-font-family\":'\"TT Hoves Medium\", \"TT Hoves Medium Placeholder\", sans-serif',\"--framer-font-size\":\"11px\",\"--framer-letter-spacing\":\"0.15px\",\"--framer-line-height\":\"1.5em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95)))\"},children:\"New\"})}),className:\"framer-1klisf5\",\"data-framer-name\":\"Title\",fonts:[\"CUSTOM;TT Hoves Medium\"],layoutDependency:layoutDependency,layoutId:\"TGWIeLzeP\",style:{\"--extracted-r6o4lv\":\"var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:20,width:\"10px\",y:(componentViewport?.y||0)+2+(((componentViewport?.height||200)-4-120)/2+0+0)+0+0+0+1.25,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1whzz5z-container\",layoutDependency:layoutDependency,layoutId:\"UHwgTJsgz-container\",nodeId:\"UHwgTJsgz\",rendersWithMotion:true,scopeId:\"AQ823k8yZ\",style:{opacity:0},variants:{\"vIU4cbfWE-hover\":{opacity:1}},children:/*#__PURE__*/_jsx(GraphicsButtonArrow,{height:\"100%\",id:\"UHwgTJsgz\",layoutId:\"UHwgTJsgz\",style:{height:\"100%\",width:\"100%\"},variant:\"Ez6AL2vTh\",width:\"100%\",...addPropertyOverrides({\"vIU4cbfWE-hover\":{variant:\"EjrLISIop\"}},baseVariant,gestureVariant)})})})]}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-137gzas\",\"data-styles-preset\":\"PihfgTAR5\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-376d54cb-4db7-448c-b192-cf6ae3d1a8ff, rgb(161, 161, 170)))\"},children:\"Keep track of changes to our product\"})}),className:\"framer-1l40uuv\",\"data-framer-name\":\"Subtitle\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"R2OB4UDXQ\",style:{\"--extracted-r6o4lv\":\"var(--token-376d54cb-4db7-448c-b192-cf6ae3d1a8ff, rgb(161, 161, 170))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:B1BRdzB7u,verticalAlignment:\"top\",withExternalLayout:true})]})]})})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-RDAI1.framer-vx9igk, .framer-RDAI1 .framer-vx9igk { display: block; }\",\".framer-RDAI1.framer-gu9ghg { align-content: flex-start; align-items: flex-start; cursor: pointer; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; overflow: visible; padding: 2px 0px 2px 0px; position: relative; text-decoration: none; width: 400px; }\",\".framer-RDAI1 .framer-1yhe57x { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-RDAI1 .framer-1qf4mhm { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: 38px; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 38px; }\",\".framer-RDAI1 .framer-16f1yy5-container { aspect-ratio: 1 / 1; flex: none; height: var(--framer-aspect-ratio-supported, 20px); position: relative; width: 20px; }\",\".framer-RDAI1 .framer-102ch0d { align-content: flex-start; align-items: flex-start; display: flex; flex: 1 0 0px; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 1px; }\",\".framer-RDAI1 .framer-yn8jws { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 4px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-RDAI1 .framer-12sigxb { flex: none; height: auto; max-width: 100%; pointer-events: none; position: relative; white-space: pre-wrap; width: auto; word-break: break-word; word-wrap: break-word; }\",\".framer-RDAI1 .framer-1qkk047 { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: visible; padding: 1px 6px 1px 6px; position: relative; width: min-content; }\",\".framer-RDAI1 .framer-1klisf5 { flex: none; height: auto; max-width: 100%; pointer-events: none; position: relative; white-space: pre-wrap; width: 24px; word-break: break-word; word-wrap: break-word; }\",\".framer-RDAI1 .framer-1whzz5z-container { flex: none; height: 20px; position: relative; width: 10px; }\",\".framer-RDAI1 .framer-1l40uuv { flex: none; height: auto; max-width: 100%; position: relative; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-RDAI1.framer-gu9ghg, .framer-RDAI1 .framer-1yhe57x, .framer-RDAI1 .framer-1qf4mhm, .framer-RDAI1 .framer-102ch0d, .framer-RDAI1 .framer-yn8jws, .framer-RDAI1 .framer-1qkk047 { gap: 0px; } .framer-RDAI1.framer-gu9ghg > *, .framer-RDAI1 .framer-102ch0d > * { margin: 0px; margin-bottom: calc(0px / 2); margin-top: calc(0px / 2); } .framer-RDAI1.framer-gu9ghg > :first-child, .framer-RDAI1 .framer-102ch0d > :first-child { margin-top: 0px; } .framer-RDAI1.framer-gu9ghg > :last-child, .framer-RDAI1 .framer-102ch0d > :last-child { margin-bottom: 0px; } .framer-RDAI1 .framer-1yhe57x > *, .framer-RDAI1 .framer-1qf4mhm > *, .framer-RDAI1 .framer-1qkk047 > * { margin: 0px; margin-left: calc(10px / 2); margin-right: calc(10px / 2); } .framer-RDAI1 .framer-1yhe57x > :first-child, .framer-RDAI1 .framer-1qf4mhm > :first-child, .framer-RDAI1 .framer-yn8jws > :first-child, .framer-RDAI1 .framer-1qkk047 > :first-child { margin-left: 0px; } .framer-RDAI1 .framer-1yhe57x > :last-child, .framer-RDAI1 .framer-1qf4mhm > :last-child, .framer-RDAI1 .framer-yn8jws > :last-child, .framer-RDAI1 .framer-1qkk047 > :last-child { margin-right: 0px; } .framer-RDAI1 .framer-yn8jws > * { margin: 0px; margin-left: calc(4px / 2); margin-right: calc(4px / 2); } }\",...sharedStyle.css,...sharedStyle1.css,'.framer-RDAI1[data-border=\"true\"]::after, .framer-RDAI1 [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; pointer-events: none; }'];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 46\n * @framerIntrinsicWidth 400\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]},\"WIpUcbw5c\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerVariables {\"HlFA9k7gu\":\"link\",\"NZ73Mn_3q\":\"title\",\"B1BRdzB7u\":\"subtitle\",\"Z7laBHveb\":\"tap\",\"gpily6XUb\":\"navIconVariant\",\"D6E2gRuG7\":\"new1\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerAQ823k8yZ=withCSS(Component,css,\"framer-RDAI1\");export default FramerAQ823k8yZ;FramerAQ823k8yZ.displayName=\"Nav / Tray \u2013\\xa0Item Copy\";FramerAQ823k8yZ.defaultProps={height:46,width:400};addPropertyControls(FramerAQ823k8yZ,{HlFA9k7gu:{title:\"Link\",type:ControlType.Link},NZ73Mn_3q:{defaultValue:\"How Twingate Works?\",displayTextArea:false,title:\"Title\",type:ControlType.String},B1BRdzB7u:{defaultValue:\"Keep track of changes to our product\",displayTextArea:false,title:\"Subtitle\",type:ControlType.String},Z7laBHveb:{title:\"Tap\",type:ControlType.EventHandler},gpily6XUb:NavNavIconsControls?.[\"variant\"]&&{...NavNavIconsControls[\"variant\"],defaultValue:\"vZeeZmyVJ\",description:undefined,hidden:undefined,title:\"Nav Icon Variant\"},D6E2gRuG7:{defaultValue:false,title:\"New\",type:ControlType.Boolean}});addFonts(FramerAQ823k8yZ,[{explicitInter:true,fonts:[{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/5vvr9Vy74if2I6bQbJvbw7SY1pQ.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/EOr0mi4hNtlgWNn9if640EZzXCo.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/Y9k9QrlZAqio88Klkmbd8VoMQc.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/OYrD2tBIBPvoJXiIHnLoOXnY9M.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/JeYwfuaPfZHQhEG8U5gtPDZ7WQ.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/vQyevYAyHtARFwPqUzQGpnDs.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/b6Y37FthZeALduNqHicBT6FutY.woff2\",weight:\"400\"},{family:\"TT Hoves Medium\",source:\"custom\",url:\"https://framerusercontent.com/assets/M4cAr8oQzbyO9Ynb0WkinOqcoI.woff2\"}]},...NavNavIconsFonts,...GraphicsButtonArrowFonts,...getFontsFromSharedStyle(sharedStyle.fonts),...getFontsFromSharedStyle(sharedStyle1.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerAQ823k8yZ\",\"slots\":[],\"annotations\":{\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"WIpUcbw5c\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerDisplayContentsDiv\":\"false\",\"framerContractVersion\":\"1\",\"framerVariables\":\"{\\\"HlFA9k7gu\\\":\\\"link\\\",\\\"NZ73Mn_3q\\\":\\\"title\\\",\\\"B1BRdzB7u\\\":\\\"subtitle\\\",\\\"Z7laBHveb\\\":\\\"tap\\\",\\\"gpily6XUb\\\":\\\"navIconVariant\\\",\\\"D6E2gRuG7\\\":\\\"new1\\\"}\",\"framerIntrinsicHeight\":\"46\",\"framerIntrinsicWidth\":\"400\",\"framerComponentViewportWidth\":\"true\",\"framerImmutableVariables\":\"true\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./AQ823k8yZ.map", "// Generated by Framer (cf4c6d7)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,getFontsFromSharedStyle,getLoadingLazyAtYPosition,Image,Link,RichText,SmartComponentScopedContainer,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import EasingGradient from\"https://framerusercontent.com/modules/TqPeWj5f410fFZQ7gAgf/qKhK4bnhsmwaenV1TcQz/EasingGradient.js\";import*as sharedStyle from\"https://framerusercontent.com/modules/8D5Yrl7noAgh91Nqk8Op/33BzxBWnQs99wRDuXfcP/M6hbwtZyh.js\";import*as sharedStyle1 from\"https://framerusercontent.com/modules/iSeRdQLTVmRrhWISCw0l/c55PksAizAWSQp01iTR3/PihfgTAR5.js\";import GraphicsButtonArrow from\"https://framerusercontent.com/modules/xPjbsMR6WyZIrRxgwZO7/JjHfXKlzAHHgG5R9o3n0/pRemd4fMu.js\";const EasingGradientFonts=getFonts(EasingGradient);const GraphicsButtonArrowFonts=getFonts(GraphicsButtonArrow);const enabledGestures={iM5NBbyMm:{hover:true},Y5wUo8S7g:{hover:true}};const cycleOrder=[\"iM5NBbyMm\",\"Y5wUo8S7g\",\"MzjHtVZ8y\"];const serializationHash=\"framer-fCPLd\";const variantClassNames={iM5NBbyMm:\"framer-v-1yyqiic\",MzjHtVZ8y:\"framer-v-1eema56\",Y5wUo8S7g:\"framer-v-1dgrutt\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const toResponsiveImage=value=>{if(typeof value===\"object\"&&value!==null&&typeof value.src===\"string\"){return value;}return typeof value===\"string\"?{src:value}:undefined;};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const humanReadableVariantMap={Default:\"iM5NBbyMm\",New:\"Y5wUo8S7g\",Split:\"MzjHtVZ8y\"};const getProps=({height,id,image,link,subtitle,title,width,...props})=>{return{...props,FCJjotThg:title??props.FCJjotThg??\"WebAuthn 2FA\",gXZzLrrxC:subtitle??props.gXZzLrrxC??\"Feb 13, 2023\",variant:humanReadableVariantMap[props.variant]??props.variant??\"iM5NBbyMm\",W8QKdoWYc:image??props.W8QKdoWYc,xB6GQkGqy:link??props.xB6GQkGqy};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,FCJjotThg,gXZzLrrxC,W8QKdoWYc,xB6GQkGqy,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"iM5NBbyMm\",enabledGestures,ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[sharedStyle.className,sharedStyle1.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);const isDisplayed=()=>{if(baseVariant===\"MzjHtVZ8y\")return false;return true;};return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(Link,{href:xB6GQkGqy,motionChild:true,nodeId:\"iM5NBbyMm\",openInNewTab:false,scopeId:\"gXk6dU62K\",smoothScroll:true,children:/*#__PURE__*/_jsxs(motion.a,{...restProps,...gestureHandlers,className:`${cx(scopingClassNames,\"framer-1yyqiic\",className,classNames)} framer-1d9ykku`,\"data-border\":true,\"data-framer-name\":\"Default\",layoutDependency:layoutDependency,layoutId:\"iM5NBbyMm\",ref:refBinding,style:{\"--border-bottom-width\":\"0.5px\",\"--border-color\":\"var(--token-66d0cf7b-9eb8-4245-b770-5d2d61dad950, rgba(255, 255, 255, 0.1))\",\"--border-left-width\":\"0.5px\",\"--border-right-width\":\"0.5px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0.5px\",backgroundColor:\"rgba(255, 255, 255, 0)\",borderBottomLeftRadius:12,borderBottomRightRadius:12,borderTopLeftRadius:12,borderTopRightRadius:12,...style},variants:{\"iM5NBbyMm-hover\":{\"--border-color\":\"var(--token-66d0cf7b-9eb8-4245-b770-5d2d61dad950, rgba(245, 245, 255, 0.1))\"},MzjHtVZ8y:{\"--border-bottom-width\":\"0px\",\"--border-left-width\":\"0px\",\"--border-right-width\":\"0px\",\"--border-top-width\":\"0px\",borderBottomLeftRadius:0,borderBottomRightRadius:0,borderTopLeftRadius:0,borderTopRightRadius:0},Y5wUo8S7g:{\"--border-bottom-width\":\"0px\",\"--border-left-width\":\"0px\",\"--border-right-width\":\"0px\",\"--border-top-width\":\"0px\",borderBottomLeftRadius:0,borderBottomRightRadius:0,borderTopLeftRadius:0,borderTopRightRadius:0}},...addPropertyOverrides({\"iM5NBbyMm-hover\":{\"data-framer-name\":undefined},\"Y5wUo8S7g-hover\":{\"data-framer-name\":undefined},MzjHtVZ8y:{\"data-framer-name\":\"Split\"},Y5wUo8S7g:{\"data-framer-name\":\"New\"}},baseVariant,gestureVariant),children:[isDisplayed()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-huexrl\",\"data-framer-name\":\"Hover fade\",layoutDependency:layoutDependency,layoutId:\"kBzgrT9Po\",style:{\"--border-bottom-width\":\"0px\",\"--border-color\":\"rgba(0, 0, 0, 0)\",\"--border-left-width\":\"0px\",\"--border-right-width\":\"0px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0px\",background:\"linear-gradient(180deg, rgba(84, 84, 84, 0) 0%, rgba(0, 0, 0, 0.55) 100%)\",borderBottomLeftRadius:12,borderBottomRightRadius:12,borderTopLeftRadius:12,borderTopRightRadius:12,opacity:0},variants:{\"iM5NBbyMm-hover\":{\"--border-bottom-width\":\"1px\",\"--border-color\":\"var(--token-66d0cf7b-9eb8-4245-b770-5d2d61dad950, rgba(245, 245, 255, 0.1))\",\"--border-left-width\":\"1px\",\"--border-right-width\":\"1px\",\"--border-style\":\"solid\",\"--border-top-width\":\"1px\",opacity:1},\"Y5wUo8S7g-hover\":{opacity:1},Y5wUo8S7g:{\"--border-bottom-width\":\"1px\",\"--border-color\":\"var(--token-2b080329-29ba-481c-ac92-832881069b36, rgba(255, 255, 255, 0.1))\",\"--border-left-width\":\"1px\",\"--border-right-width\":\"1px\",\"--border-style\":\"solid\",\"--border-top-width\":\"1px\"}},...addPropertyOverrides({\"iM5NBbyMm-hover\":{\"data-border\":true},Y5wUo8S7g:{\"data-border\":true}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(Image,{background:{alt:\"\",fit:\"fill\",loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+0),sizes:componentViewport?.width||\"100vw\",...toResponsiveImage(W8QKdoWYc)},className:\"framer-jjzjjx\",\"data-framer-name\":\"Image\",layoutDependency:layoutDependency,layoutId:\"C9R3om0ZD\",style:{\"--border-bottom-width\":\"0px\",\"--border-color\":\"rgba(0, 0, 0, 0)\",\"--border-left-width\":\"0px\",\"--border-right-width\":\"0px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0px\",borderBottomLeftRadius:0,borderBottomRightRadius:0,borderTopLeftRadius:0,borderTopRightRadius:0,filter:\"grayscale(0)\",WebkitFilter:\"grayscale(0)\"},variants:{\"iM5NBbyMm-hover\":{\"--border-bottom-width\":\"0px\",\"--border-left-width\":\"0px\",\"--border-right-width\":\"0px\",\"--border-top-width\":\"0px\",borderBottomLeftRadius:0,borderBottomRightRadius:0,borderTopLeftRadius:0,borderTopRightRadius:0},MzjHtVZ8y:{\"--border-bottom-width\":\"0.5px\",\"--border-color\":\"var(--token-2b080329-29ba-481c-ac92-832881069b36, rgba(255, 255, 255, 0.1))\",\"--border-left-width\":\"0.5px\",\"--border-right-width\":\"0.5px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0.5px\",borderBottomLeftRadius:12,borderBottomRightRadius:12,borderTopLeftRadius:12,borderTopRightRadius:12},Y5wUo8S7g:{\"--border-bottom-width\":\"0.5px\",\"--border-color\":\"var(--token-2b080329-29ba-481c-ac92-832881069b36, rgba(255, 255, 255, 0.1))\",\"--border-left-width\":\"0.5px\",\"--border-right-width\":\"0.5px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0.5px\",borderBottomLeftRadius:12,borderBottomRightRadius:12,borderTopLeftRadius:12,borderTopRightRadius:12}},...addPropertyOverrides({MzjHtVZ8y:{\"data-border\":true,background:{alt:\"\",fit:\"fill\",loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+0),sizes:`max((${componentViewport?.width||\"100vw\"} - 8px) / 2, 1px)`,...toResponsiveImage(W8QKdoWYc)}},Y5wUo8S7g:{\"data-border\":true,background:{alt:\"\",fit:\"fill\",loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+0+((componentViewport?.height||216)-0-(Math.max(0,((componentViewport?.height||216)-0-50)/1)*1+42+8)+0+0)),sizes:componentViewport?.width||\"100vw\",...toResponsiveImage(W8QKdoWYc)}}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1hrc4p6-container\",isAuthoredByUser:true,isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"iZ7cabcp2-container\",nodeId:\"iZ7cabcp2\",rendersWithMotion:true,scopeId:\"gXk6dU62K\",style:{opacity:.5},variants:{MzjHtVZ8y:{opacity:0},Y5wUo8S7g:{opacity:0}},children:/*#__PURE__*/_jsx(EasingGradient,{angle:0,easeCustom:\"0.645, 0.045, 0.355, 1\",easeString:true,easing:\"ease-in-out\",from:\"rgb(14, 15, 17)\",height:\"100%\",id:\"iZ7cabcp2\",layoutId:\"iZ7cabcp2\",mode:\"husl\",radius:0,stops:5,style:{height:\"100%\",width:\"100%\"},to:\"rgba(14, 15, 17, 0)\",width:\"100%\"})})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1xukpme\",layoutDependency:layoutDependency,layoutId:\"bFj5uEN72\",children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-jozprn\",\"data-framer-name\":\"Title\",layoutDependency:layoutDependency,layoutId:\"LndUGrOMs\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-87abjg\",\"data-styles-preset\":\"M6hbwtZyh\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255)))\"},children:\"WebAuthn 2FA\"})}),className:\"framer-5r0qvu\",\"data-framer-name\":\"Title\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"e8LdUUAu7\",style:{\"--extracted-r6o4lv\":\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\",textShadow:\"0px 1px 3px rgba(0, 0, 0, 0.1)\"},text:FCJjotThg,verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:20,width:\"10px\",y:(componentViewport?.y||0)+16+((componentViewport?.height||216)-32-42+0+0)+0+-39+1.25,...addPropertyOverrides({MzjHtVZ8y:{y:(componentViewport?.y||0)+0+0+-39+1.25},Y5wUo8S7g:{y:(componentViewport?.y||0)+0+((componentViewport?.height||216)-0-(Math.max(0,((componentViewport?.height||216)-0-50)/1)*1+42+8)+Math.max(0,((componentViewport?.height||216)-0-50)/1)*1+8)+0+-39+1.25}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1ks1do9-container\",layoutDependency:layoutDependency,layoutId:\"YCyVy13Z9-container\",nodeId:\"YCyVy13Z9\",rendersWithMotion:true,scopeId:\"gXk6dU62K\",style:{opacity:0},variants:{\"Y5wUo8S7g-hover\":{opacity:1}},children:/*#__PURE__*/_jsx(GraphicsButtonArrow,{height:\"100%\",id:\"YCyVy13Z9\",layoutId:\"YCyVy13Z9\",style:{height:\"100%\",width:\"100%\"},variant:\"Ez6AL2vTh\",width:\"100%\",...addPropertyOverrides({\"Y5wUo8S7g-hover\":{variant:\"EjrLISIop\"}},baseVariant,gestureVariant)})})})]}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-137gzas\",\"data-styles-preset\":\"PihfgTAR5\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, rgba(255, 255, 255, 0.7))\"},children:\"Feb 13, 2023\"})}),className:\"framer-1ewfumh\",\"data-framer-name\":\"Subtitle\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"KDdbbHraj\",style:{\"--extracted-r6o4lv\":\"rgba(255, 255, 255, 0.7)\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\",textShadow:\"0px 1px 3px rgba(0, 0, 0, 0.1)\"},text:gXZzLrrxC,verticalAlignment:\"top\",withExternalLayout:true})]})]})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-fCPLd.framer-1d9ykku, .framer-fCPLd .framer-1d9ykku { display: block; }\",\".framer-fCPLd.framer-1yyqiic { align-content: flex-start; align-items: flex-start; cursor: pointer; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: 216px; justify-content: flex-end; overflow: hidden; padding: 16px; position: relative; text-decoration: none; width: 244px; will-change: var(--framer-will-change-override, transform); }\",\".framer-fCPLd .framer-huexrl { flex: none; height: 100%; left: 0px; overflow: visible; position: absolute; top: 0px; width: 100%; z-index: 1; }\",\".framer-fCPLd .framer-jjzjjx { bottom: 0px; flex: none; left: 0px; overflow: hidden; position: absolute; right: 0px; top: 0px; z-index: 0; }\",\".framer-fCPLd .framer-1hrc4p6-container { bottom: 0px; flex: none; left: 0px; position: absolute; right: 0px; top: 0px; z-index: 0; }\",\".framer-fCPLd .framer-1xukpme { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: 42px; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 212px; }\",\".framer-fCPLd .framer-jozprn { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 4px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-fCPLd .framer-5r0qvu { flex: none; height: auto; pointer-events: none; position: relative; white-space: pre; width: auto; z-index: 1; }\",\".framer-fCPLd .framer-1ks1do9-container { flex: none; height: 20px; position: relative; width: 10px; }\",\".framer-fCPLd .framer-1ewfumh { flex: none; height: auto; position: relative; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; z-index: 1; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-fCPLd.framer-1yyqiic, .framer-fCPLd .framer-1xukpme, .framer-fCPLd .framer-jozprn { gap: 0px; } .framer-fCPLd.framer-1yyqiic > *, .framer-fCPLd .framer-1xukpme > * { margin: 0px; margin-bottom: calc(0px / 2); margin-top: calc(0px / 2); } .framer-fCPLd.framer-1yyqiic > :first-child, .framer-fCPLd .framer-1xukpme > :first-child { margin-top: 0px; } .framer-fCPLd.framer-1yyqiic > :last-child, .framer-fCPLd .framer-1xukpme > :last-child { margin-bottom: 0px; } .framer-fCPLd .framer-jozprn > * { margin: 0px; margin-left: calc(4px / 2); margin-right: calc(4px / 2); } .framer-fCPLd .framer-jozprn > :first-child { margin-left: 0px; } .framer-fCPLd .framer-jozprn > :last-child { margin-right: 0px; } }\",\".framer-fCPLd.framer-v-1dgrutt.framer-1yyqiic { gap: 8px; padding: 0px; will-change: unset; }\",\".framer-fCPLd.framer-v-1dgrutt .framer-huexrl { height: 77%; left: calc(50.00000000000002% - 100% / 2); }\",\".framer-fCPLd.framer-v-1dgrutt .framer-jjzjjx { bottom: unset; flex: 1 0 0px; height: 1px; left: unset; position: relative; right: unset; top: unset; width: 100%; will-change: var(--framer-will-change-override, transform); }\",\".framer-fCPLd.framer-v-1dgrutt .framer-1xukpme { width: 100%; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-fCPLd.framer-v-1dgrutt.framer-1yyqiic { gap: 0px; } .framer-fCPLd.framer-v-1dgrutt.framer-1yyqiic > * { margin: 0px; margin-bottom: calc(8px / 2); margin-top: calc(8px / 2); } .framer-fCPLd.framer-v-1dgrutt.framer-1yyqiic > :first-child { margin-top: 0px; } .framer-fCPLd.framer-v-1dgrutt.framer-1yyqiic > :last-child { margin-bottom: 0px; } }\",\".framer-fCPLd.framer-v-1eema56.framer-1yyqiic { cursor: unset; flex-direction: row; gap: 8px; height: min-content; padding: 0px; width: 295px; will-change: unset; }\",\".framer-fCPLd.framer-v-1eema56 .framer-jjzjjx { bottom: unset; flex: 1 0 0px; height: 108px; left: unset; position: relative; right: unset; top: unset; width: 1px; will-change: var(--framer-will-change-override, transform); }\",\".framer-fCPLd.framer-v-1eema56 .framer-1xukpme { flex: 1 0 0px; width: 1px; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-fCPLd.framer-v-1eema56.framer-1yyqiic { gap: 0px; } .framer-fCPLd.framer-v-1eema56.framer-1yyqiic > * { margin: 0px; margin-left: calc(8px / 2); margin-right: calc(8px / 2); } .framer-fCPLd.framer-v-1eema56.framer-1yyqiic > :first-child { margin-left: 0px; } .framer-fCPLd.framer-v-1eema56.framer-1yyqiic > :last-child { margin-right: 0px; } }\",\".framer-fCPLd.framer-v-1yyqiic.hover .framer-huexrl { order: 0; }\",\".framer-fCPLd.framer-v-1yyqiic.hover .framer-jjzjjx { order: 1; }\",\".framer-fCPLd.framer-v-1yyqiic.hover .framer-1hrc4p6-container { order: 2; }\",\".framer-fCPLd.framer-v-1yyqiic.hover .framer-1xukpme { order: 3; }\",\".framer-fCPLd.framer-v-1dgrutt.hover.framer-1yyqiic { will-change: unset; }\",\".framer-fCPLd.framer-v-1dgrutt.hover .framer-jjzjjx { bottom: unset; left: unset; right: unset; top: unset; }\",...sharedStyle.css,...sharedStyle1.css,'.framer-fCPLd[data-border=\"true\"]::after, .framer-fCPLd [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; pointer-events: none; }'];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 216\n * @framerIntrinsicWidth 244\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"Y5wUo8S7g\":{\"layout\":[\"fixed\",\"fixed\"]},\"MzjHtVZ8y\":{\"layout\":[\"fixed\",\"auto\"]},\"m0LKLfGPj\":{\"layout\":[\"fixed\",\"fixed\"]},\"MoPRka0lr\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerVariables {\"FCJjotThg\":\"title\",\"gXZzLrrxC\":\"subtitle\",\"W8QKdoWYc\":\"image\",\"xB6GQkGqy\":\"link\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramergXk6dU62K=withCSS(Component,css,\"framer-fCPLd\");export default FramergXk6dU62K;FramergXk6dU62K.displayName=\"Nav / Tray \u2013 Card (Changelog)\";FramergXk6dU62K.defaultProps={height:216,width:244};addPropertyControls(FramergXk6dU62K,{variant:{options:[\"iM5NBbyMm\",\"Y5wUo8S7g\",\"MzjHtVZ8y\"],optionTitles:[\"Default\",\"New\",\"Split\"],title:\"Variant\",type:ControlType.Enum},FCJjotThg:{defaultValue:\"WebAuthn 2FA\",title:\"Title\",type:ControlType.String},gXZzLrrxC:{defaultValue:\"Feb 13, 2023\",displayTextArea:false,title:\"Subtitle\",type:ControlType.String},W8QKdoWYc:{title:\"Image\",type:ControlType.ResponsiveImage},xB6GQkGqy:{title:\"Link\",type:ControlType.Link}});addFonts(FramergXk6dU62K,[{explicitInter:true,fonts:[{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/5vvr9Vy74if2I6bQbJvbw7SY1pQ.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/EOr0mi4hNtlgWNn9if640EZzXCo.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/Y9k9QrlZAqio88Klkmbd8VoMQc.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/OYrD2tBIBPvoJXiIHnLoOXnY9M.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/JeYwfuaPfZHQhEG8U5gtPDZ7WQ.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/vQyevYAyHtARFwPqUzQGpnDs.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/b6Y37FthZeALduNqHicBT6FutY.woff2\",weight:\"400\"}]},...EasingGradientFonts,...GraphicsButtonArrowFonts,...getFontsFromSharedStyle(sharedStyle.fonts),...getFontsFromSharedStyle(sharedStyle1.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramergXk6dU62K\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"216\",\"framerImmutableVariables\":\"true\",\"framerIntrinsicWidth\":\"244\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"Y5wUo8S7g\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"MzjHtVZ8y\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"m0LKLfGPj\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"MoPRka0lr\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerComponentViewportWidth\":\"true\",\"framerContractVersion\":\"1\",\"framerDisplayContentsDiv\":\"false\",\"framerVariables\":\"{\\\"FCJjotThg\\\":\\\"title\\\",\\\"gXZzLrrxC\\\":\\\"subtitle\\\",\\\"W8QKdoWYc\\\":\\\"image\\\",\\\"xB6GQkGqy\\\":\\\"link\\\"}\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./gXk6dU62K.map", "// Generated by Framer (cf4c6d7)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,getFontsFromSharedStyle,getPropertyControls,Link,RichText,SmartComponentScopedContainer,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import*as sharedStyle1 from\"https://framerusercontent.com/modules/iSeRdQLTVmRrhWISCw0l/c55PksAizAWSQp01iTR3/PihfgTAR5.js\";import*as sharedStyle from\"https://framerusercontent.com/modules/g4IOzU8jABenlv54BPmR/1GNZvqRUZevOCeQx8Fga/xoAKFFJ8r.js\";import NavTrayIcon from\"https://framerusercontent.com/modules/uk9160JMbl3W8QtFnjKG/UjlwL78wxI4iIGRfLJcM/ikk_McnKH.js\";const NavTrayIconFonts=getFonts(NavTrayIcon);const NavTrayIconControls=getPropertyControls(NavTrayIcon);const enabledGestures={rS16mv8bj:{hover:true}};const cycleOrder=[\"rS16mv8bj\",\"GobthPXov\"];const serializationHash=\"framer-ifYyI\";const variantClassNames={GobthPXov:\"framer-v-2vnvlj\",rS16mv8bj:\"framer-v-1538id8\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const humanReadableEnumMap={\"API - Hover\":\"nOFe8WcIU\",\"Device controls\":\"vYM7kRVFX\",\"HIW \u2013\\xa0Hover\":\"bJQdBKSqu\",\"Quick start- Hover\":\"YZkileseO\",\"Quick Start\":\"efAxaIdFV\",\"VPN Replacement\":\"BTMyLjB5l\",API:\"RWYVlvI4_\",HIW:\"kOKVZMv3e\",Infrastructure:\"PAHXpgsmX\"};const humanReadableVariantMap={Desktop:\"rS16mv8bj\",Phone:\"GobthPXov\"};const getProps=({height,icon,iconHover,id,link,subtitle,title,width,...props})=>{return{...props,EoiUdnIrn:humanReadableEnumMap[iconHover]??iconHover??props.EoiUdnIrn??\"bJQdBKSqu\",TuXUBRiOh:humanReadableEnumMap[icon]??icon??props.TuXUBRiOh??\"kOKVZMv3e\",TXl3JifQz:link??props.TXl3JifQz,variant:humanReadableVariantMap[props.variant]??props.variant??\"rS16mv8bj\",WDE61Js6q:title??props.WDE61Js6q??\"Quick Start\",ySJTE4XN0:subtitle??props.ySJTE4XN0??\"Deploy Twingate in 15-minutes with our Quick Start guide\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,TXl3JifQz,WDE61Js6q,ySJTE4XN0,TuXUBRiOh,EoiUdnIrn,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"rS16mv8bj\",enabledGestures,ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[sharedStyle.className,sharedStyle1.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(Link,{href:TXl3JifQz,motionChild:true,nodeId:\"rS16mv8bj\",openInNewTab:false,scopeId:\"KEIGp9seQ\",smoothScroll:true,children:/*#__PURE__*/_jsx(motion.a,{...restProps,...gestureHandlers,className:`${cx(scopingClassNames,\"framer-1538id8\",className,classNames)} framer-ewan1l`,\"data-border\":true,\"data-framer-name\":\"Desktop\",layoutDependency:layoutDependency,layoutId:\"rS16mv8bj\",ref:refBinding,style:{\"--border-bottom-width\":\"0.5px\",\"--border-color\":\"var(--token-66d0cf7b-9eb8-4245-b770-5d2d61dad950, rgba(255, 255, 255, 0.1))\",\"--border-left-width\":\"0.5px\",\"--border-right-width\":\"0.5px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0.5px\",backgroundColor:\"rgba(255, 255, 255, 0)\",borderBottomLeftRadius:12,borderBottomRightRadius:12,borderTopLeftRadius:12,borderTopRightRadius:12,...style},variants:{\"rS16mv8bj-hover\":{\"--border-color\":\"rgba(245, 245, 255, 0.2)\",backgroundColor:\"rgba(255, 255, 255, 0.03)\"}},...addPropertyOverrides({\"rS16mv8bj-hover\":{\"data-framer-name\":undefined},GobthPXov:{\"data-framer-name\":\"Phone\"}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1co9njw\",layoutDependency:layoutDependency,layoutId:\"MR8Mw2kay\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-1lwdgy4\",\"data-framer-name\":\"Icons\",layoutDependency:layoutDependency,layoutId:\"b3BxcCwov\",children:/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-7v1glz-container\",layoutDependency:layoutDependency,layoutId:\"P53zSTec2-container\",nodeId:\"P53zSTec2\",rendersWithMotion:true,scopeId:\"KEIGp9seQ\",children:/*#__PURE__*/_jsx(NavTrayIcon,{height:\"100%\",id:\"P53zSTec2\",layoutId:\"P53zSTec2\",variant:TuXUBRiOh,width:\"100%\",...addPropertyOverrides({\"rS16mv8bj-hover\":{variant:EoiUdnIrn}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1lc0sln\",\"data-framer-name\":\"Text\",layoutDependency:layoutDependency,layoutId:\"OxHnaaLUU\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1btjufx\",\"data-styles-preset\":\"xoAKFFJ8r\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255)))\"},children:\"Quick Start\"})}),className:\"framer-1g3z0po\",\"data-framer-name\":\"Title\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"ETXXPEUF7\",style:{\"--extracted-r6o4lv\":\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:WDE61Js6q,verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-137gzas\",\"data-styles-preset\":\"PihfgTAR5\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-376d54cb-4db7-448c-b192-cf6ae3d1a8ff, rgb(161, 161, 170)))\"},children:\"Deploy Twingate in 15-minutes with our Quick Start guide\"})}),className:\"framer-1b9ztby\",\"data-framer-name\":\"Subtitle\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"HJlrZYpeI\",style:{\"--extracted-r6o4lv\":\"var(--token-376d54cb-4db7-448c-b192-cf6ae3d1a8ff, rgb(161, 161, 170))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:ySJTE4XN0,verticalAlignment:\"top\",withExternalLayout:true})]})]})})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-ifYyI.framer-ewan1l, .framer-ifYyI .framer-ewan1l { display: block; }\",\".framer-ifYyI.framer-1538id8 { align-content: flex-start; align-items: flex-start; cursor: pointer; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 25px; height: 211px; justify-content: center; overflow: visible; padding: 16px; position: relative; text-decoration: none; width: 175px; }\",\".framer-ifYyI .framer-1co9njw { align-content: flex-start; align-items: flex-start; display: flex; flex: 1 0 0px; flex-direction: column; flex-wrap: nowrap; height: 1px; justify-content: space-between; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-ifYyI .framer-1lwdgy4 { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: min-content; }\",\".framer-ifYyI .framer-7v1glz-container { flex: none; height: auto; position: relative; width: auto; }\",\".framer-ifYyI .framer-1lc0sln { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-end; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-ifYyI .framer-1g3z0po { flex: none; height: auto; pointer-events: none; position: relative; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; }\",\".framer-ifYyI .framer-1b9ztby { flex: none; height: auto; position: relative; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-ifYyI.framer-1538id8, .framer-ifYyI .framer-1lwdgy4, .framer-ifYyI .framer-1lc0sln { gap: 0px; } .framer-ifYyI.framer-1538id8 > * { margin: 0px; margin-bottom: calc(25px / 2); margin-top: calc(25px / 2); } .framer-ifYyI.framer-1538id8 > :first-child, .framer-ifYyI .framer-1lc0sln > :first-child { margin-top: 0px; } .framer-ifYyI.framer-1538id8 > :last-child, .framer-ifYyI .framer-1lc0sln > :last-child { margin-bottom: 0px; } .framer-ifYyI .framer-1lwdgy4 > * { margin: 0px; margin-left: calc(10px / 2); margin-right: calc(10px / 2); } .framer-ifYyI .framer-1lwdgy4 > :first-child { margin-left: 0px; } .framer-ifYyI .framer-1lwdgy4 > :last-child { margin-right: 0px; } .framer-ifYyI .framer-1lc0sln > * { margin: 0px; margin-bottom: calc(0px / 2); margin-top: calc(0px / 2); } }\",\".framer-ifYyI.framer-v-2vnvlj.framer-1538id8 { cursor: unset; height: min-content; width: 300px; }\",\".framer-ifYyI.framer-v-2vnvlj .framer-1co9njw { align-content: center; align-items: center; flex: none; flex-direction: row; gap: 28px; height: min-content; justify-content: center; }\",\".framer-ifYyI.framer-v-2vnvlj .framer-1lc0sln { flex: 1 0 0px; width: 1px; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-ifYyI.framer-v-2vnvlj .framer-1co9njw { gap: 0px; } .framer-ifYyI.framer-v-2vnvlj .framer-1co9njw > * { margin: 0px; margin-left: calc(28px / 2); margin-right: calc(28px / 2); } .framer-ifYyI.framer-v-2vnvlj .framer-1co9njw > :first-child { margin-left: 0px; } .framer-ifYyI.framer-v-2vnvlj .framer-1co9njw > :last-child { margin-right: 0px; } }\",...sharedStyle.css,...sharedStyle1.css,'.framer-ifYyI[data-border=\"true\"]::after, .framer-ifYyI [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; pointer-events: none; }'];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 211\n * @framerIntrinsicWidth 175\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"GobthPXov\":{\"layout\":[\"fixed\",\"auto\"]},\"uqM1thVpx\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerVariables {\"TXl3JifQz\":\"link\",\"WDE61Js6q\":\"title\",\"ySJTE4XN0\":\"subtitle\",\"TuXUBRiOh\":\"icon\",\"EoiUdnIrn\":\"iconHover\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerKEIGp9seQ=withCSS(Component,css,\"framer-ifYyI\");export default FramerKEIGp9seQ;FramerKEIGp9seQ.displayName=\"Nav / Tray \u2013 Card\";FramerKEIGp9seQ.defaultProps={height:211,width:175};addPropertyControls(FramerKEIGp9seQ,{variant:{options:[\"rS16mv8bj\",\"GobthPXov\"],optionTitles:[\"Desktop\",\"Phone\"],title:\"Variant\",type:ControlType.Enum},TXl3JifQz:{title:\"Link\",type:ControlType.Link},WDE61Js6q:{defaultValue:\"Quick Start\",displayTextArea:false,title:\"Title\",type:ControlType.String},ySJTE4XN0:{defaultValue:\"Deploy Twingate in 15-minutes with our Quick Start guide\",displayTextArea:false,title:\"Subtitle\",type:ControlType.String},TuXUBRiOh:NavTrayIconControls?.[\"variant\"]&&{...NavTrayIconControls[\"variant\"],defaultValue:\"kOKVZMv3e\",description:undefined,hidden:undefined,title:\"Icon\"},EoiUdnIrn:NavTrayIconControls?.[\"variant\"]&&{...NavTrayIconControls[\"variant\"],defaultValue:\"bJQdBKSqu\",description:undefined,hidden:undefined,title:\"Icon Hover\"}});addFonts(FramerKEIGp9seQ,[{explicitInter:true,fonts:[{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/5vvr9Vy74if2I6bQbJvbw7SY1pQ.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/EOr0mi4hNtlgWNn9if640EZzXCo.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/Y9k9QrlZAqio88Klkmbd8VoMQc.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/OYrD2tBIBPvoJXiIHnLoOXnY9M.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/JeYwfuaPfZHQhEG8U5gtPDZ7WQ.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/vQyevYAyHtARFwPqUzQGpnDs.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/b6Y37FthZeALduNqHicBT6FutY.woff2\",weight:\"400\"}]},...NavTrayIconFonts,...getFontsFromSharedStyle(sharedStyle.fonts),...getFontsFromSharedStyle(sharedStyle1.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerKEIGp9seQ\",\"slots\":[],\"annotations\":{\"framerImmutableVariables\":\"true\",\"framerIntrinsicHeight\":\"211\",\"framerComponentViewportWidth\":\"true\",\"framerContractVersion\":\"1\",\"framerVariables\":\"{\\\"TXl3JifQz\\\":\\\"link\\\",\\\"WDE61Js6q\\\":\\\"title\\\",\\\"ySJTE4XN0\\\":\\\"subtitle\\\",\\\"TuXUBRiOh\\\":\\\"icon\\\",\\\"EoiUdnIrn\\\":\\\"iconHover\\\"}\",\"framerIntrinsicWidth\":\"175\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"GobthPXov\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"uqM1thVpx\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerDisplayContentsDiv\":\"false\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./KEIGp9seQ.map", "// Generated by Framer (cf4c6d7)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,getFontsFromSharedStyle,Link,RichText,SmartComponentScopedContainer,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import*as sharedStyle from\"https://framerusercontent.com/modules/iSeRdQLTVmRrhWISCw0l/c55PksAizAWSQp01iTR3/PihfgTAR5.js\";import GraphicsButtonArrow from\"https://framerusercontent.com/modules/xPjbsMR6WyZIrRxgwZO7/JjHfXKlzAHHgG5R9o3n0/pRemd4fMu.js\";const GraphicsButtonArrowFonts=getFonts(GraphicsButtonArrow);const cycleOrder=[\"yAQHjAcYe\",\"L96ME5D7N\"];const serializationHash=\"framer-0SwCZ\";const variantClassNames={L96ME5D7N:\"framer-v-ws83y8\",yAQHjAcYe:\"framer-v-1kqpdzw\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const isSet=value=>{if(Array.isArray(value))return value.length>0;return value!==undefined&&value!==null&&value!==\"\";};const negate=value=>{return!value;};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const humanReadableVariantMap={Default:\"yAQHjAcYe\",Hover:\"L96ME5D7N\"};const getProps=({height,id,link,title,width,...props})=>{return{...props,h0JjnntIV:link??props.h0JjnntIV,kE6x8JtXN:title??props.kE6x8JtXN??\"Documentation\",variant:humanReadableVariantMap[props.variant]??props.variant??\"yAQHjAcYe\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,kE6x8JtXN,h0JjnntIV,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"yAQHjAcYe\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onMouseEnter1ncm4fo=activeVariantCallback(async(...args)=>{setVariant(\"L96ME5D7N\");});const onMouseLeave15iq2ks=activeVariantCallback(async(...args)=>{setVariant(\"yAQHjAcYe\");});const sharedStyleClassNames=[sharedStyle.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);const visible=isSet(h0JjnntIV);const visible1=negate(isSet(h0JjnntIV));return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-1kqpdzw\",className,classNames),\"data-framer-name\":\"Default\",layoutDependency:layoutDependency,layoutId:\"yAQHjAcYe\",ref:refBinding,style:{borderBottomLeftRadius:8,borderBottomRightRadius:8,borderTopLeftRadius:8,borderTopRightRadius:8,...style},...addPropertyOverrides({L96ME5D7N:{\"data-framer-name\":\"Hover\"}},baseVariant,gestureVariant),children:[visible&&/*#__PURE__*/_jsx(Link,{href:h0JjnntIV,motionChild:true,nodeId:\"cXlpDK2Ok\",openInNewTab:false,scopeId:\"mnItz6A8F\",children:/*#__PURE__*/_jsxs(motion.a,{className:\"framer-177kiot framer-1cjl71f\",\"data-framer-name\":\"Button\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"cXlpDK2Ok\",onMouseEnter:onMouseEnter1ncm4fo,...addPropertyOverrides({L96ME5D7N:{onMouseEnter:undefined,onMouseLeave:onMouseLeave15iq2ks}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-137gzas\",\"data-styles-preset\":\"PihfgTAR5\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-1891448d-bc9d-449f-8f82-d845951444bc, rgba(240, 240, 255, 0.6)))\"},children:\"Documentation\"})}),className:\"framer-1swg7cl\",\"data-framer-name\":\"Title\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"cd4d9QoEo\",style:{\"--extracted-r6o4lv\":\"var(--token-1891448d-bc9d-449f-8f82-d845951444bc, rgba(240, 240, 255, 0.6))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:kE6x8JtXN,variants:{L96ME5D7N:{\"--extracted-r6o4lv\":\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\"}},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({L96ME5D7N:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-137gzas\",\"data-styles-preset\":\"PihfgTAR5\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255)))\"},children:\"Documentation\"})})}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:20,width:\"10px\",y:(componentViewport?.y||0)+(4+((componentViewport?.height||200)-8-36)/2)+8,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-4va452-container\",layoutDependency:layoutDependency,layoutId:\"QYyA3pxBr-container\",nodeId:\"QYyA3pxBr\",rendersWithMotion:true,scopeId:\"mnItz6A8F\",style:{opacity:.6},variants:{L96ME5D7N:{opacity:1}},children:/*#__PURE__*/_jsx(GraphicsButtonArrow,{height:\"100%\",id:\"QYyA3pxBr\",layoutId:\"QYyA3pxBr\",style:{height:\"100%\",width:\"100%\"},variant:\"Ez6AL2vTh\",width:\"100%\",...addPropertyOverrides({L96ME5D7N:{variant:\"EjrLISIop\"}},baseVariant,gestureVariant)})})})]})}),visible1&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-a7m17z\",\"data-framer-name\":\"Text Only\",layoutDependency:layoutDependency,layoutId:\"JFa2DYQI9\",children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-137gzas\",\"data-styles-preset\":\"PihfgTAR5\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-1891448d-bc9d-449f-8f82-d845951444bc, rgba(240, 240, 255, 0.6)))\"},children:\"Documentation\"})}),className:\"framer-121cc46\",\"data-framer-name\":\"Title\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"Nse3Z4lPP\",style:{\"--extracted-r6o4lv\":\"var(--token-1891448d-bc9d-449f-8f82-d845951444bc, rgba(240, 240, 255, 0.6))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:kE6x8JtXN,verticalAlignment:\"top\",withExternalLayout:true})})]})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-0SwCZ.framer-1cjl71f, .framer-0SwCZ .framer-1cjl71f { display: block; }\",\".framer-0SwCZ.framer-1kqpdzw { align-content: center; align-items: center; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; overflow: visible; padding: 4px 0px 4px 0px; position: relative; width: 400px; }\",\".framer-0SwCZ .framer-177kiot { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 4px; height: min-content; justify-content: center; overflow: visible; padding: 8px 0px 8px 0px; position: relative; text-decoration: none; width: min-content; }\",\".framer-0SwCZ .framer-1swg7cl, .framer-0SwCZ .framer-121cc46 { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-0SwCZ .framer-4va452-container { flex: none; height: 20px; position: relative; width: 10px; }\",\".framer-0SwCZ .framer-a7m17z { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 4px; height: 36px; justify-content: center; overflow: visible; padding: 0px; position: relative; width: min-content; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-0SwCZ.framer-1kqpdzw, .framer-0SwCZ .framer-177kiot, .framer-0SwCZ .framer-a7m17z { gap: 0px; } .framer-0SwCZ.framer-1kqpdzw > * { margin: 0px; margin-left: calc(0px / 2); margin-right: calc(0px / 2); } .framer-0SwCZ.framer-1kqpdzw > :first-child, .framer-0SwCZ .framer-177kiot > :first-child, .framer-0SwCZ .framer-a7m17z > :first-child { margin-left: 0px; } .framer-0SwCZ.framer-1kqpdzw > :last-child, .framer-0SwCZ .framer-177kiot > :last-child, .framer-0SwCZ .framer-a7m17z > :last-child { margin-right: 0px; } .framer-0SwCZ .framer-177kiot > *, .framer-0SwCZ .framer-a7m17z > * { margin: 0px; margin-left: calc(4px / 2); margin-right: calc(4px / 2); } }\",...sharedStyle.css];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 43\n * @framerIntrinsicWidth 400\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]},\"L96ME5D7N\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerVariables {\"kE6x8JtXN\":\"title\",\"h0JjnntIV\":\"link\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramermnItz6A8F=withCSS(Component,css,\"framer-0SwCZ\");export default FramermnItz6A8F;FramermnItz6A8F.displayName=\"Nav / Tray \u2013\\xa0Title\";FramermnItz6A8F.defaultProps={height:43,width:400};addPropertyControls(FramermnItz6A8F,{variant:{options:[\"yAQHjAcYe\",\"L96ME5D7N\"],optionTitles:[\"Default\",\"Hover\"],title:\"Variant\",type:ControlType.Enum},kE6x8JtXN:{defaultValue:\"Documentation\",displayTextArea:false,title:\"Title\",type:ControlType.String},h0JjnntIV:{title:\"Link\",type:ControlType.Link}});addFonts(FramermnItz6A8F,[{explicitInter:true,fonts:[{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/5vvr9Vy74if2I6bQbJvbw7SY1pQ.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/EOr0mi4hNtlgWNn9if640EZzXCo.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/Y9k9QrlZAqio88Klkmbd8VoMQc.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/OYrD2tBIBPvoJXiIHnLoOXnY9M.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/JeYwfuaPfZHQhEG8U5gtPDZ7WQ.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/vQyevYAyHtARFwPqUzQGpnDs.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/b6Y37FthZeALduNqHicBT6FutY.woff2\",weight:\"400\"}]},...GraphicsButtonArrowFonts,...getFontsFromSharedStyle(sharedStyle.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramermnItz6A8F\",\"slots\":[],\"annotations\":{\"framerImmutableVariables\":\"true\",\"framerVariables\":\"{\\\"kE6x8JtXN\\\":\\\"title\\\",\\\"h0JjnntIV\\\":\\\"link\\\"}\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"L96ME5D7N\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerIntrinsicWidth\":\"400\",\"framerDisplayContentsDiv\":\"false\",\"framerComponentViewportWidth\":\"true\",\"framerIntrinsicHeight\":\"43\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./mnItz6A8F.map", "// Generated by Framer (8d84d1c)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,getFontsFromSharedStyle,getPropertyControls,Image,Link,RichText,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import GraphicsConicGradient from\"https://framerusercontent.com/modules/6TWLuZ3R3gafx8BAuiN4/qqiU78T7zH8rFkhksteD/tQEy8yiPF.js\";import*as sharedStyle1 from\"https://framerusercontent.com/modules/iSeRdQLTVmRrhWISCw0l/c55PksAizAWSQp01iTR3/PihfgTAR5.js\";import*as sharedStyle from\"https://framerusercontent.com/modules/g4IOzU8jABenlv54BPmR/1GNZvqRUZevOCeQx8Fga/xoAKFFJ8r.js\";import GraphicsButtonArrow from\"https://framerusercontent.com/modules/xPjbsMR6WyZIrRxgwZO7/JjHfXKlzAHHgG5R9o3n0/pRemd4fMu.js\";const GraphicsConicGradientFonts=getFonts(GraphicsConicGradient);const GraphicsButtonArrowFonts=getFonts(GraphicsButtonArrow);const GraphicsConicGradientControls=getPropertyControls(GraphicsConicGradient);const enabledGestures={lh3kjNNMQ:{hover:true}};const cycleOrder=[\"lh3kjNNMQ\"];const serializationHash=\"framer-lsIZ5\";const variantClassNames={lh3kjNNMQ:\"framer-v-teum2c\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants===null||variants===void 0?void 0:variants.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const toResponsiveImage=value=>{if(typeof value===\"object\"&&value!==null&&typeof value.src===\"string\"){return value;}return typeof value===\"string\"?{src:value}:undefined;};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value!==null&&value!==void 0?value:config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion(React.Fragment);const humanReadableEnumMap={Green:\"JNRlfcorc\",Purple:\"Yfqqmt4eA\",White:\"YFK08jqjX\",Yellow:\"mBkeWL7Br\"};const getProps=({h2,height,id,link,logo,title,variant1,width,...props})=>{var _ref,_ref1,_ref2,_humanReadableEnumMap_variant1,_ref3,_ref4;return{...props,CnrcNZ0E1:(_ref=logo!==null&&logo!==void 0?logo:props.CnrcNZ0E1)!==null&&_ref!==void 0?_ref:{src:\"https://framerusercontent.com/images/r6SISe7HeN9vCwWO90SSL8UaWMQ.svg\"},GLg7muXcH:(_ref1=h2!==null&&h2!==void 0?h2:props.GLg7muXcH)!==null&&_ref1!==void 0?_ref1:\"Uses Twingate to supercharge remote access performance\",m3vyrEPlf:(_ref2=title!==null&&title!==void 0?title:props.m3vyrEPlf)!==null&&_ref2!==void 0?_ref2:\"Hi-Rez Ventures\",P7_PhGiQ5:(_ref4=(_ref3=(_humanReadableEnumMap_variant1=humanReadableEnumMap[variant1])!==null&&_humanReadableEnumMap_variant1!==void 0?_humanReadableEnumMap_variant1:variant1)!==null&&_ref3!==void 0?_ref3:props.P7_PhGiQ5)!==null&&_ref4!==void 0?_ref4:\"Yfqqmt4eA\",u4ho7uXQk:link!==null&&link!==void 0?link:props.u4ho7uXQk};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,u4ho7uXQk,m3vyrEPlf,CnrcNZ0E1,GLg7muXcH,P7_PhGiQ5,D6E2gRuG7AQ823k8yZ,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"lh3kjNNMQ\",enabledGestures,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const ref1=React.useRef(null);const defaultLayoutId=React.useId();const sharedStyleClassNames=[sharedStyle.className,sharedStyle1.className];const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId!==null&&layoutId!==void 0?layoutId:defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(Link,{href:u4ho7uXQk,openInNewTab:false,smoothScroll:true,children:/*#__PURE__*/_jsxs(motion.a,{...restProps,...gestureHandlers,className:`${cx(serializationHash,...sharedStyleClassNames,\"framer-teum2c\",className,classNames)} framer-1i8j2ez`,\"data-framer-name\":\"Variant 1\",layoutDependency:layoutDependency,layoutId:\"lh3kjNNMQ\",ref:ref!==null&&ref!==void 0?ref:ref1,style:{backgroundColor:\"rgba(255, 255, 255, 0)\",...style},...addPropertyOverrides({\"lh3kjNNMQ-hover\":{\"data-framer-name\":undefined}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-k1nhge\",\"data-border\":true,\"data-framer-name\":\"Image\",layoutDependency:layoutDependency,layoutId:\"SZxGGgS5m\",style:{\"--border-bottom-width\":\"0.5px\",\"--border-color\":\"var(--token-2b080329-29ba-481c-ac92-832881069b36, rgba(255, 255, 255, 0.1))\",\"--border-left-width\":\"0.5px\",\"--border-right-width\":\"0.5px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0.5px\",backgroundColor:\"rgba(255, 255, 255, 0.03)\",borderBottomLeftRadius:12,borderBottomRightRadius:12,borderTopLeftRadius:12,borderTopRightRadius:12,filter:\"grayscale(0)\",WebkitFilter:\"grayscale(0)\"},variants:{\"lh3kjNNMQ-hover\":{backgroundColor:\"rgba(255, 255, 255, 0.06)\"}},children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1olpgos-container\",layoutDependency:layoutDependency,layoutId:\"XSpJ_VgtR-container\",style:{opacity:0},variants:{\"lh3kjNNMQ-hover\":{opacity:1}},children:/*#__PURE__*/_jsx(GraphicsConicGradient,{animate:true,height:\"100%\",id:\"XSpJ_VgtR\",layoutId:\"XSpJ_VgtR\",style:{height:\"100%\",width:\"100%\"},variant:P7_PhGiQ5,width:\"100%\"})})}),/*#__PURE__*/_jsx(Image,{background:{alt:\"\",fit:\"fit\",intrinsicHeight:32,intrinsicWidth:89,pixelHeight:32,pixelWidth:104,sizes:\"100px\",...toResponsiveImage(CnrcNZ0E1),...{positionX:\"center\",positionY:\"center\"}},className:\"framer-17iwtlf\",\"data-framer-name\":\"Logo\",layoutDependency:layoutDependency,layoutId:\"jeew7uTpE\"})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-mhc633\",layoutDependency:layoutDependency,layoutId:\"NAiAiN8wk\",children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-13hnbpr\",\"data-framer-name\":\"Title\",layoutDependency:layoutDependency,layoutId:\"BMWN84d5R\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1btjufx\",\"data-styles-preset\":\"xoAKFFJ8r\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255)))\"},children:\"Hi-Rez Studios\"})}),className:\"framer-1xc2kuj\",\"data-framer-name\":\"Title\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"LGBgpkc2o\",style:{\"--extracted-r6o4lv\":\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:m3vyrEPlf,verticalAlignment:\"top\",withExternalLayout:true}),D6E2gRuG7AQ823k8yZ&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1wuv9x3\",\"data-framer-name\":\"New Badge\",layoutDependency:layoutDependency,layoutId:\"RHYev6bv3\",style:{backgroundColor:\"var(--token-66aad145-6043-4798-926f-87c538e5fcf8, rgb(71, 73, 13))\",borderBottomLeftRadius:17,borderBottomRightRadius:17,borderTopLeftRadius:17,borderTopRightRadius:17},children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1RUIEhvdmVzIE1lZGl1bQ==\",\"--framer-font-family\":'\"TT Hoves Medium\", \"TT Hoves Medium Placeholder\", sans-serif',\"--framer-font-size\":\"11px\",\"--framer-letter-spacing\":\"0.15px\",\"--framer-line-height\":\"1.5em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95)))\"},children:\"New\"})}),className:\"framer-q1utrv\",\"data-framer-name\":\"Title\",fonts:[\"CUSTOM;TT Hoves Medium\"],layoutDependency:layoutDependency,layoutId:\"r35yAAsqF\",style:{\"--extracted-r6o4lv\":\"var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-12qws65-container\",layoutDependency:layoutDependency,layoutId:\"m47QSGPzC-container\",style:{opacity:0},variants:{\"lh3kjNNMQ-hover\":{opacity:1}},children:/*#__PURE__*/_jsx(GraphicsButtonArrow,{height:\"100%\",id:\"m47QSGPzC\",layoutId:\"m47QSGPzC\",style:{height:\"100%\",width:\"100%\"},variant:\"Ez6AL2vTh\",width:\"100%\",...addPropertyOverrides({\"lh3kjNNMQ-hover\":{variant:\"EjrLISIop\"}},baseVariant,gestureVariant)})})})]}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-137gzas\",\"data-styles-preset\":\"PihfgTAR5\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-376d54cb-4db7-448c-b192-cf6ae3d1a8ff, rgb(161, 161, 170)))\"},children:\"Keep track of changes to our product\"})}),className:\"framer-qdlbfi\",\"data-framer-name\":\"Subtitle\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"ybmeYvRJI\",style:{\"--extracted-r6o4lv\":\"var(--token-376d54cb-4db7-448c-b192-cf6ae3d1a8ff, rgb(161, 161, 170))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:GLg7muXcH,verticalAlignment:\"top\",withExternalLayout:true})]})]})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-lsIZ5.framer-1i8j2ez, .framer-lsIZ5 .framer-1i8j2ez { display: block; }\",\".framer-lsIZ5.framer-teum2c { align-content: flex-start; align-items: flex-start; cursor: pointer; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 8px; height: min-content; justify-content: flex-end; overflow: hidden; padding: 0px; position: relative; text-decoration: none; width: 252px; }\",\".framer-lsIZ5 .framer-k1nhge { flex: none; height: 90px; overflow: hidden; position: relative; width: 100%; will-change: var(--framer-will-change-override, transform); z-index: 0; }\",\".framer-lsIZ5 .framer-1olpgos-container { bottom: -142px; flex: none; left: -20px; position: absolute; right: -20px; top: -48px; }\",\".framer-lsIZ5 .framer-17iwtlf { flex: none; height: 40px; left: calc(50.00000000000002% - 100px / 2); overflow: visible; position: absolute; top: calc(50.00000000000002% - 40px / 2); width: 100px; z-index: 3; }\",\".framer-lsIZ5 .framer-mhc633 { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-lsIZ5 .framer-13hnbpr { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 4px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-lsIZ5 .framer-1xc2kuj { flex: none; height: auto; max-width: 100%; pointer-events: none; position: relative; white-space: pre-wrap; width: auto; word-break: break-word; word-wrap: break-word; }\",\".framer-lsIZ5 .framer-1wuv9x3 { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: visible; padding: 1px 6px 1px 6px; position: relative; width: min-content; }\",\".framer-lsIZ5 .framer-q1utrv { flex: none; height: auto; max-width: 100%; pointer-events: none; position: relative; white-space: pre-wrap; width: 24px; word-break: break-word; word-wrap: break-word; }\",\".framer-lsIZ5 .framer-12qws65-container { flex: none; height: 20px; position: relative; width: 10px; }\",\".framer-lsIZ5 .framer-qdlbfi { flex: none; height: auto; max-width: 100%; position: relative; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-lsIZ5.framer-teum2c, .framer-lsIZ5 .framer-mhc633, .framer-lsIZ5 .framer-13hnbpr, .framer-lsIZ5 .framer-1wuv9x3 { gap: 0px; } .framer-lsIZ5.framer-teum2c > * { margin: 0px; margin-bottom: calc(8px / 2); margin-top: calc(8px / 2); } .framer-lsIZ5.framer-teum2c > :first-child, .framer-lsIZ5 .framer-mhc633 > :first-child { margin-top: 0px; } .framer-lsIZ5.framer-teum2c > :last-child, .framer-lsIZ5 .framer-mhc633 > :last-child { margin-bottom: 0px; } .framer-lsIZ5 .framer-mhc633 > * { margin: 0px; margin-bottom: calc(0px / 2); margin-top: calc(0px / 2); } .framer-lsIZ5 .framer-13hnbpr > * { margin: 0px; margin-left: calc(4px / 2); margin-right: calc(4px / 2); } .framer-lsIZ5 .framer-13hnbpr > :first-child, .framer-lsIZ5 .framer-1wuv9x3 > :first-child { margin-left: 0px; } .framer-lsIZ5 .framer-13hnbpr > :last-child, .framer-lsIZ5 .framer-1wuv9x3 > :last-child { margin-right: 0px; } .framer-lsIZ5 .framer-1wuv9x3 > * { margin: 0px; margin-left: calc(10px / 2); margin-right: calc(10px / 2); } }\",...sharedStyle.css,...sharedStyle1.css,'.framer-lsIZ5[data-border=\"true\"]::after, .framer-lsIZ5 [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; pointer-events: none; }'];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 159.5\n * @framerIntrinsicWidth 252\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]},\"iWN80Gt7K\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerVariables {\"u4ho7uXQk\":\"link\",\"m3vyrEPlf\":\"title\",\"CnrcNZ0E1\":\"logo\",\"GLg7muXcH\":\"h2\",\"P7_PhGiQ5\":\"variant1\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerUa61FX9zj=withCSS(Component,css,\"framer-lsIZ5\");export default FramerUa61FX9zj;FramerUa61FX9zj.displayName=\"Nav / Tray \u2013 Customer card\";FramerUa61FX9zj.defaultProps={height:159.5,width:252};addPropertyControls(FramerUa61FX9zj,{u4ho7uXQk:{title:\"Link\",type:ControlType.Link},m3vyrEPlf:{defaultValue:\"Hi-Rez Ventures\",displayTextArea:false,title:\"Title\",type:ControlType.String},CnrcNZ0E1:{__defaultAssetReference:\"data:framer/asset-reference,r6SISe7HeN9vCwWO90SSL8UaWMQ.svg?originalFilename=HiRez.svg&preferredSize=auto\",title:\"Logo\",type:ControlType.ResponsiveImage},GLg7muXcH:{defaultValue:\"Uses Twingate to supercharge remote access performance\",displayTextArea:true,placeholder:\"\",title:\"H2\",type:ControlType.String},P7_PhGiQ5:(GraphicsConicGradientControls===null||GraphicsConicGradientControls===void 0?void 0:GraphicsConicGradientControls[\"variant\"])&&{...GraphicsConicGradientControls[\"variant\"],defaultValue:\"Yfqqmt4eA\",description:undefined,hidden:undefined,title:\"Variant\"}});addFonts(FramerUa61FX9zj,[{explicitInter:true,fonts:[{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://app.framerstatic.com/Inter-Regular.cyrillic-ext-CFTLRB35.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://app.framerstatic.com/Inter-Regular.cyrillic-KKLZBALH.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+1F00-1FFF\",url:\"https://app.framerstatic.com/Inter-Regular.greek-ext-ULEBLIFV.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0370-03FF\",url:\"https://app.framerstatic.com/Inter-Regular.greek-IRHSNFQB.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://app.framerstatic.com/Inter-Regular.latin-ext-VZDUGU3Q.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://app.framerstatic.com/Inter-Regular.latin-JLQMKCHE.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://app.framerstatic.com/Inter-Regular.vietnamese-QK7VSWXK.woff2\",weight:\"400\"},{family:\"TT Hoves Medium\",source:\"custom\",url:\"https://framerusercontent.com/assets/M4cAr8oQzbyO9Ynb0WkinOqcoI.woff2\"}]},...GraphicsConicGradientFonts,...GraphicsButtonArrowFonts,...getFontsFromSharedStyle(sharedStyle.fonts),...getFontsFromSharedStyle(sharedStyle1.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerUa61FX9zj\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"159.5\",\"framerDisplayContentsDiv\":\"false\",\"framerIntrinsicWidth\":\"252\",\"framerComponentViewportWidth\":\"true\",\"framerImmutableVariables\":\"true\",\"framerVariables\":\"{\\\"u4ho7uXQk\\\":\\\"link\\\",\\\"m3vyrEPlf\\\":\\\"title\\\",\\\"CnrcNZ0E1\\\":\\\"logo\\\",\\\"GLg7muXcH\\\":\\\"h2\\\",\\\"P7_PhGiQ5\\\":\\\"variant1\\\"}\",\"framerContractVersion\":\"1\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"iWN80Gt7K\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}", "// Generated by Framer (cf4c6d7)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,getFontsFromSharedStyle,getPropertyControls,Link,RichText,SmartComponentScopedContainer,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import Logos from\"https://framerusercontent.com/modules/9WTbYjGuJAwW0o4hDi0j/1qiorIROk1jAClbRf9rb/Logos.js\";import*as sharedStyle1 from\"https://framerusercontent.com/modules/iSeRdQLTVmRrhWISCw0l/c55PksAizAWSQp01iTR3/PihfgTAR5.js\";import*as sharedStyle from\"https://framerusercontent.com/modules/g4IOzU8jABenlv54BPmR/1GNZvqRUZevOCeQx8Fga/xoAKFFJ8r.js\";import NavNavIcons from\"https://framerusercontent.com/modules/JbpcIAyn0u5cv6vdTXoP/qvG69KX65rbGHmot79mK/lLkcBkgJT.js\";import GraphicsButtonArrow from\"https://framerusercontent.com/modules/xPjbsMR6WyZIrRxgwZO7/JjHfXKlzAHHgG5R9o3n0/pRemd4fMu.js\";const LogosFonts=getFonts(Logos);const NavNavIconsFonts=getFonts(NavNavIcons);const GraphicsButtonArrowFonts=getFonts(GraphicsButtonArrow);const LogosControls=getPropertyControls(Logos);const NavNavIconsControls=getPropertyControls(NavNavIcons);const enabledGestures={qlaL2rA4e:{hover:true}};const serializationHash=\"framer-FHY8o\";const variantClassNames={qlaL2rA4e:\"framer-v-1jie68x\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={delay:0,duration:.15,ease:[0,0,1,1],type:\"tween\"};const equals=(a,b)=>{return typeof a===\"string\"&&typeof b===\"string\"?a.toLowerCase()===b.toLowerCase():a===b;};const negate=value=>{return!value;};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const humanReadableEnumMap={\"Customer stories\":\"DmVv_TrP5\",\"Help center\":\"fSZxKdliR\",\"Internet Security\":\"ArOhNgCb9\",About:\"vZeeZmyVJ\",Access:\"LOI_lBRgD\",Blog:\"UZnvvYoUZ\",Careers:\"bart134iP\",Changelog:\"XioEzfJ61\",Demo:\"bnffWKLnC\",Docs:\"kCAil_vci\",Integrations:\"QHZQdXUok\",Partners:\"ZQM788nVg\",Testimonials:\"Zza8uvaWK\",Whitepaper:\"unQEaWlPP\",ZTNA:\"RYwLLzsEP\"};const getProps=({height,icon,icon1,id,link,navIcon,navIconVariant,new1,subtitle,tap,title,width,...props})=>{return{...props,B1BRdzB7u:subtitle??props.B1BRdzB7u??\"Keep track of changes to our product\",D6E2gRuG7:new1??props.D6E2gRuG7,gpily6XUb:humanReadableEnumMap[navIconVariant]??navIconVariant??props.gpily6XUb??\"vZeeZmyVJ\",HlFA9k7gu:link??props.HlFA9k7gu,Ke8Ebr11Y:icon1??props.Ke8Ebr11Y??\"Twingate\",NZ73Mn_3q:title??props.NZ73Mn_3q??\"How Twingate Works?\",th0ljLK8A:navIcon??props.th0ljLK8A,tnFMMMSiG:icon??props.tnFMMMSiG??true,Z7laBHveb:tap??props.Z7laBHveb};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,HlFA9k7gu,NZ73Mn_3q,B1BRdzB7u,tnFMMMSiG,Ke8Ebr11Y,Z7laBHveb,th0ljLK8A,gpily6XUb,D6E2gRuG7,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"qlaL2rA4e\",enabledGestures,ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onTap1ggisjn=activeVariantCallback(async(...args)=>{setGestureState({isPressed:false});if(Z7laBHveb){const res=await Z7laBHveb(...args);if(res===false)return false;}});const sharedStyleClassNames=[sharedStyle.className,sharedStyle1.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);const visible=negate(equals(B1BRdzB7u,\"\"));return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(Link,{href:HlFA9k7gu,motionChild:true,nodeId:\"qlaL2rA4e\",openInNewTab:false,scopeId:\"Y42FZEMxi\",smoothScroll:true,children:/*#__PURE__*/_jsx(motion.a,{...restProps,...gestureHandlers,className:`${cx(scopingClassNames,\"framer-1jie68x\",className,classNames)} framer-3zgnb1`,\"data-framer-name\":\"Default\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"qlaL2rA4e\",onTap:onTap1ggisjn,ref:refBinding,style:{borderBottomLeftRadius:8,borderBottomRightRadius:8,borderTopLeftRadius:8,borderTopRightRadius:8,...style},...addPropertyOverrides({\"qlaL2rA4e-hover\":{\"data-framer-name\":undefined}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1jgol66\",\"data-framer-name\":\"Title\",layoutDependency:layoutDependency,layoutId:\"EkhF1pa5N\",children:[tnFMMMSiG&&/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1m4ii4j-container\",isAuthoredByUser:true,layoutDependency:layoutDependency,layoutId:\"J_agyEarg-container\",nodeId:\"J_agyEarg\",rendersWithMotion:true,scopeId:\"Y42FZEMxi\",children:/*#__PURE__*/_jsx(Logos,{accent:\"rgb(255, 255, 255)\",height:\"100%\",icon:Ke8Ebr11Y,id:\"J_agyEarg\",inheritColor:false,layoutId:\"J_agyEarg\",style:{height:\"100%\",width:\"100%\"},width:\"100%\"})})}),th0ljLK8A&&/*#__PURE__*/_jsx(ComponentViewportProvider,{height:20,width:\"20px\",y:(componentViewport?.y||0)+2+(((componentViewport?.height||200)-4-120)/2+0+0)+0,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1bttv30-container\",layoutDependency:layoutDependency,layoutId:\"QLTjGOuXn-container\",nodeId:\"QLTjGOuXn\",rendersWithMotion:true,scopeId:\"Y42FZEMxi\",children:/*#__PURE__*/_jsx(NavNavIcons,{height:\"100%\",id:\"QLTjGOuXn\",layoutId:\"QLTjGOuXn\",style:{height:\"100%\",width:\"100%\"},variant:gpily6XUb,width:\"100%\"})})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-16lw8dx\",layoutDependency:layoutDependency,layoutId:\"vLuiIaWCM\",children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1m06v7p\",\"data-framer-name\":\"Title\",layoutDependency:layoutDependency,layoutId:\"i3XOs5vEB\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1btjufx\",\"data-styles-preset\":\"xoAKFFJ8r\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255)))\"},children:\"How Twingate Works?\"})}),className:\"framer-wj25n8\",\"data-framer-name\":\"Title\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"xocY7plvp\",style:{\"--extracted-r6o4lv\":\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:NZ73Mn_3q,verticalAlignment:\"top\",withExternalLayout:true}),D6E2gRuG7&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-16ten6z\",\"data-framer-name\":\"New Badge\",layoutDependency:layoutDependency,layoutId:\"uSUhd5toP\",style:{backgroundColor:\"var(--token-66aad145-6043-4798-926f-87c538e5fcf8, rgb(71, 73, 13))\",borderBottomLeftRadius:17,borderBottomRightRadius:17,borderTopLeftRadius:17,borderTopRightRadius:17},children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1RUIEhvdmVzIE1lZGl1bQ==\",\"--framer-font-family\":'\"TT Hoves Medium\", \"TT Hoves Medium Placeholder\", sans-serif',\"--framer-font-size\":\"11px\",\"--framer-letter-spacing\":\"0.15px\",\"--framer-line-height\":\"1.5em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95)))\"},children:\"New\"})}),className:\"framer-dtl2zw\",\"data-framer-name\":\"Title\",fonts:[\"CUSTOM;TT Hoves Medium\"],layoutDependency:layoutDependency,layoutId:\"Bk6xPW7IV\",style:{\"--extracted-r6o4lv\":\"var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:20,width:\"10px\",y:(componentViewport?.y||0)+2+(((componentViewport?.height||200)-4-120)/2+0+0)+0+0+0+1.25,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-nk69g0-container\",layoutDependency:layoutDependency,layoutId:\"nuOSZe9qA-container\",nodeId:\"nuOSZe9qA\",rendersWithMotion:true,scopeId:\"Y42FZEMxi\",style:{opacity:0},variants:{\"qlaL2rA4e-hover\":{opacity:1}},children:/*#__PURE__*/_jsx(GraphicsButtonArrow,{height:\"100%\",id:\"nuOSZe9qA\",layoutId:\"nuOSZe9qA\",style:{height:\"100%\",width:\"100%\"},variant:\"Ez6AL2vTh\",width:\"100%\",...addPropertyOverrides({\"qlaL2rA4e-hover\":{variant:\"EjrLISIop\"}},baseVariant,gestureVariant)})})})]}),visible&&/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-137gzas\",\"data-styles-preset\":\"PihfgTAR5\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-376d54cb-4db7-448c-b192-cf6ae3d1a8ff, rgb(161, 161, 170)))\"},children:\"Keep track of changes to our product\"})}),className:\"framer-5zi72j\",\"data-framer-name\":\"Subtitle\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"H3eDNQ9ST\",style:{\"--extracted-r6o4lv\":\"var(--token-376d54cb-4db7-448c-b192-cf6ae3d1a8ff, rgb(161, 161, 170))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:B1BRdzB7u,verticalAlignment:\"top\",withExternalLayout:true})]})]})})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-FHY8o.framer-3zgnb1, .framer-FHY8o .framer-3zgnb1 { display: block; }\",\".framer-FHY8o.framer-1jie68x { align-content: flex-start; align-items: flex-start; cursor: pointer; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; overflow: visible; padding: 2px 0px 2px 0px; position: relative; text-decoration: none; width: 400px; }\",\".framer-FHY8o .framer-1jgol66 { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 6px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-FHY8o .framer-1m4ii4j-container { flex: none; height: 20px; position: relative; width: 20px; }\",\".framer-FHY8o .framer-1bttv30-container { aspect-ratio: 1 / 1; flex: none; height: var(--framer-aspect-ratio-supported, 20px); position: relative; width: 20px; }\",\".framer-FHY8o .framer-16lw8dx { align-content: flex-start; align-items: flex-start; display: flex; flex: 1 0 0px; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 1px; }\",\".framer-FHY8o .framer-1m06v7p { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 4px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-FHY8o .framer-wj25n8 { flex: none; height: auto; max-width: 100%; pointer-events: none; position: relative; white-space: pre-wrap; width: auto; word-break: break-word; word-wrap: break-word; }\",\".framer-FHY8o .framer-16ten6z { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: visible; padding: 1px 6px 1px 6px; position: relative; width: min-content; }\",\".framer-FHY8o .framer-dtl2zw { flex: none; height: auto; max-width: 100%; pointer-events: none; position: relative; white-space: pre-wrap; width: 24px; word-break: break-word; word-wrap: break-word; }\",\".framer-FHY8o .framer-nk69g0-container { flex: none; height: 20px; position: relative; width: 10px; }\",\".framer-FHY8o .framer-5zi72j { flex: none; height: auto; max-width: 100%; position: relative; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-FHY8o.framer-1jie68x, .framer-FHY8o .framer-1jgol66, .framer-FHY8o .framer-16lw8dx, .framer-FHY8o .framer-1m06v7p, .framer-FHY8o .framer-16ten6z { gap: 0px; } .framer-FHY8o.framer-1jie68x > *, .framer-FHY8o .framer-16lw8dx > * { margin: 0px; margin-bottom: calc(0px / 2); margin-top: calc(0px / 2); } .framer-FHY8o.framer-1jie68x > :first-child, .framer-FHY8o .framer-16lw8dx > :first-child { margin-top: 0px; } .framer-FHY8o.framer-1jie68x > :last-child, .framer-FHY8o .framer-16lw8dx > :last-child { margin-bottom: 0px; } .framer-FHY8o .framer-1jgol66 > * { margin: 0px; margin-left: calc(6px / 2); margin-right: calc(6px / 2); } .framer-FHY8o .framer-1jgol66 > :first-child, .framer-FHY8o .framer-1m06v7p > :first-child, .framer-FHY8o .framer-16ten6z > :first-child { margin-left: 0px; } .framer-FHY8o .framer-1jgol66 > :last-child, .framer-FHY8o .framer-1m06v7p > :last-child, .framer-FHY8o .framer-16ten6z > :last-child { margin-right: 0px; } .framer-FHY8o .framer-1m06v7p > * { margin: 0px; margin-left: calc(4px / 2); margin-right: calc(4px / 2); } .framer-FHY8o .framer-16ten6z > * { margin: 0px; margin-left: calc(10px / 2); margin-right: calc(10px / 2); } }\",...sharedStyle.css,...sharedStyle1.css];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 46\n * @framerIntrinsicWidth 400\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]},\"DvQzxY5GG\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerVariables {\"HlFA9k7gu\":\"link\",\"NZ73Mn_3q\":\"title\",\"B1BRdzB7u\":\"subtitle\",\"tnFMMMSiG\":\"icon\",\"Ke8Ebr11Y\":\"icon1\",\"Z7laBHveb\":\"tap\",\"th0ljLK8A\":\"navIcon\",\"gpily6XUb\":\"navIconVariant\",\"D6E2gRuG7\":\"new1\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerY42FZEMxi=withCSS(Component,css,\"framer-FHY8o\");export default FramerY42FZEMxi;FramerY42FZEMxi.displayName=\"Nav / Tray \u2013\\xa0Item\";FramerY42FZEMxi.defaultProps={height:46,width:400};addPropertyControls(FramerY42FZEMxi,{HlFA9k7gu:{title:\"Link\",type:ControlType.Link},NZ73Mn_3q:{defaultValue:\"How Twingate Works?\",displayTextArea:false,title:\"Title\",type:ControlType.String},B1BRdzB7u:{defaultValue:\"Keep track of changes to our product\",displayTextArea:false,title:\"Subtitle\",type:ControlType.String},tnFMMMSiG:{defaultValue:true,title:\"Icon\",type:ControlType.Boolean},Ke8Ebr11Y:LogosControls?.[\"icon\"]&&{...LogosControls[\"icon\"],defaultValue:\"Twingate\",description:undefined,hidden:undefined,title:\"Icon\"},Z7laBHveb:{title:\"Tap\",type:ControlType.EventHandler},th0ljLK8A:{defaultValue:false,title:\"Nav Icon\",type:ControlType.Boolean},gpily6XUb:NavNavIconsControls?.[\"variant\"]&&{...NavNavIconsControls[\"variant\"],defaultValue:\"vZeeZmyVJ\",description:undefined,hidden:undefined,title:\"Nav Icon Variant\"},D6E2gRuG7:{defaultValue:false,title:\"New\",type:ControlType.Boolean}});addFonts(FramerY42FZEMxi,[{explicitInter:true,fonts:[{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/5vvr9Vy74if2I6bQbJvbw7SY1pQ.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/EOr0mi4hNtlgWNn9if640EZzXCo.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/Y9k9QrlZAqio88Klkmbd8VoMQc.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/OYrD2tBIBPvoJXiIHnLoOXnY9M.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/JeYwfuaPfZHQhEG8U5gtPDZ7WQ.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/vQyevYAyHtARFwPqUzQGpnDs.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/b6Y37FthZeALduNqHicBT6FutY.woff2\",weight:\"400\"},{family:\"TT Hoves Medium\",source:\"custom\",url:\"https://framerusercontent.com/assets/M4cAr8oQzbyO9Ynb0WkinOqcoI.woff2\"}]},...LogosFonts,...NavNavIconsFonts,...GraphicsButtonArrowFonts,...getFontsFromSharedStyle(sharedStyle.fonts),...getFontsFromSharedStyle(sharedStyle1.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerY42FZEMxi\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"46\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"DvQzxY5GG\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerIntrinsicWidth\":\"400\",\"framerVariables\":\"{\\\"HlFA9k7gu\\\":\\\"link\\\",\\\"NZ73Mn_3q\\\":\\\"title\\\",\\\"B1BRdzB7u\\\":\\\"subtitle\\\",\\\"tnFMMMSiG\\\":\\\"icon\\\",\\\"Ke8Ebr11Y\\\":\\\"icon1\\\",\\\"Z7laBHveb\\\":\\\"tap\\\",\\\"th0ljLK8A\\\":\\\"navIcon\\\",\\\"gpily6XUb\\\":\\\"navIconVariant\\\",\\\"D6E2gRuG7\\\":\\\"new1\\\"}\",\"framerImmutableVariables\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerComponentViewportWidth\":\"true\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Y42FZEMxi.map", "// Generated by Framer (cf4c6d7)\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ChildrenCanSuspend,ComponentViewportProvider,ControlType,cx,getFonts,getFontsFromSharedStyle,PathVariablesContext,ResolveLinks,RichText,SmartComponentScopedContainer,useComponentViewport,useLocaleCode,useLocaleInfo,useQueryData,useRouter,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import Changelog from\"https://framerusercontent.com/modules/3FRnaStYzI2abN5UMevD/gkeN9UxhcmrMH1SVgRgO/p_ZRklbwL.js\";import Blog from\"https://framerusercontent.com/modules/TVp5dKgu3wsmk4cPXZHQ/uU3qka9FpDfGiqqzTGjs/wtyR92LHZ.js\";import*as sharedStyle2 from\"https://framerusercontent.com/modules/iSeRdQLTVmRrhWISCw0l/c55PksAizAWSQp01iTR3/PihfgTAR5.js\";import*as sharedStyle1 from\"https://framerusercontent.com/modules/g4IOzU8jABenlv54BPmR/1GNZvqRUZevOCeQx8Fga/xoAKFFJ8r.js\";import*as sharedStyle from\"https://framerusercontent.com/modules/A5OdyoDuEF5Eogg4DXue/ndGhwGBiGRvfLfYInNeP/xzXjhGEGu.js\";import ButtonsButton from\"https://framerusercontent.com/modules/7AM6DNYiokdKmR3FgvBn/DNb9r8GouMuBcZXr5kzS/AiU29R1w5.js\";import NavTrayItemCopy from\"https://framerusercontent.com/modules/G59n2G5pqJTQthueNBWa/TW2LrrY7IFOcjYq4r2d5/AQ823k8yZ.js\";import NavTrayCardChangelog from\"https://framerusercontent.com/modules/clbqJ80IOZqgJlOvHxcI/F5V9CDDAZg0VnJ6LqcAz/gXk6dU62K.js\";import NavTrayCard from\"https://framerusercontent.com/modules/TivLEGkc1uzMeNCseJyy/yAY9UV4qTwXAwDKB9TZe/KEIGp9seQ.js\";import NavTrayTitle from\"https://framerusercontent.com/modules/IZcN2vW7Zr2YBXMFhrZf/Az98EO8vrIjhb0pvbG6G/mnItz6A8F.js\";import NavTrayCustomerCard from\"https://framerusercontent.com/modules/wt18YscVHgMYKlk7LG8F/VEH7Ukjaz9doChx0rPPU/Ua61FX9zj.js\";import NavTrayItem from\"https://framerusercontent.com/modules/kSmTc44i0c5ruFBtj2BA/FKDIDbszcGUTHdk9LuYS/Y42FZEMxi.js\";const NavTrayItemCopyFonts=getFonts(NavTrayItemCopy);const NavTrayTitleFonts=getFonts(NavTrayTitle);const NavTrayItemFonts=getFonts(NavTrayItem);const NavTrayCardChangelogFonts=getFonts(NavTrayCardChangelog);const NavTrayCardFonts=getFonts(NavTrayCard);const NavTrayCustomerCardFonts=getFonts(NavTrayCustomerCard);const ButtonsButtonFonts=getFonts(ButtonsButton);const cycleOrder=[\"Un1r32V1H\",\"V3KnZ7YU0\",\"OT1LbjD25\",\"lHByleq6k\",\"kNdqCkpev\",\"lgo6tsa0X\",\"hSGH_QbdR\",\"g5WWfybex\",\"CgU1mwjv4\",\"xewWae9HZ\",\"z_8_nd6QX\"];const serializationHash=\"framer-pvpWo\";const variantClassNames={CgU1mwjv4:\"framer-v-116a0rj\",g5WWfybex:\"framer-v-1oe4t23\",hSGH_QbdR:\"framer-v-1dh4qqv\",kNdqCkpev:\"framer-v-1osagrk\",lgo6tsa0X:\"framer-v-8n69jr\",lHByleq6k:\"framer-v-1lr022k\",OT1LbjD25:\"framer-v-1e811wn\",Un1r32V1H:\"framer-v-kvheqv\",V3KnZ7YU0:\"framer-v-129hv1x\",xewWae9HZ:\"framer-v-1y6bnkj\",z_8_nd6QX:\"framer-v-1ir5klx\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const toDateString=(value,options={},activeLocale)=>{if(typeof value!==\"string\")return\"\";const date=new Date(value);if(isNaN(date.getTime()))return\"\";const display=options.display?options.display:\"date\";const dateOptions={dateStyle:display!==\"time\"?options.dateStyle:undefined,timeStyle:display===\"date\"?undefined:\"short\",timeZone:\"UTC\"};const fallbackLocale=\"en-US\";const locale=options.locale||activeLocale||fallbackLocale;// We add a try block because an invalid language code results in a crash\ntry{return date.toLocaleString(locale,dateOptions);}catch{return date.toLocaleString(fallbackLocale,dateOptions);}};const toResponsiveImage=value=>{if(typeof value===\"object\"&&value!==null&&typeof value.src===\"string\"){return value;}return typeof value===\"string\"?{src:value}:undefined;};const query=prequery=>prequery({from:{alias:\"lF3iq4ogr\",data:Changelog,type:\"Collection\"},limit:{type:\"LiteralValue\",value:2},select:[{collection:\"lF3iq4ogr\",name:\"royCFnGoE\",type:\"Identifier\"},{collection:\"lF3iq4ogr\",name:\"s78r_5Sfi\",type:\"Identifier\"},{collection:\"lF3iq4ogr\",name:\"drBimO239\",type:\"Identifier\"},{collection:\"lF3iq4ogr\",name:\"tB8hckVXV\",type:\"Identifier\"},{collection:\"lF3iq4ogr\",name:\"id\",type:\"Identifier\"}],where:{collection:\"lF3iq4ogr\",name:\"apXl2m42W\",type:\"Identifier\"}});const QueryData=({query,pageSize,children})=>{const data=useQueryData(query);return children(data);};const query1=prequery=>prequery({from:{alias:\"yXUkIhj_k\",data:Blog,type:\"Collection\"},limit:{type:\"LiteralValue\",value:2},select:[{collection:\"yXUkIhj_k\",name:\"htIvfYBOu\",type:\"Identifier\"},{collection:\"yXUkIhj_k\",name:\"BOY5LSewc\",type:\"Identifier\"},{collection:\"yXUkIhj_k\",name:\"YnwyMK7wB\",type:\"Identifier\"},{collection:\"yXUkIhj_k\",name:\"KppWsNgH6\",type:\"Identifier\"},{collection:\"yXUkIhj_k\",name:\"id\",type:\"Identifier\"}],where:{left:{collection:\"yXUkIhj_k\",name:\"WRWHbDdVF\",type:\"Identifier\"},operator:\"and\",right:{collection:\"yXUkIhj_k\",name:\"xT_4SVBSB\",type:\"Identifier\"},type:\"BinaryOperation\"}});const addImageAlt=(image,alt)=>{if(!image||typeof image!==\"object\"){return;}return{...image,alt};};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const humanReadableVariantMap={_Primary:\"Un1r32V1H\",\"Cusatomers \u2013 Mobile\":\"z_8_nd6QX\",\"Docs \u2013\\xa0Mobile\":\"kNdqCkpev\",\"Partners \u2013 Mobile\":\"CgU1mwjv4\",\"Product \u2013\\xa0Mobile\":\"OT1LbjD25\",\"Resources \u2013\\xa0Mobile\":\"hSGH_QbdR\",Customers:\"xewWae9HZ\",Docs:\"lHByleq6k\",Partners:\"g5WWfybex\",Product:\"V3KnZ7YU0\",Resources:\"lgo6tsa0X\"};const getProps=({height,id,width,...props})=>{return{...props,variant:humanReadableVariantMap[props.variant]??props.variant??\"Un1r32V1H\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,royCFnGoElF3iq4ogr,s78r_5SfilF3iq4ogr,drBimO239lF3iq4ogr,tB8hckVXVlF3iq4ogr,idlF3iq4ogr,htIvfYBOuyXUkIhj_k,BOY5LSewcyXUkIhj_k,YnwyMK7wByXUkIhj_k,KppWsNgH6yXUkIhj_k,idyXUkIhj_k,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"Un1r32V1H\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[sharedStyle.className,sharedStyle1.className,sharedStyle2.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);const isDisplayed=()=>{if([\"lHByleq6k\",\"kNdqCkpev\",\"lgo6tsa0X\",\"hSGH_QbdR\",\"g5WWfybex\",\"CgU1mwjv4\",\"xewWae9HZ\",\"z_8_nd6QX\"].includes(baseVariant))return false;return true;};const router=useRouter();const isDisplayed1=()=>{if(baseVariant===\"V3KnZ7YU0\")return false;return true;};const isDisplayed2=()=>{if(baseVariant===\"V3KnZ7YU0\")return true;return false;};const activeLocaleCode=useLocaleCode();const isDisplayed3=()=>{if([\"V3KnZ7YU0\",\"OT1LbjD25\",\"lHByleq6k\",\"kNdqCkpev\",\"lgo6tsa0X\",\"hSGH_QbdR\",\"g5WWfybex\",\"CgU1mwjv4\",\"xewWae9HZ\",\"z_8_nd6QX\"].includes(baseVariant))return false;return true;};const isDisplayed4=()=>{if([\"V3KnZ7YU0\",\"OT1LbjD25\",\"lgo6tsa0X\",\"hSGH_QbdR\",\"g5WWfybex\",\"CgU1mwjv4\",\"xewWae9HZ\",\"z_8_nd6QX\"].includes(baseVariant))return false;return true;};const isDisplayed5=()=>{if([\"V3KnZ7YU0\",\"OT1LbjD25\",\"lHByleq6k\",\"kNdqCkpev\",\"g5WWfybex\",\"CgU1mwjv4\",\"xewWae9HZ\",\"z_8_nd6QX\"].includes(baseVariant))return false;return true;};const isDisplayed6=()=>{if([\"V3KnZ7YU0\",\"OT1LbjD25\",\"lHByleq6k\",\"kNdqCkpev\",\"lgo6tsa0X\",\"hSGH_QbdR\",\"g5WWfybex\",\"CgU1mwjv4\",\"xewWae9HZ\"].includes(baseVariant))return false;return true;};const isDisplayed7=()=>{if([\"V3KnZ7YU0\",\"OT1LbjD25\",\"lHByleq6k\",\"kNdqCkpev\",\"lgo6tsa0X\",\"hSGH_QbdR\",\"g5WWfybex\",\"CgU1mwjv4\"].includes(baseVariant))return false;return true;};const isDisplayed8=()=>{if(baseVariant===\"z_8_nd6QX\")return false;return true;};const isDisplayed9=()=>{if([\"V3KnZ7YU0\",\"OT1LbjD25\",\"lHByleq6k\",\"kNdqCkpev\",\"lgo6tsa0X\",\"hSGH_QbdR\",\"xewWae9HZ\",\"z_8_nd6QX\"].includes(baseVariant))return false;return true;};return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-kvheqv\",className,classNames),\"data-framer-name\":\"_Primary\",layoutDependency:layoutDependency,layoutId:\"Un1r32V1H\",ref:refBinding,style:{backgroundColor:\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\",...style},...addPropertyOverrides({CgU1mwjv4:{\"data-framer-name\":\"Partners \u2013 Mobile\"},g5WWfybex:{\"data-framer-name\":\"Partners\"},hSGH_QbdR:{\"data-framer-name\":\"Resources \u2013\\xa0Mobile\"},kNdqCkpev:{\"data-framer-name\":\"Docs \u2013\\xa0Mobile\"},lgo6tsa0X:{\"data-framer-name\":\"Resources\"},lHByleq6k:{\"data-framer-name\":\"Docs\"},OT1LbjD25:{\"data-framer-name\":\"Product \u2013\\xa0Mobile\"},V3KnZ7YU0:{\"data-framer-name\":\"Product\"},xewWae9HZ:{\"data-framer-name\":\"Customers\"},z_8_nd6QX:{\"data-framer-name\":\"Cusatomers \u2013 Mobile\"}},baseVariant,gestureVariant),children:[isDisplayed()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-15wi53f\",\"data-framer-name\":\"Product\",layoutDependency:layoutDependency,layoutId:\"lDMVjDv4n\",children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1n1x9js\",layoutDependency:layoutDependency,layoutId:\"X0Gi5EKIV\",children:[/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"bBhvgz0tk\"},implicitPathVariables:undefined},{href:{webPageId:\"bBhvgz0tk\"},implicitPathVariables:undefined},{href:{webPageId:\"bBhvgz0tk\"},implicitPathVariables:undefined}],children:resolvedLinks=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((${componentViewport?.width||\"100vw\"} - 48px) / 2, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+0+0)+0+0+0,...addPropertyOverrides({OT1LbjD25:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1182)/2+0+0)+0+0+0+0},V3KnZ7YU0:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-523)/2+0+0)+0+0+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-119nvka-container\",layoutDependency:layoutDependency,layoutId:\"JoTL83Dr_-container\",nodeId:\"JoTL83Dr_\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItemCopy,{B1BRdzB7u:\"\\xa0Remote access for the modern Zero Trust network\",D6E2gRuG7:false,gpily6XUb:\"RYwLLzsEP\",height:\"100%\",HlFA9k7gu:resolvedLinks[0],id:\"JoTL83Dr_\",layoutId:\"JoTL83Dr_\",NZ73Mn_3q:\"Zero Trust Network Access\",style:{maxWidth:\"100%\",width:\"100%\"},width:\"100%\",...addPropertyOverrides({OT1LbjD25:{HlFA9k7gu:resolvedLinks[2]},V3KnZ7YU0:{HlFA9k7gu:resolvedLinks[1]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"rWzqN0quv\"},implicitPathVariables:undefined},{href:{webPageId:\"rWzqN0quv\"},implicitPathVariables:undefined},{href:{webPageId:\"rWzqN0quv\"},implicitPathVariables:undefined}],children:resolvedLinks1=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((${componentViewport?.width||\"100vw\"} - 48px) / 2, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+0+0)+0+0+58,...addPropertyOverrides({OT1LbjD25:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1182)/2+0+0)+0+0+0+58},V3KnZ7YU0:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-523)/2+0+0)+0+0+58}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1qh9obf-container\",layoutDependency:layoutDependency,layoutId:\"df7oWE0co-container\",nodeId:\"df7oWE0co\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItemCopy,{B1BRdzB7u:\"Powerful automated access controls at the network layer\",D6E2gRuG7:false,gpily6XUb:\"LOI_lBRgD\",height:\"100%\",HlFA9k7gu:resolvedLinks1[0],id:\"df7oWE0co\",layoutId:\"df7oWE0co\",NZ73Mn_3q:\"Least Privilege Automation\",style:{maxWidth:\"100%\",width:\"100%\"},width:\"100%\",...addPropertyOverrides({OT1LbjD25:{HlFA9k7gu:resolvedLinks1[2]},V3KnZ7YU0:{HlFA9k7gu:resolvedLinks1[1]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"DT2IR2FQ8\"},implicitPathVariables:undefined},{href:{webPageId:\"DT2IR2FQ8\"},implicitPathVariables:undefined},{href:{webPageId:\"DT2IR2FQ8\"},implicitPathVariables:undefined}],children:resolvedLinks2=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((${componentViewport?.width||\"100vw\"} - 48px) / 2, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+0+0)+0+0+116,...addPropertyOverrides({OT1LbjD25:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1182)/2+0+0)+0+0+0+116},V3KnZ7YU0:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-523)/2+0+0)+0+0+116}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1stlua6-container\",layoutDependency:layoutDependency,layoutId:\"vwOmcigch-container\",nodeId:\"vwOmcigch\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItemCopy,{B1BRdzB7u:\"Protect all of your internet traffic in any environment\",D6E2gRuG7:false,gpily6XUb:\"ArOhNgCb9\",height:\"100%\",HlFA9k7gu:resolvedLinks2[0],id:\"vwOmcigch\",layoutId:\"vwOmcigch\",NZ73Mn_3q:\"Internet Security\",style:{maxWidth:\"100%\",width:\"100%\"},width:\"100%\",...addPropertyOverrides({OT1LbjD25:{HlFA9k7gu:resolvedLinks2[2]},V3KnZ7YU0:{HlFA9k7gu:resolvedLinks2[1]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1v8kqmd\",\"data-framer-name\":\"Section\",layoutDependency:layoutDependency,layoutId:\"ZDBKiK7LZ\",children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1iq7wou\",\"data-framer-name\":\"List\",layoutDependency:layoutDependency,layoutId:\"B1O_e8GVF\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:43,width:`max((max((${componentViewport?.width||\"100vw\"} - 48px) / 2, 1px) - 16px) / 2, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+0+0)+0+0+174+0+0+0,...addPropertyOverrides({OT1LbjD25:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1182)/2+0+0)+0+0+0+174+0+0+0+0},V3KnZ7YU0:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-523)/2+0+0)+0+0+174+0+0+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1diam07-container\",layoutDependency:layoutDependency,layoutId:\"nasBHpbj4-container\",nodeId:\"nasBHpbj4\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayTitle,{h0JjnntIV:\"https://www.twingate.com/docs/use-cases\",height:\"100%\",id:\"nasBHpbj4\",kE6x8JtXN:\"Use Cases\",layoutId:\"nasBHpbj4\",style:{width:\"100%\"},variant:\"yAQHjAcYe\",width:\"100%\"})})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-nkj833\",\"data-framer-name\":\"List\",layoutDependency:layoutDependency,layoutId:\"irOZb9YCD\",children:[/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"J3NULgg5z\"},implicitPathVariables:undefined},{href:{webPageId:\"J3NULgg5z\"},implicitPathVariables:undefined},{href:{webPageId:\"J3NULgg5z\"},implicitPathVariables:undefined}],children:resolvedLinks3=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max((${componentViewport?.width||\"100vw\"} - 48px) / 2, 1px) - 16px) / 2, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+0+0)+0+0+174+0+0+43+0+0,...addPropertyOverrides({OT1LbjD25:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1182)/2+0+0)+0+0+0+174+0+0+0+43+0+0},V3KnZ7YU0:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-523)/2+0+0)+0+0+174+0+0+43+0+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-ksnb2m-container\",layoutDependency:layoutDependency,layoutId:\"xSSD0vmUx-container\",nodeId:\"xSSD0vmUx\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:resolvedLinks3[0],id:\"xSSD0vmUx\",Ke8Ebr11Y:\"Twingate\",layoutId:\"xSSD0vmUx\",NZ73Mn_3q:\"VPN Replacement\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\",...addPropertyOverrides({OT1LbjD25:{HlFA9k7gu:resolvedLinks3[2]},V3KnZ7YU0:{HlFA9k7gu:resolvedLinks3[1]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max((${componentViewport?.width||\"100vw\"} - 48px) / 2, 1px) - 16px) / 2, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+0+0)+0+0+174+0+0+43+0+52,...addPropertyOverrides({OT1LbjD25:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1182)/2+0+0)+0+0+0+174+0+0+0+43+0+52},V3KnZ7YU0:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-523)/2+0+0)+0+0+174+0+0+43+0+52}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1uv40ld-container\",layoutDependency:layoutDependency,layoutId:\"zqLcXTJPJ-container\",nodeId:\"zqLcXTJPJ\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/use-case/infrastructure-access\",id:\"zqLcXTJPJ\",Ke8Ebr11Y:\"Twingate\",layoutId:\"zqLcXTJPJ\",NZ73Mn_3q:\"Infrastructure Access\",style:{width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max((${componentViewport?.width||\"100vw\"} - 48px) / 2, 1px) - 16px) / 2, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+0+0)+0+0+174+0+0+43+0+104,...addPropertyOverrides({OT1LbjD25:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1182)/2+0+0)+0+0+0+174+0+0+0+43+0+104},V3KnZ7YU0:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-523)/2+0+0)+0+0+174+0+0+43+0+104}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-7tnjrh-container\",layoutDependency:layoutDependency,layoutId:\"yvvSsVrVS-container\",nodeId:\"yvvSsVrVS\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/device-controls-use-case\",id:\"yvvSsVrVS\",Ke8Ebr11Y:\"Twingate\",layoutId:\"yvvSsVrVS\",NZ73Mn_3q:\"Device Controls\",style:{width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\",...addPropertyOverrides({V3KnZ7YU0:{HlFA9k7gu:\"https://www.twingate.com/use-case/device-controls\"}},baseVariant,gestureVariant)})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max((${componentViewport?.width||\"100vw\"} - 48px) / 2, 1px) - 16px) / 2, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+0+0)+0+0+174+0+0+43+0+156,...addPropertyOverrides({OT1LbjD25:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1182)/2+0+0)+0+0+0+174+0+0+0+43+0+156},V3KnZ7YU0:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-523)/2+0+0)+0+0+174+0+0+43+0+156}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1xe6gs0-container\",layoutDependency:layoutDependency,layoutId:\"juQgguqla-container\",nodeId:\"juQgguqla\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/ip-based-access-use-case\",id:\"juQgguqla\",Ke8Ebr11Y:\"Twingate\",layoutId:\"juQgguqla\",NZ73Mn_3q:\"IP-Based Access\",style:{width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max((${componentViewport?.width||\"100vw\"} - 48px) / 2, 1px) - 16px) / 2, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+0+0)+0+0+174+0+0+43+0+208,...addPropertyOverrides({OT1LbjD25:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1182)/2+0+0)+0+0+0+174+0+0+0+43+0+208},V3KnZ7YU0:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-523)/2+0+0)+0+0+174+0+0+43+0+208}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1a1toft-container\",layoutDependency:layoutDependency,layoutId:\"t9J1lOqnE-container\",nodeId:\"t9J1lOqnE\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/use-case/dns-filtering\",id:\"t9J1lOqnE\",Ke8Ebr11Y:\"Twingate\",layoutId:\"t9J1lOqnE\",NZ73Mn_3q:\"DNS Filtering\",style:{width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max((${componentViewport?.width||\"100vw\"} - 48px) / 2, 1px) - 16px) / 2, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+0+0)+0+0+174+0+0+43+0+260,...addPropertyOverrides({OT1LbjD25:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1182)/2+0+0)+0+0+0+174+0+0+0+43+0+260},V3KnZ7YU0:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-523)/2+0+0)+0+0+174+0+0+43+0+260}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-mn6seu-container\",layoutDependency:layoutDependency,layoutId:\"cxa3EIJ5N-container\",nodeId:\"cxa3EIJ5N\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/compliance-use-case\",id:\"cxa3EIJ5N\",Ke8Ebr11Y:\"Twingate\",layoutId:\"cxa3EIJ5N\",NZ73Mn_3q:\"Compliance\",style:{width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\"})})})]})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1kft22j\",\"data-framer-name\":\"List\",layoutDependency:layoutDependency,layoutId:\"yu6XnnjSq\",children:[isDisplayed1()&&/*#__PURE__*/_jsx(ComponentViewportProvider,{height:43,width:`max((max((${componentViewport?.width||\"100vw\"} - 48px) / 2, 1px) - 16px) / 2, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+0+0)+0+0+174+0+0+0,...addPropertyOverrides({OT1LbjD25:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1182)/2+0+0)+0+0+0+174+0+365+0+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-3jpm4q-container\",layoutDependency:layoutDependency,layoutId:\"iAoBXBtgO-container\",nodeId:\"iAoBXBtgO\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayTitle,{h0JjnntIV:\"https://www.twingate.com/integrations\",height:\"100%\",id:\"iAoBXBtgO\",kE6x8JtXN:\"Integrations\",layoutId:\"iAoBXBtgO\",style:{width:\"100%\"},variant:\"yAQHjAcYe\",width:\"100%\"})})}),isDisplayed2()&&/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"oihjvnHXi\"},implicitPathVariables:undefined},{href:{webPageId:\"oihjvnHXi\"},implicitPathVariables:undefined}],children:resolvedLinks4=>/*#__PURE__*/_jsx(ComponentViewportProvider,{...addPropertyOverrides({V3KnZ7YU0:{height:43,width:`max((max((${componentViewport?.width||\"100vw\"} - 48px) / 2, 1px) - 16px) / 2, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-523)/2+0+0)+0+0+174+0+0+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-iqc1lc-container\",layoutDependency:layoutDependency,layoutId:\"XGJ3VO7qE-container\",nodeId:\"XGJ3VO7qE\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayTitle,{h0JjnntIV:resolvedLinks4[0],height:\"100%\",id:\"XGJ3VO7qE\",kE6x8JtXN:\"Integrations\",layoutId:\"XGJ3VO7qE\",style:{width:\"100%\"},variant:\"yAQHjAcYe\",width:\"100%\",...addPropertyOverrides({V3KnZ7YU0:{h0JjnntIV:resolvedLinks4[1]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-boojs6\",\"data-framer-name\":\"List\",layoutDependency:layoutDependency,layoutId:\"h7SC3bXBU\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max((${componentViewport?.width||\"100vw\"} - 48px) / 2, 1px) - 16px) / 2, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+0+0)+0+0+174+0+0+43+0+0,...addPropertyOverrides({OT1LbjD25:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1182)/2+0+0)+0+0+0+174+0+365+0+43+0+0},V3KnZ7YU0:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-523)/2+0+0)+0+0+174+0+0+43+0+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-g7pp9y-container\",layoutDependency:layoutDependency,layoutId:\"gFpaUp0zQ-container\",nodeId:\"gFpaUp0zQ\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/okta-configuration\",id:\"gFpaUp0zQ\",Ke8Ebr11Y:\"Okta\",layoutId:\"gFpaUp0zQ\",NZ73Mn_3q:\"Okta\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:true,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max((${componentViewport?.width||\"100vw\"} - 48px) / 2, 1px) - 16px) / 2, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+0+0)+0+0+174+0+0+43+0+52,...addPropertyOverrides({OT1LbjD25:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1182)/2+0+0)+0+0+0+174+0+365+0+43+0+52},V3KnZ7YU0:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-523)/2+0+0)+0+0+174+0+0+43+0+52}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-rd3dk6-container\",layoutDependency:layoutDependency,layoutId:\"FDVCoVx4X-container\",nodeId:\"FDVCoVx4X\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/google-workspace-configuration\",id:\"FDVCoVx4X\",Ke8Ebr11Y:\"Google\",layoutId:\"FDVCoVx4X\",NZ73Mn_3q:\"Google Workspace\",style:{width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:true,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max((${componentViewport?.width||\"100vw\"} - 48px) / 2, 1px) - 16px) / 2, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+0+0)+0+0+174+0+0+43+0+104,...addPropertyOverrides({OT1LbjD25:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1182)/2+0+0)+0+0+0+174+0+365+0+43+0+104},V3KnZ7YU0:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-523)/2+0+0)+0+0+174+0+0+43+0+104}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-11r5pvp-container\",layoutDependency:layoutDependency,layoutId:\"kwakOwOKJ-container\",nodeId:\"kwakOwOKJ\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/onelogin-configuration\",id:\"kwakOwOKJ\",Ke8Ebr11Y:\"OneLogin\",layoutId:\"kwakOwOKJ\",NZ73Mn_3q:\"OneLogin\",style:{width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:true,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max((${componentViewport?.width||\"100vw\"} - 48px) / 2, 1px) - 16px) / 2, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+0+0)+0+0+174+0+0+43+0+156,...addPropertyOverrides({OT1LbjD25:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1182)/2+0+0)+0+0+0+174+0+365+0+43+0+156},V3KnZ7YU0:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-523)/2+0+0)+0+0+174+0+0+43+0+156}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-7ldwwu-container\",layoutDependency:layoutDependency,layoutId:\"Yq1mc0xwH-container\",nodeId:\"Yq1mc0xwH\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/crowdstrike-configuration\",id:\"Yq1mc0xwH\",Ke8Ebr11Y:\"CrowdStrike\",layoutId:\"Yq1mc0xwH\",NZ73Mn_3q:\"CrowdStrike\",style:{width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:true,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max((${componentViewport?.width||\"100vw\"} - 48px) / 2, 1px) - 16px) / 2, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+0+0)+0+0+174+0+0+43+0+208,...addPropertyOverrides({OT1LbjD25:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1182)/2+0+0)+0+0+0+174+0+365+0+43+0+208},V3KnZ7YU0:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-523)/2+0+0)+0+0+174+0+0+43+0+208}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-xhd2k8-container\",layoutDependency:layoutDependency,layoutId:\"hyvIL9E9A-container\",nodeId:\"hyvIL9E9A\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/jamf-configuration\",id:\"hyvIL9E9A\",Ke8Ebr11Y:\"Jamf\",layoutId:\"hyvIL9E9A\",NZ73Mn_3q:\"Jamf\",style:{width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:true,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max((${componentViewport?.width||\"100vw\"} - 48px) / 2, 1px) - 16px) / 2, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+0+0)+0+0+174+0+0+43+0+260,...addPropertyOverrides({OT1LbjD25:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1182)/2+0+0)+0+0+0+174+0+365+0+43+0+260},V3KnZ7YU0:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-523)/2+0+0)+0+0+174+0+0+43+0+260}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-15w6j29-container\",layoutDependency:layoutDependency,layoutId:\"qeZewwvC0-container\",nodeId:\"qeZewwvC0\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/kandji-configuration\",id:\"qeZewwvC0\",Ke8Ebr11Y:\"Kandji\",layoutId:\"qeZewwvC0\",NZ73Mn_3q:\"Kandji\",style:{width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:true,width:\"100%\"})})})]})]})]})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-becu09\",\"data-framer-name\":\"Section\",layoutDependency:layoutDependency,layoutId:\"ZGB8_pewF\",children:[/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"P__7M8cd0\"},implicitPathVariables:undefined},{href:{webPageId:\"P__7M8cd0\"},implicitPathVariables:undefined},{href:{webPageId:\"P__7M8cd0\"},implicitPathVariables:undefined}],children:resolvedLinks5=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((${componentViewport?.width||\"100vw\"} - 48px) / 2, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+0+0)+0+0+0,...addPropertyOverrides({OT1LbjD25:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1182)/2+0+0)+0+920+0+0},V3KnZ7YU0:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-523)/2+0+0)+0+0+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1yr27ok-container\",layoutDependency:layoutDependency,layoutId:\"Grw0l75yF-container\",nodeId:\"Grw0l75yF\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItemCopy,{B1BRdzB7u:\"Keep track of the product updates\",D6E2gRuG7:false,gpily6XUb:\"XioEzfJ61\",height:\"100%\",HlFA9k7gu:resolvedLinks5[0],id:\"Grw0l75yF\",layoutId:\"Grw0l75yF\",NZ73Mn_3q:\"Changelog\",style:{maxWidth:\"100%\",width:\"100%\"},width:\"100%\",...addPropertyOverrides({OT1LbjD25:{HlFA9k7gu:resolvedLinks5[2]},V3KnZ7YU0:{HlFA9k7gu:resolvedLinks5[1]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-5o3log\",layoutDependency:layoutDependency,layoutId:\"lF3iq4ogr\",children:/*#__PURE__*/_jsx(ChildrenCanSuspend,{children:/*#__PURE__*/_jsx(QueryData,{query:{from:{alias:\"lF3iq4ogr\",data:Changelog,type:\"Collection\"},limit:{type:\"LiteralValue\",value:2},select:[{collection:\"lF3iq4ogr\",name:\"royCFnGoE\",type:\"Identifier\"},{collection:\"lF3iq4ogr\",name:\"s78r_5Sfi\",type:\"Identifier\"},{collection:\"lF3iq4ogr\",name:\"drBimO239\",type:\"Identifier\"},{collection:\"lF3iq4ogr\",name:\"tB8hckVXV\",type:\"Identifier\"},{collection:\"lF3iq4ogr\",name:\"id\",type:\"Identifier\"}],where:{collection:\"lF3iq4ogr\",name:\"apXl2m42W\",type:\"Identifier\"}},children:(collection,paginationInfo,loadMore)=>/*#__PURE__*/_jsx(_Fragment,{children:collection?.map(({drBimO239:drBimO239lF3iq4ogr,id:idlF3iq4ogr,royCFnGoE:royCFnGoElF3iq4ogr,s78r_5Sfi:s78r_5SfilF3iq4ogr,tB8hckVXV:tB8hckVXVlF3iq4ogr},index)=>{royCFnGoElF3iq4ogr??=\"\";tB8hckVXVlF3iq4ogr??=\"\";return /*#__PURE__*/_jsx(LayoutGroup,{id:`lF3iq4ogr-${idlF3iq4ogr}`,children:/*#__PURE__*/_jsx(PathVariablesContext.Provider,{value:{tB8hckVXV:tB8hckVXVlF3iq4ogr},children:/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{pathVariables:{tB8hckVXV:tB8hckVXVlF3iq4ogr},webPageId:\"Dbr2IURQW\"},implicitPathVariables:undefined},{href:{pathVariables:{tB8hckVXV:tB8hckVXVlF3iq4ogr},webPageId:\"Dbr2IURQW\"},implicitPathVariables:undefined},{href:{pathVariables:{tB8hckVXV:tB8hckVXVlF3iq4ogr},webPageId:\"Dbr2IURQW\"},implicitPathVariables:undefined}],children:resolvedLinks6=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:225,width:`max((${componentViewport?.width||\"100vw\"} - 48px) / 2, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+0+0)+0+0+62+0,...addPropertyOverrides({OT1LbjD25:{height:200,width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1182)/2+0+0)+0+920+0+62+0+0},V3KnZ7YU0:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-523)/2+0+0)+0+0+62+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-89fqu5-container\",layoutDependency:layoutDependency,layoutId:\"r6lyFG_hf-container\",nodeId:\"r6lyFG_hf\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayCardChangelog,{FCJjotThg:royCFnGoElF3iq4ogr,gXZzLrrxC:toDateString(s78r_5SfilF3iq4ogr,{dateStyle:\"medium\",locale:\"\"},activeLocaleCode),height:\"100%\",id:\"r6lyFG_hf\",layoutId:\"r6lyFG_hf\",style:{height:\"100%\",width:\"100%\"},variant:\"Y5wUo8S7g\",W8QKdoWYc:toResponsiveImage(drBimO239lF3iq4ogr),width:\"100%\",xB6GQkGqy:resolvedLinks6[0],...addPropertyOverrides({OT1LbjD25:{xB6GQkGqy:resolvedLinks6[2]},V3KnZ7YU0:{xB6GQkGqy:resolvedLinks6[1]}},baseVariant,gestureVariant)})})})})})},idlF3iq4ogr);})})})})})]})]}),isDisplayed3()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-15iyhuq\",\"data-framer-name\":\"Product-2\",layoutDependency:layoutDependency,layoutId:\"P88CfVq1P\",children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1505n5r\",layoutDependency:layoutDependency,layoutId:\"x8QTOaZgz\",children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-b7duzx\",\"data-framer-name\":\"ZTNA\",layoutDependency:layoutDependency,layoutId:\"jAPKLIAfo\",children:[/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"bBhvgz0tk\"},implicitPathVariables:undefined}],children:resolvedLinks7=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max(${componentViewport?.width||\"100vw\"}, 1px) - 96px) / 3, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+523+100)+0+0+0+0,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-9p78pu-container\",layoutDependency:layoutDependency,layoutId:\"UpFjqYxxJ-container\",nodeId:\"UpFjqYxxJ\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItemCopy,{B1BRdzB7u:\"Remote access for Zero Trust \",D6E2gRuG7:false,gpily6XUb:\"RYwLLzsEP\",height:\"100%\",HlFA9k7gu:resolvedLinks7[0],id:\"UpFjqYxxJ\",layoutId:\"UpFjqYxxJ\",NZ73Mn_3q:\"Zero Trust Network Access\",style:{maxWidth:\"100%\",width:\"100%\"},width:\"100%\"})})})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1qdvwjz\",\"data-framer-name\":\"Border\",layoutDependency:layoutDependency,layoutId:\"Z_w8ZWjuX\",children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1r2op2j\",\"data-framer-name\":\"Border\",layoutDependency:layoutDependency,layoutId:\"DPDnqldz3\",style:{backgroundColor:\"var(--token-b2f2019d-7e74-40d7-9f5b-7b1e52a4bae4, rgb(29, 32, 35))\"}})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-xcrsrm\",\"data-framer-name\":\"List\",layoutDependency:layoutDependency,layoutId:\"LB8otep6r\",children:[/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"J3NULgg5z\"},implicitPathVariables:undefined}],children:resolvedLinks8=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max(${componentViewport?.width||\"100vw\"}, 1px) - 96px) / 3, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+523+100)+0+0+0+71+0+0,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-l7hm36-container\",layoutDependency:layoutDependency,layoutId:\"p4mQnTxi5-container\",nodeId:\"p4mQnTxi5\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:resolvedLinks8[0],id:\"p4mQnTxi5\",Ke8Ebr11Y:\"Twingate\",layoutId:\"p4mQnTxi5\",NZ73Mn_3q:\"VPN Replacement\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\"})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"C6tBVD2Bg\"},implicitPathVariables:undefined}],children:resolvedLinks9=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max(${componentViewport?.width||\"100vw\"}, 1px) - 96px) / 3, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+523+100)+0+0+0+71+0+52,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-8wlhyv-container\",layoutDependency:layoutDependency,layoutId:\"Gv2EzedZo-container\",nodeId:\"Gv2EzedZo\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:resolvedLinks9[0],id:\"Gv2EzedZo\",Ke8Ebr11Y:\"Twingate\",layoutId:\"Gv2EzedZo\",NZ73Mn_3q:\"Intelligent Device Controls\",style:{width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\"})})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max(${componentViewport?.width||\"100vw\"}, 1px) - 96px) / 3, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+523+100)+0+0+0+71+0+104,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1c7haa2-container\",layoutDependency:layoutDependency,layoutId:\"DcGTqyeiy-container\",nodeId:\"DcGTqyeiy\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/connector-deployment#infrastructure-as-code-iac\",id:\"DcGTqyeiy\",Ke8Ebr11Y:\"Twingate\",layoutId:\"DcGTqyeiy\",NZ73Mn_3q:\"Zero Trust as Code\",style:{width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max(${componentViewport?.width||\"100vw\"}, 1px) - 96px) / 3, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+523+100)+0+0+0+71+0+156,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-19lajtg-container\",layoutDependency:layoutDependency,layoutId:\"lacmCPa3k-container\",nodeId:\"lacmCPa3k\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/ip-based-access-use-case\",id:\"lacmCPa3k\",Ke8Ebr11Y:\"Twingate\",layoutId:\"lacmCPa3k\",NZ73Mn_3q:\"IP-Based Access\",style:{width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max(${componentViewport?.width||\"100vw\"}, 1px) - 96px) / 3, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+523+100)+0+0+0+71+0+208,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1gjlpjv-container\",layoutDependency:layoutDependency,layoutId:\"CAn4OXqHp-container\",nodeId:\"CAn4OXqHp\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/infra-access-use-case\",id:\"CAn4OXqHp\",Ke8Ebr11Y:\"Twingate\",layoutId:\"CAn4OXqHp\",NZ73Mn_3q:\"Infrastructure Access\",style:{width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max(${componentViewport?.width||\"100vw\"}, 1px) - 96px) / 3, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+523+100)+0+0+0+71+0+260,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-xodpo3-container\",layoutDependency:layoutDependency,layoutId:\"E9H7R3SoB-container\",nodeId:\"E9H7R3SoB\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/homelab-personal-use-case/\",id:\"E9H7R3SoB\",Ke8Ebr11Y:\"Twingate\",layoutId:\"E9H7R3SoB\",NZ73Mn_3q:\"Homelab & Personal\",style:{width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max(${componentViewport?.width||\"100vw\"}, 1px) - 96px) / 3, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+523+100)+0+0+0+71+0+312,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-zufhl9-container\",layoutDependency:layoutDependency,layoutId:\"x8azL93py-container\",nodeId:\"x8azL93py\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/compliance-use-case\",id:\"x8azL93py\",Ke8Ebr11Y:\"Twingate\",layoutId:\"x8azL93py\",NZ73Mn_3q:\"Compliance\",style:{width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\"})})})]})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-kvcrwx\",\"data-framer-name\":\"Column\",layoutDependency:layoutDependency,layoutId:\"M8oWgr1HI\",children:[/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"rWzqN0quv\"},implicitPathVariables:undefined}],children:resolvedLinks10=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max(${componentViewport?.width||\"100vw\"}, 1px) - 96px) / 3, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+523+100)+0+0+0+0,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-182k6ni-container\",layoutDependency:layoutDependency,layoutId:\"djG5A2fUr-container\",nodeId:\"djG5A2fUr\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItemCopy,{B1BRdzB7u:\"Automated access controls\",D6E2gRuG7:false,gpily6XUb:\"LOI_lBRgD\",height:\"100%\",HlFA9k7gu:resolvedLinks10[0],id:\"djG5A2fUr\",layoutId:\"djG5A2fUr\",NZ73Mn_3q:\"Least Privilege Automation\",style:{maxWidth:\"100%\",width:\"100%\"},width:\"100%\"})})})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1un4k2i\",\"data-framer-name\":\"Border\",layoutDependency:layoutDependency,layoutId:\"bdg0PjYqm\",children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1cxlqtb\",\"data-framer-name\":\"Border\",layoutDependency:layoutDependency,layoutId:\"hGGtZq3cL\",style:{backgroundColor:\"var(--token-b2f2019d-7e74-40d7-9f5b-7b1e52a4bae4, rgb(29, 32, 35))\"}})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-i0ts1s\",\"data-framer-name\":\"List\",layoutDependency:layoutDependency,layoutId:\"UTa5aa0h3\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max(${componentViewport?.width||\"100vw\"}, 1px) - 96px) / 3, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+523+100)+0+0+0+71+0+0,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1q10tf0-container\",layoutDependency:layoutDependency,layoutId:\"Rur2kKCwH-container\",nodeId:\"Rur2kKCwH\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/ephemeral-access-to-resources\",id:\"Rur2kKCwH\",Ke8Ebr11Y:\"Twingate\",layoutId:\"Rur2kKCwH\",NZ73Mn_3q:\"Ephemeral Access\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max(${componentViewport?.width||\"100vw\"}, 1px) - 96px) / 3, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+523+100)+0+0+0+71+0+52,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1x4c0jt-container\",layoutDependency:layoutDependency,layoutId:\"ahLvlGTRy-container\",nodeId:\"ahLvlGTRy\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/usage-based-auto-lock\",id:\"ahLvlGTRy\",Ke8Ebr11Y:\"Twingate\",layoutId:\"ahLvlGTRy\",NZ73Mn_3q:\"Usage Based Access\",style:{width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\"})})})]}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-12f976e\",layoutDependency:layoutDependency,layoutId:\"uQf_jjTKu\",style:{opacity:0}}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1g32ci8\",\"data-framer-name\":\"Int sec\",layoutDependency:layoutDependency,layoutId:\"eSl7qahZF\",children:[/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"DT2IR2FQ8\"},implicitPathVariables:undefined}],children:resolvedLinks11=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max(${componentViewport?.width||\"100vw\"}, 1px) - 96px) / 3, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+523+100)+0+0+0+203+0+0,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-v8tog3-container\",layoutDependency:layoutDependency,layoutId:\"ooOLqpkCS-container\",nodeId:\"ooOLqpkCS\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItemCopy,{B1BRdzB7u:\"Protect all of your internet traffic \",D6E2gRuG7:false,gpily6XUb:\"ArOhNgCb9\",height:\"100%\",HlFA9k7gu:resolvedLinks11[0],id:\"ooOLqpkCS\",layoutId:\"ooOLqpkCS\",NZ73Mn_3q:\"Internet Security\",style:{maxWidth:\"100%\",width:\"100%\"},width:\"100%\"})})})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1anx218\",\"data-framer-name\":\"Border\",layoutDependency:layoutDependency,layoutId:\"TdaUNMx3m\",children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-9skeq6\",\"data-framer-name\":\"Border\",layoutDependency:layoutDependency,layoutId:\"z9MfdDbnu\",style:{backgroundColor:\"var(--token-b2f2019d-7e74-40d7-9f5b-7b1e52a4bae4, rgb(29, 32, 35))\"}})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-eb1l5s\",\"data-framer-name\":\"List\",layoutDependency:layoutDependency,layoutId:\"AnlmWzhVx\",children:[/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"HkECBVK7E\"},implicitPathVariables:undefined}],children:resolvedLinks12=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max(${componentViewport?.width||\"100vw\"}, 1px) - 96px) / 3, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+523+100)+0+0+0+203+0+71+0+0,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-mag6rb-container\",layoutDependency:layoutDependency,layoutId:\"fQzQ7u04v-container\",nodeId:\"fQzQ7u04v\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:resolvedLinks12[0],id:\"fQzQ7u04v\",Ke8Ebr11Y:\"Twingate\",layoutId:\"fQzQ7u04v\",NZ73Mn_3q:\"DNS Filtering\",style:{width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\"})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"pIxgFPDid\"},implicitPathVariables:undefined}],children:resolvedLinks13=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max(${componentViewport?.width||\"100vw\"}, 1px) - 96px) / 3, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+523+100)+0+0+0+203+0+71+0+52,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-14d10mi-container\",layoutDependency:layoutDependency,layoutId:\"jVaTLTdwT-container\",nodeId:\"jVaTLTdwT\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:resolvedLinks13[0],id:\"jVaTLTdwT\",Ke8Ebr11Y:\"Twingate\",layoutId:\"jVaTLTdwT\",NZ73Mn_3q:\"Content Filtering\",style:{width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\"})})})})]})]})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-11imhsu\",\"data-framer-name\":\"Integrations\",layoutDependency:layoutDependency,layoutId:\"sBmnS_jea\",children:[/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"oihjvnHXi\"},implicitPathVariables:undefined}],children:resolvedLinks14=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max(${componentViewport?.width||\"100vw\"}, 1px) - 96px) / 3, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+523+100)+0+0+0+0,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1nnw4lp-container\",layoutDependency:layoutDependency,layoutId:\"MV9BMX1FG-container\",nodeId:\"MV9BMX1FG\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItemCopy,{B1BRdzB7u:\"Best-in-class security ecosystem\",D6E2gRuG7:false,gpily6XUb:\"QHZQdXUok\",height:\"100%\",HlFA9k7gu:resolvedLinks14[0],id:\"MV9BMX1FG\",layoutId:\"MV9BMX1FG\",NZ73Mn_3q:\"Integrations\",style:{maxWidth:\"100%\",width:\"100%\"},width:\"100%\"})})})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1apt2bh\",\"data-framer-name\":\"Border\",layoutDependency:layoutDependency,layoutId:\"GX54uRhG6\",children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1h6hbbo\",\"data-framer-name\":\"Border\",layoutDependency:layoutDependency,layoutId:\"Wx31Dy6G1\",style:{backgroundColor:\"var(--token-b2f2019d-7e74-40d7-9f5b-7b1e52a4bae4, rgb(29, 32, 35))\"}})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1reh5xg\",\"data-framer-name\":\"List\",layoutDependency:layoutDependency,layoutId:\"tGSZqaOX4\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max(${componentViewport?.width||\"100vw\"}, 1px) - 96px) / 3, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+523+100)+0+0+0+71+0+0,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1by0yi-container\",layoutDependency:layoutDependency,layoutId:\"lgnsFfssJ-container\",nodeId:\"lgnsFfssJ\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/okta-configuration\",id:\"lgnsFfssJ\",Ke8Ebr11Y:\"Okta\",layoutId:\"lgnsFfssJ\",NZ73Mn_3q:\"Okta\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:true,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max(${componentViewport?.width||\"100vw\"}, 1px) - 96px) / 3, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+523+100)+0+0+0+71+0+52,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-xeak02-container\",layoutDependency:layoutDependency,layoutId:\"kqqCbiBpp-container\",nodeId:\"kqqCbiBpp\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/google-workspace-configuration\",id:\"kqqCbiBpp\",Ke8Ebr11Y:\"Google\",layoutId:\"kqqCbiBpp\",NZ73Mn_3q:\"Google Workspace\",style:{width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:true,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max(${componentViewport?.width||\"100vw\"}, 1px) - 96px) / 3, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+523+100)+0+0+0+71+0+104,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1qmt7r4-container\",layoutDependency:layoutDependency,layoutId:\"aTkVUJa5_-container\",nodeId:\"aTkVUJa5_\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/onelogin-configuration\",id:\"aTkVUJa5_\",Ke8Ebr11Y:\"OneLogin\",layoutId:\"aTkVUJa5_\",NZ73Mn_3q:\"OneLogin\",style:{width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:true,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max(${componentViewport?.width||\"100vw\"}, 1px) - 96px) / 3, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+523+100)+0+0+0+71+0+156,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-nkbvcx-container\",layoutDependency:layoutDependency,layoutId:\"duxIpx2yN-container\",nodeId:\"duxIpx2yN\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/crowdstrike-configuration\",id:\"duxIpx2yN\",Ke8Ebr11Y:\"CrowdStrike\",layoutId:\"duxIpx2yN\",NZ73Mn_3q:\"CrowdStrike\",style:{width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:true,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max(${componentViewport?.width||\"100vw\"}, 1px) - 96px) / 3, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+523+100)+0+0+0+71+0+208,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1ik5lqm-container\",layoutDependency:layoutDependency,layoutId:\"lEZ61Iqku-container\",nodeId:\"lEZ61Iqku\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/jamf-configuration\",id:\"lEZ61Iqku\",Ke8Ebr11Y:\"Jamf\",layoutId:\"lEZ61Iqku\",NZ73Mn_3q:\"Jamf\",style:{width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:true,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max(${componentViewport?.width||\"100vw\"}, 1px) - 96px) / 3, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+523+100)+0+0+0+71+0+260,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-11nu99-container\",layoutDependency:layoutDependency,layoutId:\"XOblM6a6_-container\",nodeId:\"XOblM6a6_\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/kandji-configuration\",id:\"XOblM6a6_\",Ke8Ebr11Y:\"Kandji\",layoutId:\"XOblM6a6_\",NZ73Mn_3q:\"Kandji\",style:{width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:true,width:\"100%\"})})})]})]})]})}),isDisplayed4()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-u2rhus\",\"data-framer-name\":\"Docs\",layoutDependency:layoutDependency,layoutId:\"DU5z1xxX7\",children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-8ee410\",\"data-framer-name\":\"Section\",layoutDependency:layoutDependency,layoutId:\"Vr0eM32mW\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((${componentViewport?.width||\"100vw\"} - 48px) / 2, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+952+200)+0+0+0,...addPropertyOverrides({kNdqCkpev:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1289)/2+0+0)+0+0+0+0},lHByleq6k:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-297)/2+0+0)+0+0+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-xe9wd4-container\",layoutDependency:layoutDependency,layoutId:\"hRpC0i0Ai-container\",nodeId:\"hRpC0i0Ai\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItemCopy,{B1BRdzB7u:\"Learn how to deploy Twingate to your network\",D6E2gRuG7:false,gpily6XUb:\"kCAil_vci\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/\",id:\"hRpC0i0Ai\",layoutId:\"hRpC0i0Ai\",NZ73Mn_3q:\"Explore Documentation\",style:{maxWidth:\"100%\",width:\"100%\"},width:\"100%\"})})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1t2i6bp\",\"data-framer-name\":\"Cards\",layoutDependency:layoutDependency,layoutId:\"s8nwq6yKv\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:136,width:`max((max((${componentViewport?.width||\"100vw\"} - 48px) / 2, 1px) - 32px) / 3, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+952+200)+0+0+62+0,...addPropertyOverrides({kNdqCkpev:{height:211,width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1289)/2+0+0)+0+0+0+62+0+0},lHByleq6k:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-297)/2+0+0)+0+0+62+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1tymwd2-container\",layoutDependency:layoutDependency,layoutId:\"Ri2t3JPMF-container\",nodeId:\"Ri2t3JPMF\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayCard,{EoiUdnIrn:\"YZkileseO\",height:\"100%\",id:\"Ri2t3JPMF\",layoutId:\"Ri2t3JPMF\",style:{height:\"100%\",width:\"100%\"},TuXUBRiOh:\"efAxaIdFV\",TXl3JifQz:\"https://www.twingate.com/docs/quick-start\",variant:\"rS16mv8bj\",WDE61Js6q:\"Quick Start\",width:\"100%\",ySJTE4XN0:\"\",...addPropertyOverrides({kNdqCkpev:{style:{width:\"100%\"},TuXUBRiOh:\"YZkileseO\",variant:\"GobthPXov\"}},baseVariant,gestureVariant)})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:136,width:`max((max((${componentViewport?.width||\"100vw\"} - 48px) / 2, 1px) - 32px) / 3, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+952+200)+0+0+62+0,...addPropertyOverrides({kNdqCkpev:{height:211,width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1289)/2+0+0)+0+0+0+62+0+221},lHByleq6k:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-297)/2+0+0)+0+0+62+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-12t6qnl-container\",layoutDependency:layoutDependency,layoutId:\"LcrTPQSgW-container\",nodeId:\"LcrTPQSgW\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayCard,{EoiUdnIrn:\"bJQdBKSqu\",height:\"100%\",id:\"LcrTPQSgW\",layoutId:\"LcrTPQSgW\",style:{height:\"100%\",width:\"100%\"},TuXUBRiOh:\"kOKVZMv3e\",TXl3JifQz:\"https://www.twingate.com/docs/architecture\",variant:\"rS16mv8bj\",WDE61Js6q:\"Architecture\",width:\"100%\",ySJTE4XN0:\"\",...addPropertyOverrides({kNdqCkpev:{style:{width:\"100%\"},variant:\"GobthPXov\"}},baseVariant,gestureVariant)})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:136,width:`max((max((${componentViewport?.width||\"100vw\"} - 48px) / 2, 1px) - 32px) / 3, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+952+200)+0+0+62+0,...addPropertyOverrides({kNdqCkpev:{height:211,width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1289)/2+0+0)+0+0+0+62+0+442},lHByleq6k:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-297)/2+0+0)+0+0+62+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1qbshft-container\",layoutDependency:layoutDependency,layoutId:\"bFGhrlBsx-container\",nodeId:\"bFGhrlBsx\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayCard,{EoiUdnIrn:\"nOFe8WcIU\",height:\"100%\",id:\"bFGhrlBsx\",layoutId:\"bFGhrlBsx\",style:{height:\"100%\",width:\"100%\"},TuXUBRiOh:\"RWYVlvI4_\",TXl3JifQz:\"https://www.twingate.com/docs/api-overview\",variant:\"rS16mv8bj\",WDE61Js6q:\"API\",width:\"100%\",ySJTE4XN0:\"\",...addPropertyOverrides({kNdqCkpev:{style:{width:\"100%\"},TuXUBRiOh:\"nOFe8WcIU\",variant:\"GobthPXov\"}},baseVariant,gestureVariant)})})})]})]}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-nip4r8\",\"data-framer-name\":\"Section\",layoutDependency:layoutDependency,layoutId:\"CUmK8F9uj\",children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-96g8ei\",\"data-framer-name\":\"Section\",layoutDependency:layoutDependency,layoutId:\"g4rPEySOb\",children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-2n1wn9\",\"data-framer-name\":\"List\",layoutDependency:layoutDependency,layoutId:\"HB9xnZ8wh\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:43,width:`max((max((${componentViewport?.width||\"100vw\"} - 48px) / 2, 1px) - 16px) / 2, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+952+200)+0+0+0+0+0+0,...addPropertyOverrides({kNdqCkpev:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1289)/2+0+0)+0+731+0+0+0+0+0+0},lHByleq6k:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-297)/2+0+0)+0+0+0+0+0+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-saa8m3-container\",layoutDependency:layoutDependency,layoutId:\"AChFJWHOl-container\",nodeId:\"AChFJWHOl\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayTitle,{height:\"100%\",id:\"AChFJWHOl\",kE6x8JtXN:\"Deploying Twingate\",layoutId:\"AChFJWHOl\",style:{width:\"100%\"},variant:\"yAQHjAcYe\",width:\"100%\"})})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-o6y5n0\",\"data-framer-name\":\"List\",layoutDependency:layoutDependency,layoutId:\"p911rh_KP\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max((${componentViewport?.width||\"100vw\"} - 48px) / 2, 1px) - 16px) / 2, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+952+200)+0+0+0+0+0+43+0+0,...addPropertyOverrides({kNdqCkpev:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1289)/2+0+0)+0+731+0+0+0+0+0+43+0+0},lHByleq6k:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-297)/2+0+0)+0+0+0+0+0+43+0+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1e5fb6d-container\",layoutDependency:layoutDependency,layoutId:\"mFx71CRMJ-container\",nodeId:\"mFx71CRMJ\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/connector-deployment#cloud\",id:\"mFx71CRMJ\",Ke8Ebr11Y:\"Twingate\",layoutId:\"mFx71CRMJ\",NZ73Mn_3q:\"Cloud\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max((${componentViewport?.width||\"100vw\"} - 48px) / 2, 1px) - 16px) / 2, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+952+200)+0+0+0+0+0+43+0+52,...addPropertyOverrides({kNdqCkpev:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1289)/2+0+0)+0+731+0+0+0+0+0+43+0+52},lHByleq6k:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-297)/2+0+0)+0+0+0+0+0+43+0+52}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1fdjsbq-container\",layoutDependency:layoutDependency,layoutId:\"eifkhne9o-container\",nodeId:\"eifkhne9o\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/connector-deployment#in-offices-or-data-centers\",id:\"eifkhne9o\",Ke8Ebr11Y:\"Twingate\",layoutId:\"eifkhne9o\",NZ73Mn_3q:\"Offices or Data Centers\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max((${componentViewport?.width||\"100vw\"} - 48px) / 2, 1px) - 16px) / 2, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+952+200)+0+0+0+0+0+43+0+104,...addPropertyOverrides({kNdqCkpev:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1289)/2+0+0)+0+731+0+0+0+0+0+43+0+104},lHByleq6k:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-297)/2+0+0)+0+0+0+0+0+43+0+104}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-l0mbqz-container\",layoutDependency:layoutDependency,layoutId:\"Bf8HClfhq-container\",nodeId:\"Bf8HClfhq\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/connector-deployment#serverless-environments-paas\",id:\"Bf8HClfhq\",Ke8Ebr11Y:\"Twingate\",layoutId:\"Bf8HClfhq\",NZ73Mn_3q:\"Serverless Environments\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max((${componentViewport?.width||\"100vw\"} - 48px) / 2, 1px) - 16px) / 2, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+952+200)+0+0+0+0+0+43+0+156,...addPropertyOverrides({kNdqCkpev:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1289)/2+0+0)+0+731+0+0+0+0+0+43+0+156},lHByleq6k:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-297)/2+0+0)+0+0+0+0+0+43+0+156}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-129ij73-container\",layoutDependency:layoutDependency,layoutId:\"s67O06dP2-container\",nodeId:\"s67O06dP2\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/connector-deployment#infrastructure-as-code-iac\",id:\"s67O06dP2\",Ke8Ebr11Y:\"Twingate\",layoutId:\"s67O06dP2\",NZ73Mn_3q:\"Infrastructure-as-Code (IaC)\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max((${componentViewport?.width||\"100vw\"} - 48px) / 2, 1px) - 16px) / 2, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+952+200)+0+0+0+0+0+43+0+208,...addPropertyOverrides({kNdqCkpev:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1289)/2+0+0)+0+731+0+0+0+0+0+43+0+208},lHByleq6k:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-297)/2+0+0)+0+0+0+0+0+43+0+208}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-fw2nk7-container\",layoutDependency:layoutDependency,layoutId:\"L0tYmnzi6-container\",nodeId:\"L0tYmnzi6\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/connector-deployment#home-network\",id:\"L0tYmnzi6\",Ke8Ebr11Y:\"Twingate\",layoutId:\"L0tYmnzi6\",NZ73Mn_3q:\"Home Networks\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\"})})})]})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-jua59y\",\"data-framer-name\":\"List\",layoutDependency:layoutDependency,layoutId:\"hvkJH34oY\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:43,width:`max((max((${componentViewport?.width||\"100vw\"} - 48px) / 2, 1px) - 16px) / 2, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+952+200)+0+0+0+0+0+0,...addPropertyOverrides({kNdqCkpev:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1289)/2+0+0)+0+731+0+0+0+313+0+0},lHByleq6k:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-297)/2+0+0)+0+0+0+0+0+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1upm7hz-container\",layoutDependency:layoutDependency,layoutId:\"HM8IUAxGU-container\",nodeId:\"HM8IUAxGU\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayTitle,{height:\"100%\",id:\"HM8IUAxGU\",kE6x8JtXN:\"Additional Resources\",layoutId:\"HM8IUAxGU\",style:{width:\"100%\"},variant:\"yAQHjAcYe\",width:\"100%\"})})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1ktt9kn\",\"data-framer-name\":\"List\",layoutDependency:layoutDependency,layoutId:\"tffPHAok2\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max((${componentViewport?.width||\"100vw\"} - 48px) / 2, 1px) - 16px) / 2, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+952+200)+0+0+0+0+0+43+0+0,...addPropertyOverrides({kNdqCkpev:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1289)/2+0+0)+0+731+0+0+0+313+0+43+0+0},lHByleq6k:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-297)/2+0+0)+0+0+0+0+0+43+0+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-18frrl2-container\",layoutDependency:layoutDependency,layoutId:\"QOc2XuLmf-container\",nodeId:\"QOc2XuLmf\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://help.twingate.com/hc/en-us\",id:\"QOc2XuLmf\",Ke8Ebr11Y:\"Okta\",layoutId:\"QOc2XuLmf\",NZ73Mn_3q:\"Help Center\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\"})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"P__7M8cd0\"},implicitPathVariables:undefined},{href:{webPageId:\"P__7M8cd0\"},implicitPathVariables:undefined},{href:{webPageId:\"P__7M8cd0\"},implicitPathVariables:undefined}],children:resolvedLinks15=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max((${componentViewport?.width||\"100vw\"} - 48px) / 2, 1px) - 16px) / 2, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+952+200)+0+0+0+0+0+43+0+52,...addPropertyOverrides({kNdqCkpev:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1289)/2+0+0)+0+731+0+0+0+313+0+43+0+52},lHByleq6k:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-297)/2+0+0)+0+0+0+0+0+43+0+52}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1ua16pj-container\",layoutDependency:layoutDependency,layoutId:\"hNg66rdRC-container\",nodeId:\"hNg66rdRC\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:resolvedLinks15[0],id:\"hNg66rdRC\",Ke8Ebr11Y:\"Okta\",layoutId:\"hNg66rdRC\",NZ73Mn_3q:\"Changelog\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\",...addPropertyOverrides({kNdqCkpev:{HlFA9k7gu:resolvedLinks15[2]},lHByleq6k:{HlFA9k7gu:resolvedLinks15[1]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max((${componentViewport?.width||\"100vw\"} - 48px) / 2, 1px) - 16px) / 2, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+952+200)+0+0+0+0+0+43+0+104,...addPropertyOverrides({kNdqCkpev:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1289)/2+0+0)+0+731+0+0+0+313+0+43+0+104},lHByleq6k:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-297)/2+0+0)+0+0+0+0+0+43+0+104}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-tmaibl-container\",layoutDependency:layoutDependency,layoutId:\"fZcMrZ7PC-container\",nodeId:\"fZcMrZ7PC\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://github.com/twingate-labs\",id:\"fZcMrZ7PC\",Ke8Ebr11Y:\"Okta\",layoutId:\"fZcMrZ7PC\",NZ73Mn_3q:\"Twingate Labs\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((max((${componentViewport?.width||\"100vw\"} - 48px) / 2, 1px) - 16px) / 2, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+952+200)+0+0+0+0+0+43+0+156,...addPropertyOverrides({kNdqCkpev:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1289)/2+0+0)+0+731+0+0+0+313+0+43+0+156},lHByleq6k:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-297)/2+0+0)+0+0+0+0+0+43+0+156}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1hp9ig8-container\",layoutDependency:layoutDependency,layoutId:\"gRGeCGSvL-container\",nodeId:\"gRGeCGSvL\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/trust-center\",id:\"gRGeCGSvL\",Ke8Ebr11Y:\"Okta\",layoutId:\"gRGeCGSvL\",NZ73Mn_3q:\"Trust Center\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\"})})})]})]})]})})]}),isDisplayed5()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1cw00d5\",\"data-framer-name\":\"Resources-2\",layoutDependency:layoutDependency,layoutId:\"l9psjW9qQ\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-e4vt69\",\"data-framer-name\":\"Section\",layoutDependency:layoutDependency,layoutId:\"hL6gvTcyq\",children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1topenk\",\"data-framer-name\":\"List \",layoutDependency:layoutDependency,layoutId:\"LkqBR7Osw\",children:[/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"QQxdUQBuE\"},implicitPathVariables:undefined},{href:{webPageId:\"QQxdUQBuE\"},implicitPathVariables:undefined},{href:{webPageId:\"QQxdUQBuE\"},implicitPathVariables:undefined}],children:resolvedLinks16=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((${componentViewport?.width||\"100vw\"} - 48px) / 2.5, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+1249+300)+0+0+0+0+0,...addPropertyOverrides({hSGH_QbdR:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-556)/2+0+0)+0+0+0+0+0+0},lgo6tsa0X:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-278)/2+0+0)+0+0+0+0+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-vhp6uo-container\",layoutDependency:layoutDependency,layoutId:\"Z_mGPvcB5-container\",nodeId:\"Z_mGPvcB5\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItemCopy,{B1BRdzB7u:\"Meet the team behind Twingate\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:resolvedLinks16[0],id:\"Z_mGPvcB5\",layoutId:\"Z_mGPvcB5\",NZ73Mn_3q:\"About\",style:{maxWidth:\"100%\",width:\"100%\"},width:\"100%\",...addPropertyOverrides({hSGH_QbdR:{HlFA9k7gu:resolvedLinks16[2]},lgo6tsa0X:{HlFA9k7gu:resolvedLinks16[1]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((${componentViewport?.width||\"100vw\"} - 48px) / 2.5, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+1249+300)+0+0+0+0+58,...addPropertyOverrides({hSGH_QbdR:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-556)/2+0+0)+0+0+0+0+0+58},lgo6tsa0X:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-278)/2+0+0)+0+0+0+0+58}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-16ezdve-container\",layoutDependency:layoutDependency,layoutId:\"dGOqIik1M-container\",nodeId:\"dGOqIik1M\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItemCopy,{B1BRdzB7u:\"Join our fast growing team\",D6E2gRuG7:false,gpily6XUb:\"bart134iP\",height:\"100%\",HlFA9k7gu:\"https://jobs.lever.co/twingate\",id:\"dGOqIik1M\",layoutId:\"dGOqIik1M\",NZ73Mn_3q:\"Careers\",style:{maxWidth:\"100%\",width:\"100%\"},width:\"100%\"})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"fM499XwEy\"},implicitPathVariables:undefined},{href:{webPageId:\"fM499XwEy\"},implicitPathVariables:undefined},{href:{webPageId:\"fM499XwEy\"},implicitPathVariables:undefined}],children:resolvedLinks17=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((${componentViewport?.width||\"100vw\"} - 48px) / 2.5, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+1249+300)+0+0+0+0+116,...addPropertyOverrides({hSGH_QbdR:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-556)/2+0+0)+0+0+0+0+0+116},lgo6tsa0X:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-278)/2+0+0)+0+0+0+0+116}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1x4hjur-container\",layoutDependency:layoutDependency,layoutId:\"VoVKgb60a-container\",nodeId:\"VoVKgb60a\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItemCopy,{B1BRdzB7u:\"Discover how Twingate can help your customers\",D6E2gRuG7:false,gpily6XUb:\"ZQM788nVg\",height:\"100%\",HlFA9k7gu:resolvedLinks17[0],id:\"VoVKgb60a\",layoutId:\"VoVKgb60a\",NZ73Mn_3q:\"Partners\",style:{maxWidth:\"100%\",width:\"100%\"},width:\"100%\",...addPropertyOverrides({hSGH_QbdR:{HlFA9k7gu:resolvedLinks17[2]},lgo6tsa0X:{HlFA9k7gu:resolvedLinks17[1]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"Sgazhdlve\"},implicitPathVariables:undefined},{href:{webPageId:\"Sgazhdlve\"},implicitPathVariables:undefined},{href:{webPageId:\"Sgazhdlve\"},implicitPathVariables:undefined}],children:resolvedLinks18=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((${componentViewport?.width||\"100vw\"} - 48px) / 2.5, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+1249+300)+0+0+0+0+174,...addPropertyOverrides({hSGH_QbdR:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-556)/2+0+0)+0+0+0+0+0+174},lgo6tsa0X:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-278)/2+0+0)+0+0+0+0+174}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-anfmyu-container\",layoutDependency:layoutDependency,layoutId:\"aE8y7Ks03-container\",nodeId:\"aE8y7Ks03\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItemCopy,{B1BRdzB7u:\"Speak to a Twingate expert\",D6E2gRuG7:false,gpily6XUb:\"bnffWKLnC\",height:\"100%\",HlFA9k7gu:resolvedLinks18[0],id:\"aE8y7Ks03\",layoutId:\"aE8y7Ks03\",NZ73Mn_3q:\"Demo\",style:{maxWidth:\"100%\",width:\"100%\"},width:\"100%\",...addPropertyOverrides({hSGH_QbdR:{HlFA9k7gu:resolvedLinks18[2]},lgo6tsa0X:{HlFA9k7gu:resolvedLinks18[1]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{pathVariables:{q7Tqe0xXu:\"twingate-security-whitepaper\"},unresolvedPathSlugs:{q7Tqe0xXu:{collectionId:\"mIGl8pDQp\",collectionItemId:\"auMCo7ISP\"}},webPageId:\"VFMAtaAu7\"},implicitPathVariables:undefined},{href:{pathVariables:{q7Tqe0xXu:\"twingate-security-whitepaper\"},unresolvedPathSlugs:{q7Tqe0xXu:{collectionId:\"mIGl8pDQp\",collectionItemId:\"auMCo7ISP\"}},webPageId:\"VFMAtaAu7\"},implicitPathVariables:undefined},{href:{pathVariables:{q7Tqe0xXu:\"twingate-security-whitepaper\"},unresolvedPathSlugs:{q7Tqe0xXu:{collectionId:\"mIGl8pDQp\",collectionItemId:\"auMCo7ISP\"}},webPageId:\"VFMAtaAu7\"},implicitPathVariables:undefined}],children:resolvedLinks19=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((${componentViewport?.width||\"100vw\"} - 48px) / 2.5, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+1249+300)+0+0+0+0+232,...addPropertyOverrides({hSGH_QbdR:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-556)/2+0+0)+0+0+0+0+0+232},lgo6tsa0X:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-278)/2+0+0)+0+0+0+0+232}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-r4l0xe-container\",layoutDependency:layoutDependency,layoutId:\"GKz2iW7Hh-container\",nodeId:\"GKz2iW7Hh\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItemCopy,{B1BRdzB7u:\"Download Twingate Security Whitepaper\",D6E2gRuG7:false,gpily6XUb:\"unQEaWlPP\",height:\"100%\",HlFA9k7gu:resolvedLinks19[0],id:\"GKz2iW7Hh\",layoutId:\"GKz2iW7Hh\",NZ73Mn_3q:\"Whitepaper\",style:{maxWidth:\"100%\",width:\"100%\"},width:\"100%\",...addPropertyOverrides({hSGH_QbdR:{HlFA9k7gu:resolvedLinks19[2]},lgo6tsa0X:{HlFA9k7gu:resolvedLinks19[1]}},baseVariant,gestureVariant)})})})})]})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1h3hm0n\",\"data-framer-name\":\"Section\",layoutDependency:layoutDependency,layoutId:\"dBuATtXkQ\",children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1h3k614\",\"data-framer-name\":\"Section\",layoutDependency:layoutDependency,layoutId:\"W2BOnljqR\",children:[/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"RAc5AxsLG\"},implicitPathVariables:undefined},{href:{webPageId:\"RAc5AxsLG\"},implicitPathVariables:undefined},{href:{webPageId:\"RAc5AxsLG\"},implicitPathVariables:undefined}],children:resolvedLinks20=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((${componentViewport?.width||\"100vw\"} - 48px) * 0.6, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+1249+300)+0+0+0+0,...addPropertyOverrides({hSGH_QbdR:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-556)/2+0+0)+0+294+0+0+0+0},lgo6tsa0X:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-278)/2+0+0)+0+0+0+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1e2tb2v-container\",layoutDependency:layoutDependency,layoutId:\"MNulMSqk5-container\",nodeId:\"MNulMSqk5\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItemCopy,{B1BRdzB7u:\"News and insight from Twingate\",D6E2gRuG7:false,gpily6XUb:\"UZnvvYoUZ\",height:\"100%\",HlFA9k7gu:resolvedLinks20[0],id:\"MNulMSqk5\",layoutId:\"MNulMSqk5\",NZ73Mn_3q:\"Blog\",style:{maxWidth:\"100%\",width:\"100%\"},width:\"100%\",...addPropertyOverrides({hSGH_QbdR:{HlFA9k7gu:resolvedLinks20[2]},lgo6tsa0X:{HlFA9k7gu:resolvedLinks20[1]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-ll5qb2\",layoutDependency:layoutDependency,layoutId:\"yXUkIhj_k\",children:/*#__PURE__*/_jsx(ChildrenCanSuspend,{children:/*#__PURE__*/_jsx(QueryData,{query:{from:{alias:\"yXUkIhj_k\",data:Blog,type:\"Collection\"},limit:{type:\"LiteralValue\",value:2},select:[{collection:\"yXUkIhj_k\",name:\"htIvfYBOu\",type:\"Identifier\"},{collection:\"yXUkIhj_k\",name:\"BOY5LSewc\",type:\"Identifier\"},{collection:\"yXUkIhj_k\",name:\"YnwyMK7wB\",type:\"Identifier\"},{collection:\"yXUkIhj_k\",name:\"KppWsNgH6\",type:\"Identifier\"},{collection:\"yXUkIhj_k\",name:\"id\",type:\"Identifier\"}],where:{left:{collection:\"yXUkIhj_k\",name:\"WRWHbDdVF\",type:\"Identifier\"},operator:\"and\",right:{collection:\"yXUkIhj_k\",name:\"xT_4SVBSB\",type:\"Identifier\"},type:\"BinaryOperation\"}},children:(collection1,paginationInfo1,loadMore1)=>/*#__PURE__*/_jsx(_Fragment,{children:collection1?.map(({BOY5LSewc:BOY5LSewcyXUkIhj_k,htIvfYBOu:htIvfYBOuyXUkIhj_k,id:idyXUkIhj_k,KppWsNgH6:KppWsNgH6yXUkIhj_k,YnwyMK7wB:YnwyMK7wByXUkIhj_k},index1)=>{htIvfYBOuyXUkIhj_k??=\"\";KppWsNgH6yXUkIhj_k??=\"\";return /*#__PURE__*/_jsx(LayoutGroup,{id:`yXUkIhj_k-${idyXUkIhj_k}`,children:/*#__PURE__*/_jsx(PathVariablesContext.Provider,{value:{KppWsNgH6:KppWsNgH6yXUkIhj_k},children:/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{pathVariables:{KppWsNgH6:KppWsNgH6yXUkIhj_k},webPageId:\"SLBKiX9Fj\"},implicitPathVariables:undefined},{href:{pathVariables:{KppWsNgH6:KppWsNgH6yXUkIhj_k},webPageId:\"SLBKiX9Fj\"},implicitPathVariables:undefined},{href:{pathVariables:{KppWsNgH6:KppWsNgH6yXUkIhj_k},webPageId:\"SLBKiX9Fj\"},implicitPathVariables:undefined}],children:resolvedLinks21=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:216,width:`max((${componentViewport?.width||\"100vw\"} - 48px) * 0.6, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+1249+300)+0+0+0+62+0,...addPropertyOverrides({hSGH_QbdR:{height:200,width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-556)/2+0+0)+0+294+0+0+0+62+0+0},lgo6tsa0X:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-278)/2+0+0)+0+0+0+62+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-3bvsz6-container\",layoutDependency:layoutDependency,layoutId:\"jCcyQWZYa-container\",nodeId:\"jCcyQWZYa\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayCardChangelog,{FCJjotThg:htIvfYBOuyXUkIhj_k,gXZzLrrxC:toDateString(BOY5LSewcyXUkIhj_k,{dateStyle:\"medium\",locale:\"\"},activeLocaleCode),height:\"100%\",id:\"jCcyQWZYa\",layoutId:\"jCcyQWZYa\",style:{width:\"100%\"},variant:\"Y5wUo8S7g\",W8QKdoWYc:toResponsiveImage(YnwyMK7wByXUkIhj_k),width:\"100%\",xB6GQkGqy:resolvedLinks21[0],...addPropertyOverrides({hSGH_QbdR:{style:{height:\"100%\",width:\"100%\"},xB6GQkGqy:resolvedLinks21[2]},lgo6tsa0X:{xB6GQkGqy:resolvedLinks21[1]}},baseVariant,gestureVariant)})})})})})},idyXUkIhj_k);})})})})})]})})]}),isDisplayed6()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-gynrzd\",\"data-framer-name\":\"Customers\",layoutDependency:layoutDependency,layoutId:\"WQgGQct8M\",children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-i30rvu\",\"data-framer-name\":\"Section\",layoutDependency:layoutDependency,layoutId:\"EUPCkwCTm\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-znq6i4\",\"data-framer-name\":\"List\",layoutDependency:layoutDependency,layoutId:\"wKwRI3iBc\",children:/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"hEjPykOVp\"},implicitPathVariables:undefined},{href:{webPageId:\"hEjPykOVp\"},implicitPathVariables:undefined}],children:resolvedLinks22=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((${componentViewport?.width||\"100vw\"} - 16px) / 2, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+1527+400)+0+0+0+0+0,...addPropertyOverrides({z_8_nd6QX:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1239)/2+0+0)+0+0+0+0+0+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1kzei5a-container\",layoutDependency:layoutDependency,layoutId:\"o1NEoqrwn-container\",nodeId:\"o1NEoqrwn\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItemCopy,{B1BRdzB7u:\"Read about our customers\u2019 success\",D6E2gRuG7:false,gpily6XUb:\"DmVv_TrP5\",height:\"100%\",HlFA9k7gu:resolvedLinks22[0],id:\"o1NEoqrwn\",layoutId:\"o1NEoqrwn\",NZ73Mn_3q:\"Case Studies\",style:{maxWidth:\"100%\",width:\"100%\"},width:\"100%\",...addPropertyOverrides({z_8_nd6QX:{HlFA9k7gu:resolvedLinks22[1]}},baseVariant,gestureVariant)})})})})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1dk5y22\",\"data-framer-name\":\"List\",layoutDependency:layoutDependency,layoutId:\"brhF_HZRn\",children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-og1km3\",\"data-framer-name\":\"List\",layoutDependency:layoutDependency,layoutId:\"LYLuheKXc\",children:/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"UtMUnmGbJ\"},implicitPathVariables:undefined},{href:{webPageId:\"UtMUnmGbJ\"},implicitPathVariables:undefined}],children:resolvedLinks23=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((${componentViewport?.width||\"100vw\"} - 16px) / 2, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+1527+400)+0+0+0+0+0+0+0,...addPropertyOverrides({z_8_nd6QX:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1239)/2+0+0)+0+0+0+62+0+0+0+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-w2fpg6-container\",layoutDependency:layoutDependency,layoutId:\"QF0Mtt9PE-container\",nodeId:\"QF0Mtt9PE\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItemCopy,{B1BRdzB7u:\"Join the conversation in the community\",D6E2gRuG7:false,gpily6XUb:\"Zza8uvaWK\",height:\"100%\",HlFA9k7gu:resolvedLinks23[0],id:\"QF0Mtt9PE\",layoutId:\"QF0Mtt9PE\",NZ73Mn_3q:\"Reviews & Testimonials\",style:{maxWidth:\"100%\",width:\"100%\"},width:\"100%\",...addPropertyOverrides({z_8_nd6QX:{HlFA9k7gu:resolvedLinks23[1]}},baseVariant,gestureVariant)})})})})})})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-zpwlcf\",\"data-framer-name\":\"Section\",layoutDependency:layoutDependency,layoutId:\"re9UpxOUr\",children:[/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{pathVariables:{qUJTFCGQ6:\"hi-rez\"},unresolvedPathSlugs:{qUJTFCGQ6:{collectionId:\"eIwGKSSC3\",collectionItemId:\"CehnKgoO6\"}},webPageId:\"xy3zQ0r6L\"},implicitPathVariables:undefined},{href:{pathVariables:{qUJTFCGQ6:\"hi-rez\"},unresolvedPathSlugs:{qUJTFCGQ6:{collectionId:\"eIwGKSSC3\",collectionItemId:\"CehnKgoO6\"}},webPageId:\"xy3zQ0r6L\"},implicitPathVariables:undefined}],children:resolvedLinks24=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:159,width:`max((${componentViewport?.width||\"100vw\"} - 48px) / 4, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+1527+400)+0+70+0,...addPropertyOverrides({z_8_nd6QX:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1239)/2+0+0)+0+124+0+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-nrehok-container\",layoutDependency:layoutDependency,layoutId:\"FpjiNNLjK-container\",nodeId:\"FpjiNNLjK\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayCustomerCard,{GLg7muXcH:\"Hi-Rez uses Twingate to supercharge remote access performance\",height:\"100%\",id:\"FpjiNNLjK\",layoutId:\"FpjiNNLjK\",m3vyrEPlf:\"Hi-Rez Ventures\",P7_PhGiQ5:\"Yfqqmt4eA\",style:{width:\"100%\"},u4ho7uXQk:resolvedLinks24[0],width:\"100%\",...addPropertyOverrides({z_8_nd6QX:{u4ho7uXQk:resolvedLinks24[1]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{pathVariables:{qUJTFCGQ6:\"criteria\"},unresolvedPathSlugs:{qUJTFCGQ6:{collectionId:\"eIwGKSSC3\",collectionItemId:\"xrMupDRdB\"}},webPageId:\"xy3zQ0r6L\"},implicitPathVariables:undefined},{href:{pathVariables:{qUJTFCGQ6:\"criteria\"},unresolvedPathSlugs:{qUJTFCGQ6:{collectionId:\"eIwGKSSC3\",collectionItemId:\"xrMupDRdB\"}},webPageId:\"xy3zQ0r6L\"},implicitPathVariables:undefined}],children:resolvedLinks25=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:159,width:`max((${componentViewport?.width||\"100vw\"} - 48px) / 4, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+1527+400)+0+70+0,...addPropertyOverrides({z_8_nd6QX:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1239)/2+0+0)+0+124+0+175}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1uodi7o-container\",layoutDependency:layoutDependency,layoutId:\"d1kP7gOnX-container\",nodeId:\"d1kP7gOnX\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayCustomerCard,{CnrcNZ0E1:addImageAlt({src:\"https://framerusercontent.com/images/CkWcgyN7v2u4dwDd5yuxSp8nQ.svg\"},\"\"),GLg7muXcH:\" Uses Twingate ZTNA to empower growth and secure access \",height:\"100%\",id:\"d1kP7gOnX\",layoutId:\"d1kP7gOnX\",m3vyrEPlf:\"Criteria\",P7_PhGiQ5:\"mBkeWL7Br\",style:{width:\"100%\"},u4ho7uXQk:resolvedLinks25[0],width:\"100%\",...addPropertyOverrides({z_8_nd6QX:{u4ho7uXQk:resolvedLinks25[1]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{pathVariables:{qUJTFCGQ6:\"modern-health\"},unresolvedPathSlugs:{qUJTFCGQ6:{collectionId:\"eIwGKSSC3\",collectionItemId:\"jkjeTJE1f\"}},webPageId:\"xy3zQ0r6L\"},implicitPathVariables:undefined},{href:{pathVariables:{qUJTFCGQ6:\"modern-health\"},unresolvedPathSlugs:{qUJTFCGQ6:{collectionId:\"eIwGKSSC3\",collectionItemId:\"jkjeTJE1f\"}},webPageId:\"xy3zQ0r6L\"},implicitPathVariables:undefined}],children:resolvedLinks26=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:159,width:`max((${componentViewport?.width||\"100vw\"} - 48px) / 4, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+1527+400)+0+70+0,...addPropertyOverrides({z_8_nd6QX:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1239)/2+0+0)+0+124+0+350}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-z97emb-container\",layoutDependency:layoutDependency,layoutId:\"DRdoLKS0s-container\",nodeId:\"DRdoLKS0s\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayCustomerCard,{CnrcNZ0E1:addImageAlt({src:\"https://framerusercontent.com/images/lXWX9cI5L1JT9AqYEvxsYm43I.svg\"},\"\"),GLg7muXcH:\"Moved to a Zero Trust model while improving IT productivity\",height:\"100%\",id:\"DRdoLKS0s\",layoutId:\"DRdoLKS0s\",m3vyrEPlf:\"Modern Health\",P7_PhGiQ5:\"YFK08jqjX\",style:{width:\"100%\"},u4ho7uXQk:resolvedLinks26[0],width:\"100%\",...addPropertyOverrides({z_8_nd6QX:{u4ho7uXQk:resolvedLinks26[1]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{pathVariables:{qUJTFCGQ6:\"kooapps\"},unresolvedPathSlugs:{qUJTFCGQ6:{collectionId:\"eIwGKSSC3\",collectionItemId:\"h5guGfijx\"}},webPageId:\"xy3zQ0r6L\"},implicitPathVariables:undefined},{href:{pathVariables:{qUJTFCGQ6:\"kooapps\"},unresolvedPathSlugs:{qUJTFCGQ6:{collectionId:\"eIwGKSSC3\",collectionItemId:\"h5guGfijx\"}},webPageId:\"xy3zQ0r6L\"},implicitPathVariables:undefined}],children:resolvedLinks27=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:159,width:`max((${componentViewport?.width||\"100vw\"} - 48px) / 4, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+1527+400)+0+70+0,...addPropertyOverrides({z_8_nd6QX:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1239)/2+0+0)+0+124+0+525}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-a9yqnk-container\",layoutDependency:layoutDependency,layoutId:\"Wg1L9EkwI-container\",nodeId:\"Wg1L9EkwI\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayCustomerCard,{CnrcNZ0E1:addImageAlt({src:\"https://framerusercontent.com/images/9Odol4pqdgfciNLAtUsubMMNoA.svg\"},\"\"),GLg7muXcH:\"Uses Twingate to provide a better, more productive online experience\",height:\"100%\",id:\"Wg1L9EkwI\",layoutId:\"Wg1L9EkwI\",m3vyrEPlf:\"Kooapps\",P7_PhGiQ5:\"mBkeWL7Br\",style:{width:\"100%\"},u4ho7uXQk:resolvedLinks27[0],width:\"100%\",...addPropertyOverrides({z_8_nd6QX:{u4ho7uXQk:resolvedLinks27[1]}},baseVariant,gestureVariant)})})})})]})]}),isDisplayed7()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-dm6bb1\",\"data-framer-name\":\"Customers-2\",layoutDependency:layoutDependency,layoutId:\"dR7hvYiWV\",children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-8ap2z6\",\"data-framer-name\":\"Section\",layoutDependency:layoutDependency,layoutId:\"jE5ujKRYW\",children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1w8ll5o\",\"data-framer-name\":\"List\",layoutDependency:layoutDependency,layoutId:\"Qhah78SUG\",children:[/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"hEjPykOVp\"},implicitPathVariables:undefined},{href:{webPageId:\"hEjPykOVp\"},implicitPathVariables:undefined},{href:{webPageId:\"hEjPykOVp\"},implicitPathVariables:undefined}],children:resolvedLinks28=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((${componentViewport?.width||\"100vw\"} - 48px) / 1.7, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+1756+500)+0+0+0+0+0,...addPropertyOverrides({xewWae9HZ:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-309)/2+0+0)+0+0+0+0+0},z_8_nd6QX:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1239)/2+808+100)+0+0+0+0+0+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1d4rbgp-container\",layoutDependency:layoutDependency,layoutId:\"LH8Mwmfvn-container\",nodeId:\"LH8Mwmfvn\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItemCopy,{B1BRdzB7u:\"Read how we helped thousands of companies stay secure\",D6E2gRuG7:false,gpily6XUb:\"DmVv_TrP5\",height:\"100%\",HlFA9k7gu:resolvedLinks28[0],id:\"LH8Mwmfvn\",layoutId:\"LH8Mwmfvn\",NZ73Mn_3q:\"Case Studies\",style:{maxWidth:\"100%\",width:\"100%\"},width:\"100%\",...addPropertyOverrides({xewWae9HZ:{HlFA9k7gu:resolvedLinks28[1]},z_8_nd6QX:{HlFA9k7gu:resolvedLinks28[2]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"UtMUnmGbJ\"},implicitPathVariables:undefined},{href:{webPageId:\"UtMUnmGbJ\"},implicitPathVariables:undefined},{href:{webPageId:\"UtMUnmGbJ\"},implicitPathVariables:undefined}],children:resolvedLinks29=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`max((${componentViewport?.width||\"100vw\"} - 48px) / 1.7, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+1756+500)+0+0+0+0+62,...addPropertyOverrides({xewWae9HZ:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-309)/2+0+0)+0+0+0+0+62},z_8_nd6QX:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1239)/2+808+100)+0+0+0+0+0+62}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1yjqlhr-container\",layoutDependency:layoutDependency,layoutId:\"cE3mc6oUg-container\",nodeId:\"cE3mc6oUg\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItemCopy,{B1BRdzB7u:\"Read review and join the conversation in the community\",D6E2gRuG7:false,gpily6XUb:\"Zza8uvaWK\",height:\"100%\",HlFA9k7gu:resolvedLinks29[0],id:\"cE3mc6oUg\",layoutId:\"cE3mc6oUg\",NZ73Mn_3q:\"Reviews & Testimonials\",style:{maxWidth:\"100%\",width:\"100%\"},width:\"100%\",...addPropertyOverrides({xewWae9HZ:{HlFA9k7gu:resolvedLinks29[1]},z_8_nd6QX:{HlFA9k7gu:resolvedLinks29[2]}},baseVariant,gestureVariant)})})})}),isDisplayed8()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-5jwaz0\",\"data-framer-name\":\"Spacer\",layoutDependency:layoutDependency,layoutId:\"E311r5x1t\",style:{opacity:0}}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-h741bg\",\"data-framer-name\":\"Section\",layoutDependency:layoutDependency,layoutId:\"LK1XUkKf7\",children:[/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{pathVariables:{qUJTFCGQ6:\"hi-rez\"},unresolvedPathSlugs:{qUJTFCGQ6:{collectionId:\"eIwGKSSC3\",collectionItemId:\"CehnKgoO6\"}},webPageId:\"xy3zQ0r6L\"},implicitPathVariables:undefined},{href:{pathVariables:{qUJTFCGQ6:\"hi-rez\"},unresolvedPathSlugs:{qUJTFCGQ6:{collectionId:\"eIwGKSSC3\",collectionItemId:\"CehnKgoO6\"}},webPageId:\"xy3zQ0r6L\"},implicitPathVariables:undefined},{href:{pathVariables:{qUJTFCGQ6:\"hi-rez\"},unresolvedPathSlugs:{qUJTFCGQ6:{collectionId:\"eIwGKSSC3\",collectionItemId:\"CehnKgoO6\"}},webPageId:\"xy3zQ0r6L\"},implicitPathVariables:undefined}],children:resolvedLinks30=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:159,width:`max((max((${componentViewport?.width||\"100vw\"} - 48px) / 1.7, 1px) - 32px) / 3, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+1756+500)+0+0+0+0+150+0,...addPropertyOverrides({xewWae9HZ:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-309)/2+0+0)+0+0+0+0+150+0},z_8_nd6QX:{width:`max((${componentViewport?.width||\"100vw\"} - 72px) / 3, 1px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1239)/2+808+100)+0+0+0+0+0+124+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-pm576d-container\",layoutDependency:layoutDependency,layoutId:\"Knjco8XGl-container\",nodeId:\"Knjco8XGl\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayCustomerCard,{GLg7muXcH:\"\",height:\"100%\",id:\"Knjco8XGl\",layoutId:\"Knjco8XGl\",m3vyrEPlf:\"Hi-Rez Ventures\",P7_PhGiQ5:\"Yfqqmt4eA\",style:{width:\"100%\"},u4ho7uXQk:resolvedLinks30[0],width:\"100%\",...addPropertyOverrides({xewWae9HZ:{u4ho7uXQk:resolvedLinks30[1]},z_8_nd6QX:{u4ho7uXQk:resolvedLinks30[2]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{pathVariables:{qUJTFCGQ6:\"criteria\"},unresolvedPathSlugs:{qUJTFCGQ6:{collectionId:\"eIwGKSSC3\",collectionItemId:\"xrMupDRdB\"}},webPageId:\"xy3zQ0r6L\"},implicitPathVariables:undefined},{href:{pathVariables:{qUJTFCGQ6:\"criteria\"},unresolvedPathSlugs:{qUJTFCGQ6:{collectionId:\"eIwGKSSC3\",collectionItemId:\"xrMupDRdB\"}},webPageId:\"xy3zQ0r6L\"},implicitPathVariables:undefined},{href:{pathVariables:{qUJTFCGQ6:\"criteria\"},unresolvedPathSlugs:{qUJTFCGQ6:{collectionId:\"eIwGKSSC3\",collectionItemId:\"xrMupDRdB\"}},webPageId:\"xy3zQ0r6L\"},implicitPathVariables:undefined}],children:resolvedLinks31=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:159,width:`max((max((${componentViewport?.width||\"100vw\"} - 48px) / 1.7, 1px) - 32px) / 3, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+1756+500)+0+0+0+0+150+0,...addPropertyOverrides({xewWae9HZ:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-309)/2+0+0)+0+0+0+0+150+0},z_8_nd6QX:{width:`max((${componentViewport?.width||\"100vw\"} - 72px) / 3, 1px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1239)/2+808+100)+0+0+0+0+0+124+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1tkhbja-container\",layoutDependency:layoutDependency,layoutId:\"DhVbxWXMy-container\",nodeId:\"DhVbxWXMy\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayCustomerCard,{CnrcNZ0E1:addImageAlt({src:\"https://framerusercontent.com/images/CkWcgyN7v2u4dwDd5yuxSp8nQ.svg\"},\"\"),GLg7muXcH:\"\",height:\"100%\",id:\"DhVbxWXMy\",layoutId:\"DhVbxWXMy\",m3vyrEPlf:\"Criteria\",P7_PhGiQ5:\"mBkeWL7Br\",style:{width:\"100%\"},u4ho7uXQk:resolvedLinks31[0],width:\"100%\",...addPropertyOverrides({xewWae9HZ:{u4ho7uXQk:resolvedLinks31[1]},z_8_nd6QX:{u4ho7uXQk:resolvedLinks31[2]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{pathVariables:{qUJTFCGQ6:\"kooapps\"},unresolvedPathSlugs:{qUJTFCGQ6:{collectionId:\"eIwGKSSC3\",collectionItemId:\"h5guGfijx\"}},webPageId:\"xy3zQ0r6L\"},implicitPathVariables:undefined},{href:{pathVariables:{qUJTFCGQ6:\"kooapps\"},unresolvedPathSlugs:{qUJTFCGQ6:{collectionId:\"eIwGKSSC3\",collectionItemId:\"h5guGfijx\"}},webPageId:\"xy3zQ0r6L\"},implicitPathVariables:undefined},{href:{pathVariables:{qUJTFCGQ6:\"kooapps\"},unresolvedPathSlugs:{qUJTFCGQ6:{collectionId:\"eIwGKSSC3\",collectionItemId:\"h5guGfijx\"}},webPageId:\"xy3zQ0r6L\"},implicitPathVariables:undefined}],children:resolvedLinks32=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:159,width:`max((max((${componentViewport?.width||\"100vw\"} - 48px) / 1.7, 1px) - 32px) / 3, 1px)`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+1756+500)+0+0+0+0+150+0,...addPropertyOverrides({xewWae9HZ:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-309)/2+0+0)+0+0+0+0+150+0},z_8_nd6QX:{width:`max((${componentViewport?.width||\"100vw\"} - 72px) / 3, 1px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1239)/2+808+100)+0+0+0+0+0+124+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1974eoa-container\",layoutDependency:layoutDependency,layoutId:\"TnRzsd8LZ-container\",nodeId:\"TnRzsd8LZ\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayCustomerCard,{CnrcNZ0E1:addImageAlt({src:\"https://framerusercontent.com/images/9Odol4pqdgfciNLAtUsubMMNoA.svg\"},\"\"),GLg7muXcH:\"\",height:\"100%\",id:\"TnRzsd8LZ\",layoutId:\"TnRzsd8LZ\",m3vyrEPlf:\"Kooapps\",P7_PhGiQ5:\"mBkeWL7Br\",style:{width:\"100%\"},u4ho7uXQk:resolvedLinks32[0],width:\"100%\",...addPropertyOverrides({xewWae9HZ:{u4ho7uXQk:resolvedLinks32[1]},z_8_nd6QX:{u4ho7uXQk:resolvedLinks32[2]}},baseVariant,gestureVariant)})})})})]})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-7je2yg\",\"data-border\":true,\"data-framer-name\":\"Section\",layoutDependency:layoutDependency,layoutId:\"MP5YHM0_w\",style:{\"--border-bottom-width\":\"0px\",\"--border-color\":\"var(--token-b2f2019d-7e74-40d7-9f5b-7b1e52a4bae4, rgb(29, 32, 35))\",\"--border-left-width\":\"0.5px\",\"--border-right-width\":\"0px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0px\"},children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1mkrwbe\",\"data-styles-preset\":\"xzXjhGEGu\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-376d54cb-4db7-448c-b192-cf6ae3d1a8ff, rgb(161, 161, 170)))\"},children:\" \u201CUsing Twingate is definitely much, much easier compared to how we used to do things with our VPN. Twingate is easier to deploy, setup, and maintain, it\u2019s easier for our users, and we get all the security benefits that Zero Trust offers.\u201D\"})}),className:\"framer-1362lpy\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"wooC89cht\",style:{\"--extracted-r6o4lv\":\"var(--token-376d54cb-4db7-448c-b192-cf6ae3d1a8ff, rgb(161, 161, 170))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({xewWae9HZ:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1btjufx\",\"data-styles-preset\":\"xoAKFFJ8r\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-376d54cb-4db7-448c-b192-cf6ae3d1a8ff, rgb(161, 161, 170)))\"},children:\" \u201CUsing Twingate is definitely much, much easier compared to how we used to do things with our VPN. Twingate is easier to deploy, setup, and maintain, it\u2019s easier for our users, and we get all the security benefits that Zero Trust offers.\u201D\"})})}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-koqyu4\",layoutDependency:layoutDependency,layoutId:\"o4ca9tA1T\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1btjufx\",\"data-styles-preset\":\"xoAKFFJ8r\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255)))\"},children:\"Solon Chen\"})}),className:\"framer-1mdxcln\",\"data-framer-name\":\"Title\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"oAdozUPp9\",style:{\"--extracted-r6o4lv\":\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-137gzas\",\"data-styles-preset\":\"PihfgTAR5\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-376d54cb-4db7-448c-b192-cf6ae3d1a8ff, rgb(161, 161, 170)))\"},children:\"Co-Founder and Studio Manager at Kooapps\"})}),className:\"framer-19ntam8\",\"data-framer-name\":\"Subtitle\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"t_VibonQg\",style:{\"--extracted-r6o4lv\":\"var(--token-376d54cb-4db7-448c-b192-cf6ae3d1a8ff, rgb(161, 161, 170))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})]}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:34,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+1756+500)+0+0+0+0+279.5,...addPropertyOverrides({xewWae9HZ:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-309)/2+0+0)+0+0+0+0+264.5},z_8_nd6QX:{y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-1239)/2+808+100)+0+0+0+331+0+279.5}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-ht5lmy-container\",layoutDependency:layoutDependency,layoutId:\"pw2h9Ytds-container\",nodeId:\"pw2h9Ytds\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(ButtonsButton,{CiwGQDcAN:\"BNbfbktEW\",csPpyV4tk:\"m9F2Vlw0F\",FdDV8gLxh:\"var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95))\",gW2IdKNHn:\"Read Story\",height:\"100%\",id:\"pw2h9Ytds\",layoutId:\"pw2h9Ytds\",OA2ahGR0N:false,style:{height:\"100%\"},uirRaCarc:true,Urz2Ffy21:\"Terraform\",variant:\"L82Oy0Uy8\",width:\"100%\",WJoF2TywT:\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\",xjfxHTVGH:true})})})]})]})}),isDisplayed9()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-a3aygn\",\"data-framer-name\":\"Partners\",layoutDependency:layoutDependency,layoutId:\"qArDfvJcd\",children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-cmbw08\",\"data-framer-name\":\"Section\",layoutDependency:layoutDependency,layoutId:\"Tb82_6jDz\",children:[/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"Bq9yo6Aho\"},implicitPathVariables:undefined},{href:{webPageId:\"Bq9yo6Aho\"},implicitPathVariables:undefined},{href:{webPageId:\"Bq9yo6Aho\"},implicitPathVariables:undefined}],children:resolvedLinks33=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`min(max((max(${componentViewport?.width||\"100vw\"}, 1px) - 96px) / 3, 1px), max(${componentViewport?.width||\"100vw\"}, 1px))`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+2065+600)+0+0,...addPropertyOverrides({CgU1mwjv4:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-170)/2+0+0)+0+0+0+0},g5WWfybex:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-46)/2+0+0)+0+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-9153cy-container\",layoutDependency:layoutDependency,layoutId:\"SjgY0BYAT-container\",nodeId:\"SjgY0BYAT\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"Manage & monitor customer networks\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:resolvedLinks33[0],id:\"SjgY0BYAT\",Ke8Ebr11Y:\"Twingate\",layoutId:\"SjgY0BYAT\",NZ73Mn_3q:\"MSPs/MSSPs\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\",...addPropertyOverrides({CgU1mwjv4:{HlFA9k7gu:resolvedLinks33[2]},g5WWfybex:{HlFA9k7gu:resolvedLinks33[1]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"oihjvnHXi\"},implicitPathVariables:undefined},{href:{webPageId:\"oihjvnHXi\"},implicitPathVariables:undefined},{href:{webPageId:\"oihjvnHXi\"},implicitPathVariables:undefined}],children:resolvedLinks34=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`min(max((max(${componentViewport?.width||\"100vw\"}, 1px) - 96px) / 3, 1px), max(${componentViewport?.width||\"100vw\"}, 1px))`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+2065+600)+0+0,...addPropertyOverrides({CgU1mwjv4:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-170)/2+0+0)+0+0+0+62},g5WWfybex:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-46)/2+0+0)+0+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-uzpatk-container\",layoutDependency:layoutDependency,layoutId:\"GSlcdx4ul-container\",nodeId:\"GSlcdx4ul\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"Innovate through our rich technology ecosystem\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:resolvedLinks34[0],id:\"GSlcdx4ul\",Ke8Ebr11Y:\"Twingate\",layoutId:\"GSlcdx4ul\",NZ73Mn_3q:\"Technology Alliances\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\",...addPropertyOverrides({CgU1mwjv4:{HlFA9k7gu:resolvedLinks34[2]},g5WWfybex:{HlFA9k7gu:resolvedLinks34[1]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"fM499XwEy\"},implicitPathVariables:undefined},{href:{webPageId:\"fM499XwEy\"},implicitPathVariables:undefined},{href:{webPageId:\"fM499XwEy\"},implicitPathVariables:undefined}],children:resolvedLinks35=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:46,width:`min(max((max(${componentViewport?.width||\"100vw\"}, 1px) - 96px) / 3, 1px), max(${componentViewport?.width||\"100vw\"}, 1px))`,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-2711)/2+2065+600)+0+0,...addPropertyOverrides({CgU1mwjv4:{width:`calc(${componentViewport?.width||\"100vw\"} - 40px)`,y:(componentViewport?.y||0)+20+(((componentViewport?.height||200)-40-170)/2+0+0)+0+0+0+124},g5WWfybex:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-16-46)/2+0+0)+0+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1d1f678-container\",layoutDependency:layoutDependency,layoutId:\"IbRYliGrF-container\",nodeId:\"IbRYliGrF\",rendersWithMotion:true,scopeId:\"ojyM9x_ZC\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"Drive scale with best-in-class zero trust security\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:resolvedLinks35[0],id:\"IbRYliGrF\",Ke8Ebr11Y:\"Twingate\",layoutId:\"IbRYliGrF\",NZ73Mn_3q:\"Channel Partners\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\",...addPropertyOverrides({CgU1mwjv4:{HlFA9k7gu:resolvedLinks35[2]},g5WWfybex:{HlFA9k7gu:resolvedLinks35[1]}},baseVariant,gestureVariant)})})})})]})})]})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-pvpWo.framer-ypzmmt, .framer-pvpWo .framer-ypzmmt { display: block; }\",\".framer-pvpWo.framer-kvheqv { align-content: flex-start; align-items: flex-start; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 100px; height: min-content; justify-content: center; max-width: 1056px; overflow: visible; padding: 0px 0px 16px 0px; position: relative; width: 1056px; }\",\".framer-pvpWo .framer-15wi53f, .framer-pvpWo .framer-15iyhuq, .framer-pvpWo .framer-u2rhus, .framer-pvpWo .framer-1cw00d5, .framer-pvpWo .framer-a3aygn { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 48px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-pvpWo .framer-1n1x9js, .framer-pvpWo .framer-b7duzx, .framer-pvpWo .framer-kvcrwx { align-content: center; align-items: center; display: flex; flex: 1 0 0px; flex-direction: column; flex-wrap: nowrap; gap: 12px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 1px; }\",\".framer-pvpWo .framer-119nvka-container, .framer-pvpWo .framer-1qh9obf-container, .framer-pvpWo .framer-1stlua6-container, .framer-pvpWo .framer-ksnb2m-container, .framer-pvpWo .framer-g7pp9y-container, .framer-pvpWo .framer-1yr27ok-container, .framer-pvpWo .framer-9p78pu-container, .framer-pvpWo .framer-l7hm36-container, .framer-pvpWo .framer-182k6ni-container, .framer-pvpWo .framer-1q10tf0-container, .framer-pvpWo .framer-v8tog3-container, .framer-pvpWo .framer-1nnw4lp-container, .framer-pvpWo .framer-1by0yi-container, .framer-pvpWo .framer-xe9wd4-container, .framer-pvpWo .framer-1e5fb6d-container, .framer-pvpWo .framer-1fdjsbq-container, .framer-pvpWo .framer-l0mbqz-container, .framer-pvpWo .framer-129ij73-container, .framer-pvpWo .framer-fw2nk7-container, .framer-pvpWo .framer-18frrl2-container, .framer-pvpWo .framer-1ua16pj-container, .framer-pvpWo .framer-tmaibl-container, .framer-pvpWo .framer-1hp9ig8-container, .framer-pvpWo .framer-vhp6uo-container, .framer-pvpWo .framer-16ezdve-container, .framer-pvpWo .framer-1x4hjur-container, .framer-pvpWo .framer-anfmyu-container, .framer-pvpWo .framer-r4l0xe-container, .framer-pvpWo .framer-1e2tb2v-container, .framer-pvpWo .framer-1kzei5a-container, .framer-pvpWo .framer-w2fpg6-container, .framer-pvpWo .framer-1d4rbgp-container, .framer-pvpWo .framer-1yjqlhr-container { flex: none; height: auto; max-width: 100%; position: relative; width: 100%; }\",\".framer-pvpWo .framer-1v8kqmd, .framer-pvpWo .framer-96g8ei, .framer-pvpWo .framer-i30rvu, .framer-pvpWo .framer-zpwlcf, .framer-pvpWo .framer-h741bg { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 16px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-pvpWo .framer-1iq7wou, .framer-pvpWo .framer-1kft22j, .framer-pvpWo .framer-2n1wn9, .framer-pvpWo .framer-jua59y, .framer-pvpWo .framer-e4vt69, .framer-pvpWo .framer-znq6i4, .framer-pvpWo .framer-1dk5y22 { align-content: flex-start; align-items: flex-start; display: flex; flex: 1 0 0px; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 1px; }\",\".framer-pvpWo .framer-1diam07-container, .framer-pvpWo .framer-1uv40ld-container, .framer-pvpWo .framer-7tnjrh-container, .framer-pvpWo .framer-1xe6gs0-container, .framer-pvpWo .framer-1a1toft-container, .framer-pvpWo .framer-mn6seu-container, .framer-pvpWo .framer-3jpm4q-container, .framer-pvpWo .framer-iqc1lc-container, .framer-pvpWo .framer-rd3dk6-container, .framer-pvpWo .framer-11r5pvp-container, .framer-pvpWo .framer-7ldwwu-container, .framer-pvpWo .framer-xhd2k8-container, .framer-pvpWo .framer-15w6j29-container, .framer-pvpWo .framer-8wlhyv-container, .framer-pvpWo .framer-1c7haa2-container, .framer-pvpWo .framer-19lajtg-container, .framer-pvpWo .framer-1gjlpjv-container, .framer-pvpWo .framer-xodpo3-container, .framer-pvpWo .framer-zufhl9-container, .framer-pvpWo .framer-1x4c0jt-container, .framer-pvpWo .framer-mag6rb-container, .framer-pvpWo .framer-14d10mi-container, .framer-pvpWo .framer-xeak02-container, .framer-pvpWo .framer-1qmt7r4-container, .framer-pvpWo .framer-nkbvcx-container, .framer-pvpWo .framer-1ik5lqm-container, .framer-pvpWo .framer-11nu99-container, .framer-pvpWo .framer-saa8m3-container, .framer-pvpWo .framer-1upm7hz-container { flex: none; height: auto; position: relative; width: 100%; }\",\".framer-pvpWo .framer-nkj833, .framer-pvpWo .framer-boojs6, .framer-pvpWo .framer-xcrsrm, .framer-pvpWo .framer-i0ts1s, .framer-pvpWo .framer-eb1l5s, .framer-pvpWo .framer-1reh5xg, .framer-pvpWo .framer-1ktt9kn { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 6px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-pvpWo .framer-becu09 { align-content: flex-start; align-items: flex-start; display: flex; flex: 1 0 0px; flex-direction: column; flex-wrap: nowrap; gap: 16px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 1px; }\",\".framer-pvpWo .framer-5o3log { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 16px; height: 225px; justify-content: flex-start; padding: 0px; position: relative; width: 100%; }\",\".framer-pvpWo .framer-89fqu5-container, .framer-pvpWo .framer-1tymwd2-container, .framer-pvpWo .framer-12t6qnl-container, .framer-pvpWo .framer-1qbshft-container { flex: 1 0 0px; height: 100%; position: relative; width: 1px; }\",\".framer-pvpWo .framer-1505n5r { align-content: flex-start; align-items: flex-start; display: flex; flex: 1 0 0px; flex-direction: row; flex-wrap: nowrap; gap: 48px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 1px; }\",\".framer-pvpWo .framer-1qdvwjz, .framer-pvpWo .framer-1un4k2i, .framer-pvpWo .framer-1anx218, .framer-pvpWo .framer-1apt2bh { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-pvpWo .framer-1r2op2j, .framer-pvpWo .framer-1cxlqtb, .framer-pvpWo .framer-9skeq6, .framer-pvpWo .framer-1h6hbbo { flex: 1 0 0px; height: 1px; overflow: visible; position: relative; width: 1px; }\",\".framer-pvpWo .framer-12f976e { flex: none; height: 10px; overflow: visible; position: relative; width: 320px; }\",\".framer-pvpWo .framer-1g32ci8 { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 12px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-pvpWo .framer-11imhsu { align-content: center; align-items: center; align-self: stretch; display: flex; flex: 1 0 0px; flex-direction: column; flex-wrap: nowrap; gap: 12px; height: auto; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 1px; }\",\".framer-pvpWo .framer-8ee410 { align-content: center; align-items: center; display: flex; flex: 1 0 0px; flex-direction: column; flex-wrap: nowrap; gap: 16px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 1px; }\",\".framer-pvpWo .framer-1t2i6bp { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 16px; height: 136px; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-pvpWo .framer-nip4r8 { align-content: center; align-items: center; display: flex; flex: 1 0 0px; flex-direction: column; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 1px; }\",\".framer-pvpWo .framer-o6y5n0 { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 6px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-pvpWo .framer-1topenk { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 12px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-pvpWo .framer-1h3hm0n { align-content: center; align-items: center; display: flex; flex: 1.5 0 0px; flex-direction: row; flex-wrap: nowrap; gap: 32px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 1px; }\",\".framer-pvpWo .framer-1h3k614 { align-content: flex-start; align-items: flex-start; align-self: stretch; display: flex; flex: 1 0 0px; flex-direction: column; flex-wrap: nowrap; gap: 16px; height: auto; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 1px; }\",\".framer-pvpWo .framer-ll5qb2 { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 16px; height: min-content; justify-content: flex-start; padding: 0px; position: relative; width: 100%; }\",\".framer-pvpWo .framer-3bvsz6-container, .framer-pvpWo .framer-nrehok-container, .framer-pvpWo .framer-1uodi7o-container, .framer-pvpWo .framer-z97emb-container, .framer-pvpWo .framer-a9yqnk-container, .framer-pvpWo .framer-pm576d-container, .framer-pvpWo .framer-1tkhbja-container, .framer-pvpWo .framer-1974eoa-container { flex: 1 0 0px; height: auto; position: relative; width: 1px; }\",\".framer-pvpWo .framer-gynrzd, .framer-pvpWo .framer-dm6bb1 { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 24px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-pvpWo .framer-og1km3 { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 14px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-pvpWo .framer-8ap2z6 { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 48px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-pvpWo .framer-1w8ll5o { align-content: flex-start; align-items: flex-start; display: flex; flex: 1 0 0px; flex-direction: column; flex-wrap: nowrap; gap: 16px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 1px; }\",\".framer-pvpWo .framer-5jwaz0 { flex: none; height: 10px; overflow: visible; position: relative; width: 100%; }\",\".framer-pvpWo .framer-7je2yg { align-content: flex-start; align-items: flex-start; align-self: stretch; display: flex; flex: 0.7 0 0px; flex-direction: column; flex-wrap: nowrap; gap: 16px; height: auto; justify-content: flex-start; overflow: visible; padding: 0px 0px 0px 24px; position: relative; width: 1px; }\",\".framer-pvpWo .framer-1362lpy { flex: none; height: auto; position: relative; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; }\",\".framer-pvpWo .framer-koqyu4 { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-pvpWo .framer-1mdxcln { flex: none; height: auto; max-width: 100%; pointer-events: none; position: relative; white-space: pre-wrap; width: auto; word-break: break-word; word-wrap: break-word; }\",\".framer-pvpWo .framer-19ntam8 { flex: none; height: auto; max-width: 100%; position: relative; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; }\",\".framer-pvpWo .framer-ht5lmy-container { flex: none; height: 34px; position: relative; width: auto; }\",\".framer-pvpWo .framer-cmbw08 { align-content: flex-start; align-items: flex-start; display: flex; flex: 1 0 0px; flex-direction: row; flex-wrap: nowrap; gap: 48px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 1px; }\",\".framer-pvpWo .framer-9153cy-container, .framer-pvpWo .framer-uzpatk-container, .framer-pvpWo .framer-1d1f678-container { flex: 1 0 0px; height: auto; max-width: 100%; position: relative; width: 1px; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-pvpWo.framer-kvheqv, .framer-pvpWo .framer-15wi53f, .framer-pvpWo .framer-1n1x9js, .framer-pvpWo .framer-1v8kqmd, .framer-pvpWo .framer-1iq7wou, .framer-pvpWo .framer-nkj833, .framer-pvpWo .framer-1kft22j, .framer-pvpWo .framer-boojs6, .framer-pvpWo .framer-becu09, .framer-pvpWo .framer-5o3log, .framer-pvpWo .framer-15iyhuq, .framer-pvpWo .framer-1505n5r, .framer-pvpWo .framer-b7duzx, .framer-pvpWo .framer-1qdvwjz, .framer-pvpWo .framer-xcrsrm, .framer-pvpWo .framer-kvcrwx, .framer-pvpWo .framer-1un4k2i, .framer-pvpWo .framer-i0ts1s, .framer-pvpWo .framer-1g32ci8, .framer-pvpWo .framer-1anx218, .framer-pvpWo .framer-eb1l5s, .framer-pvpWo .framer-11imhsu, .framer-pvpWo .framer-1apt2bh, .framer-pvpWo .framer-1reh5xg, .framer-pvpWo .framer-u2rhus, .framer-pvpWo .framer-8ee410, .framer-pvpWo .framer-1t2i6bp, .framer-pvpWo .framer-nip4r8, .framer-pvpWo .framer-96g8ei, .framer-pvpWo .framer-2n1wn9, .framer-pvpWo .framer-o6y5n0, .framer-pvpWo .framer-jua59y, .framer-pvpWo .framer-1ktt9kn, .framer-pvpWo .framer-1cw00d5, .framer-pvpWo .framer-e4vt69, .framer-pvpWo .framer-1topenk, .framer-pvpWo .framer-1h3hm0n, .framer-pvpWo .framer-1h3k614, .framer-pvpWo .framer-ll5qb2, .framer-pvpWo .framer-gynrzd, .framer-pvpWo .framer-i30rvu, .framer-pvpWo .framer-znq6i4, .framer-pvpWo .framer-1dk5y22, .framer-pvpWo .framer-og1km3, .framer-pvpWo .framer-zpwlcf, .framer-pvpWo .framer-dm6bb1, .framer-pvpWo .framer-8ap2z6, .framer-pvpWo .framer-1w8ll5o, .framer-pvpWo .framer-h741bg, .framer-pvpWo .framer-7je2yg, .framer-pvpWo .framer-koqyu4, .framer-pvpWo .framer-a3aygn, .framer-pvpWo .framer-cmbw08 { gap: 0px; } .framer-pvpWo.framer-kvheqv > * { margin: 0px; margin-bottom: calc(100px / 2); margin-top: calc(100px / 2); } .framer-pvpWo.framer-kvheqv > :first-child, .framer-pvpWo .framer-1n1x9js > :first-child, .framer-pvpWo .framer-1iq7wou > :first-child, .framer-pvpWo .framer-nkj833 > :first-child, .framer-pvpWo .framer-1kft22j > :first-child, .framer-pvpWo .framer-boojs6 > :first-child, .framer-pvpWo .framer-becu09 > :first-child, .framer-pvpWo .framer-b7duzx > :first-child, .framer-pvpWo .framer-xcrsrm > :first-child, .framer-pvpWo .framer-kvcrwx > :first-child, .framer-pvpWo .framer-i0ts1s > :first-child, .framer-pvpWo .framer-1g32ci8 > :first-child, .framer-pvpWo .framer-eb1l5s > :first-child, .framer-pvpWo .framer-11imhsu > :first-child, .framer-pvpWo .framer-1reh5xg > :first-child, .framer-pvpWo .framer-8ee410 > :first-child, .framer-pvpWo .framer-nip4r8 > :first-child, .framer-pvpWo .framer-2n1wn9 > :first-child, .framer-pvpWo .framer-o6y5n0 > :first-child, .framer-pvpWo .framer-jua59y > :first-child, .framer-pvpWo .framer-1ktt9kn > :first-child, .framer-pvpWo .framer-e4vt69 > :first-child, .framer-pvpWo .framer-1topenk > :first-child, .framer-pvpWo .framer-1h3k614 > :first-child, .framer-pvpWo .framer-gynrzd > :first-child, .framer-pvpWo .framer-znq6i4 > :first-child, .framer-pvpWo .framer-1dk5y22 > :first-child, .framer-pvpWo .framer-og1km3 > :first-child, .framer-pvpWo .framer-dm6bb1 > :first-child, .framer-pvpWo .framer-1w8ll5o > :first-child, .framer-pvpWo .framer-7je2yg > :first-child, .framer-pvpWo .framer-koqyu4 > :first-child { margin-top: 0px; } .framer-pvpWo.framer-kvheqv > :last-child, .framer-pvpWo .framer-1n1x9js > :last-child, .framer-pvpWo .framer-1iq7wou > :last-child, .framer-pvpWo .framer-nkj833 > :last-child, .framer-pvpWo .framer-1kft22j > :last-child, .framer-pvpWo .framer-boojs6 > :last-child, .framer-pvpWo .framer-becu09 > :last-child, .framer-pvpWo .framer-b7duzx > :last-child, .framer-pvpWo .framer-xcrsrm > :last-child, .framer-pvpWo .framer-kvcrwx > :last-child, .framer-pvpWo .framer-i0ts1s > :last-child, .framer-pvpWo .framer-1g32ci8 > :last-child, .framer-pvpWo .framer-eb1l5s > :last-child, .framer-pvpWo .framer-11imhsu > :last-child, .framer-pvpWo .framer-1reh5xg > :last-child, .framer-pvpWo .framer-8ee410 > :last-child, .framer-pvpWo .framer-nip4r8 > :last-child, .framer-pvpWo .framer-2n1wn9 > :last-child, .framer-pvpWo .framer-o6y5n0 > :last-child, .framer-pvpWo .framer-jua59y > :last-child, .framer-pvpWo .framer-1ktt9kn > :last-child, .framer-pvpWo .framer-e4vt69 > :last-child, .framer-pvpWo .framer-1topenk > :last-child, .framer-pvpWo .framer-1h3k614 > :last-child, .framer-pvpWo .framer-gynrzd > :last-child, .framer-pvpWo .framer-znq6i4 > :last-child, .framer-pvpWo .framer-1dk5y22 > :last-child, .framer-pvpWo .framer-og1km3 > :last-child, .framer-pvpWo .framer-dm6bb1 > :last-child, .framer-pvpWo .framer-1w8ll5o > :last-child, .framer-pvpWo .framer-7je2yg > :last-child, .framer-pvpWo .framer-koqyu4 > :last-child { margin-bottom: 0px; } .framer-pvpWo .framer-15wi53f > *, .framer-pvpWo .framer-15iyhuq > *, .framer-pvpWo .framer-1505n5r > *, .framer-pvpWo .framer-u2rhus > *, .framer-pvpWo .framer-1cw00d5 > *, .framer-pvpWo .framer-8ap2z6 > *, .framer-pvpWo .framer-a3aygn > *, .framer-pvpWo .framer-cmbw08 > * { margin: 0px; margin-left: calc(48px / 2); margin-right: calc(48px / 2); } .framer-pvpWo .framer-15wi53f > :first-child, .framer-pvpWo .framer-1v8kqmd > :first-child, .framer-pvpWo .framer-5o3log > :first-child, .framer-pvpWo .framer-15iyhuq > :first-child, .framer-pvpWo .framer-1505n5r > :first-child, .framer-pvpWo .framer-1qdvwjz > :first-child, .framer-pvpWo .framer-1un4k2i > :first-child, .framer-pvpWo .framer-1anx218 > :first-child, .framer-pvpWo .framer-1apt2bh > :first-child, .framer-pvpWo .framer-u2rhus > :first-child, .framer-pvpWo .framer-1t2i6bp > :first-child, .framer-pvpWo .framer-96g8ei > :first-child, .framer-pvpWo .framer-1cw00d5 > :first-child, .framer-pvpWo .framer-1h3hm0n > :first-child, .framer-pvpWo .framer-ll5qb2 > :first-child, .framer-pvpWo .framer-i30rvu > :first-child, .framer-pvpWo .framer-zpwlcf > :first-child, .framer-pvpWo .framer-8ap2z6 > :first-child, .framer-pvpWo .framer-h741bg > :first-child, .framer-pvpWo .framer-a3aygn > :first-child, .framer-pvpWo .framer-cmbw08 > :first-child { margin-left: 0px; } .framer-pvpWo .framer-15wi53f > :last-child, .framer-pvpWo .framer-1v8kqmd > :last-child, .framer-pvpWo .framer-5o3log > :last-child, .framer-pvpWo .framer-15iyhuq > :last-child, .framer-pvpWo .framer-1505n5r > :last-child, .framer-pvpWo .framer-1qdvwjz > :last-child, .framer-pvpWo .framer-1un4k2i > :last-child, .framer-pvpWo .framer-1anx218 > :last-child, .framer-pvpWo .framer-1apt2bh > :last-child, .framer-pvpWo .framer-u2rhus > :last-child, .framer-pvpWo .framer-1t2i6bp > :last-child, .framer-pvpWo .framer-96g8ei > :last-child, .framer-pvpWo .framer-1cw00d5 > :last-child, .framer-pvpWo .framer-1h3hm0n > :last-child, .framer-pvpWo .framer-ll5qb2 > :last-child, .framer-pvpWo .framer-i30rvu > :last-child, .framer-pvpWo .framer-zpwlcf > :last-child, .framer-pvpWo .framer-8ap2z6 > :last-child, .framer-pvpWo .framer-h741bg > :last-child, .framer-pvpWo .framer-a3aygn > :last-child, .framer-pvpWo .framer-cmbw08 > :last-child { margin-right: 0px; } .framer-pvpWo .framer-1n1x9js > *, .framer-pvpWo .framer-b7duzx > *, .framer-pvpWo .framer-kvcrwx > *, .framer-pvpWo .framer-1g32ci8 > *, .framer-pvpWo .framer-11imhsu > *, .framer-pvpWo .framer-1topenk > * { margin: 0px; margin-bottom: calc(12px / 2); margin-top: calc(12px / 2); } .framer-pvpWo .framer-1v8kqmd > *, .framer-pvpWo .framer-5o3log > *, .framer-pvpWo .framer-1t2i6bp > *, .framer-pvpWo .framer-96g8ei > *, .framer-pvpWo .framer-ll5qb2 > *, .framer-pvpWo .framer-i30rvu > *, .framer-pvpWo .framer-zpwlcf > *, .framer-pvpWo .framer-h741bg > * { margin: 0px; margin-left: calc(16px / 2); margin-right: calc(16px / 2); } .framer-pvpWo .framer-1iq7wou > *, .framer-pvpWo .framer-1kft22j > *, .framer-pvpWo .framer-2n1wn9 > *, .framer-pvpWo .framer-jua59y > *, .framer-pvpWo .framer-e4vt69 > *, .framer-pvpWo .framer-znq6i4 > *, .framer-pvpWo .framer-1dk5y22 > *, .framer-pvpWo .framer-koqyu4 > * { margin: 0px; margin-bottom: calc(0px / 2); margin-top: calc(0px / 2); } .framer-pvpWo .framer-nkj833 > *, .framer-pvpWo .framer-boojs6 > *, .framer-pvpWo .framer-xcrsrm > *, .framer-pvpWo .framer-i0ts1s > *, .framer-pvpWo .framer-eb1l5s > *, .framer-pvpWo .framer-1reh5xg > *, .framer-pvpWo .framer-o6y5n0 > *, .framer-pvpWo .framer-1ktt9kn > * { margin: 0px; margin-bottom: calc(6px / 2); margin-top: calc(6px / 2); } .framer-pvpWo .framer-becu09 > *, .framer-pvpWo .framer-8ee410 > *, .framer-pvpWo .framer-1h3k614 > *, .framer-pvpWo .framer-1w8ll5o > *, .framer-pvpWo .framer-7je2yg > * { margin: 0px; margin-bottom: calc(16px / 2); margin-top: calc(16px / 2); } .framer-pvpWo .framer-1qdvwjz > *, .framer-pvpWo .framer-1un4k2i > *, .framer-pvpWo .framer-1anx218 > *, .framer-pvpWo .framer-1apt2bh > * { margin: 0px; margin-left: calc(10px / 2); margin-right: calc(10px / 2); } .framer-pvpWo .framer-nip4r8 > * { margin: 0px; margin-bottom: calc(10px / 2); margin-top: calc(10px / 2); } .framer-pvpWo .framer-1h3hm0n > * { margin: 0px; margin-left: calc(32px / 2); margin-right: calc(32px / 2); } .framer-pvpWo .framer-gynrzd > *, .framer-pvpWo .framer-dm6bb1 > * { margin: 0px; margin-bottom: calc(24px / 2); margin-top: calc(24px / 2); } .framer-pvpWo .framer-og1km3 > * { margin: 0px; margin-bottom: calc(14px / 2); margin-top: calc(14px / 2); } }\",\".framer-pvpWo.framer-v-1e811wn.framer-kvheqv, .framer-pvpWo.framer-v-1osagrk.framer-kvheqv, .framer-pvpWo.framer-v-1dh4qqv.framer-kvheqv, .framer-pvpWo.framer-v-116a0rj.framer-kvheqv, .framer-pvpWo.framer-v-1ir5klx.framer-kvheqv { padding: 20px; width: 400px; }\",\".framer-pvpWo.framer-v-1e811wn .framer-15wi53f { flex-direction: column; gap: 32px; }\",\".framer-pvpWo.framer-v-1e811wn .framer-1n1x9js, .framer-pvpWo.framer-v-1e811wn .framer-1iq7wou, .framer-pvpWo.framer-v-1e811wn .framer-1kft22j, .framer-pvpWo.framer-v-1e811wn .framer-becu09, .framer-pvpWo.framer-v-1osagrk .framer-8ee410, .framer-pvpWo.framer-v-1osagrk .framer-nip4r8, .framer-pvpWo.framer-v-1osagrk .framer-2n1wn9, .framer-pvpWo.framer-v-1osagrk .framer-jua59y, .framer-pvpWo.framer-v-116a0rj .framer-9153cy-container, .framer-pvpWo.framer-v-116a0rj .framer-uzpatk-container, .framer-pvpWo.framer-v-116a0rj .framer-1d1f678-container, .framer-pvpWo.framer-v-1ir5klx .framer-znq6i4, .framer-pvpWo.framer-v-1ir5klx .framer-1dk5y22, .framer-pvpWo.framer-v-1ir5klx .framer-nrehok-container, .framer-pvpWo.framer-v-1ir5klx .framer-1uodi7o-container, .framer-pvpWo.framer-v-1ir5klx .framer-z97emb-container, .framer-pvpWo.framer-v-1ir5klx .framer-a9yqnk-container, .framer-pvpWo.framer-v-1ir5klx .framer-1w8ll5o { flex: none; width: 100%; }\",\".framer-pvpWo.framer-v-1e811wn .framer-1v8kqmd, .framer-pvpWo.framer-v-1osagrk .framer-96g8ei, .framer-pvpWo.framer-v-1dh4qqv .framer-ll5qb2 { flex-direction: column; }\",\".framer-pvpWo.framer-v-1e811wn .framer-5o3log { flex-direction: column; height: min-content; }\",\".framer-pvpWo.framer-v-1e811wn .framer-89fqu5-container, .framer-pvpWo.framer-v-1dh4qqv .framer-3bvsz6-container { flex: none; height: 200px; width: 100%; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-pvpWo.framer-v-1e811wn .framer-15wi53f, .framer-pvpWo.framer-v-1e811wn .framer-1v8kqmd, .framer-pvpWo.framer-v-1e811wn .framer-5o3log { gap: 0px; } .framer-pvpWo.framer-v-1e811wn .framer-15wi53f > * { margin: 0px; margin-bottom: calc(32px / 2); margin-top: calc(32px / 2); } .framer-pvpWo.framer-v-1e811wn .framer-15wi53f > :first-child, .framer-pvpWo.framer-v-1e811wn .framer-1v8kqmd > :first-child, .framer-pvpWo.framer-v-1e811wn .framer-5o3log > :first-child { margin-top: 0px; } .framer-pvpWo.framer-v-1e811wn .framer-15wi53f > :last-child, .framer-pvpWo.framer-v-1e811wn .framer-1v8kqmd > :last-child, .framer-pvpWo.framer-v-1e811wn .framer-5o3log > :last-child { margin-bottom: 0px; } .framer-pvpWo.framer-v-1e811wn .framer-1v8kqmd > *, .framer-pvpWo.framer-v-1e811wn .framer-5o3log > * { margin: 0px; margin-bottom: calc(16px / 2); margin-top: calc(16px / 2); } }\",\".framer-pvpWo.framer-v-1osagrk .framer-u2rhus, .framer-pvpWo.framer-v-1dh4qqv .framer-1cw00d5, .framer-pvpWo.framer-v-116a0rj .framer-a3aygn { flex-direction: column; gap: 16px; }\",\".framer-pvpWo.framer-v-1osagrk .framer-1t2i6bp { flex-direction: column; gap: 10px; height: min-content; }\",\".framer-pvpWo.framer-v-1osagrk .framer-1tymwd2-container, .framer-pvpWo.framer-v-1osagrk .framer-12t6qnl-container, .framer-pvpWo.framer-v-1osagrk .framer-1qbshft-container { flex: none; height: auto; width: 100%; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-pvpWo.framer-v-1osagrk .framer-u2rhus, .framer-pvpWo.framer-v-1osagrk .framer-1t2i6bp, .framer-pvpWo.framer-v-1osagrk .framer-96g8ei { gap: 0px; } .framer-pvpWo.framer-v-1osagrk .framer-u2rhus > *, .framer-pvpWo.framer-v-1osagrk .framer-96g8ei > * { margin: 0px; margin-bottom: calc(16px / 2); margin-top: calc(16px / 2); } .framer-pvpWo.framer-v-1osagrk .framer-u2rhus > :first-child, .framer-pvpWo.framer-v-1osagrk .framer-1t2i6bp > :first-child, .framer-pvpWo.framer-v-1osagrk .framer-96g8ei > :first-child { margin-top: 0px; } .framer-pvpWo.framer-v-1osagrk .framer-u2rhus > :last-child, .framer-pvpWo.framer-v-1osagrk .framer-1t2i6bp > :last-child, .framer-pvpWo.framer-v-1osagrk .framer-96g8ei > :last-child { margin-bottom: 0px; } .framer-pvpWo.framer-v-1osagrk .framer-1t2i6bp > * { margin: 0px; margin-bottom: calc(10px / 2); margin-top: calc(10px / 2); } }\",\".framer-pvpWo.framer-v-1dh4qqv .framer-e4vt69 { flex: none; order: 0; width: 100%; }\",\".framer-pvpWo.framer-v-1dh4qqv .framer-1h3hm0n { flex: none; flex-direction: column; order: 1; width: 100%; }\",\".framer-pvpWo.framer-v-1dh4qqv .framer-1h3k614 { align-self: unset; flex: none; height: min-content; width: 100%; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-pvpWo.framer-v-1dh4qqv .framer-1cw00d5, .framer-pvpWo.framer-v-1dh4qqv .framer-1h3hm0n, .framer-pvpWo.framer-v-1dh4qqv .framer-ll5qb2 { gap: 0px; } .framer-pvpWo.framer-v-1dh4qqv .framer-1cw00d5 > *, .framer-pvpWo.framer-v-1dh4qqv .framer-ll5qb2 > * { margin: 0px; margin-bottom: calc(16px / 2); margin-top: calc(16px / 2); } .framer-pvpWo.framer-v-1dh4qqv .framer-1cw00d5 > :first-child, .framer-pvpWo.framer-v-1dh4qqv .framer-1h3hm0n > :first-child, .framer-pvpWo.framer-v-1dh4qqv .framer-ll5qb2 > :first-child { margin-top: 0px; } .framer-pvpWo.framer-v-1dh4qqv .framer-1cw00d5 > :last-child, .framer-pvpWo.framer-v-1dh4qqv .framer-1h3hm0n > :last-child, .framer-pvpWo.framer-v-1dh4qqv .framer-ll5qb2 > :last-child { margin-bottom: 0px; } .framer-pvpWo.framer-v-1dh4qqv .framer-1h3hm0n > * { margin: 0px; margin-bottom: calc(32px / 2); margin-top: calc(32px / 2); } }\",\".framer-pvpWo.framer-v-116a0rj .framer-cmbw08 { flex: none; flex-direction: column; gap: 16px; order: 0; width: 100%; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-pvpWo.framer-v-116a0rj .framer-a3aygn, .framer-pvpWo.framer-v-116a0rj .framer-cmbw08 { gap: 0px; } .framer-pvpWo.framer-v-116a0rj .framer-a3aygn > *, .framer-pvpWo.framer-v-116a0rj .framer-cmbw08 > * { margin: 0px; margin-bottom: calc(16px / 2); margin-top: calc(16px / 2); } .framer-pvpWo.framer-v-116a0rj .framer-a3aygn > :first-child, .framer-pvpWo.framer-v-116a0rj .framer-cmbw08 > :first-child { margin-top: 0px; } .framer-pvpWo.framer-v-116a0rj .framer-a3aygn > :last-child, .framer-pvpWo.framer-v-116a0rj .framer-cmbw08 > :last-child { margin-bottom: 0px; } }\",\".framer-pvpWo.framer-v-1ir5klx .framer-gynrzd, .framer-pvpWo.framer-v-1ir5klx .framer-dm6bb1 { gap: 16px; }\",\".framer-pvpWo.framer-v-1ir5klx .framer-i30rvu, .framer-pvpWo.framer-v-1ir5klx .framer-8ap2z6 { flex-direction: column; order: 1; }\",\".framer-pvpWo.framer-v-1ir5klx .framer-zpwlcf { flex-direction: column; order: 3; }\",\".framer-pvpWo.framer-v-1ir5klx .framer-7je2yg { align-self: unset; flex: 1 0 0px; height: 1px; width: 70%; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-pvpWo.framer-v-1ir5klx .framer-gynrzd, .framer-pvpWo.framer-v-1ir5klx .framer-i30rvu, .framer-pvpWo.framer-v-1ir5klx .framer-zpwlcf, .framer-pvpWo.framer-v-1ir5klx .framer-dm6bb1, .framer-pvpWo.framer-v-1ir5klx .framer-8ap2z6 { gap: 0px; } .framer-pvpWo.framer-v-1ir5klx .framer-gynrzd > *, .framer-pvpWo.framer-v-1ir5klx .framer-i30rvu > *, .framer-pvpWo.framer-v-1ir5klx .framer-zpwlcf > *, .framer-pvpWo.framer-v-1ir5klx .framer-dm6bb1 > * { margin: 0px; margin-bottom: calc(16px / 2); margin-top: calc(16px / 2); } .framer-pvpWo.framer-v-1ir5klx .framer-gynrzd > :first-child, .framer-pvpWo.framer-v-1ir5klx .framer-i30rvu > :first-child, .framer-pvpWo.framer-v-1ir5klx .framer-zpwlcf > :first-child, .framer-pvpWo.framer-v-1ir5klx .framer-dm6bb1 > :first-child, .framer-pvpWo.framer-v-1ir5klx .framer-8ap2z6 > :first-child { margin-top: 0px; } .framer-pvpWo.framer-v-1ir5klx .framer-gynrzd > :last-child, .framer-pvpWo.framer-v-1ir5klx .framer-i30rvu > :last-child, .framer-pvpWo.framer-v-1ir5klx .framer-zpwlcf > :last-child, .framer-pvpWo.framer-v-1ir5klx .framer-dm6bb1 > :last-child, .framer-pvpWo.framer-v-1ir5klx .framer-8ap2z6 > :last-child { margin-bottom: 0px; } .framer-pvpWo.framer-v-1ir5klx .framer-8ap2z6 > * { margin: 0px; margin-bottom: calc(48px / 2); margin-top: calc(48px / 2); } }\",...sharedStyle.css,...sharedStyle1.css,...sharedStyle2.css,'.framer-pvpWo[data-border=\"true\"]::after, .framer-pvpWo [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; pointer-events: none; }'];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 2719\n * @framerIntrinsicWidth 1056\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"],\"constraints\":[null,\"1056px\",null,null]},\"V3KnZ7YU0\":{\"layout\":[\"fixed\",\"auto\"],\"constraints\":[null,\"1056px\",null,null]},\"OT1LbjD25\":{\"layout\":[\"fixed\",\"auto\"],\"constraints\":[null,\"1056px\",null,null]},\"lHByleq6k\":{\"layout\":[\"fixed\",\"auto\"],\"constraints\":[null,\"1056px\",null,null]},\"kNdqCkpev\":{\"layout\":[\"fixed\",\"auto\"],\"constraints\":[null,\"1056px\",null,null]},\"lgo6tsa0X\":{\"layout\":[\"fixed\",\"auto\"],\"constraints\":[null,\"1056px\",null,null]},\"hSGH_QbdR\":{\"layout\":[\"fixed\",\"auto\"],\"constraints\":[null,\"1056px\",null,null]},\"g5WWfybex\":{\"layout\":[\"fixed\",\"auto\"],\"constraints\":[null,\"1056px\",null,null]},\"CgU1mwjv4\":{\"layout\":[\"fixed\",\"auto\"],\"constraints\":[null,\"1056px\",null,null]},\"xewWae9HZ\":{\"layout\":[\"fixed\",\"auto\"],\"constraints\":[null,\"1056px\",null,null]},\"z_8_nd6QX\":{\"layout\":[\"fixed\",\"auto\"],\"constraints\":[null,\"1056px\",null,null]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerojyM9x_ZC=withCSS(Component,css,\"framer-pvpWo\");export default FramerojyM9x_ZC;FramerojyM9x_ZC.displayName=\"Nav / Tray\";FramerojyM9x_ZC.defaultProps={height:2719,width:1056};addPropertyControls(FramerojyM9x_ZC,{variant:{options:[\"Un1r32V1H\",\"V3KnZ7YU0\",\"OT1LbjD25\",\"lHByleq6k\",\"kNdqCkpev\",\"lgo6tsa0X\",\"hSGH_QbdR\",\"g5WWfybex\",\"CgU1mwjv4\",\"xewWae9HZ\",\"z_8_nd6QX\"],optionTitles:[\"_Primary\",\"Product\",\"Product \u2013\\xa0Mobile\",\"Docs\",\"Docs \u2013\\xa0Mobile\",\"Resources\",\"Resources \u2013\\xa0Mobile\",\"Partners\",\"Partners \u2013 Mobile\",\"Customers\",\"Cusatomers \u2013 Mobile\"],title:\"Variant\",type:ControlType.Enum}});addFonts(FramerojyM9x_ZC,[{explicitInter:true,fonts:[{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/5vvr9Vy74if2I6bQbJvbw7SY1pQ.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/EOr0mi4hNtlgWNn9if640EZzXCo.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/Y9k9QrlZAqio88Klkmbd8VoMQc.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/OYrD2tBIBPvoJXiIHnLoOXnY9M.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/JeYwfuaPfZHQhEG8U5gtPDZ7WQ.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/vQyevYAyHtARFwPqUzQGpnDs.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/b6Y37FthZeALduNqHicBT6FutY.woff2\",weight:\"400\"}]},...NavTrayItemCopyFonts,...NavTrayTitleFonts,...NavTrayItemFonts,...NavTrayCardChangelogFonts,...NavTrayCardFonts,...NavTrayCustomerCardFonts,...ButtonsButtonFonts,...getFontsFromSharedStyle(sharedStyle.fonts),...getFontsFromSharedStyle(sharedStyle1.fonts),...getFontsFromSharedStyle(sharedStyle2.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerojyM9x_ZC\",\"slots\":[],\"annotations\":{\"framerDisplayContentsDiv\":\"false\",\"framerComponentViewportWidth\":\"true\",\"framerIntrinsicWidth\":\"1056\",\"framerIntrinsicHeight\":\"2719\",\"framerImmutableVariables\":\"true\",\"framerContractVersion\":\"1\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"],\\\"constraints\\\":[null,\\\"1056px\\\",null,null]},\\\"V3KnZ7YU0\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"],\\\"constraints\\\":[null,\\\"1056px\\\",null,null]},\\\"OT1LbjD25\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"],\\\"constraints\\\":[null,\\\"1056px\\\",null,null]},\\\"lHByleq6k\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"],\\\"constraints\\\":[null,\\\"1056px\\\",null,null]},\\\"kNdqCkpev\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"],\\\"constraints\\\":[null,\\\"1056px\\\",null,null]},\\\"lgo6tsa0X\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"],\\\"constraints\\\":[null,\\\"1056px\\\",null,null]},\\\"hSGH_QbdR\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"],\\\"constraints\\\":[null,\\\"1056px\\\",null,null]},\\\"g5WWfybex\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"],\\\"constraints\\\":[null,\\\"1056px\\\",null,null]},\\\"CgU1mwjv4\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"],\\\"constraints\\\":[null,\\\"1056px\\\",null,null]},\\\"xewWae9HZ\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"],\\\"constraints\\\":[null,\\\"1056px\\\",null,null]},\\\"z_8_nd6QX\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"],\\\"constraints\\\":[null,\\\"1056px\\\",null,null]}}}\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}", "// Generated by Framer (cf4c6d7)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,getFontsFromSharedStyle,Link,RichText,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import*as sharedStyle from\"https://framerusercontent.com/modules/8D5Yrl7noAgh91Nqk8Op/33BzxBWnQs99wRDuXfcP/M6hbwtZyh.js\";import*as sharedStyle1 from\"https://framerusercontent.com/modules/iSeRdQLTVmRrhWISCw0l/c55PksAizAWSQp01iTR3/PihfgTAR5.js\";const enabledGestures={boonRzPUi:{hover:true},VgtzLAQ7z:{hover:true}};const cycleOrder=[\"VgtzLAQ7z\",\"boonRzPUi\",\"sPMtdlQYr\",\"PqDQ6vVMI\"];const serializationHash=\"framer-IHhYm\";const variantClassNames={boonRzPUi:\"framer-v-1lmxwra\",PqDQ6vVMI:\"framer-v-108w84a\",sPMtdlQYr:\"framer-v-26vvne\",VgtzLAQ7z:\"framer-v-1lbuleq\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const humanReadableVariantMap={\"No Link\":\"boonRzPUi\",\"Small link\":\"sPMtdlQYr\",Default:\"VgtzLAQ7z\",Pressed:\"PqDQ6vVMI\"};const getProps=({height,hover,id,link,tap,textColor,title,width,...props})=>{return{...props,aV_o9aCOb:hover??props.aV_o9aCOb,FKwB4UL9z:textColor??props.FKwB4UL9z??\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\",QsIcUGujF:title??props.QsIcUGujF??\"Product\",variant:humanReadableVariantMap[props.variant]??props.variant??\"VgtzLAQ7z\",wFwmGsvMB:tap??props.wFwmGsvMB,WjB0saJsU:link??props.WjB0saJsU};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,QsIcUGujF,WjB0saJsU,FKwB4UL9z,wFwmGsvMB,aV_o9aCOb,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"VgtzLAQ7z\",enabledGestures,ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onTapss2oz4=activeVariantCallback(async(...args)=>{setGestureState({isPressed:false});if(wFwmGsvMB){const res=await wFwmGsvMB(...args);if(res===false)return false;}});const onMouseEnterzjyp1h=activeVariantCallback(async(...args)=>{setGestureState({isHovered:true});if(aV_o9aCOb){const res=await aV_o9aCOb(...args);if(res===false)return false;}});const sharedStyleClassNames=[sharedStyle.className,sharedStyle1.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);const isDisplayed=()=>{if(gestureVariant===\"boonRzPUi-hover\")return true;return false;};return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(Link,{href:WjB0saJsU,motionChild:true,nodeId:\"VgtzLAQ7z\",openInNewTab:false,scopeId:\"ZVYe2Nhfy\",smoothScroll:true,...addPropertyOverrides({\"boonRzPUi-hover\":{href:undefined},boonRzPUi:{href:undefined}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsxs(motion.a,{...restProps,...gestureHandlers,className:`${cx(scopingClassNames,\"framer-1lbuleq\",className,classNames)} framer-2eeat`,\"data-framer-name\":\"Default\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"VgtzLAQ7z\",onMouseEnter:onMouseEnterzjyp1h,onTap:onTapss2oz4,ref:refBinding,style:{backgroundColor:\"rgba(0, 0, 0, 0)\",borderBottomLeftRadius:8,borderBottomRightRadius:8,borderTopLeftRadius:8,borderTopRightRadius:8,...style},variants:{\"boonRzPUi-hover\":{backgroundColor:\"rgba(128, 128, 128, 0.1)\"},\"VgtzLAQ7z-hover\":{backgroundColor:\"rgba(128, 128, 128, 0.1)\"},PqDQ6vVMI:{backgroundColor:\"rgba(128, 128, 128, 0.1)\"}},...addPropertyOverrides({\"boonRzPUi-hover\":{\"data-framer-name\":undefined},\"VgtzLAQ7z-hover\":{\"data-framer-name\":undefined},boonRzPUi:{\"data-framer-name\":\"No Link\"},PqDQ6vVMI:{\"data-framer-name\":\"Pressed\"},sPMtdlQYr:{\"data-framer-name\":\"Small link\"}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-87abjg\",\"data-styles-preset\":\"M6hbwtZyh\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--variable-reference-FKwB4UL9z-ZVYe2Nhfy))\"},children:\"Product\"})}),className:\"framer-1uh7at4\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"m7_eJxWD0\",style:{\"--extracted-r6o4lv\":\"var(--variable-reference-FKwB4UL9z-ZVYe2Nhfy)\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\",\"--variable-reference-FKwB4UL9z-ZVYe2Nhfy\":FKwB4UL9z},text:QsIcUGujF,verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({sPMtdlQYr:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-137gzas\",\"data-styles-preset\":\"PihfgTAR5\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--variable-reference-FKwB4UL9z-ZVYe2Nhfy))\"},children:\"Product\"})})}},baseVariant,gestureVariant)}),isDisplayed()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-gfu2se\",\"data-framer-name\":\"Left Path Bumpers\",layoutDependency:layoutDependency,layoutId:\"e8_66DYUy\",style:{backgroundColor:\"rgb(255, 255, 255)\",opacity:0,rotate:20}}),isDisplayed()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1drluvq\",\"data-framer-name\":\"Right Path Bumpers\",layoutDependency:layoutDependency,layoutId:\"ywZoPn1Eb\",style:{backgroundColor:\"rgb(255, 255, 255)\",opacity:0,rotate:-20}})]})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-IHhYm.framer-2eeat, .framer-IHhYm .framer-2eeat { display: block; }\",\".framer-IHhYm.framer-1lbuleq { align-content: center; align-items: center; cursor: pointer; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 10px; height: 34px; justify-content: center; overflow: visible; padding: 0px 10px 0px 10px; position: relative; text-decoration: none; width: min-content; }\",\".framer-IHhYm .framer-1uh7at4 { flex: none; height: auto; pointer-events: none; position: relative; white-space: pre; width: auto; }\",\".framer-IHhYm .framer-gfu2se { bottom: -6px; flex: none; left: -12px; overflow: hidden; position: absolute; top: -2px; width: 18px; z-index: 1; }\",\".framer-IHhYm .framer-1drluvq { bottom: -6px; flex: none; overflow: hidden; position: absolute; right: -12px; top: -2px; width: 18px; z-index: 1; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-IHhYm.framer-1lbuleq { gap: 0px; } .framer-IHhYm.framer-1lbuleq > * { margin: 0px; margin-bottom: calc(10px / 2); margin-top: calc(10px / 2); } .framer-IHhYm.framer-1lbuleq > :first-child { margin-top: 0px; } .framer-IHhYm.framer-1lbuleq > :last-child { margin-bottom: 0px; } }\",\".framer-IHhYm.framer-v-1lmxwra.framer-1lbuleq { cursor: default; }\",\".framer-IHhYm.framer-v-26vvne.framer-1lbuleq { padding: 0px 8px 0px 8px; }\",...sharedStyle.css,...sharedStyle1.css];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 34\n * @framerIntrinsicWidth 75\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"auto\",\"fixed\"]},\"boonRzPUi\":{\"layout\":[\"auto\",\"fixed\"]},\"sPMtdlQYr\":{\"layout\":[\"auto\",\"fixed\"]},\"PqDQ6vVMI\":{\"layout\":[\"auto\",\"fixed\"]},\"YJgdK7OHV\":{\"layout\":[\"auto\",\"fixed\"]},\"sS4DdzTy_\":{\"layout\":[\"auto\",\"fixed\"]}}}\n * @framerVariables {\"QsIcUGujF\":\"title\",\"WjB0saJsU\":\"link\",\"FKwB4UL9z\":\"textColor\",\"wFwmGsvMB\":\"tap\",\"aV_o9aCOb\":\"hover\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerZVYe2Nhfy=withCSS(Component,css,\"framer-IHhYm\");export default FramerZVYe2Nhfy;FramerZVYe2Nhfy.displayName=\"Buttons / Nav Button\";FramerZVYe2Nhfy.defaultProps={height:34,width:75};addPropertyControls(FramerZVYe2Nhfy,{variant:{options:[\"VgtzLAQ7z\",\"boonRzPUi\",\"sPMtdlQYr\",\"PqDQ6vVMI\"],optionTitles:[\"Default\",\"No Link\",\"Small link\",\"Pressed\"],title:\"Variant\",type:ControlType.Enum},QsIcUGujF:{defaultValue:\"Product\",displayTextArea:false,title:\"Title\",type:ControlType.String},WjB0saJsU:{title:\"Link\",type:ControlType.Link},FKwB4UL9z:{defaultValue:'var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255)) /* {\"name\":\"White\"} */',title:\"Text Color\",type:ControlType.Color},wFwmGsvMB:{title:\"Tap\",type:ControlType.EventHandler},aV_o9aCOb:{title:\"Hover\",type:ControlType.EventHandler}});addFonts(FramerZVYe2Nhfy,[{explicitInter:true,fonts:[{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/5vvr9Vy74if2I6bQbJvbw7SY1pQ.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/EOr0mi4hNtlgWNn9if640EZzXCo.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/Y9k9QrlZAqio88Klkmbd8VoMQc.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/OYrD2tBIBPvoJXiIHnLoOXnY9M.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/JeYwfuaPfZHQhEG8U5gtPDZ7WQ.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/vQyevYAyHtARFwPqUzQGpnDs.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/b6Y37FthZeALduNqHicBT6FutY.woff2\",weight:\"400\"}]},...getFontsFromSharedStyle(sharedStyle.fonts),...getFontsFromSharedStyle(sharedStyle1.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerZVYe2Nhfy\",\"slots\":[],\"annotations\":{\"framerDisplayContentsDiv\":\"false\",\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"75\",\"framerImmutableVariables\":\"true\",\"framerVariables\":\"{\\\"QsIcUGujF\\\":\\\"title\\\",\\\"WjB0saJsU\\\":\\\"link\\\",\\\"FKwB4UL9z\\\":\\\"textColor\\\",\\\"wFwmGsvMB\\\":\\\"tap\\\",\\\"aV_o9aCOb\\\":\\\"hover\\\"}\",\"framerIntrinsicHeight\":\"34\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"boonRzPUi\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"sPMtdlQYr\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"PqDQ6vVMI\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"YJgdK7OHV\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"sS4DdzTy_\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]}}}\",\"framerComponentViewportWidth\":\"true\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ZVYe2Nhfy.map", "// Generated by Framer (37fb21e)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,getPropertyControls,Link,ResolveLinks,SVG,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useRouter,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{Glass_100,Glass_200}from\"https://framerusercontent.com/modules/t43GSXd5AUmCkwaNN2VF/ssHRVfnAtAdYICnGA0a0/Filters.js\";import NavMobileNav from\"https://framerusercontent.com/modules/bqoxHy2foMfxGjdhTZwK/9Qtq0s5Mz8f7AmjlPGcx/jtDh_M46J.js\";import NavPrimaryNavRight from\"https://framerusercontent.com/modules/mfhR5zRGIFndbbEvJa23/aiXbdfYymS8VVodLFmJV/m1Dw3gDw_.js\";import NavTray from\"https://framerusercontent.com/modules/xMdS8n33A9rK4noULav9/U10AV7Aty8mAmV4ngS7T/ojyM9x_ZC.js\";import ButtonsNavButton from\"https://framerusercontent.com/modules/oi04vWpD6mNQ1CEeDIsN/x1geVQsU88VzRiR8IjZc/ZVYe2Nhfy.js\";const NavMobileNavFonts=getFonts(NavMobileNav);const MotionDivGlass_100=Glass_100(motion.div);const ButtonsNavButtonFonts=getFonts(ButtonsNavButton);const NavPrimaryNavRightFonts=getFonts(NavPrimaryNavRight);const NavTrayFonts=getFonts(NavTray);const MotionDivGlass_200=Glass_200(motion.div);const NavPrimaryNavRightControls=getPropertyControls(NavPrimaryNavRight);const cycleOrder=[\"yYBsmAK2C\",\"p0VB4JdwZ\",\"jLlrfUjwY\",\"ryjqllBlo\",\"rTXApURFW\",\"R4fEAZUpz\",\"vIqAF4tNe\",\"VltkCT9Yj\",\"V3CTLD12k\",\"n78EjWcTW\",\"hGrvTlt0M\",\"scXuOxBX3\",\"j5ogDws8g\"];const serializationHash=\"framer-SruE2\";const variantClassNames={hGrvTlt0M:\"framer-v-eg3gy1\",j5ogDws8g:\"framer-v-8gkf2l\",jLlrfUjwY:\"framer-v-ifds0s\",n78EjWcTW:\"framer-v-1olf9yr\",p0VB4JdwZ:\"framer-v-v6smzb\",R4fEAZUpz:\"framer-v-1k6fzrf\",rTXApURFW:\"framer-v-e3tmd0\",ryjqllBlo:\"framer-v-ek988f\",scXuOxBX3:\"framer-v-1bdp0er\",V3CTLD12k:\"framer-v-1mxqra0\",vIqAF4tNe:\"framer-v-1aqt28w\",VltkCT9Yj:\"framer-v-9qe8td\",yYBsmAK2C:\"framer-v-1gua3th\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:50,delay:0,mass:1,stiffness:700,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const humanReadableEnumMap={\"Desktop - MSP\":\"HoUu2fI1L\",\"Desktop \u2013\\xa0Home\":\"NUfbp9gV9\",Desktop:\"f1fa5L71s\",Phone:\"We5skBAdz\"};const humanReadableVariantMap={\"Desktop - Resources\":\"ryjqllBlo\",\"Desktop \u2013 Customers\":\"j5ogDws8g\",\"Desktop \u2013\\xa0Docs\":\"jLlrfUjwY\",\"Desktop \u2013 Partners\":\"hGrvTlt0M\",\"Desktop \u2013\\xa0Product\":\"p0VB4JdwZ\",\"Home link\":\"scXuOxBX3\",\"MSP - Open\":\"n78EjWcTW\",\"No Links\":\"vIqAF4tNe\",\"Phone \u2013\\xa0Open\":\"R4fEAZUpz\",\"Variant 8\":\"VltkCT9Yj\",Desktop:\"yYBsmAK2C\",MSP:\"V3CTLD12k\",Phone:\"rTXApURFW\"};const getProps=({actions,bGBlur,foreground,height,id,shadow,width,...props})=>{return{...props,dqNTFu1r7:bGBlur??props.dqNTFu1r7??true,PiR5q7_Ls:foreground??props.PiR5q7_Ls??\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\",smQ_kJfRy:shadow??props.smQ_kJfRy??true,variant:humanReadableVariantMap[props.variant]??props.variant??\"yYBsmAK2C\",YPx0WXa7x:humanReadableEnumMap[actions]??actions??props.YPx0WXa7x??\"f1fa5L71s\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,YPx0WXa7x,smQ_kJfRy,PiR5q7_Ls,dqNTFu1r7,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"yYBsmAK2C\",variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onTaptdgfo1=activeVariantCallback(async(...args)=>{setVariant(\"rTXApURFW\");});const onTapubpdcj=activeVariantCallback(async(...args)=>{setVariant(\"V3CTLD12k\");});const lFvMJ0SS0tdgfo1=activeVariantCallback(async(...args)=>{setVariant(\"rTXApURFW\");});const lFvMJ0SS0ubpdcj=activeVariantCallback(async(...args)=>{setVariant(\"V3CTLD12k\");});const onMouseEnter1f5kb45=activeVariantCallback(async(...args)=>{setVariant(\"yYBsmAK2C\");});const aV_o9aCOb13ns6va=activeVariantCallback(async(...args)=>{setVariant(\"p0VB4JdwZ\");});const wFwmGsvMB1f5kb45=activeVariantCallback(async(...args)=>{setVariant(\"yYBsmAK2C\");});const aV_o9aCOb16odvul=activeVariantCallback(async(...args)=>{setVariant(\"jLlrfUjwY\");});const aV_o9aCOb1552k4g=activeVariantCallback(async(...args)=>{setVariant(\"hGrvTlt0M\");});const aV_o9aCOb1gipp1y=activeVariantCallback(async(...args)=>{setVariant(\"ryjqllBlo\");});const aV_o9aCOb1f5kb45=activeVariantCallback(async(...args)=>{setVariant(\"yYBsmAK2C\");});const jnvUEL2utr0v3z7=activeVariantCallback(async(...args)=>{setVariant(\"R4fEAZUpz\");});const jnvUEL2ut72pvtj=activeVariantCallback(async(...args)=>{setVariant(\"n78EjWcTW\");});const onMouseLeave1f5kb45=activeVariantCallback(async(...args)=>{setVariant(\"yYBsmAK2C\");});const ref1=React.useRef(null);const isDisplayed=()=>{if(baseVariant===\"p0VB4JdwZ\")return false;return true;};const isDisplayed1=value=>{if([\"p0VB4JdwZ\",\"jLlrfUjwY\",\"ryjqllBlo\",\"hGrvTlt0M\",\"j5ogDws8g\"].includes(baseVariant))return true;return value;};const isDisplayed2=()=>{if([\"rTXApURFW\",\"R4fEAZUpz\",\"vIqAF4tNe\",\"V3CTLD12k\",\"n78EjWcTW\",\"scXuOxBX3\"].includes(baseVariant))return false;return true;};const router=useRouter();const isDisplayed3=()=>{if([\"vIqAF4tNe\",\"scXuOxBX3\"].includes(baseVariant))return false;return true;};const isDisplayed4=()=>{if([\"p0VB4JdwZ\",\"jLlrfUjwY\",\"ryjqllBlo\",\"hGrvTlt0M\",\"j5ogDws8g\"].includes(baseVariant))return true;return false;};const defaultLayoutId=React.useId();const sharedStyleClassNames=[];const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(serializationHash,...sharedStyleClassNames,\"framer-1gua3th\",className,classNames),\"data-framer-name\":\"Desktop\",layoutDependency:layoutDependency,layoutId:\"yYBsmAK2C\",ref:ref??ref1,style:{...style},...addPropertyOverrides({hGrvTlt0M:{\"data-framer-name\":\"Desktop \u2013 Partners\"},j5ogDws8g:{\"data-framer-name\":\"Desktop \u2013 Customers\"},jLlrfUjwY:{\"data-framer-name\":\"Desktop \u2013\\xa0Docs\"},n78EjWcTW:{\"data-framer-name\":\"MSP - Open\"},p0VB4JdwZ:{\"data-framer-name\":\"Desktop \u2013\\xa0Product\"},R4fEAZUpz:{\"data-framer-name\":\"Phone \u2013\\xa0Open\"},rTXApURFW:{\"data-framer-name\":\"Phone\"},ryjqllBlo:{\"data-framer-name\":\"Desktop - Resources\"},scXuOxBX3:{\"data-framer-name\":\"Home link\"},V3CTLD12k:{\"data-framer-name\":\"MSP\"},vIqAF4tNe:{\"data-framer-name\":\"No Links\"},VltkCT9Yj:{\"data-framer-name\":\"Variant 8\"}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-bj2t1u\",\"data-framer-name\":\"Phone Nav\",layoutDependency:layoutDependency,layoutId:\"tE6Yn3s02\",style:{opacity:0},variants:{n78EjWcTW:{opacity:1},R4fEAZUpz:{opacity:1}},children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-1gge8kh\",\"data-framer-name\":\"Close Target\",layoutDependency:layoutDependency,layoutId:\"hWvU7BsJw\",...addPropertyOverrides({n78EjWcTW:{\"data-highlight\":true,onTap:onTapubpdcj},R4fEAZUpz:{\"data-highlight\":true,onTap:onTaptdgfo1}},baseVariant,gestureVariant)}),isDisplayed()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1nbqwrx\",\"data-framer-name\":\"Popover\",layoutDependency:layoutDependency,layoutId:\"rtYmXmu89\",children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:582,width:`calc(min(${componentViewport?.width||\"100vw\"}, 400px) - 24px)`,y:(componentViewport?.y||0)+0+0+0+12+0,children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-jvxmn-container\",layoutDependency:layoutDependency,layoutId:\"ZzMaW8FRJ-container\",children:/*#__PURE__*/_jsx(NavMobileNav,{height:\"100%\",id:\"ZzMaW8FRJ\",layoutId:\"ZzMaW8FRJ\",lFvMJ0SS0:lFvMJ0SS0tdgfo1,style:{width:\"100%\"},variant:\"gYbO3EfpD\",width:\"100%\",...addPropertyOverrides({n78EjWcTW:{lFvMJ0SS0:lFvMJ0SS0ubpdcj,variant:\"MwreIT4I3\"},rTXApURFW:{lFvMJ0SS0:undefined},scXuOxBX3:{lFvMJ0SS0:undefined},V3CTLD12k:{lFvMJ0SS0:undefined},vIqAF4tNe:{lFvMJ0SS0:undefined}},baseVariant,gestureVariant)})})})})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-18tp73p\",\"data-framer-name\":\"Primary Nav\",layoutDependency:layoutDependency,layoutId:\"pD57w1tuu\",children:[isDisplayed1(dqNTFu1r7)&&/*#__PURE__*/_jsx(MotionDivGlass_100,{className:\"framer-vukas6\",\"data-framer-name\":\"BG\",layoutDependency:layoutDependency,layoutId:\"H7eO9fpOs\",style:{backgroundColor:\"rgba(14, 15, 17, 0.4)\"},variants:{hGrvTlt0M:{backgroundColor:\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\"},j5ogDws8g:{backgroundColor:\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\"},jLlrfUjwY:{backgroundColor:\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\"},p0VB4JdwZ:{backgroundColor:\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\"},ryjqllBlo:{backgroundColor:\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\"}}}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1dio0f0\",\"data-framer-name\":\"Container\",layoutDependency:layoutDependency,layoutId:\"zOWhA4vdD\",children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-16gmqzu\",\"data-framer-name\":\"Left\",layoutDependency:layoutDependency,layoutId:\"ACoTQWfps\",children:[/*#__PURE__*/_jsx(Link,{href:{webPageId:\"M5hbWPuKe\"},openInNewTab:false,...addPropertyOverrides({vIqAF4tNe:{href:undefined}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-1ueqr1r framer-1snouv8\",\"data-framer-name\":\"Logo\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"zhu6pd8ji\",onMouseEnter:onMouseEnter1f5kb45,...addPropertyOverrides({n78EjWcTW:{\"data-highlight\":undefined,onMouseEnter:undefined},R4fEAZUpz:{\"data-highlight\":undefined,onMouseEnter:undefined},rTXApURFW:{\"data-highlight\":undefined,onMouseEnter:undefined},scXuOxBX3:{\"data-highlight\":undefined,onMouseEnter:undefined},V3CTLD12k:{\"data-highlight\":undefined,onMouseEnter:undefined},vIqAF4tNe:{\"data-highlight\":undefined,onMouseEnter:undefined}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SVG,{className:\"framer-ysk055\",\"data-framer-name\":\"Logo\",fill:\"black\",intrinsicHeight:20,intrinsicWidth:86,layoutDependency:layoutDependency,layoutId:\"VHpPr5Ax7\",svg:'<svg width=\"86\" height=\"20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M0 8.516V17.2s1.298-.89 2.75-1.91v-4.774c0-2.347.707-3.104 2.62-4.526l2.624-1.95V0S4.198 2.816 2.62 3.99C.707 5.412 0 6.17 0 8.516ZM4 20v-8.684c0-2.347.707-3.104 2.62-4.526 1.578-1.174 5.374-3.99 5.374-3.99v7.577c0 .218.001.425.003.624.018 2.099.027 3.218-2.12 4.841C8.105 17.184 4 20 4 20ZM26.8 5.617h-3.4v9.825h-2V5.617H18V3.72h8.802L26.8 5.617Zm5.336 3.947h.017l1.925 5.878h1.866l2.989-8.57h-2l-1.931 6.16-1.944-6.16h-1.814l-1.965 6.144-1.915-6.143h-2.032l2.995 8.57h1.865l1.944-5.88Zm8-2.691h2.47v8.57h-1.964v-6.82h-1.134l.627-1.75Zm.259-2.642a1.231 1.231 0 0 1 2.461 0c0 .71-.511 1.205-1.221 1.205-.71 0-1.242-.495-1.242-1.205h.002Zm8.451 2.444c-1.403 0-2.277.66-2.642 1.337l-.002-1.14h-1.814v8.576h1.965v-4.97c0-1.336.776-2.114 2.015-2.114 1.173 0 1.7.771 1.7 1.944v5.134h1.966V10.06c0-1.998-1.107-3.385-3.188-3.385Zm11.207.198h1.814v8.207c0 2.262-1.454 3.979-4.096 3.979-2.576 0-3.748-1.651-3.93-2.988h1.966c.181.66.759 1.303 1.998 1.303 1.354 0 2.096-.825 2.096-2.03v-1.337c-.48.742-1.388 1.32-2.708 1.32-2.444 0-3.947-1.964-3.947-4.326 0-2.362 1.503-4.326 3.947-4.326 1.32 0 2.295.528 2.857 1.425l.003-1.227ZM57.59 8.408c-1.425 0-2.378 1.09-2.378 2.591 0 1.502.958 2.592 2.378 2.592 1.452 0 2.394-1.107 2.394-2.591 0-1.485-.94-2.592-2.393-2.592h-.001ZM70 15.441h1.814V6.89h-1.817v1.227c-.546-.897-1.552-1.426-2.89-1.426-2.525 0-3.96 2.033-3.96 4.478s1.437 4.476 3.962 4.476c1.336 0 2.345-.534 2.89-1.426v1.222Zm-.068-4.276c0 1.537-.908 2.742-2.411 2.742-1.486 0-2.411-1.206-2.411-2.742 0-1.535.907-2.74 2.411-2.74s2.411 1.204 2.411 2.74Zm3.448-6.52h1.964v2.228h1.602v1.569h-1.602v4.326c0 .676.282 1.007.958 1.007a2.42 2.42 0 0 0 .611-.083v1.701a4.31 4.31 0 0 1-1.023.099c-1.75 0-2.51-.907-2.51-2.526V4.644Zm8.474 9.311c-1.371 0-2.246-.874-2.395-2.228h6.524s.017-.298.017-.612c0-2.51-1.668-4.441-4.211-4.441s-4.26 1.98-4.26 4.475c0 2.559 1.684 4.49 4.276 4.49 1.997 0 3.516-1.204 4.028-2.905h-1.981c-.314.759-1.091 1.221-1.998 1.221Zm2.196-3.682h-4.557c.198-1.173 1.024-1.998 2.295-1.998 1.27 0 2.097.81 2.262 1.998Z\" fill=\"#fff\"/></svg>',tabIndex:0,title:\"Twingate Logo\",withExternalLayout:true})})}),isDisplayed2()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-kasskh\",\"data-framer-name\":\"Menu\",layoutDependency:layoutDependency,layoutId:\"NEfkbObYl\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:34,y:(componentViewport?.y||0)+0+0+0+0+0+16,children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-zoxc94-container\",layoutDependency:layoutDependency,layoutId:\"NTPifMqon-container\",children:/*#__PURE__*/_jsx(ButtonsNavButton,{aV_o9aCOb:aV_o9aCOb13ns6va,FKwB4UL9z:PiR5q7_Ls,height:\"100%\",id:\"NTPifMqon\",layoutId:\"NTPifMqon\",QsIcUGujF:\"Product\",variant:\"boonRzPUi\",width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:34,y:(componentViewport?.y||0)+0+0+0+0+0+16,children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-r2ypem-container\",layoutDependency:layoutDependency,layoutId:\"ENgwmjLR7-container\",children:/*#__PURE__*/_jsx(ButtonsNavButton,{aV_o9aCOb:aV_o9aCOb16odvul,FKwB4UL9z:PiR5q7_Ls,height:\"100%\",id:\"ENgwmjLR7\",layoutId:\"ENgwmjLR7\",QsIcUGujF:\"Docs\",variant:\"VgtzLAQ7z\",wFwmGsvMB:wFwmGsvMB1f5kb45,width:\"100%\",WjB0saJsU:\"https://www.twingate.com/docs/\"})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"fM499XwEy\"},implicitPathVariables:undefined},{href:{webPageId:\"fM499XwEy\"},implicitPathVariables:undefined},{href:{webPageId:\"fM499XwEy\"},implicitPathVariables:undefined},{href:{webPageId:\"fM499XwEy\"},implicitPathVariables:undefined},{href:{webPageId:\"fM499XwEy\"},implicitPathVariables:undefined},{href:{webPageId:\"fM499XwEy\"},implicitPathVariables:undefined},{href:{webPageId:\"fM499XwEy\"},implicitPathVariables:undefined}],children:resolvedLinks=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:34,y:(componentViewport?.y||0)+0+0+0+0+0+16,children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-rm3vlo-container\",layoutDependency:layoutDependency,layoutId:\"stRfT4g2T-container\",children:/*#__PURE__*/_jsx(ButtonsNavButton,{aV_o9aCOb:aV_o9aCOb1552k4g,FKwB4UL9z:PiR5q7_Ls,height:\"100%\",id:\"stRfT4g2T\",layoutId:\"stRfT4g2T\",QsIcUGujF:\"Partners\",variant:\"VgtzLAQ7z\",width:\"100%\",WjB0saJsU:resolvedLinks[0],...addPropertyOverrides({hGrvTlt0M:{WjB0saJsU:resolvedLinks[5]},j5ogDws8g:{WjB0saJsU:resolvedLinks[6]},jLlrfUjwY:{WjB0saJsU:resolvedLinks[2]},p0VB4JdwZ:{WjB0saJsU:resolvedLinks[1]},ryjqllBlo:{WjB0saJsU:resolvedLinks[3]},VltkCT9Yj:{WjB0saJsU:resolvedLinks[4]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:34,y:(componentViewport?.y||0)+0+0+0+0+0+16,children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-14ta1jg-container\",layoutDependency:layoutDependency,layoutId:\"VRXa1X1lJ-container\",children:/*#__PURE__*/_jsx(ButtonsNavButton,{aV_o9aCOb:aV_o9aCOb1gipp1y,FKwB4UL9z:PiR5q7_Ls,height:\"100%\",id:\"VRXa1X1lJ\",layoutId:\"VRXa1X1lJ\",QsIcUGujF:\"Resources\",variant:\"boonRzPUi\",width:\"100%\"})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"hEjPykOVp\"},implicitPathVariables:undefined},{href:{webPageId:\"hEjPykOVp\"},implicitPathVariables:undefined},{href:{webPageId:\"hEjPykOVp\"},implicitPathVariables:undefined},{href:{webPageId:\"hEjPykOVp\"},implicitPathVariables:undefined},{href:{webPageId:\"hEjPykOVp\"},implicitPathVariables:undefined},{href:{webPageId:\"hEjPykOVp\"},implicitPathVariables:undefined},{href:{webPageId:\"hEjPykOVp\"},implicitPathVariables:undefined}],children:resolvedLinks1=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:34,y:(componentViewport?.y||0)+0+0+0+0+0+16,children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1b3hoh4-container\",layoutDependency:layoutDependency,layoutId:\"npqjciYNu-container\",children:/*#__PURE__*/_jsx(ButtonsNavButton,{aV_o9aCOb:aV_o9aCOb1f5kb45,FKwB4UL9z:PiR5q7_Ls,height:\"100%\",id:\"npqjciYNu\",layoutId:\"npqjciYNu\",QsIcUGujF:\"Customers\",variant:\"VgtzLAQ7z\",width:\"100%\",WjB0saJsU:resolvedLinks1[0],...addPropertyOverrides({hGrvTlt0M:{WjB0saJsU:resolvedLinks1[5]},j5ogDws8g:{WjB0saJsU:resolvedLinks1[6]},jLlrfUjwY:{WjB0saJsU:resolvedLinks1[2]},p0VB4JdwZ:{WjB0saJsU:resolvedLinks1[1]},ryjqllBlo:{WjB0saJsU:resolvedLinks1[3]},VltkCT9Yj:{WjB0saJsU:resolvedLinks1[4]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"IBZQysKMB\"},implicitPathVariables:undefined},{href:{webPageId:\"IBZQysKMB\"},implicitPathVariables:undefined},{href:{webPageId:\"IBZQysKMB\"},implicitPathVariables:undefined},{href:{webPageId:\"IBZQysKMB\"},implicitPathVariables:undefined},{href:{webPageId:\"IBZQysKMB\"},implicitPathVariables:undefined},{href:{webPageId:\"IBZQysKMB\"},implicitPathVariables:undefined},{href:{webPageId:\"IBZQysKMB\"},implicitPathVariables:undefined}],children:resolvedLinks2=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:34,y:(componentViewport?.y||0)+0+0+0+0+0+16,children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-d2dkzs-container\",layoutDependency:layoutDependency,layoutId:\"ECGJoN8k5-container\",children:/*#__PURE__*/_jsx(ButtonsNavButton,{aV_o9aCOb:aV_o9aCOb1f5kb45,FKwB4UL9z:PiR5q7_Ls,height:\"100%\",id:\"ECGJoN8k5\",layoutId:\"ECGJoN8k5\",QsIcUGujF:\"Pricing\",variant:\"VgtzLAQ7z\",width:\"100%\",WjB0saJsU:resolvedLinks2[0],...addPropertyOverrides({hGrvTlt0M:{WjB0saJsU:resolvedLinks2[5]},j5ogDws8g:{WjB0saJsU:resolvedLinks2[6]},jLlrfUjwY:{WjB0saJsU:resolvedLinks2[2]},p0VB4JdwZ:{WjB0saJsU:resolvedLinks2[1]},ryjqllBlo:{WjB0saJsU:resolvedLinks2[3]},VltkCT9Yj:{WjB0saJsU:resolvedLinks2[4]}},baseVariant,gestureVariant)})})})})]})]}),isDisplayed3()&&/*#__PURE__*/_jsx(ComponentViewportProvider,{height:34,y:(componentViewport?.y||0)+0+0+0+15,children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-125pvx5-container\",layoutDependency:layoutDependency,layoutId:\"yZ6Q1rRg9-container\",children:/*#__PURE__*/_jsx(NavPrimaryNavRight,{height:\"100%\",id:\"yZ6Q1rRg9\",layoutId:\"yZ6Q1rRg9\",style:{height:\"100%\"},variant:YPx0WXa7x,width:\"100%\",...addPropertyOverrides({n78EjWcTW:{variant:\"We5skBAdz\"},R4fEAZUpz:{variant:\"We5skBAdz\"},rTXApURFW:{jnvUEL2ut:jnvUEL2utr0v3z7,variant:\"We5skBAdz\"},V3CTLD12k:{jnvUEL2ut:jnvUEL2ut72pvtj,variant:\"We5skBAdz\"}},baseVariant,gestureVariant)})})}),isDisplayed1(smQ_kJfRy)&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-a0xi3o\",\"data-framer-name\":\"Shadow\",layoutDependency:layoutDependency,layoutId:\"ug7OtcFl2\",style:{boxShadow:\"0px 0.5px 0px 0px rgba(255, 255, 255, 0.1)\"}})]})]}),isDisplayed4()&&/*#__PURE__*/_jsx(MotionDivGlass_200,{className:\"framer-s7jqj0\",\"data-framer-name\":\"Tray\",layoutDependency:layoutDependency,layoutId:\"Y3PBuKqA4\",style:{backgroundColor:\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\",boxShadow:\"0px 0.6021873017743928px 0.6021873017743928px -0.8333333333333333px rgba(0, 0, 0, 0.25), 0px 2.288533303243457px 2.288533303243457px -1.6666666666666665px rgba(0, 0, 0, 0.25), 0px 10px 10px -2.5px rgba(0, 0, 0, 0.25)\",opacity:0},variants:{hGrvTlt0M:{opacity:1},j5ogDws8g:{opacity:1},jLlrfUjwY:{opacity:1},p0VB4JdwZ:{opacity:1},ryjqllBlo:{opacity:1}},...addPropertyOverrides({p0VB4JdwZ:{\"data-highlight\":true,onMouseLeave:onMouseLeave1f5kb45}},baseVariant,gestureVariant),children:isDisplayed4()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-kjvjfj\",\"data-framer-name\":\"Container\",layoutDependency:layoutDependency,layoutId:\"sHkFFQvPg\",children:isDisplayed4()&&/*#__PURE__*/_jsx(ComponentViewportProvider,{...addPropertyOverrides({hGrvTlt0M:{height:2341,width:\"1056px\",y:(componentViewport?.y||0)+0+64+0+0+16},j5ogDws8g:{height:2341,width:\"1056px\",y:(componentViewport?.y||0)+0+64+0+0+16},jLlrfUjwY:{height:2341,width:\"1056px\",y:(componentViewport?.y||0)+0+64+0+0+16},p0VB4JdwZ:{height:2341,width:\"1056px\",y:(componentViewport?.y||0)+0+64+0+0+16},ryjqllBlo:{height:2341,width:\"1056px\",y:(componentViewport?.y||0)+0+64+0+0+16}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1pjbbxa-container\",layoutDependency:layoutDependency,layoutId:\"i5vPWoIRE-container\",children:/*#__PURE__*/_jsx(NavTray,{height:\"100%\",id:\"i5vPWoIRE\",layoutId:\"i5vPWoIRE\",style:{width:\"100%\"},variant:\"V3KnZ7YU0\",width:\"100%\",...addPropertyOverrides({hGrvTlt0M:{variant:\"g5WWfybex\"},j5ogDws8g:{variant:\"xewWae9HZ\"},jLlrfUjwY:{variant:\"lHByleq6k\"},ryjqllBlo:{variant:\"lgo6tsa0X\"}},baseVariant,gestureVariant)})})})})}),isDisplayed2()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1w9lsgi\",\"data-framer-name\":\"Desktop Close Target\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"DZOHQ2L9A\",onMouseEnter:onMouseEnter1f5kb45,style:{backdropFilter:\"blur(0px)\",backgroundColor:\"rgba(0, 0, 0, 0.5)\",opacity:0,WebkitBackdropFilter:\"blur(0px)\"},variants:{hGrvTlt0M:{opacity:1},j5ogDws8g:{opacity:1},jLlrfUjwY:{opacity:1},p0VB4JdwZ:{opacity:1},ryjqllBlo:{opacity:1}}})]})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-SruE2.framer-1snouv8, .framer-SruE2 .framer-1snouv8 { display: block; }\",\".framer-SruE2.framer-1gua3th { align-content: flex-start; align-items: flex-start; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: 64px; justify-content: flex-start; padding: 0px; position: relative; width: 1200px; }\",\".framer-SruE2 .framer-bj2t1u { align-content: flex-end; align-items: flex-end; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; left: 0px; overflow: visible; padding: 0px; pointer-events: none; position: absolute; right: 0px; top: 0px; z-index: 4; }\",\".framer-SruE2 .framer-1gge8kh { bottom: -600px; cursor: default; flex: none; left: 0px; overflow: visible; position: absolute; right: 0px; top: 0px; }\",\".framer-SruE2 .framer-1nbqwrx { align-content: flex-end; align-items: flex-end; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; max-width: 400px; overflow: visible; padding: 12px; pointer-events: none; position: relative; width: 100%; }\",\".framer-SruE2 .framer-jvxmn-container { flex: none; height: auto; position: relative; width: 100%; }\",\".framer-SruE2 .framer-18tp73p { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: 64px; justify-content: center; overflow: visible; padding: 0px 24px 0px 24px; pointer-events: auto; position: relative; width: 100%; z-index: 3; }\",\".framer-SruE2 .framer-vukas6 { bottom: 0px; flex: none; left: 0px; overflow: visible; position: absolute; right: 0px; top: 0px; }\",\".framer-SruE2 .framer-1dio0f0 { align-content: center; align-items: center; display: flex; flex: 1 0 0px; flex-direction: row; flex-wrap: nowrap; height: min-content; justify-content: space-between; max-width: 1056px; overflow: visible; padding: 0px; position: relative; width: 1px; }\",\".framer-SruE2 .framer-16gmqzu { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: 64px; justify-content: center; overflow: hidden; padding: 0px; position: relative; width: min-content; }\",\".framer-SruE2 .framer-1ueqr1r { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; text-decoration: none; width: min-content; }\",\".framer-SruE2 .framer-ysk055 { aspect-ratio: 4.3 / 1; flex: none; height: var(--framer-aspect-ratio-supported, 20px); position: relative; width: 86px; }\",\".framer-SruE2 .framer-kasskh { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: 100%; justify-content: center; overflow: visible; padding: 2px 0px 0px 0px; position: relative; width: min-content; }\",\".framer-SruE2 .framer-zoxc94-container, .framer-SruE2 .framer-14ta1jg-container { cursor: default; flex: none; height: auto; position: relative; width: auto; }\",\".framer-SruE2 .framer-r2ypem-container { cursor: pointer; flex: none; height: auto; position: relative; width: auto; }\",\".framer-SruE2 .framer-rm3vlo-container, .framer-SruE2 .framer-1b3hoh4-container, .framer-SruE2 .framer-d2dkzs-container { flex: none; height: auto; position: relative; width: auto; }\",\".framer-SruE2 .framer-125pvx5-container { flex: none; height: 34px; position: relative; width: auto; z-index: 3; }\",\".framer-SruE2 .framer-a0xi3o { bottom: 1px; flex: none; height: 1px; left: 0px; overflow: visible; position: absolute; right: 0px; z-index: 2; }\",\".framer-SruE2 .framer-s7jqj0 { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: 1px; justify-content: center; overflow: visible; padding: 0px 24px 16px 24px; pointer-events: auto; position: relative; width: 100%; z-index: 4; }\",\".framer-SruE2 .framer-kjvjfj { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; height: min-content; justify-content: space-between; max-width: 1056px; min-height: 100px; overflow: hidden; padding: 16px 0px 16px 0px; position: relative; width: 1056px; }\",\".framer-SruE2 .framer-1pjbbxa-container { flex: 1 0 0px; height: auto; position: relative; width: 1px; }\",\".framer-SruE2 .framer-1w9lsgi { flex: none; height: 1500px; left: 0px; overflow: hidden; pointer-events: none; position: absolute; right: 0px; top: 64px; z-index: 3; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-SruE2.framer-1gua3th, .framer-SruE2 .framer-bj2t1u, .framer-SruE2 .framer-1nbqwrx, .framer-SruE2 .framer-18tp73p, .framer-SruE2 .framer-16gmqzu, .framer-SruE2 .framer-1ueqr1r, .framer-SruE2 .framer-kasskh, .framer-SruE2 .framer-s7jqj0 { gap: 0px; } .framer-SruE2.framer-1gua3th > *, .framer-SruE2 .framer-bj2t1u > *, .framer-SruE2 .framer-1nbqwrx > *, .framer-SruE2 .framer-s7jqj0 > * { margin: 0px; margin-bottom: calc(0px / 2); margin-top: calc(0px / 2); } .framer-SruE2.framer-1gua3th > :first-child, .framer-SruE2 .framer-bj2t1u > :first-child, .framer-SruE2 .framer-1nbqwrx > :first-child, .framer-SruE2 .framer-s7jqj0 > :first-child { margin-top: 0px; } .framer-SruE2.framer-1gua3th > :last-child, .framer-SruE2 .framer-bj2t1u > :last-child, .framer-SruE2 .framer-1nbqwrx > :last-child, .framer-SruE2 .framer-s7jqj0 > :last-child { margin-bottom: 0px; } .framer-SruE2 .framer-18tp73p > *, .framer-SruE2 .framer-kasskh > * { margin: 0px; margin-left: calc(0px / 2); margin-right: calc(0px / 2); } .framer-SruE2 .framer-18tp73p > :first-child, .framer-SruE2 .framer-16gmqzu > :first-child, .framer-SruE2 .framer-1ueqr1r > :first-child, .framer-SruE2 .framer-kasskh > :first-child { margin-left: 0px; } .framer-SruE2 .framer-18tp73p > :last-child, .framer-SruE2 .framer-16gmqzu > :last-child, .framer-SruE2 .framer-1ueqr1r > :last-child, .framer-SruE2 .framer-kasskh > :last-child { margin-right: 0px; } .framer-SruE2 .framer-16gmqzu > *, .framer-SruE2 .framer-1ueqr1r > * { margin: 0px; margin-left: calc(10px / 2); margin-right: calc(10px / 2); } }\",\".framer-SruE2.framer-v-v6smzb.framer-1gua3th, .framer-SruE2.framer-v-ifds0s.framer-1gua3th, .framer-SruE2.framer-v-ek988f.framer-1gua3th, .framer-SruE2.framer-v-eg3gy1.framer-1gua3th, .framer-SruE2.framer-v-8gkf2l.framer-1gua3th { height: min-content; }\",\".framer-SruE2.framer-v-v6smzb .framer-bj2t1u { min-height: 550px; }\",\".framer-SruE2.framer-v-v6smzb .framer-s7jqj0, .framer-SruE2.framer-v-ifds0s .framer-s7jqj0, .framer-SruE2.framer-v-ek988f .framer-s7jqj0, .framer-SruE2.framer-v-eg3gy1 .framer-s7jqj0, .framer-SruE2.framer-v-8gkf2l .framer-s7jqj0 { height: min-content; padding: 0px 24px 0px 24px; }\",\".framer-SruE2.framer-v-v6smzb .framer-kjvjfj { gap: 0px; justify-content: center; min-height: unset; overflow: visible; z-index: 1; }\",\".framer-SruE2.framer-v-v6smzb .framer-1w9lsgi, .framer-SruE2.framer-v-ifds0s .framer-1w9lsgi, .framer-SruE2.framer-v-ek988f .framer-1w9lsgi, .framer-SruE2.framer-v-1k6fzrf .framer-bj2t1u, .framer-SruE2.framer-v-1k6fzrf .framer-jvxmn-container, .framer-SruE2.framer-v-1olf9yr .framer-bj2t1u, .framer-SruE2.framer-v-1olf9yr .framer-jvxmn-container, .framer-SruE2.framer-v-eg3gy1 .framer-1w9lsgi, .framer-SruE2.framer-v-8gkf2l .framer-1w9lsgi { pointer-events: auto; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-SruE2.framer-v-v6smzb .framer-kjvjfj { gap: 0px; } .framer-SruE2.framer-v-v6smzb .framer-kjvjfj > * { margin: 0px; margin-left: calc(0px / 2); margin-right: calc(0px / 2); } .framer-SruE2.framer-v-v6smzb .framer-kjvjfj > :first-child { margin-left: 0px; } .framer-SruE2.framer-v-v6smzb .framer-kjvjfj > :last-child { margin-right: 0px; } }\",\".framer-SruE2.framer-v-ifds0s .framer-kjvjfj, .framer-SruE2.framer-v-ek988f .framer-kjvjfj, .framer-SruE2.framer-v-eg3gy1 .framer-kjvjfj, .framer-SruE2.framer-v-8gkf2l .framer-kjvjfj { gap: 10px; justify-content: center; min-height: unset; order: 0; overflow: visible; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-SruE2.framer-v-ifds0s .framer-kjvjfj { gap: 0px; } .framer-SruE2.framer-v-ifds0s .framer-kjvjfj > * { margin: 0px; margin-left: calc(10px / 2); margin-right: calc(10px / 2); } .framer-SruE2.framer-v-ifds0s .framer-kjvjfj > :first-child { margin-left: 0px; } .framer-SruE2.framer-v-ifds0s .framer-kjvjfj > :last-child { margin-right: 0px; } }\",\".framer-SruE2.framer-v-ek988f .framer-1pjbbxa-container, .framer-SruE2.framer-v-eg3gy1 .framer-1pjbbxa-container, .framer-SruE2.framer-v-8gkf2l .framer-1pjbbxa-container { order: 0; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-SruE2.framer-v-ek988f .framer-kjvjfj { gap: 0px; } .framer-SruE2.framer-v-ek988f .framer-kjvjfj > * { margin: 0px; margin-left: calc(10px / 2); margin-right: calc(10px / 2); } .framer-SruE2.framer-v-ek988f .framer-kjvjfj > :first-child { margin-left: 0px; } .framer-SruE2.framer-v-ek988f .framer-kjvjfj > :last-child { margin-right: 0px; } }\",\".framer-SruE2.framer-v-e3tmd0.framer-1gua3th, .framer-SruE2.framer-v-1k6fzrf.framer-1gua3th, .framer-SruE2.framer-v-1aqt28w.framer-1gua3th, .framer-SruE2.framer-v-1mxqra0.framer-1gua3th, .framer-SruE2.framer-v-1olf9yr.framer-1gua3th, .framer-SruE2.framer-v-1bdp0er.framer-1gua3th { width: 800px; }\",\".framer-SruE2.framer-v-e3tmd0 .framer-1nbqwrx, .framer-SruE2.framer-v-1aqt28w .framer-1nbqwrx, .framer-SruE2.framer-v-1mxqra0 .framer-1nbqwrx, .framer-SruE2.framer-v-1bdp0er .framer-1nbqwrx { max-height: 100%; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-SruE2.framer-v-eg3gy1 .framer-kjvjfj { gap: 0px; } .framer-SruE2.framer-v-eg3gy1 .framer-kjvjfj > * { margin: 0px; margin-left: calc(10px / 2); margin-right: calc(10px / 2); } .framer-SruE2.framer-v-eg3gy1 .framer-kjvjfj > :first-child { margin-left: 0px; } .framer-SruE2.framer-v-eg3gy1 .framer-kjvjfj > :last-child { margin-right: 0px; } }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-SruE2.framer-v-8gkf2l .framer-kjvjfj { gap: 0px; } .framer-SruE2.framer-v-8gkf2l .framer-kjvjfj > * { margin: 0px; margin-left: calc(10px / 2); margin-right: calc(10px / 2); } .framer-SruE2.framer-v-8gkf2l .framer-kjvjfj > :first-child { margin-left: 0px; } .framer-SruE2.framer-v-8gkf2l .framer-kjvjfj > :last-child { margin-right: 0px; } }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 64\n * @framerIntrinsicWidth 1200\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"p0VB4JdwZ\":{\"layout\":[\"fixed\",\"auto\"]},\"jLlrfUjwY\":{\"layout\":[\"fixed\",\"auto\"]},\"ryjqllBlo\":{\"layout\":[\"fixed\",\"auto\"]},\"rTXApURFW\":{\"layout\":[\"fixed\",\"fixed\"]},\"R4fEAZUpz\":{\"layout\":[\"fixed\",\"fixed\"]},\"vIqAF4tNe\":{\"layout\":[\"fixed\",\"fixed\"]},\"VltkCT9Yj\":{\"layout\":[\"fixed\",\"fixed\"]},\"V3CTLD12k\":{\"layout\":[\"fixed\",\"fixed\"]},\"n78EjWcTW\":{\"layout\":[\"fixed\",\"fixed\"]},\"hGrvTlt0M\":{\"layout\":[\"fixed\",\"auto\"]},\"scXuOxBX3\":{\"layout\":[\"fixed\",\"fixed\"]},\"j5ogDws8g\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerVariables {\"YPx0WXa7x\":\"actions\",\"smQ_kJfRy\":\"shadow\",\"PiR5q7_Ls\":\"foreground\",\"dqNTFu1r7\":\"bGBlur\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerDrqqrAzJ3=withCSS(Component,css,\"framer-SruE2\");export default FramerDrqqrAzJ3;FramerDrqqrAzJ3.displayName=\"Nav / Primary Nav \u2013 Core\";FramerDrqqrAzJ3.defaultProps={height:64,width:1200};addPropertyControls(FramerDrqqrAzJ3,{variant:{options:[\"yYBsmAK2C\",\"p0VB4JdwZ\",\"jLlrfUjwY\",\"ryjqllBlo\",\"rTXApURFW\",\"R4fEAZUpz\",\"vIqAF4tNe\",\"VltkCT9Yj\",\"V3CTLD12k\",\"n78EjWcTW\",\"hGrvTlt0M\",\"scXuOxBX3\",\"j5ogDws8g\"],optionTitles:[\"Desktop\",\"Desktop \u2013\\xa0Product\",\"Desktop \u2013\\xa0Docs\",\"Desktop - Resources\",\"Phone\",\"Phone \u2013\\xa0Open\",\"No Links\",\"Variant 8\",\"MSP\",\"MSP - Open\",\"Desktop \u2013 Partners\",\"Home link\",\"Desktop \u2013 Customers\"],title:\"Variant\",type:ControlType.Enum},YPx0WXa7x:NavPrimaryNavRightControls?.[\"variant\"]&&{...NavPrimaryNavRightControls[\"variant\"],defaultValue:\"f1fa5L71s\",description:undefined,hidden:undefined,title:\"Actions\"},smQ_kJfRy:{defaultValue:true,title:\"Shadow\",type:ControlType.Boolean},PiR5q7_Ls:{defaultValue:'var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255)) /* {\"name\":\"White\"} */',title:\"Foreground\",type:ControlType.Color},dqNTFu1r7:{defaultValue:true,title:\"BG Blur\",type:ControlType.Boolean}});addFonts(FramerDrqqrAzJ3,[{explicitInter:true,fonts:[]},...NavMobileNavFonts,...ButtonsNavButtonFonts,...NavPrimaryNavRightFonts,...NavTrayFonts],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerDrqqrAzJ3\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"1200\",\"framerDisplayContentsDiv\":\"false\",\"framerImmutableVariables\":\"true\",\"framerComponentViewportWidth\":\"true\",\"framerIntrinsicHeight\":\"64\",\"framerContractVersion\":\"1\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"p0VB4JdwZ\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"jLlrfUjwY\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"ryjqllBlo\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"rTXApURFW\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"R4fEAZUpz\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"vIqAF4tNe\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"VltkCT9Yj\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"V3CTLD12k\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"n78EjWcTW\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"hGrvTlt0M\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"scXuOxBX3\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"j5ogDws8g\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerVariables\":\"{\\\"YPx0WXa7x\\\":\\\"actions\\\",\\\"smQ_kJfRy\\\":\\\"shadow\\\",\\\"PiR5q7_Ls\\\":\\\"foreground\\\",\\\"dqNTFu1r7\\\":\\\"bGBlur\\\"}\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}", "import{jsx as _jsx}from\"react/jsx-runtime\";export function Glass_100(Component){return props=>{return /*#__PURE__*/ _jsx(Component,{...props,style:{...props.style,backdropFilter:\"blur(20px) saturate(180%)\",WebkitBackdropFilter:\"blur(20px) saturate(180%)\"}});};}export function Glass_200(Component){return props=>{return /*#__PURE__*/ _jsx(Component,{...props,style:{...props.style,backdropFilter:\"blur(20px) saturate(300%)\",WebkitBackdropFilter:\"blur(20px) saturate(300%)\"}});};}\nexport const __FramerMetadata__ = {\"exports\":{\"Glass_100\":{\"type\":\"reactHoc\",\"name\":\"Glass_100\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Glass_200\":{\"type\":\"reactHoc\",\"name\":\"Glass_200\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Filters.map", "import{jsx as _jsx}from\"react/jsx-runtime\";import Cookies from\"js-cookie\";import NavTenantRow from\"https://framer.com/m/Nav-TenantRow-hwyO.js@VXRpGuFqy1r4HcvPP67P\";import{useCallback,useState,useEffect}from\"react\";function useCookie(cookieName){const[value,setValue]=useState(null);const[hasReadCookie,setHasReadCookie]=useState(false);const update=useCallback((newValue,options)=>{Cookies.set(cookieName,newValue,options);setValue(newValue);},[cookieName]);const remove=useCallback(()=>{Cookies.remove(cookieName);setValue(null);},[cookieName]);useEffect(()=>{setValue(Cookies.get(cookieName));setHasReadCookie(true);},[cookieName]);return[value,{hasReadCookie,update,remove}];}function parseTenantsCookie(tenantsCookie){if(!tenantsCookie){return[];}let parsedTenantsCookie;try{parsedTenantsCookie=JSON.parse(decodeURI(tenantsCookie));}catch{// do nothing\n}// validate that it is an array\nif(!Array.isArray(parsedTenantsCookie)){return[];}// validate that the collection has a valid shape\nif(!parsedTenantsCookie.every(tenant=>tenant.name&&tenant.slug)){return[];}return parsedTenantsCookie;}export function useTenantsCookie(){const[tenantsCookie,{hasReadCookie}]=useCookie(\"tenants\");return{hasReadCookie,tenants:parseTenantsCookie(tenantsCookie)};}function useTenants(){const{tenants,hasReadCookie}=useTenantsCookie();const hasTenants=!!tenants&&tenants.length>0;return{hasTenants,isLoading:!hasReadCookie,tenants};}export function withShowIfTenants(Component){return props=>{const{hasTenants}=useTenants();if(hasTenants){return /*#__PURE__*/_jsx(Component,{...props},\"show\");}return null;};}export function withHideIfTenants(Component){return props=>{const{hasTenants,isLoading}=useTenants();if(hasTenants){return null;}return /*#__PURE__*/_jsx(Component,{...props},\"hide\");};}export function tenantRows(Component){return props=>{const{hasTenants,tenants}=useTenants();return /*#__PURE__*/_jsx(Component,{style:{width:\"100%\"},children:tenants.map((tenant,index)=>/*#__PURE__*/_jsx(\"a\",{href:tenant&&`https://${tenant.slug}.twingate.com`,target:\"_blank\",style:{textDecoration:\"none\",width:\"100%\"},children:/*#__PURE__*/_jsx(NavTenantRow,{tenantName:tenant&&tenant.name,tenantSlug:`${tenant&&tenant.slug}.twingate.com`,tenantFirstLetter:tenant&&tenant.name?tenant.name[0]:\"\u2022\",style:{width:\"100%\"}})}))});};}\nexport const __FramerMetadata__ = {\"exports\":{\"useTenantsCookie\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withShowIfTenants\":{\"type\":\"reactHoc\",\"name\":\"withShowIfTenants\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withHideIfTenants\":{\"type\":\"reactHoc\",\"name\":\"withHideIfTenants\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"tenantRows\":{\"type\":\"reactHoc\",\"name\":\"tenantRows\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TenantChecks.map", "// Generated by Framer (508aa67)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,getFontsFromSharedStyle,getPropertyControls,Link,RichText,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{withBGColorCycle}from\"https://framerusercontent.com/modules/mPRjUI8M0iAJUNJozv5i/WDE0fIExM5yIo9hALN4E/Color_Cycle.js\";import Arrow from\"https://framerusercontent.com/modules/qADlgksKhW1Xe8hVExge/b1P1z68oIDnVrezeU2Ds/Arrow.js\";import Logos from\"https://framerusercontent.com/modules/9WTbYjGuJAwW0o4hDi0j/1qiorIROk1jAClbRf9rb/Logos.js\";import*as sharedStyle from\"https://framerusercontent.com/modules/P4MbdJfCLPFYjfyPPIoS/RWvQtLNA1WapezEVvM0b/pQlNzrell.js\";import GraphicsButtonArrow from\"https://framerusercontent.com/modules/xPjbsMR6WyZIrRxgwZO7/QXnq5g7qwTofC1QjjW61/pRemd4fMu.js\";const MotionDivWithBGColorCycle=withBGColorCycle(motion.div);const LogosFonts=getFonts(Logos);const GraphicsButtonArrowFonts=getFonts(GraphicsButtonArrow);const ArrowFonts=getFonts(Arrow);const LogosControls=getPropertyControls(Logos);const GraphicsButtonArrowControls=getPropertyControls(GraphicsButtonArrow);const enabledGestures={koRnaCqak:{hover:true},L82Oy0Uy8:{hover:true},LE7kF5pDg:{hover:true},lege8jhG5:{hover:true},QOjFoD6FQ:{hover:true},uqgKD12hN:{hover:true},v93HMl6yN:{hover:true},YD2gIXV2L:{hover:true}};const cycleOrder=[\"YD2gIXV2L\",\"L82Oy0Uy8\",\"QOjFoD6FQ\",\"LE7kF5pDg\",\"uqgKD12hN\",\"v93HMl6yN\",\"lege8jhG5\",\"koRnaCqak\"];const serializationHash=\"framer-Fi6F4\";const variantClassNames={koRnaCqak:\"framer-v-15o8qgh\",L82Oy0Uy8:\"framer-v-1prk8ui\",LE7kF5pDg:\"framer-v-17lhh2h\",lege8jhG5:\"framer-v-1wx10ly\",QOjFoD6FQ:\"framer-v-1592run\",uqgKD12hN:\"framer-v-xcrb0\",v93HMl6yN:\"framer-v-cnhq7z\",YD2gIXV2L:\"framer-v-fke84z\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants===null||variants===void 0?void 0:variants.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={delay:0,duration:.15,ease:[0,0,1,1],type:\"tween\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value!==null&&value!==void 0?value:config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion(React.Fragment);const humanReadableEnumMap={\"Black \u2013\\xa0Arrow\":\"m9F2Vlw0F\",\"White - Arrow back\":\"uD5j7l2Ki\",\"White \u2013\\xa0Arrow\":\"EjrLISIop\",\"Yellow - Arrow\":\"uhSfrryf7\",Back:\"cpSLXUwzV\",Black:\"BNbfbktEW\",White:\"Ez6AL2vTh\",Yellow:\"RvL4_kC86\"};const humanReadableVariantMap={\"Color Cycle\":\"uqgKD12hN\",\"Transparent \u2013\\xa0Light\":\"v93HMl6yN\",Color:\"LE7kF5pDg\",External:\"koRnaCqak\",NoAnimation:\"lege8jhG5\",Primary:\"YD2gIXV2L\",Secondary:\"L82Oy0Uy8\",Transparent:\"QOjFoD6FQ\"};const getProps=({arrow,arrowVariant,background,color,height,hoverArrowVariant,icon,icon1,id,link,newTab,tap,title,width,...props})=>{var _humanReadableEnumMap_arrowVariant,_ref,_ref1,_humanReadableEnumMap_hoverArrowVariant,_ref2,_ref3,_ref4,_ref5,_ref6,_humanReadableVariantMap_props_variant,_ref7,_ref8,_ref9;return{...props,CiwGQDcAN:(_ref1=(_ref=(_humanReadableEnumMap_arrowVariant=humanReadableEnumMap[arrowVariant])!==null&&_humanReadableEnumMap_arrowVariant!==void 0?_humanReadableEnumMap_arrowVariant:arrowVariant)!==null&&_ref!==void 0?_ref:props.CiwGQDcAN)!==null&&_ref1!==void 0?_ref1:\"BNbfbktEW\",csPpyV4tk:(_ref3=(_ref2=(_humanReadableEnumMap_hoverArrowVariant=humanReadableEnumMap[hoverArrowVariant])!==null&&_humanReadableEnumMap_hoverArrowVariant!==void 0?_humanReadableEnumMap_hoverArrowVariant:hoverArrowVariant)!==null&&_ref2!==void 0?_ref2:props.csPpyV4tk)!==null&&_ref3!==void 0?_ref3:\"m9F2Vlw0F\",DZNn6_WWp:link!==null&&link!==void 0?link:props.DZNn6_WWp,FdDV8gLxh:(_ref4=background!==null&&background!==void 0?background:props.FdDV8gLxh)!==null&&_ref4!==void 0?_ref4:\"var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95))\",gW2IdKNHn:(_ref5=title!==null&&title!==void 0?title:props.gW2IdKNHn)!==null&&_ref5!==void 0?_ref5:\"Try Twingate for Free\",OA2ahGR0N:icon!==null&&icon!==void 0?icon:props.OA2ahGR0N,uirRaCarc:newTab!==null&&newTab!==void 0?newTab:props.uirRaCarc,Urz2Ffy21:(_ref6=icon1!==null&&icon1!==void 0?icon1:props.Urz2Ffy21)!==null&&_ref6!==void 0?_ref6:\"Terraform\",variant:(_ref7=(_humanReadableVariantMap_props_variant=humanReadableVariantMap[props.variant])!==null&&_humanReadableVariantMap_props_variant!==void 0?_humanReadableVariantMap_props_variant:props.variant)!==null&&_ref7!==void 0?_ref7:\"YD2gIXV2L\",WJoF2TywT:(_ref8=color!==null&&color!==void 0?color:props.WJoF2TywT)!==null&&_ref8!==void 0?_ref8:\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\",x_8VxILUS:tap!==null&&tap!==void 0?tap:props.x_8VxILUS,xjfxHTVGH:(_ref9=arrow!==null&&arrow!==void 0?arrow:props.xjfxHTVGH)!==null&&_ref9!==void 0?_ref9:true};};const createLayoutDependency=(props,variants)=>variants.join(\"-\")+props.layoutDependency;const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,gW2IdKNHn,OA2ahGR0N,Urz2Ffy21,xjfxHTVGH,FdDV8gLxh,DZNn6_WWp,uirRaCarc,x_8VxILUS,WJoF2TywT,CiwGQDcAN,csPpyV4tk,...restProps}=getProps(props);const{baseVariant,classNames,gestureVariant,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"YD2gIXV2L\",enabledGestures,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onTapbbtkj9=activeVariantCallback(async(...args)=>{setGestureState({isPressed:false});if(x_8VxILUS){const res=await x_8VxILUS(...args);if(res===false)return false;}});const ref1=React.useRef(null);const isDisplayed=()=>{if(gestureVariant===\"uqgKD12hN-hover\")return true;if(baseVariant===\"uqgKD12hN\")return true;return false;};const isDisplayed1=value=>{if(gestureVariant===\"lege8jhG5-hover\")return true;if(gestureVariant===\"koRnaCqak-hover\")return false;if(baseVariant===\"lege8jhG5\")return true;if(baseVariant===\"koRnaCqak\")return false;return value;};const isDisplayed2=()=>{if(gestureVariant===\"koRnaCqak-hover\")return true;if(baseVariant===\"koRnaCqak\")return true;return false;};const defaultLayoutId=React.useId();const sharedStyleClassNames=[sharedStyle.className];const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId!==null&&layoutId!==void 0?layoutId:defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(Link,{href:DZNn6_WWp,openInNewTab:uirRaCarc,...addPropertyOverrides({uqgKD12hN:{smoothScroll:true}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsxs(motion.a,{...restProps,className:`${cx(serializationHash,...sharedStyleClassNames,\"framer-fke84z\",className,classNames)} framer-k0jvwj`,\"data-framer-name\":\"Primary\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"YD2gIXV2L\",onHoverEnd:()=>setGestureState({isHovered:false}),onHoverStart:()=>setGestureState({isHovered:true}),onTap:onTapbbtkj9,onTapCancel:()=>setGestureState({isPressed:false}),onTapStart:()=>setGestureState({isPressed:true}),ref:ref!==null&&ref!==void 0?ref:ref1,style:{\"--border-bottom-width\":\"0px\",\"--border-color\":\"rgba(0, 0, 0, 0)\",\"--border-left-width\":\"0px\",\"--border-right-width\":\"0px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0px\",backgroundColor:\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\",borderBottomLeftRadius:50,borderBottomRightRadius:50,borderTopLeftRadius:50,borderTopRightRadius:50,boxShadow:\"none\",opacity:1,...style},variants:{\"koRnaCqak-hover\":{backgroundColor:\"rgba(255, 255, 255, 0.7)\"},\"L82Oy0Uy8-hover\":{\"--border-bottom-width\":\"0.5px\",backgroundColor:\"rgba(245, 245, 255, 0.15)\"},\"lege8jhG5-hover\":{backgroundColor:\"rgba(255, 255, 255, 0.7)\"},\"QOjFoD6FQ-hover\":{backgroundColor:\"rgba(0, 0, 0, 0)\",borderBottomLeftRadius:50,borderBottomRightRadius:50,borderTopLeftRadius:50,borderTopRightRadius:50,opacity:.7},\"uqgKD12hN-hover\":{backgroundColor:\"rgba(0, 0, 0, 0)\"},\"v93HMl6yN-hover\":{backgroundColor:\"rgba(0, 0, 0, 0)\",borderBottomLeftRadius:0,borderBottomRightRadius:0,borderTopLeftRadius:0,borderTopRightRadius:0},\"YD2gIXV2L-hover\":{backgroundColor:\"rgba(255, 255, 255, 0.7)\"},L82Oy0Uy8:{\"--border-bottom-width\":\"0px\",\"--border-color\":\"var(--token-2b080329-29ba-481c-ac92-832881069b36, rgba(255, 255, 255, 0.05))\",\"--border-left-width\":\"0.5px\",\"--border-right-width\":\"0.5px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0.5px\",backgroundColor:\"var(--token-66d0cf7b-9eb8-4245-b770-5d2d61dad950, rgba(255, 255, 255, 0.1))\",boxShadow:'inset 0px 2.5px 0px -2px var(--token-2b080329-29ba-481c-ac92-832881069b36, rgba(255, 255, 255, 0.1)) /* {\"name\":\"Glass \u2013\\xa0Border\"} */'},LE7kF5pDg:{backgroundColor:FdDV8gLxh},lege8jhG5:{backgroundColor:\"rgb(255, 255, 255)\"},QOjFoD6FQ:{backgroundColor:\"rgba(0, 0, 0, 0)\",borderBottomLeftRadius:0,borderBottomRightRadius:0,borderTopLeftRadius:0,borderTopRightRadius:0},uqgKD12hN:{backgroundColor:\"rgba(0, 0, 0, 0)\"},v93HMl6yN:{backgroundColor:\"rgba(0, 0, 0, 0)\",borderBottomLeftRadius:0,borderBottomRightRadius:0,borderTopLeftRadius:0,borderTopRightRadius:0}},...addPropertyOverrides({\"koRnaCqak-hover\":{\"data-framer-name\":undefined},\"L82Oy0Uy8-hover\":{\"data-framer-name\":undefined},\"LE7kF5pDg-hover\":{\"data-framer-name\":undefined},\"lege8jhG5-hover\":{\"data-framer-name\":undefined},\"QOjFoD6FQ-hover\":{\"data-framer-name\":undefined},\"uqgKD12hN-hover\":{\"data-framer-name\":undefined},\"v93HMl6yN-hover\":{\"data-framer-name\":undefined},\"YD2gIXV2L-hover\":{\"data-framer-name\":undefined},koRnaCqak:{\"data-framer-name\":\"External\"},L82Oy0Uy8:{\"data-border\":true,\"data-framer-name\":\"Secondary\"},LE7kF5pDg:{\"data-framer-name\":\"Color\"},lege8jhG5:{\"data-framer-name\":\"NoAnimation\"},QOjFoD6FQ:{\"data-framer-name\":\"Transparent\"},uqgKD12hN:{\"data-framer-name\":\"Color Cycle\"},v93HMl6yN:{\"data-framer-name\":\"Transparent \u2013\\xa0Light\"}},baseVariant,gestureVariant),children:[isDisplayed()&&/*#__PURE__*/_jsx(MotionDivWithBGColorCycle,{className:\"framer-1nrt3l\",\"data-framer-name\":\"Color Cycle BG\",layoutDependency:layoutDependency,layoutId:\"tqr2Yo1Lq\",style:{backgroundColor:\"var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95))\",borderBottomLeftRadius:100,borderBottomRightRadius:100,borderTopLeftRadius:100,borderTopRightRadius:100,boxShadow:\"inset 0px 2.5px 0px -2px rgba(255, 255, 255, 0.15), inset 0px 0px 0px 0.5px rgba(255, 255, 255, 0.15)\",opacity:1},variants:{\"uqgKD12hN-hover\":{opacity:.7}}}),OA2ahGR0N&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-pst6d6\",\"data-framer-name\":\"Icon Container\",layoutDependency:layoutDependency,layoutId:\"IPRYYJr6P\",children:/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-htxbuj-container\",layoutDependency:layoutDependency,layoutId:\"Fd9m7PksC-container\",children:/*#__PURE__*/_jsx(Logos,{accent:\"rgb(0, 0, 0)\",height:\"100%\",icon:Urz2Ffy21,id:\"Fd9m7PksC\",inheritColor:false,layoutId:\"Fd9m7PksC\",style:{height:\"100%\",width:\"100%\"},width:\"100%\",...addPropertyOverrides({L82Oy0Uy8:{accent:\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\"},LE7kF5pDg:{accent:\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\"},QOjFoD6FQ:{accent:\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\"},v93HMl6yN:{accent:\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\"}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-xf8vkz\",\"data-styles-preset\":\"pQlNzrell\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, rgb(0, 0, 0))\"},children:\"Try Twingate for Free\"})}),className:\"framer-8noh03\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"M9SDih9Jw\",style:{\"--extracted-r6o4lv\":\"rgb(0, 0, 0)\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\",\"--variable-reference-WJoF2TywT-AiU29R1w5\":WJoF2TywT},text:gW2IdKNHn,variants:{\"QOjFoD6FQ-hover\":{\"--extracted-r6o4lv\":\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\"},\"v93HMl6yN-hover\":{\"--extracted-r6o4lv\":\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\"},L82Oy0Uy8:{\"--extracted-r6o4lv\":\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\"},LE7kF5pDg:{\"--extracted-r6o4lv\":\"var(--variable-reference-WJoF2TywT-AiU29R1w5)\",\"--variable-reference-WJoF2TywT-AiU29R1w5\":WJoF2TywT},QOjFoD6FQ:{\"--extracted-r6o4lv\":\"var(--variable-reference-WJoF2TywT-AiU29R1w5)\",\"--variable-reference-WJoF2TywT-AiU29R1w5\":WJoF2TywT},v93HMl6yN:{\"--extracted-r6o4lv\":\"var(--token-376d54cb-4db7-448c-b192-cf6ae3d1a8ff, rgb(161, 161, 170))\"}},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({\"QOjFoD6FQ-hover\":{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-xf8vkz\",\"data-styles-preset\":\"pQlNzrell\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255)))\"},children:\"Try Twingate for Free\"})})},\"v93HMl6yN-hover\":{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-xf8vkz\",\"data-styles-preset\":\"pQlNzrell\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255)))\"},children:\"Try Twingate for Free\"})})},L82Oy0Uy8:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-xf8vkz\",\"data-styles-preset\":\"pQlNzrell\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255)))\"},children:\"Try Twingate for Free\"})})},LE7kF5pDg:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-xf8vkz\",\"data-styles-preset\":\"pQlNzrell\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--variable-reference-WJoF2TywT-AiU29R1w5))\"},children:\"Try Twingate for Free\"})})},QOjFoD6FQ:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-xf8vkz\",\"data-styles-preset\":\"pQlNzrell\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--variable-reference-WJoF2TywT-AiU29R1w5))\"},children:\"Try Twingate for Free\"})})},v93HMl6yN:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-xf8vkz\",\"data-styles-preset\":\"pQlNzrell\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-376d54cb-4db7-448c-b192-cf6ae3d1a8ff, rgb(161, 161, 170)))\"},children:\"Try Twingate for Free\"})})}},baseVariant,gestureVariant)}),isDisplayed1(xjfxHTVGH)&&/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1u7t6oo-container\",layoutDependency:layoutDependency,layoutId:\"LfhbvkBY9-container\",style:{opacity:1},variants:{\"v93HMl6yN-hover\":{opacity:1},v93HMl6yN:{opacity:.6}},children:/*#__PURE__*/_jsx(GraphicsButtonArrow,{height:\"100%\",id:\"LfhbvkBY9\",layoutId:\"LfhbvkBY9\",style:{height:\"100%\",width:\"100%\"},variant:\"BNbfbktEW\",width:\"100%\",...addPropertyOverrides({\"L82Oy0Uy8-hover\":{variant:\"EjrLISIop\"},\"LE7kF5pDg-hover\":{variant:csPpyV4tk},\"QOjFoD6FQ-hover\":{variant:\"EjrLISIop\"},\"uqgKD12hN-hover\":{variant:\"m9F2Vlw0F\"},\"v93HMl6yN-hover\":{variant:\"EjrLISIop\"},\"YD2gIXV2L-hover\":{variant:\"m9F2Vlw0F\"},L82Oy0Uy8:{variant:\"Ez6AL2vTh\"},LE7kF5pDg:{variant:CiwGQDcAN},lege8jhG5:{variant:\"m9F2Vlw0F\"},QOjFoD6FQ:{variant:\"Ez6AL2vTh\"},v93HMl6yN:{variant:\"Ez6AL2vTh\"}},baseVariant,gestureVariant)})})}),isDisplayed2()&&/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-ys8tgr-container\",layoutDependency:layoutDependency,layoutId:\"mlWoPBfhA-container\",children:/*#__PURE__*/_jsx(Arrow,{accent:\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\",height:\"100%\",icon:\"Up Right Arrow\",id:\"mlWoPBfhA\",inheritColor:false,layoutId:\"mlWoPBfhA\",style:{height:\"100%\",width:\"100%\"},width:\"100%\"})})})]})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-Fi6F4.framer-k0jvwj, .framer-Fi6F4 .framer-k0jvwj { display: block; }\",\".framer-Fi6F4.framer-fke84z { align-content: center; align-items: center; cursor: pointer; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 4px; height: 34px; justify-content: center; overflow: visible; padding: 0px 14px 0px 14px; position: relative; text-decoration: none; width: auto; }\",\".framer-Fi6F4 .framer-1nrt3l { bottom: 0px; flex: none; left: 0px; overflow: visible; position: absolute; right: 0px; top: 0px; z-index: 0; }\",\".framer-Fi6F4 .framer-pst6d6 { flex: none; height: 20px; overflow: visible; position: relative; width: 16px; }\",\".framer-Fi6F4 .framer-htxbuj-container { bottom: 0px; flex: none; left: -4px; position: absolute; right: 0px; top: 0px; }\",\".framer-Fi6F4 .framer-8noh03 { -webkit-user-select: none; flex: none; height: auto; position: relative; user-select: none; white-space: pre; width: auto; }\",\".framer-Fi6F4 .framer-1u7t6oo-container { flex: none; height: 20px; position: relative; width: 10px; }\",\".framer-Fi6F4 .framer-ys8tgr-container { flex: none; height: 20px; position: relative; width: 20px; z-index: 1; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-Fi6F4.framer-fke84z { gap: 0px; } .framer-Fi6F4.framer-fke84z > * { margin: 0px; margin-left: calc(4px / 2); margin-right: calc(4px / 2); } .framer-Fi6F4.framer-fke84z > :first-child { margin-left: 0px; } .framer-Fi6F4.framer-fke84z > :last-child { margin-right: 0px; } }\",\".framer-Fi6F4.framer-v-1592run.framer-fke84z, .framer-Fi6F4.framer-v-cnhq7z.framer-fke84z { padding: 0px; }\",\".framer-Fi6F4.framer-v-xcrb0 .framer-1nrt3l { order: 0; }\",\".framer-Fi6F4.framer-v-xcrb0 .framer-pst6d6 { order: 1; }\",\".framer-Fi6F4.framer-v-xcrb0 .framer-8noh03 { order: 2; }\",\".framer-Fi6F4.framer-v-xcrb0 .framer-1u7t6oo-container { order: 3; }\",\".framer-Fi6F4.framer-v-15o8qgh.framer-fke84z { gap: 0px; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-Fi6F4.framer-v-15o8qgh.framer-fke84z { gap: 0px; } .framer-Fi6F4.framer-v-15o8qgh.framer-fke84z > * { margin: 0px; margin-left: calc(0px / 2); margin-right: calc(0px / 2); } .framer-Fi6F4.framer-v-15o8qgh.framer-fke84z > :first-child { margin-left: 0px; } .framer-Fi6F4.framer-v-15o8qgh.framer-fke84z > :last-child { margin-right: 0px; } }\",...sharedStyle.css,'.framer-Fi6F4[data-border=\"true\"]::after, .framer-Fi6F4 [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; pointer-events: none; }'];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 34\n * @framerIntrinsicWidth 184\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"auto\",\"fixed\"]},\"L82Oy0Uy8\":{\"layout\":[\"auto\",\"fixed\"]},\"QOjFoD6FQ\":{\"layout\":[\"auto\",\"fixed\"]},\"LE7kF5pDg\":{\"layout\":[\"auto\",\"fixed\"]},\"uqgKD12hN\":{\"layout\":[\"auto\",\"fixed\"]},\"v93HMl6yN\":{\"layout\":[\"auto\",\"fixed\"]},\"lege8jhG5\":{\"layout\":[\"auto\",\"fixed\"]},\"koRnaCqak\":{\"layout\":[\"auto\",\"fixed\"]},\"gEEuBxcuo\":{\"layout\":[\"auto\",\"fixed\"]},\"OTxRsPyoT\":{\"layout\":[\"auto\",\"fixed\"]},\"OTbWN2TZT\":{\"layout\":[\"auto\",\"fixed\"]},\"Y1SXxShFA\":{\"layout\":[\"auto\",\"fixed\"]},\"K4IpWKVWV\":{\"layout\":[\"auto\",\"fixed\"]},\"TAjLhqqYm\":{\"layout\":[\"auto\",\"fixed\"]},\"qBt5SifOn\":{\"layout\":[\"auto\",\"fixed\"]},\"BXFrwHrga\":{\"layout\":[\"auto\",\"fixed\"]}}}\n * @framerVariables {\"gW2IdKNHn\":\"title\",\"OA2ahGR0N\":\"icon\",\"Urz2Ffy21\":\"icon1\",\"xjfxHTVGH\":\"arrow\",\"FdDV8gLxh\":\"background\",\"DZNn6_WWp\":\"link\",\"uirRaCarc\":\"newTab\",\"x_8VxILUS\":\"tap\",\"WJoF2TywT\":\"color\",\"CiwGQDcAN\":\"arrowVariant\",\"csPpyV4tk\":\"hoverArrowVariant\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerAiU29R1w5=withCSS(Component,css,\"framer-Fi6F4\");export default FramerAiU29R1w5;FramerAiU29R1w5.displayName=\"Buttons / Button\";FramerAiU29R1w5.defaultProps={height:34,width:184};addPropertyControls(FramerAiU29R1w5,{variant:{options:[\"YD2gIXV2L\",\"L82Oy0Uy8\",\"QOjFoD6FQ\",\"LE7kF5pDg\",\"uqgKD12hN\",\"v93HMl6yN\",\"lege8jhG5\",\"koRnaCqak\"],optionTitles:[\"Primary\",\"Secondary\",\"Transparent\",\"Color\",\"Color Cycle\",\"Transparent \u2013\\xa0Light\",\"NoAnimation\",\"External\"],title:\"Variant\",type:ControlType.Enum},gW2IdKNHn:{defaultValue:\"Try Twingate for Free\",displayTextArea:false,placeholder:\"\",title:\"Title\",type:ControlType.String},OA2ahGR0N:{defaultValue:false,title:\"Icon\",type:ControlType.Boolean},Urz2Ffy21:(LogosControls===null||LogosControls===void 0?void 0:LogosControls[\"icon\"])&&{...LogosControls[\"icon\"],defaultValue:\"Terraform\",description:undefined,hidden:undefined,title:\"Icon\"},xjfxHTVGH:{defaultValue:true,title:\"Arrow\",type:ControlType.Boolean},FdDV8gLxh:{defaultValue:'var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95)) /* {\"name\":\"Primary\"} */',title:\"Background\",type:ControlType.Color},DZNn6_WWp:{title:\"Link\",type:ControlType.Link},uirRaCarc:{defaultValue:false,title:\"New Tab\",type:ControlType.Boolean},x_8VxILUS:{title:\"Tap\",type:ControlType.EventHandler},WJoF2TywT:{defaultValue:'var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17)) /* {\"name\":\"Gray 900\"} */',title:\"Color\",type:ControlType.Color},CiwGQDcAN:(GraphicsButtonArrowControls===null||GraphicsButtonArrowControls===void 0?void 0:GraphicsButtonArrowControls[\"variant\"])&&{...GraphicsButtonArrowControls[\"variant\"],defaultValue:\"BNbfbktEW\",description:undefined,hidden:undefined,title:\"Arrow Variant\"},csPpyV4tk:(GraphicsButtonArrowControls===null||GraphicsButtonArrowControls===void 0?void 0:GraphicsButtonArrowControls[\"variant\"])&&{...GraphicsButtonArrowControls[\"variant\"],defaultValue:\"m9F2Vlw0F\",description:undefined,hidden:undefined,title:\"Hover Arrow Variant\"}});addFonts(FramerAiU29R1w5,[{explicitInter:true,fonts:[{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://app.framerstatic.com/Inter-Regular.cyrillic-ext-CFTLRB35.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://app.framerstatic.com/Inter-Regular.cyrillic-KKLZBALH.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+1F00-1FFF\",url:\"https://app.framerstatic.com/Inter-Regular.greek-ext-ULEBLIFV.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0370-03FF\",url:\"https://app.framerstatic.com/Inter-Regular.greek-IRHSNFQB.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://app.framerstatic.com/Inter-Regular.latin-ext-VZDUGU3Q.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://app.framerstatic.com/Inter-Regular.latin-JLQMKCHE.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://app.framerstatic.com/Inter-Regular.vietnamese-QK7VSWXK.woff2\",weight:\"400\"}]},...LogosFonts,...GraphicsButtonArrowFonts,...ArrowFonts,...getFontsFromSharedStyle(sharedStyle.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerAiU29R1w5\",\"slots\":[],\"annotations\":{\"framerVariables\":\"{\\\"gW2IdKNHn\\\":\\\"title\\\",\\\"OA2ahGR0N\\\":\\\"icon\\\",\\\"Urz2Ffy21\\\":\\\"icon1\\\",\\\"xjfxHTVGH\\\":\\\"arrow\\\",\\\"FdDV8gLxh\\\":\\\"background\\\",\\\"DZNn6_WWp\\\":\\\"link\\\",\\\"uirRaCarc\\\":\\\"newTab\\\",\\\"x_8VxILUS\\\":\\\"tap\\\",\\\"WJoF2TywT\\\":\\\"color\\\",\\\"CiwGQDcAN\\\":\\\"arrowVariant\\\",\\\"csPpyV4tk\\\":\\\"hoverArrowVariant\\\"}\",\"framerDisplayContentsDiv\":\"false\",\"framerIntrinsicWidth\":\"184\",\"framerComponentViewportWidth\":\"true\",\"framerImmutableVariables\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"L82Oy0Uy8\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"QOjFoD6FQ\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"LE7kF5pDg\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"uqgKD12hN\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"v93HMl6yN\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"lege8jhG5\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"koRnaCqak\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"gEEuBxcuo\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"OTxRsPyoT\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"OTbWN2TZT\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"Y1SXxShFA\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"K4IpWKVWV\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"TAjLhqqYm\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"qBt5SifOn\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"BXFrwHrga\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]}}}\",\"framerIntrinsicHeight\":\"34\",\"framerContractVersion\":\"1\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./AiU29R1w5.map", "import{fontStore}from\"framer\";fontStore.loadWebFontsFromSelectors([\"CUSTOM;TT Hoves Medium\"]);export const fonts=[{family:\"TT Hoves Medium\",moduleAsset:{localModuleIdentifier:\"local-module:css/M6hbwtZyh:default\",url:\"assets/M4cAr8oQzbyO9Ynb0WkinOqcoI.woff2\"},url:new URL(\"assets/M4cAr8oQzbyO9Ynb0WkinOqcoI.woff2\",\"https://framerusercontent.com/modules/l8zqelXHCgG4xqGiBZjD/MoSFg6TCq18gonvBRGK7/M6hbwtZyh.js\").href}];export const css=['.framer-VhvJl .framer-styles-preset-87abjg:not(.rich-text-wrapper), .framer-VhvJl .framer-styles-preset-87abjg.rich-text-wrapper p, .framer-VhvJl .framer-styles-preset-87abjg.rich-text-wrapper [data-preset-tag=\"p\"] { --framer-font-family: \"TT Hoves Medium\", serif; --framer-font-size: 15px; --framer-font-style: normal; --framer-font-weight: 400; --framer-letter-spacing: 0px; --framer-line-height: 1.5em; --framer-paragraph-spacing: 0px; --framer-text-alignment: start; --framer-text-color: var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, #ffffff); --framer-text-decoration: none; --framer-text-transform: none; }','@media (max-width: 1199px) and (min-width: 810px) { .framer-VhvJl .framer-styles-preset-87abjg:not(.rich-text-wrapper), .framer-VhvJl .framer-styles-preset-87abjg.rich-text-wrapper p, .framer-VhvJl .framer-styles-preset-87abjg.rich-text-wrapper [data-preset-tag=\"p\"] { --framer-font-family: \"TT Hoves Medium\", serif; --framer-font-size: 15px; --framer-font-style: normal; --framer-font-weight: 400; --framer-letter-spacing: 0px; --framer-line-height: 1.5em; --framer-paragraph-spacing: 0px; --framer-text-alignment: start; --framer-text-color: var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, #ffffff); --framer-text-decoration: none; --framer-text-transform: none; } }','@media (max-width: 809px) and (min-width: 0px) { .framer-VhvJl .framer-styles-preset-87abjg:not(.rich-text-wrapper), .framer-VhvJl .framer-styles-preset-87abjg.rich-text-wrapper p, .framer-VhvJl .framer-styles-preset-87abjg.rich-text-wrapper [data-preset-tag=\"p\"] { --framer-font-family: \"TT Hoves Medium\", serif; --framer-font-size: 15px; --framer-font-style: normal; --framer-font-weight: 400; --framer-letter-spacing: 0px; --framer-line-height: 1.5em; --framer-paragraph-spacing: 0px; --framer-text-alignment: start; --framer-text-color: var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, #ffffff); --framer-text-decoration: none; --framer-text-transform: none; } }'];export const className=\"framer-VhvJl\";\nexport const __FramerMetadata__ = {\"exports\":{\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}", "var t,e,r,n,i,s=Object.create,o=Object.defineProperty,a=Object.getOwnPropertyDescriptor,l=Object.getOwnPropertyNames,u=Object.getPrototypeOf,f=Object.prototype.hasOwnProperty,h=(t,e)=>function(){return e||(0,t[l(t)[0]])((e={exports:{}}).exports,e),e.exports;},c=(t,e,r,n)=>{if(e&&\"object\"==typeof e||\"function\"==typeof e)for(let i of l(e))f.call(t,i)||i===r||o(t,i,{get:()=>e[i],enumerable:!(n=a(e,i))||n.enumerable});return t;},p=(t,e,r)=>(r=null!=t?s(u(t)):{},c(// If the importer is in node compatibility mode or this is not an ESM\n    // file that has been converted to a CommonJS file using a Babel-\n    // compatible transform (i.e. \"__esModule\" has not been set), then set\n    // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n    !e&&t&&t.__esModule?r:o(r,\"default\",{value:t,enumerable:!0}),t)),d=h({\"../../../node_modules/dataloader/index.js\"(t,e){var r,n=/* @__PURE__ */function(){function t(t,e){if(\"function\"!=typeof t)throw TypeError(\"DataLoader must be constructed with a function which accepts Array<key> and returns Promise<Array<value>>, but got: \"+t+\".\");this._batchLoadFn=t,this._maxBatchSize=function(t){if(!(!t||!1!==t.batch))return 1;var e=t&&t.maxBatchSize;if(void 0===e)return 1/0;if(\"number\"!=typeof e||e<1)throw TypeError(\"maxBatchSize must be a positive number: \"+e);return e;}(e),this._batchScheduleFn=function(t){var e=t&&t.batchScheduleFn;if(void 0===e)return i;if(\"function\"!=typeof e)throw TypeError(\"batchScheduleFn must be a function: \"+e);return e;}(e),this._cacheKeyFn=function(t){var e=t&&t.cacheKeyFn;if(void 0===e)return function(t){return t;};if(\"function\"!=typeof e)throw TypeError(\"cacheKeyFn must be a function: \"+e);return e;}(e),this._cacheMap=function(t){if(!(!t||!1!==t.cache))return null;var e=t&&t.cacheMap;if(void 0===e)return /* @__PURE__ */new Map;if(null!==e){var r=[\"get\",\"set\",\"delete\",\"clear\"].filter(function(t){return e&&\"function\"!=typeof e[t];});if(0!==r.length)throw TypeError(\"Custom cacheMap missing methods: \"+r.join(\", \"));}return e;}(e),this._batch=null,this.name=e&&e.name?e.name:null;}var e=t.prototype;return e.load=function(t){if(null==t)throw TypeError(\"The loader.load() function must be called with a value, but got: \"+String(t)+\".\");var e=function(t){var e=t._batch;if(null!==e&&!e.hasDispatched&&e.keys.length<t._maxBatchSize)return e;var r={hasDispatched:!1,keys:[],callbacks:[]};return t._batch=r,t._batchScheduleFn(function(){(function(t,e){var r;if(e.hasDispatched=!0,0===e.keys.length){o(e);return;}try{r=t._batchLoadFn(e.keys);}catch(r){return s(t,e,TypeError(\"DataLoader must be constructed with a function which accepts Array<key> and returns Promise<Array<value>>, but the function errored synchronously: \"+String(r)+\".\"));}if(!r||\"function\"!=typeof r.then)return s(t,e,TypeError(\"DataLoader must be constructed with a function which accepts Array<key> and returns Promise<Array<value>>, but the function did not return a Promise: \"+String(r)+\".\"));r.then(function(t){if(!a(t))throw TypeError(\"DataLoader must be constructed with a function which accepts Array<key> and returns Promise<Array<value>>, but the function did not return a Promise of an Array: \"+String(t)+\".\");if(t.length!==e.keys.length)throw TypeError(\"DataLoader must be constructed with a function which accepts Array<key> and returns Promise<Array<value>>, but the function did not return a Promise of an Array of the same length as the Array of keys.\\n\\nKeys:\\n\"+String(e.keys)+\"\\n\\nValues:\\n\"+String(t));o(e);for(var r=0;r<e.callbacks.length;r++){var n=t[r];n instanceof Error?e.callbacks[r].reject(n):e.callbacks[r].resolve(n);}}).catch(function(r){s(t,e,r);});})(t,r);}),r;}(this),r=this._cacheMap,n=this._cacheKeyFn(t);if(r){var i=r.get(n);if(i){var l=e.cacheHits||(e.cacheHits=[]);return new Promise(function(t){l.push(function(){t(i);});});}}e.keys.push(t);var u=new Promise(function(t,r){e.callbacks.push({resolve:t,reject:r});});return r&&r.set(n,u),u;},e.loadMany=function(t){if(!a(t))throw TypeError(\"The loader.loadMany() function must be called with Array<key> but got: \"+t+\".\");for(var e=[],r=0;r<t.length;r++)e.push(this.load(t[r]).catch(function(t){return t;}));return Promise.all(e);},e.clear=function(t){var e=this._cacheMap;if(e){var r=this._cacheKeyFn(t);e.delete(r);}return this;},e.clearAll=function(){var t=this._cacheMap;return t&&t.clear(),this;},e.prime=function(t,e){var r=this._cacheMap;if(r){var n,i=this._cacheKeyFn(t);void 0===r.get(i)&&(e instanceof Error?(n=Promise.reject(e)).catch(function(){}):n=Promise.resolve(e),r.set(i,n));}return this;},t;}(),i=\"object\"==typeof process&&\"function\"==typeof process.nextTick?function(t){r||(r=Promise.resolve()),r.then(function(){process.nextTick(t);});}:\"function\"==typeof setImmediate?function(t){setImmediate(t);}:function(t){setTimeout(t);};function s(t,e,r){o(e);for(var n=0;n<e.keys.length;n++)t.clear(e.keys[n]),e.callbacks[n].reject(r);}function o(t){if(t.cacheHits)for(var e=0;e<t.cacheHits.length;e++)t.cacheHits[e]();}function a(t){return\"object\"==typeof t&&null!==t&&\"number\"==typeof t.length&&(0===t.length||t.length>0&&Object.prototype.hasOwnProperty.call(t,t.length-1));}e.exports=n;}}),g=h({\"../../../node_modules/splaytree/dist/splay.js\"(t,e){var r;r=function(){var t=function(t,e){this.next=null,this.key=t,this.data=e,this.left=null,this.right=null;};function e(t,e){return t>e?1:t<e?-1:0;}function r(e,r,n){for(var i=new t(null,null),s=i,o=i;;){var a=n(e,r.key);if(a<0){if(null===r.left)break;if(0>n(e,r.left.key)){var l=r.left;if(r.left=l.right,l.right=r,null===(r=l).left)break;}o.left=r,o=r,r=r.left;}else if(a>0){if(null===r.right)break;if(n(e,r.right.key)>0){var l=r.right;if(r.right=l.left,l.left=r,null===(r=l).right)break;}s.right=r,s=r,r=r.right;}else break;}return s.right=r.left,o.left=r.right,r.left=i.right,r.right=i.left,r;}function n(e,n,i,s){var o=new t(e,n);if(null===i)return o.left=o.right=null,o;i=r(e,i,s);var a=s(e,i.key);return a<0?(o.left=i.left,o.right=i,i.left=null):a>=0&&(o.right=i.right,o.left=i,i.right=null),o;}function i(t,e,n){var i=null,s=null;if(e){e=r(t,e,n);var o=n(e.key,t);0===o?(i=e.left,s=e.right):o<0?(s=e.right,e.right=null,i=e):(i=e.left,e.left=null,s=e);}return{left:i,right:s};}return /** @class */function(){function s(t){void 0===t&&(t=e),this._root=null,this._size=0,this._comparator=t;}return s.prototype.insert=function(t,e){return this._size++,this._root=n(t,e,this._root,this._comparator);},s.prototype.add=function(e,n){var i=new t(e,n);null===this._root&&(i.left=i.right=null,this._size++,this._root=i);var s=this._comparator,o=r(e,this._root,s),a=s(e,o.key);return 0===a?this._root=o:(a<0?(i.left=o.left,i.right=o,o.left=null):a>0&&(i.right=o.right,i.left=o,o.right=null),this._size++,this._root=i),this._root;},s.prototype.remove=function(t){this._root=this._remove(t,this._root,this._comparator);},s.prototype._remove=function(t,e,n){var i;return null===e?null:(e=r(t,e,n),0===n(t,e.key))?(null===e.left?i=e.right:(i=r(t,e.left,n)).right=e.right,this._size--,i):e;},s.prototype.pop=function(){var t=this._root;if(t){for(;t.left;)t=t.left;return this._root=r(t.key,this._root,this._comparator),this._root=this._remove(t.key,this._root,this._comparator),{key:t.key,data:t.data};}return null;},s.prototype.findStatic=function(t){for(var e=this._root,r=this._comparator;e;){var n=r(t,e.key);if(0===n)return e;e=n<0?e.left:e.right;}return null;},s.prototype.find=function(t){return this._root&&(this._root=r(t,this._root,this._comparator),0!==this._comparator(t,this._root.key))?null:this._root;},s.prototype.contains=function(t){for(var e=this._root,r=this._comparator;e;){var n=r(t,e.key);if(0===n)return!0;e=n<0?e.left:e.right;}return!1;},s.prototype.forEach=function(t,e){for(var r=this._root,n=[],i=!1;!i;)null!==r?(n.push(r),r=r.left):0!==n.length?(r=n.pop(),t.call(e,r),r=r.right):i=!0;return this;},s.prototype.range=function(t,e,r,n){for(var i=[],s=this._comparator,o=this._root;0!==i.length||o;)if(o)i.push(o),o=o.left;else{if(s((o=i.pop()).key,e)>0)break;if(s(o.key,t)>=0&&r.call(n,o))return this;o=o.right;}return this;},s.prototype.keys=function(){var t=[];return this.forEach(function(e){var r=e.key;return t.push(r);}),t;},s.prototype.values=function(){var t=[];return this.forEach(function(e){var r=e.data;return t.push(r);}),t;},s.prototype.min=function(){return this._root?this.minNode(this._root).key:null;},s.prototype.max=function(){return this._root?this.maxNode(this._root).key:null;},s.prototype.minNode=function(t){if(void 0===t&&(t=this._root),t)for(;t.left;)t=t.left;return t;},s.prototype.maxNode=function(t){if(void 0===t&&(t=this._root),t)for(;t.right;)t=t.right;return t;},s.prototype.at=function(t){for(var e=this._root,r=!1,n=0,i=[];!r;)if(e)i.push(e),e=e.left;else if(i.length>0){if(e=i.pop(),n===t)return e;n++,e=e.right;}else r=!0;return null;},s.prototype.next=function(t){var e=this._root,r=null;if(t.right){for(r=t.right;r.left;)r=r.left;return r;}for(var n=this._comparator;e;){var i=n(t.key,e.key);if(0===i)break;i<0?(r=e,e=e.left):e=e.right;}return r;},s.prototype.prev=function(t){var e=this._root,r=null;if(null!==t.left){for(r=t.left;r.right;)r=r.right;return r;}for(var n=this._comparator;e;){var i=n(t.key,e.key);if(0===i)break;i<0?e=e.left:(r=e,e=e.right);}return r;},s.prototype.clear=function(){return this._root=null,this._size=0,this;},s.prototype.toList=function(){return function(e){for(var r=e,n=[],i=!1,s=new t(null,null),o=s;!i;)r?(n.push(r),r=r.left):n.length>0?r=(r=o=o.next=n.pop()).right:i=!0;return o.next=null,s.next;}(this._root);},s.prototype.load=function(e,r,n){void 0===r&&(r=[]),void 0===n&&(n=!1);var i=e.length,s=this._comparator;if(n&&function t(e,r,n,i,s){if(!(n>=i)){for(var o=e[n+i>>1],a=n-1,l=i+1;;){do a++;while(0>s(e[a],o))do l--;while(s(e[l],o)>0)if(a>=l)break;var u=e[a];e[a]=e[l],e[l]=u,u=r[a],r[a]=r[l],r[l]=u;}t(e,r,n,l,s),t(e,r,l+1,i,s);}}(e,r,0,i-1,s),null===this._root)this._root=function e(r,n,i,s){var o=s-i;if(o>0){var a=i+Math.floor(o/2),l=r[a],u=n[a],f=new t(l,u);return f.left=e(r,n,i,a),f.right=e(r,n,a+1,s),f;}return null;}(e,r,0,i),this._size=i;else{var o=function(e,r,n){for(var i=new t(null,null),s=i,o=e,a=r;null!==o&&null!==a;)0>n(o.key,a.key)?(s.next=o,o=o.next):(s.next=a,a=a.next),s=s.next;return null!==o?s.next=o:null!==a&&(s.next=a),i.next;}(this.toList(),function(e,r){for(var n=new t(null,null),i=n,s=0;s<e.length;s++)i=i.next=new t(e[s],r[s]);return i.next=null,n.next;}(e,r),s);i=this._size+i,this._root=function t(e,r,n){var i=n-r;if(i>0){var s=r+Math.floor(i/2),o=t(e,r,s),a=e.head;return a.left=o,e.head=e.head.next,a.right=t(e,s+1,n),a;}return null;}({head:o},0,i);}return this;},s.prototype.isEmpty=function(){return null===this._root;},Object.defineProperty(s.prototype,\"size\",{get:function(){return this._size;},enumerable:!0,configurable:!0}),Object.defineProperty(s.prototype,\"root\",{get:function(){return this._root;},enumerable:!0,configurable:!0}),s.prototype.toString=function(t){void 0===t&&(t=function(t){return String(t.key);});var e=[];return function t(e,r,n,i,s){if(e){i(\"\"+r+(n?\"\u2514\u2500\u2500 \":\"\u251C\u2500\u2500 \")+s(e)+\"\\n\");var o=r+(n?\"    \":\"\u2502   \");e.left&&t(e.left,o,!1,i,s),e.right&&t(e.right,o,!0,i,s);}}(this._root,\"\",!0,function(t){return e.push(t);},t),e.join(\"\");},s.prototype.update=function(t,e,s){var o,a,l=this._comparator,u=i(t,this._root,l),f=u.left,h=u.right;0>l(t,e)?h=n(e,s,h,l):f=n(e,s,f,l),this._root=(o=f,null===(a=h)?o:(null===o||((a=r(o.key,a,l)).left=o),a));},s.prototype.split=function(t){return i(t,this._root,this._comparator);},s.prototype[Symbol.iterator]=function(){var t,e,r;return function(t,e){var r,n,i,s,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1];},trys:[],ops:[]};return s={next:a(0),throw:a(1),return:a(2)},\"function\"==typeof Symbol&&(s[Symbol.iterator]=function(){return this;}),s;function a(s){return function(a){return function(s){if(r)throw TypeError(\"Generator is already executing.\");for(;o;)try{if(r=1,n&&(i=2&s[0]?n.return:s[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,s[1])).done)return i;switch(n=0,i&&(s=[2&s[0],i.value]),s[0]){case 0:case 1:i=s;break;case 4:return o.label++,{value:s[1],done:!1};case 5:o.label++,n=s[1],s=[0];continue;case 7:s=o.ops.pop(),o.trys.pop();continue;default:if(!(i=(i=o.trys).length>0&&i[i.length-1])&&(6===s[0]||2===s[0])){o=0;continue;}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]<i[3])){o.label=s[1];break;}if(6===s[0]&&o.label<i[1]){o.label=i[1],i=s;break;}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(s);break;}i[2]&&o.ops.pop(),o.trys.pop();continue;}s=e.call(t,o);}catch(t){s=[6,t],n=0;}finally{r=i=0;}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0};}([s,a]);};}}(this,function(n){switch(n.label){case 0:t=this._root,e=[],r=!1,n.label=1;case 1:if(r)return[3,6];if(!(null!==t))return[3,2];return e.push(t),t=t.left,[3,5];case 2:if(!(0!==e.length))return[3,4];return[4,t=e.pop()];case 3:return n.sent(),t=t.right,[3,5];case 4:r=!0,n.label=5;case 5:return[3,1];case 6:return[2];}});},s;}();},\"object\"==typeof t&&void 0!==e?e.exports=r():\"function\"==typeof define&&define.amd?define(r):t.SplayTree=r();}}),v=h({\"../../../node_modules/whatwg-mimetype/lib/utils.js\"(t){t.removeLeadingAndTrailingHTTPWhitespace=t=>t.replace(/^[ \\t\\n\\r]+/u,\"\").replace(/[ \\t\\n\\r]+$/u,\"\"),t.removeTrailingHTTPWhitespace=t=>t.replace(/[ \\t\\n\\r]+$/u,\"\"),t.isHTTPWhitespaceChar=t=>\" \"===t||\"\t\"===t||\"\\n\"===t||\"\\r\"===t,t.solelyContainsHTTPTokenCodePoints=t=>/^[-!#$%&'*+.^_`|~A-Za-z0-9]*$/u.test(t),t.soleyContainsHTTPQuotedStringTokenCodePoints=t=>/^[\\t\\u0020-\\u007E\\u0080-\\u00FF]*$/u.test(t),t.asciiLowercase=t=>t.replace(/[A-Z]/ug,t=>t.toLowerCase()),t.collectAnHTTPQuotedString=(t,e)=>{let r=\"\";for(e++;;){for(;e<t.length&&'\"'!==t[e]&&\"\\\\\"!==t[e];)r+=t[e],++e;if(e>=t.length)break;let n=t[e];if(++e,\"\\\\\"===n){if(e>=t.length){r+=\"\\\\\";break;}r+=t[e],++e;}else break;}return[r,e];};}}),y=h({\"../../../node_modules/whatwg-mimetype/lib/mime-type-parameters.js\"(t,e){var{asciiLowercase:r,solelyContainsHTTPTokenCodePoints:n,soleyContainsHTTPQuotedStringTokenCodePoints:i}=v();e.exports=class{get size(){return this._map.size;}get(t){return t=r(String(t)),this._map.get(t);}has(t){return t=r(String(t)),this._map.has(t);}set(t,e){if(t=r(String(t)),e=String(e),!n(t))throw Error(`Invalid MIME type parameter name \"${t}\": only HTTP token code points are valid.`);if(!i(e))throw Error(`Invalid MIME type parameter value \"${e}\": only HTTP quoted-string token code points are valid.`);return this._map.set(t,e);}clear(){this._map.clear();}delete(t){return t=r(String(t)),this._map.delete(t);}forEach(t,e){this._map.forEach(t,e);}keys(){return this._map.keys();}values(){return this._map.values();}entries(){return this._map.entries();}[Symbol.iterator](){return this._map[Symbol.iterator]();}constructor(t){this._map=t;}};}}),w=h({\"../../../node_modules/whatwg-mimetype/lib/parser.js\"(t,e){var{removeLeadingAndTrailingHTTPWhitespace:r,removeTrailingHTTPWhitespace:n,isHTTPWhitespaceChar:i,solelyContainsHTTPTokenCodePoints:s,soleyContainsHTTPQuotedStringTokenCodePoints:o,asciiLowercase:a,collectAnHTTPQuotedString:l}=v();e.exports=t=>{t=r(t);let e=0,u=\"\";for(;e<t.length&&\"/\"!==t[e];)u+=t[e],++e;if(0===u.length||!s(u)||e>=t.length)return null;++e;let f=\"\";for(;e<t.length&&\";\"!==t[e];)f+=t[e],++e;if(0===(f=n(f)).length||!s(f))return null;let h={type:a(u),subtype:a(f),parameters:/* @__PURE__ */new Map};for(;e<t.length;){for(++e;i(t[e]);)++e;let r=\"\";for(;e<t.length&&\";\"!==t[e]&&\"=\"!==t[e];)r+=t[e],++e;if(r=a(r),e<t.length){if(\";\"===t[e])continue;++e;}let u=null;if('\"'===t[e])for([u,e]=l(t,e);e<t.length&&\";\"!==t[e];)++e;else{for(u=\"\";e<t.length&&\";\"!==t[e];)u+=t[e],++e;if(\"\"===(u=n(u)))continue;}r.length>0&&s(r)&&o(u)&&!h.parameters.has(r)&&h.parameters.set(r,u);}return h;};}}),m=h({\"../../../node_modules/whatwg-mimetype/lib/serializer.js\"(t,e){var{solelyContainsHTTPTokenCodePoints:r}=v();e.exports=t=>{let e=`${t.type}/${t.subtype}`;if(0===t.parameters.size)return e;for(let[n,i]of t.parameters)e+=\";\"+n+\"=\",r(i)&&0!==i.length||(i=i.replace(/([\"\\\\])/ug,\"\\\\$1\"),i=`\"${i}\"`),e+=i;return e;};}}),b=h({\"../../../node_modules/whatwg-mimetype/lib/mime-type.js\"(t,e){var r=y(),n=w(),i=m(),{asciiLowercase:s,solelyContainsHTTPTokenCodePoints:o}=v();e.exports=class{static parse(t){try{return new this(t);}catch(t){return null;}}get essence(){return`${this.type}/${this.subtype}`;}get type(){return this._type;}set type(t){if(0===(t=s(String(t))).length)throw Error(\"Invalid type: must be a non-empty string\");if(!o(t))throw Error(`Invalid type ${t}: must contain only HTTP token code points`);this._type=t;}get subtype(){return this._subtype;}set subtype(t){if(0===(t=s(String(t))).length)throw Error(\"Invalid subtype: must be a non-empty string\");if(!o(t))throw Error(`Invalid subtype ${t}: must contain only HTTP token code points`);this._subtype=t;}get parameters(){return this._parameters;}toString(){return i(this);}isJavaScript({prohibitParameters:t=!1}={}){switch(this._type){case\"text\":switch(this._subtype){case\"ecmascript\":case\"javascript\":case\"javascript1.0\":case\"javascript1.1\":case\"javascript1.2\":case\"javascript1.3\":case\"javascript1.4\":case\"javascript1.5\":case\"jscript\":case\"livescript\":case\"x-ecmascript\":case\"x-javascript\":return!t||0===this._parameters.size;default:return!1;}case\"application\":switch(this._subtype){case\"ecmascript\":case\"javascript\":case\"x-ecmascript\":case\"x-javascript\":return!t||0===this._parameters.size;default:return!1;}default:return!1;}}isXML(){return\"xml\"===this._subtype&&(\"text\"===this._type||\"application\"===this._type)||this._subtype.endsWith(\"+xml\");}isHTML(){return\"html\"===this._subtype&&\"text\"===this._type;}constructor(t){t=String(t);let e=n(t);if(null===e)throw Error(`Could not parse MIME type string \"${t}\"`);this._type=e.type,this._subtype=e.subtype,this._parameters=new r(e.parameters);}};}}),k=p(d());// src/code-generation/components/cms/bundled/assert.ts\nfunction _(t,e=\"Assertion failed\"){if(!t)throw Error(`Assertion Error: ${e}`);}function I(t){throw Error(`Unexpected value: ${t}`);}// src/code-generation/components/cms/bundled/BufferReader.ts\nvar S={Uint8:1,Uint16:2,Uint32:4,BigUint64:8,Int8:1,Int16:2,Int32:4,BigInt64:8,Float32:4,Float64:8},E=class{getOffset(){return this.offset;}ensureBufferLength(t){let e=this.buffer.byteLength;if(!(this.offset+t<=e))throw Error(\"Reading out of bounds\");}readUint8(){let t=S.Uint8;this.ensureBufferLength(t);let e=this.view.getUint8(this.offset);return this.offset+=t,e;}readUint16(){let t=S.Uint16;this.ensureBufferLength(t);let e=this.view.getUint16(this.offset);return this.offset+=t,e;}readUint32(){let t=S.Uint32;this.ensureBufferLength(t);let e=this.view.getUint32(this.offset);return this.offset+=t,e;}readUint64(){let t=this.readBigUint64();return Number(t);}readBigUint64(){let t=S.BigUint64;this.ensureBufferLength(t);let e=this.view.getBigUint64(this.offset);return this.offset+=t,e;}readInt8(){let t=S.Int8;this.ensureBufferLength(t);let e=this.view.getInt8(this.offset);return this.offset+=t,e;}readInt16(){let t=S.Int16;this.ensureBufferLength(t);let e=this.view.getInt16(this.offset);return this.offset+=t,e;}readInt32(){let t=S.Int32;this.ensureBufferLength(t);let e=this.view.getInt32(this.offset);return this.offset+=t,e;}readInt64(){let t=this.readBigInt64();return Number(t);}readBigInt64(){let t=S.BigInt64;this.ensureBufferLength(t);let e=this.view.getBigInt64(this.offset);return this.offset+=t,e;}readFloat32(){let t=S.Float32;this.ensureBufferLength(t);let e=this.view.getFloat32(this.offset);return this.offset+=t,e;}readFloat64(){let t=S.Float64;this.ensureBufferLength(t);let e=this.view.getFloat64(this.offset);return this.offset+=t,e;}readBuffer(t){let e=this.offset,r=e+t,n=this.buffer.slice(e,r);return this.offset=r,n;}readString(){let t=this.readUint32(),e=this.readBuffer(t);return this.decoder.decode(e);}readJson(){let t=this.readString();return JSON.parse(t);}constructor(t){this.buffer=t,this.offset=0,this.view=new DataView(this.buffer),this.decoder=new TextDecoder;}};// src/code-generation/components/cms/bundled/DatabaseDictionaryIndex.ts\nimport{ControlType as U}from\"framer\";// src/utils/typeChecks.ts\nfunction x(t){return Number.isFinite(t);}function M(t){return void 0===t;}function L(t){return null==t;}// ../../shared/src/Mixed.ts\nvar B=Symbol(\"Mixed\");function T(){return\"undefined\"==typeof window?{}:t||(t=P());}function P(){var t,e,r;let n;let i=window.location,s=null==(t=null==window?void 0:window.bootstrap)?void 0:t.services;if(s)return s;try{let t=window.top;if(n=t.location.origin,s=null==(r=null==(e=window.top)?void 0:e.bootstrap)?void 0:r.services)return s;}catch(t){}if(n&&n!==i.origin)throw Error(`Unexpectedly embedded by ${n} (expected ${i.origin})`);if(i.origin.endsWith(\"framer.com\")||i.origin.endsWith(\"framer.dev\"))throw Error(\"ServiceMap data was not provided in document\");try{let t=new URLSearchParams(i.search).get(\"services\")||new URLSearchParams(i.hash.substring(1)).get(\"services\");t&&(s=JSON.parse(t));}catch(t){}if(s&&\"object\"==typeof s&&s.api)return s;throw Error(\"ServiceMap requested but not available\");}// ../../shared/src/assert.ts\nfunction j(t,...e){var r,n;if(t)return;let i=Error(\"Assertion Error\"+(e.length>0?\": \"+e.join(\" \"):\"\"));if(i.stack)try{let t=i.stack.split(\"\\n\");(null==(r=t[1])?void 0:r.includes(\"assert\"))?(t.splice(1,1),i.stack=t.join(\"\\n\")):(null==(n=t[0])?void 0:n.includes(\"assert\"))&&(t.splice(0,1),i.stack=t.join(\"\\n\"));}catch{}throw i;}function A({error:t,tags:r,extras:n,critical:i,caller:s}){j(e,\"Set up an error callback with setErrorReporter, or configure Sentry with initializeEnvironment\");let o=F(t,s);return e({error:o,tags:{...o.tags,...r},extras:{...o.extras,...n},critical:!!i}),o;}function F(t,e=F){return t instanceof Error?t:new N(t,e);}var N=class extends Error{constructor(t,e){let r=t?JSON.stringify(t):\"No error message provided\";if(super(r),this.message=r,e&&Error.captureStackTrace)Error.captureStackTrace(this,e);else try{throw Error();}catch(t){this.stack=t.stack;}}};// ../../shared/src/logger.ts\nfunction $(t,e=0,r=/* @__PURE__ */new Set){var n,i;if(null===t)return t;if(\"function\"==typeof t)return`[Function: ${null!=(n=t.name)?n:\"unknown\"}]`;if(\"object\"!=typeof t)return t;if(t instanceof Error)return`[${t.toString()}]`;if(r.has(t))return\"[Circular]\";if(e>2)return\"...\";r.add(t);try{if(\"toJSON\"in t&&\"function\"==typeof t.toJSON)return $(t.toJSON(),e+1,r);if(Array.isArray(t))return t.map(t=>$(t,e+1,r));{if(Object.getPrototypeOf(t)!==Object.prototype)return`[Object: ${\"__class\"in t&&t.__class||(null==(i=t.constructor)?void 0:i.name)}]`;let n={};for(let[i,s]of Object.entries(t))n[i]=$(s,e+1,r);return n;}}catch(t){return`[Throws: ${t instanceof Error?t.message:t}]`;}finally{r.delete(t);}}var O=[\"trace\",\"debug\",\"info\",\"warn\",\"error\"],D=[\":trace\",\":debug\",\":info\",\":warn\",\":error\"];function C(t,e){let r=[];for(let n of t.split(/[ ,]/)){let t=n.trim();if(0===t.length)continue;let i=1/* Debug */,s=!1;t.startsWith(\"-\")&&(t=t.slice(1),i=3/* Warn */,s=!0);for(let e=0;e<=4/* Error */;e++){let r=D[e];if(r&&t.endsWith(r)){i=e,s&&(i+=1),0===(t=t.slice(0,t.length-r.length)).length&&(t=\"*\");break;}}let o=RegExp(\"^\"+t.replace(/\\*/g,\".*\")+\"$\"),a=0;for(let t of e)t.id.match(o)&&(t.level=i,++a);0===a&&r.push(n);}return r;}var q=class{toMessage(){if(this.stringPrefix)return this.parts;let t=[new Date(this.time).toISOString().substr(-14,14),O[this.level]+\": [\"+this.logger.id+\"]\"],e=0;for(;e<this.parts.length;e++){let r=this.parts[e];if(\"string\"==typeof r){t.push(r);continue;}break;}return this.stringPrefix=t.join(\" \"),this.parts.splice(0,e,this.stringPrefix),this.parts;}toString(){return this.toMessage().map(t=>{var e,r;let n=typeof t;if(\"string\"===n)return t;if(\"function\"===n)return`[Function: ${null!=(e=t.name)?e:\"unknown\"}]`;if(t instanceof Error)return null!=(r=t.stack)?r:t.toString();let i=JSON.stringify($(t));return(null==i?void 0:i.length)>253?i.slice(0,250)+\"...\":i;}).join(\" \");}constructor(t,e,r){this.logger=t,this.level=e,this.parts=r,this.id=q.nextId++,this.time=Date.now();}},z=q;z.nextId=0;var R=\"app:info\",J=\"undefined\"!=typeof process&&!!process.kill,W=J&&!1;W?R=\"-:warn\":J&&(R=\"\");try{\"undefined\"!=typeof window&&window.localStorage&&(R=window.localStorage.logLevel||R);}catch{}try{\"undefined\"!=typeof process&&(R=process.env.DEBUG||R);}catch{}try{\"undefined\"!=typeof window&&Object.assign(window,{setLogLevel:Y});}catch{}try{\"undefined\"!=typeof window&&window.postMessage&&window.top===window&&window.addEventListener(\"message\",t=>{if(!t.data||\"object\"!=typeof t.data)return;let{loggerId:e,level:r,parts:n,printed:i}=t.data;if(\"string\"!=typeof e||!Array.isArray(n)||n.length<1||\"number\"!=typeof r)return;let s=Q(e);if(r<0/* Trace */||r>5/* NotLogging */)return;n[0]=n[0].replace(\"[\",\"*[\");let o=new z(s,r,n);o.stringPrefix=n[0],G.push(o),!i&&(s.level>r||null==console||console.log(...o.toMessage()));});}catch{}try{\"undefined\"!=typeof window&&window.postMessage&&window.top!==window&&(r=t=>{var e;try{let r=t.toMessage().map(t=>$(t)),n=t.logger,i=t.level,s=n.level<=t.level,o={loggerId:n.id,level:i,parts:r,printed:s};null==(e=window.top)||e.postMessage(o,T().app);}catch{}});}catch{}var H={},G=[],K=1e3;function V(t,e,n){let i=new z(t,e,n);for(G.push(i),null==r||r(i);G.length>K;)G.shift();return i;}function X(t){return\"number\"==typeof t&&(K=t),G;}function Q(t){let e=H[t];if(e)return e;let n=new Z(t);return H[t]=n,C(R,[n]),null==r||r(new z(n,-1,[])),n;}function Y(t,e=!0){try{\"undefined\"!=typeof window&&window.localStorage&&(window.localStorage.logLevel=t);}catch{}let r=R;R=t;let n=Object.values(H);for(let t of n)t.level=3/* Warn */;let i=C(t,n);if(i.length>0&&(null==console||console.warn(\"Some log level specs matched no loggers:\",i)),e&&G.length>0){for(let t of(null==console||console.log(\"--- LOG REPLAY ---\"),G))t.logger.level>t.level||(t.level>=3/* Warn */?null==console||console.warn(...t.toMessage()):null==console||console.log(...t.toMessage()));null==console||console.log(\"--- END OF LOG REPLAY ---\");}return r;}var Z=class{extend(t){let e=this.id+\":\"+t;return Q(e);}/** Returns the messages this logger created that are still in the global replay buffer. */getBufferedMessages(){return G.filter(t=>t.logger===this);}/** Set new level and return previous level. */setLevel(t){let e=this.level;return this.level=t,e;}/** Check if a trace messages will be output. */isLoggingTraceMessages(){return this.level>=0/* Trace */;}constructor(t,e){this.id=t,this.level=3/* Warn */,this.didLog={},/** Trace level messages are not recorded, send to parent frames, or outputted, unless the\n     * logger is current set at the trace level. */this.trace=(...t)=>{if(this.level>0/* Trace */)return;let e=V(this,0/* Trace */,t);null==console||console.log(...e.toMessage());},/** Debug level is supposed to be used for things that log often and are disabled by default. */this.debug=(...t)=>{let e=V(this,1/* Debug */,t);this.level>1/* Debug */||null==console||console.log(...e.toMessage());},/** Info level is supposed to be used for once per big user action, or maybe\n     * once per minute things. Some loggers log at this level by default. Don't\n     * overuse. */this.info=(...t)=>{let e=V(this,2/* Info */,t);this.level>2/* Info */||null==console||console.info(...e.toMessage());},this.warn=(...t)=>{let e=V(this,3/* Warn */,t);this.level>3/* Warn */||null==console||console.warn(...e.toMessage());},this.warnOncePerMinute=(t,...e)=>{let r=this.didLog[t];if(r&&r>Date.now())return;this.didLog[t]=Date.now()+6e4,e.unshift(t);let n=V(this,3/* Warn */,e);this.level>3/* Warn */||null==console||console.warn(...n.toMessage());},this.error=(...t)=>{let e=V(this,4/* Error */,t);this.level>4/* Error */||null==console||console.error(...e.toMessage());},this.errorOncePerMinute=(t,...e)=>{let r=this.didLog[t];if(r&&r>Date.now())return;this.didLog[t]=Date.now()+6e4,e.unshift(t);let n=V(this,4/* Error */,e);this.level>4/* Error */||null==console||console.error(...n.toMessage());},this.reportError=(t,e,r,n)=>{let i=X().slice(-100).map(t=>t.toString().slice(0,1e3)).join(\"\\n\"),s=A({caller:this.reportError,error:t,tags:{...r,handler:\"logger\",where:this.id},extras:{...e,logs:i},critical:null!=n?n:this.errorIsCritical});e?this.error(s,e):this.error(s);},this.reportErrorOncePerMinute=(t,e)=>{if(!tt(t))return;let r=this.didLog[t.message];r&&r>Date.now()||(this.didLog[t.message]=Date.now()+6e4,this.reportError(t,e));},this.reportCriticalError=(t,e,r)=>this.reportError(t,e,r,!0),this.errorIsCritical=null!=e?e:\"fatal\"===t||t.endsWith(\":fatal\");}};function tt(t){return Object.prototype.hasOwnProperty.call(t,\"message\");}// ../../shared/src/TaskQueues.ts\nvar te=Q(\"task-queue\"),tr=Symbol(\"missing\"),tn=\"undefined\"!=typeof window?window.location.hostname:void 0,ti=!!(tn&&[\"web.framerlocal.com\",\"localhost\",\"127.0.0.1\",\"[::1]\"].includes(tn)),ts=(()=>{if(!tn)return;if(ti)return{main:tn,previewLink:void 0};let t=tn.match(/^(([^.]+\\.)?beta\\.)?((?:development\\.)?framer\\.com)$/);if(t&&t[3])return{previewLink:t[2]&&t[0],main:t[3]};})(),to={hosts:ts,isDevelopment:(null==ts?void 0:ts.main)===\"development.framer.com\",isProduction:(null==ts?void 0:ts.main)===\"framer.com\",isLocal:ti},ta=\"dependencies\",tl=\"config\",tu=`${tl}/${ta}`,tf=`${tu}/importMap.json`,th=`${tu}/dependencies.json`,tc=Uint8Array,tp=Uint16Array,td=Int32Array,tg=new tc([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,/* unused */0,0,/* impossible */0]),tv=new tc([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,/* unused */0,0]),ty=new tc([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),tw=function(t,e){for(var r=new tp(31),n=0;n<31;++n)r[n]=e+=1<<t[n-1];for(var i=new td(r[30]),n=1;n<30;++n)for(var s=r[n];s<r[n+1];++s)i[s]=s-r[n]<<5|n;return{b:r,r:i};},tm=tw(tg,2),tb=tm.b,tk=tm.r;tb[28]=258,tk[258]=28;var t_=tw(tv,0),tI=t_.b,tS=t_.r,tE=new tp(32768);for(i=0;i<32768;++i)n=(61680&(n=(52428&(n=(43690&i)>>1|(21845&i)<<1))>>2|(13107&n)<<2))>>4|(3855&n)<<4,tE[i]=((65280&n)>>8|(255&n)<<8)>>1;var tU=function(t,e,r){for(var n,i=t.length,s=0,o=new tp(e);s<i;++s)t[s]&&++o[t[s]-1];var a=new tp(e);for(s=1;s<e;++s)a[s]=a[s-1]+o[s-1]<<1;if(r){n=new tp(1<<e);var l=15-e;for(s=0;s<i;++s)if(t[s])for(var u=s<<4|t[s],f=e-t[s],h=a[t[s]-1]++<<f,c=h|(1<<f)-1;h<=c;++h)n[tE[h]>>l]=u;}else for(s=0,n=new tp(i);s<i;++s)t[s]&&(n[s]=tE[a[t[s]-1]++]>>15-t[s]);return n;},tx=new tc(288);for(i=0;i<144;++i)tx[i]=8;for(i=144;i<256;++i)tx[i]=9;for(i=256;i<280;++i)tx[i]=7;for(i=280;i<288;++i)tx[i]=8;var tM=new tc(32);for(i=0;i<32;++i)tM[i]=5;var tL=/* @__PURE__ */tU(tx,9,0),tB=/* @__PURE__ */tU(tx,9,1),tT=/* @__PURE__ */tU(tM,5,0),tP=/* @__PURE__ */tU(tM,5,1),tj=function(t){for(var e=t[0],r=1;r<t.length;++r)t[r]>e&&(e=t[r]);return e;},tA=function(t,e,r){var n=e/8|0;return(t[n]|t[n+1]<<8)>>(7&e)&r;},tF=function(t,e){var r=e/8|0;return(t[r]|t[r+1]<<8|t[r+2]<<16)>>(7&e);},tN=function(t){return(t+7)/8|0;},t$=function(t,e,r){return(null==e||e<0)&&(e=0),(null==r||r>t.length)&&(r=t.length),new tc(t.subarray(e,r));},tO=[\"unexpected EOF\",\"invalid block type\",\"invalid length/literal\",\"invalid distance\",\"stream finished\",\"no stream handler\",,\"no callback\",\"invalid UTF-8 data\",\"extra field too long\",\"date not in range 1980-2099\",\"filename too long\",\"stream finishing\",\"invalid zip data\"],tD=function(t,e,r){var n=Error(e||tO[t]);if(n.code=t,Error.captureStackTrace&&Error.captureStackTrace(n,tD),!r)throw n;return n;},tC=function(t,e,r,n){var i=t.length,s=n?n.length:0;if(!i||e.f&&!e.l)return r||new tc(0);var o=!r,a=o||2!=e.i,l=e.i;o&&(r=new tc(3*i));var u=function(t){var e=r.length;if(t>e){var n=new tc(Math.max(2*e,t));n.set(r),r=n;}},f=e.f||0,h=e.p||0,c=e.b||0,p=e.l,d=e.d,g=e.m,v=e.n,y=8*i;do{if(!p){f=tA(t,h,1);var w=tA(t,h+1,3);if(h+=3,w){if(1==w)p=tB,d=tP,g=9,v=5;else if(2==w){var m=tA(t,h,31)+257,b=tA(t,h+10,15)+4,k=m+tA(t,h+5,31)+1;h+=14;for(var _=new tc(k),I=new tc(19),S=0;S<b;++S)I[ty[S]]=tA(t,h+3*S,7);h+=3*b;for(var E=tj(I),U=(1<<E)-1,x=tU(I,E,1),S=0;S<k;){var M=x[tA(t,h,U)];h+=15&M;var L=M>>4;if(L<16)_[S++]=L;else{var B=0,T=0;for(16==L?(T=3+tA(t,h,3),h+=2,B=_[S-1]):17==L?(T=3+tA(t,h,7),h+=3):18==L&&(T=11+tA(t,h,127),h+=7);T--;)_[S++]=B;}}var P=_.subarray(0,m),j=_.subarray(m);g=tj(P),v=tj(j),p=tU(P,g,1),d=tU(j,v,1);}else tD(1);}else{var L=tN(h)+4,A=t[L-4]|t[L-3]<<8,F=L+A;if(F>i){l&&tD(0);break;}a&&u(c+A),r.set(t.subarray(L,F),c),e.b=c+=A,e.p=h=8*F,e.f=f;continue;}if(h>y){l&&tD(0);break;}}a&&u(c+131072);for(var N=(1<<g)-1,$=(1<<v)-1,O=h;;O=h){var B=p[tF(t,h)&N],D=B>>4;if((h+=15&B)>y){l&&tD(0);break;}if(B||tD(2),D<256)r[c++]=D;else if(256==D){O=h,p=null;break;}else{var C=D-254;if(D>264){var S=D-257,q=tg[S];C=tA(t,h,(1<<q)-1)+tb[S],h+=q;}var z=d[tF(t,h)&$],R=z>>4;z||tD(3),h+=15&z;var j=tI[R];if(R>3){var q=tv[R];j+=tF(t,h)&(1<<q)-1,h+=q;}if(h>y){l&&tD(0);break;}a&&u(c+131072);var J=c+C;if(c<j){var W=s-j,H=Math.min(j,J);for(W+c<0&&tD(3);c<H;++c)r[c]=n[W+c];}for(;c<J;++c)r[c]=r[c-j];}}e.l=p,e.p=O,e.b=c,e.f=f,p&&(f=1,e.m=g,e.d=d,e.n=v);}while(!f)return c!=r.length&&o?t$(r,0,c):r.subarray(0,c);},tq=function(t,e,r){r<<=7&e;var n=e/8|0;t[n]|=r,t[n+1]|=r>>8;},tz=function(t,e,r){r<<=7&e;var n=e/8|0;t[n]|=r,t[n+1]|=r>>8,t[n+2]|=r>>16;},tR=function(t,e){for(var r=[],n=0;n<t.length;++n)t[n]&&r.push({s:n,f:t[n]});var i=r.length,s=r.slice();if(!i)return{t:tX,l:0};if(1==i){var o=new tc(r[0].s+1);return o[r[0].s]=1,{t:o,l:1};}r.sort(function(t,e){return t.f-e.f;}),r.push({s:-1,f:25001});var a=r[0],l=r[1],u=0,f=1,h=2;for(r[0]={s:-1,f:a.f+l.f,l:a,r:l};f!=i-1;)a=r[r[u].f<r[h].f?u++:h++],l=r[u!=f&&r[u].f<r[h].f?u++:h++],r[f++]={s:-1,f:a.f+l.f,l:a,r:l};for(var c=s[0].s,n=1;n<i;++n)s[n].s>c&&(c=s[n].s);var p=new tp(c+1),d=tJ(r[f-1],p,0);if(d>e){var n=0,g=0,v=d-e,y=1<<v;for(s.sort(function(t,e){return p[e.s]-p[t.s]||t.f-e.f;});n<i;++n){var w=s[n].s;if(p[w]>e)g+=y-(1<<d-p[w]),p[w]=e;else break;}for(g>>=v;g>0;){var m=s[n].s;p[m]<e?g-=1<<e-p[m]++-1:++n;}for(;n>=0&&g;--n){var b=s[n].s;p[b]==e&&(--p[b],++g);}d=e;}return{t:new tc(p),l:d};},tJ=function(t,e,r){return -1==t.s?Math.max(tJ(t.l,e,r+1),tJ(t.r,e,r+1)):e[t.s]=r;},tW=function(t){for(var e=t.length;e&&!t[--e];);for(var r=new tp(++e),n=0,i=t[0],s=1,o=function(t){r[n++]=t;},a=1;a<=e;++a)if(t[a]==i&&a!=e)++s;else{if(!i&&s>2){for(;s>138;s-=138)o(32754);s>2&&(o(s>10?s-11<<5|28690:s-3<<5|12305),s=0);}else if(s>3){for(o(i),--s;s>6;s-=6)o(8304);s>2&&(o(s-3<<5|8208),s=0);}for(;s--;)o(i);s=1,i=t[a];}return{c:r.subarray(0,n),n:e};},tH=function(t,e){for(var r=0,n=0;n<e.length;++n)r+=t[n]*e[n];return r;},tG=function(t,e,r){var n=r.length,i=tN(e+2);t[i]=255&n,t[i+1]=n>>8,t[i+2]=255^t[i],t[i+3]=255^t[i+1];for(var s=0;s<n;++s)t[i+s+4]=r[s];return(i+4+n)*8;},tK=function(t,e,r,n,i,s,o,a,l,u,f){tq(e,f++,r),++i[256];for(var h,c,p,d,g=tR(i,15),v=g.t,y=g.l,w=tR(s,15),m=w.t,b=w.l,k=tW(v),_=k.c,I=k.n,S=tW(m),E=S.c,U=S.n,x=new tp(19),M=0;M<_.length;++M)++x[31&_[M]];for(var M=0;M<E.length;++M)++x[31&E[M]];for(var L=tR(x,7),B=L.t,T=L.l,P=19;P>4&&!B[ty[P-1]];--P);var j=u+5<<3,A=tH(i,tx)+tH(s,tM)+o,F=tH(i,v)+tH(s,m)+o+14+3*P+tH(x,B)+2*x[16]+3*x[17]+7*x[18];if(l>=0&&j<=A&&j<=F)return tG(e,f,t.subarray(l,l+u));if(tq(e,f,1+(F<A)),f+=2,F<A){h=tU(v,y,0),c=v,p=tU(m,b,0),d=m;var N=tU(B,T,0);tq(e,f,I-257),tq(e,f+5,U-1),tq(e,f+10,P-4),f+=14;for(var M=0;M<P;++M)tq(e,f+3*M,B[ty[M]]);f+=3*P;for(var $=[_,E],O=0;O<2;++O)for(var D=$[O],M=0;M<D.length;++M){var C=31&D[M];tq(e,f,N[C]),f+=B[C],C>15&&(tq(e,f,D[M]>>5&127),f+=D[M]>>12);}}else h=tL,c=tx,p=tT,d=tM;for(var M=0;M<a;++M){var q=n[M];if(q>255){var C=q>>18&31;tz(e,f,h[C+257]),f+=c[C+257],C>7&&(tq(e,f,q>>23&31),f+=tg[C]);var z=31&q;tz(e,f,p[z]),f+=d[z],z>3&&(tz(e,f,q>>5&8191),f+=tv[z]);}else tz(e,f,h[q]),f+=c[q];}return tz(e,f,h[256]),f+c[256];},tV=/* @__PURE__ */new td([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),tX=/* @__PURE__ */new tc(0),tQ=function(t,e,r,n,i,s){var o=s.z||t.length,a=new tc(n+o+5*(1+Math.ceil(o/7e3))+i),l=a.subarray(n,a.length-i),u=s.l,f=7&(s.r||0);if(e){f&&(l[0]=s.r>>3);for(var h=tV[e-1],c=h>>13,p=8191&h,d=(1<<r)-1,g=s.p||new tp(32768),v=s.h||new tp(d+1),y=Math.ceil(r/3),w=2*y,m=function(e){return(t[e]^t[e+1]<<y^t[e+2]<<w)&d;},b=new td(25e3),k=new tp(288),_=new tp(32),I=0,S=0,E=s.i||0,U=0,x=s.w||0,M=0;E+2<o;++E){var L=m(E),B=32767&E,T=v[L];if(g[B]=T,v[L]=B,x<=E){var P=o-E;if((I>7e3||U>24576)&&(P>423||!u)){f=tK(t,l,0,b,k,_,S,U,M,E-M,f),U=I=S=0,M=E;for(var j=0;j<286;++j)k[j]=0;for(var j=0;j<30;++j)_[j]=0;}var A=2,F=0,N=p,$=B-T&32767;if(P>2&&L==m(E-$))for(var O=Math.min(c,P)-1,D=Math.min(32767,E),C=Math.min(258,P);$<=D&&--N&&B!=T;){if(t[E+A]==t[E+A-$]){for(var q=0;q<C&&t[E+q]==t[E+q-$];++q);if(q>A){if(A=q,F=$,q>O)break;for(var z=Math.min($,q-2),R=0,j=0;j<z;++j){var J=E-$+j&32767,W=g[J],H=J-W&32767;H>R&&(R=H,T=J);}}}T=g[B=T],$+=B-T&32767;}if(F){b[U++]=268435456|tk[A]<<18|tS[F];var G=31&tk[A],K=31&tS[F];S+=tg[G]+tv[K],++k[257+G],++_[K],x=E+A,++I;}else b[U++]=t[E],++k[t[E]];}}for(E=Math.max(E,x);E<o;++E)b[U++]=t[E],++k[t[E]];f=tK(t,l,u,b,k,_,S,U,M,E-M,f),u||(s.r=7&f|l[f/8|0]<<3,f-=7,s.h=v,s.p=g,s.i=E,s.w=x);}else{for(var E=s.w||0;E<o+u;E+=65535){var V=E+65535;V>=o&&(l[f/8|0]=u,V=o),f=tG(l,f+1,t.subarray(E,V));}s.i=o;}return t$(a,0,n+tN(f)+i);},tY=function(t,e,r,n,i){if(!i&&(i={l:1},e.dictionary)){var s=e.dictionary.subarray(-32768),o=new tc(s.length+t.length);o.set(s),o.set(t,s.length),t=o,i.w=s.length;}return tQ(t,null==e.level?6:e.level,null==e.mem?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(t.length)))):12+e.mem,r,n,i);};function tZ(t,e){return tY(t,e||{},0,0);}function t0(t,e){return tC(t,{i:2},e&&e.out,e&&e.dictionary);}var t1=\"undefined\"!=typeof TextDecoder&&/* @__PURE__ */new TextDecoder,t2=0;try{t1.decode(tX,{stream:!0}),t2=1;}catch(t){}// src/code-generation/components/cms/bundled/models/DatabaseDictionaryIndexModel.ts\nvar t3=p(g()),t6=1024,t4=1.5,t8=t=>2**t-1,t5=t=>-(2**(t-1)),t7=t=>2**(t-1)-1,t9={Uint8:0,Uint16:0,Uint32:0,Uint64:0,BigUint64:0,Int8:t5(8),Int16:t5(16),Int32:t5(32),Int64:Number.MIN_SAFE_INTEGER,BigInt64:-(BigInt(2)**BigInt(63))},et={Uint8:t8(8),Uint16:t8(16),Uint32:t8(32),Uint64:Number.MAX_SAFE_INTEGER,BigUint64:BigInt(2)**BigInt(64)-BigInt(1),Int8:t7(8),Int16:t7(16),Int32:t7(32),Int64:Number.MAX_SAFE_INTEGER,BigInt64:BigInt(2)**BigInt(63)-BigInt(1)};function ee(t,e,r,n){_(t>=e,`${t} outside lower bound for ${n}`),_(t<=r,`${t} outside upper bound for ${n}`);}var er=class{getOffset(){return this.offset;}slice(t=0,e=this.offset){return this.buffer.slice(t,e);}subarray(t=0,e=this.offset){return new Uint8Array(this.buffer,t,e);}ensureBufferLength(t){let e=this.buffer.byteLength;if(this.offset+t<=e)return;let r=new ArrayBuffer(Math.ceil(e*t4)+t);en(this.buffer,r,0),this.buffer=r,this.view=new DataView(r);}writeUint8(t){ee(t,t9.Uint8,et.Uint8,\"Uint8\");let e=S.Uint8;this.ensureBufferLength(e),this.view.setUint8(this.offset,t),this.offset+=e;}writeUint16(t){ee(t,t9.Uint16,et.Uint16,\"Uint16\");let e=S.Uint16;this.ensureBufferLength(e),this.view.setUint16(this.offset,t),this.offset+=e;}writeUint32(t){ee(t,t9.Uint32,et.Uint32,\"Uint32\");let e=S.Uint32;this.ensureBufferLength(e),this.view.setUint32(this.offset,t),this.offset+=e;}writeUint64(t){ee(t,t9.Uint64,et.Uint64,\"Uint64\");let e=BigInt(t);this.writeBigUint64(e);}writeBigUint64(t){ee(t,t9.BigUint64,et.BigUint64,\"BigUint64\");let e=S.BigUint64;this.ensureBufferLength(e),this.view.setBigUint64(this.offset,t),this.offset+=e;}writeInt8(t){ee(t,t9.Int8,et.Int8,\"Int8\");let e=S.Int8;this.ensureBufferLength(e),this.view.setInt8(this.offset,t),this.offset+=e;}writeInt16(t){ee(t,t9.Int16,et.Int16,\"Int16\");let e=S.Int16;this.ensureBufferLength(e),this.view.setInt16(this.offset,t),this.offset+=e;}writeInt32(t){ee(t,t9.Int32,et.Int32,\"Int32\");let e=S.Int32;this.ensureBufferLength(e),this.view.setInt32(this.offset,t),this.offset+=e;}writeInt64(t){ee(t,t9.Int64,et.Int64,\"Int64\");let e=BigInt(t);this.writeBigInt64(e);}writeBigInt64(t){ee(t,t9.BigInt64,et.BigInt64,\"BigInt64\");let e=S.BigInt64;this.ensureBufferLength(e),this.view.setBigInt64(this.offset,t),this.offset+=e;}writeFloat32(t){let e=S.Float32;this.ensureBufferLength(e),this.view.setFloat32(this.offset,t),this.offset+=e;}writeFloat64(t){let e=S.Float64;this.ensureBufferLength(e),this.view.setFloat64(this.offset,t),this.offset+=e;}writeBuffer(t){let e=t.byteLength;this.ensureBufferLength(e),en(t,this.buffer,this.offset),this.offset+=e;}encodeString(t){let e=this.encodedStrings.get(t);if(e)return e;let r=this.encoder.encode(t);return this.encodedStrings.set(t,r),r;}writeString(t){let e=this.encodeString(t),r=e.byteLength;this.writeUint32(r),this.writeBuffer(e);}writeJson(t){let e=JSON.stringify(t);this.writeString(e);}constructor(){this.offset=0,this.buffer=new ArrayBuffer(t6),this.view=new DataView(this.buffer),this.encoder=new TextEncoder,this.encodedStrings=/* @__PURE__ */new Map;}};function en(t,e,r){let n=new Uint8Array(t),i=new Uint8Array(e);i.set(n,r);}// src/code-generation/components/cms/bundled/models/DatabaseItemPointerModel.ts\nvar ei=class{static fromString(t){let[e,r,n]=t.split(\"/\").map(Number);return _(x(e),\"Invalid chunkId\"),_(x(r),\"Invalid offset\"),_(x(n),\"Invalid length\"),new ei(e,r,n);}toString(){return`${this.chunkId}/${this.offset}/${this.length}`;}static read(t){let e=t.readUint16(),r=t.readUint32(),n=t.readUint32();return new ei(e,r,n);}write(t){t.writeUint16(this.chunkId),t.writeUint32(this.offset),t.writeUint32(this.length);}compare(t){return this.chunkId<t.chunkId?-1:this.chunkId>t.chunkId?1:this.offset<t.offset?-1:this.offset>t.offset?1:(_(this.length===t.length),0);}constructor(t,e,r){this.chunkId=t,this.offset=e,this.length=r;}};// src/code-generation/components/cms/bundled/models/DatabaseValueModel.ts\nimport{ControlType as es}from\"framer\";function eo(t){if(null===t)return 0/* Null */;switch(t.type){case es.Boolean:return 1/* Boolean */;case es.Color:return 2/* Color */;case es.Date:return 3/* Date */;case es.Enum:return 4/* Enum */;case es.File:return 5/* File */;case es.ResponsiveImage:return 6/* ResponsiveImage */;case es.Link:return 7/* Link */;case es.Number:return 8/* Number */;case es.RichText:return 9/* RichText */;case es.String:return 10/* String */;default:I(t);}}var ea=class{static read(t){let e=t.readUint8(),r=el(e,t);return new ea(r);}write(t){let e=eo(this.value);if(t.writeUint8(e),null!==this.value)switch(this.value.type){case es.Boolean:return eu.write(t,this.value);case es.Color:return ef.write(t,this.value);case es.Date:return eh.write(t,this.value);case es.Enum:return ec.write(t,this.value);case es.File:return ep.write(t,this.value);case es.ResponsiveImage:return ed.write(t,this.value);case es.Link:return eg.write(t,this.value);case es.Number:return ev.write(t,this.value);case es.RichText:return ey.write(t,this.value);case es.String:return ew.write(t,this.value);default:I(this.value);}}static compare(t,e,r){return em(t.value,e.value,r);}constructor(t){this.value=t;}};function el(t,e){switch(t){case 0/* Null */:return null;case 1/* Boolean */:return eu.read(e);case 2/* Color */:return ef.read(e);case 3/* Date */:return eh.read(e);case 4/* Enum */:return ec.read(e);case 5/* File */:return ep.read(e);case 6/* ResponsiveImage */:return ed.read(e);case 7/* Link */:return eg.read(e);case 8/* Number */:return ev.read(e);case 9/* RichText */:return ey.read(e);case 10/* String */:return ew.read(e);default:I(t);}}var eu={read:t=>({type:es.Boolean,value:0!==t.readUint8()}),write(t,e){t.writeUint8(e.value?1:0);},compare:(t,e)=>t.value<e.value?-1:t.value>e.value?1:0},ef={read:t=>({type:es.Color,value:t.readString()}),write(t,e){t.writeString(e.value);},compare:(t,e)=>t.value<e.value?-1:t.value>e.value?1:0},eh={read(t){let e=t.readInt64(),r=new Date(e);return{type:es.Date,value:r.toISOString()};},write(t,e){let r=new Date(e.value),n=r.getTime();t.writeInt64(n);},compare(t,e){let r=new Date(t.value),n=new Date(e.value);return r<n?-1:r>n?1:0;}},ec={read:t=>({type:es.Enum,value:t.readString()}),write(t,e){t.writeString(e.value);},compare:(t,e)=>t.value<e.value?-1:t.value>e.value?1:0},ep={read:t=>({type:es.File,value:t.readString()}),write(t,e){t.writeString(e.value);},compare:(t,e)=>t.value<e.value?-1:t.value>e.value?1:0},ed={read:t=>({type:es.ResponsiveImage,value:t.readJson()}),write(t,e){t.writeJson(e.value);},compare(t,e){let r=JSON.stringify(t.value),n=JSON.stringify(e.value);return r<n?-1:r>n?1:0;}},eg={read:t=>({type:es.Link,value:t.readJson()}),write(t,e){t.writeJson(e.value);},compare(t,e){let r=JSON.stringify(t.value),n=JSON.stringify(e.value);return r<n?-1:r>n?1:0;}},ev={read:t=>({type:es.Number,value:t.readFloat64()}),write(t,e){t.writeFloat64(e.value);},compare:(t,e)=>t.value<e.value?-1:t.value>e.value?1:0},ey={read:t=>({type:es.RichText,value:t.readUint32()}),write(t,e){t.writeUint32(e.value);},compare(t,e){let r=t.value,n=e.value;return r<n?-1:r>n?1:0;}},ew={read:t=>({type:es.String,value:t.readString()}),write(t,e){t.writeString(e.value);},compare(t,e,r){let n=t.value,i=e.value;return(0/* CaseInsensitive */===r.type&&(n=t.value.toLowerCase(),i=e.value.toLowerCase()),n<i)?-1:n>i?1:0;}};function em(t,e,r){let n=eo(t),i=eo(e);if(n<i)return -1;if(n>i)return 1;if(null===t||null===e)return 0;switch(t.type){case es.Boolean:return _(e.type===es.Boolean),eu.compare(t,e,r);case es.Color:return _(e.type===es.Color),ef.compare(t,e,r);case es.Date:return _(e.type===es.Date),eh.compare(t,e,r);case es.Enum:return _(e.type===es.Enum),ec.compare(t,e,r);case es.File:return _(e.type===es.File),ep.compare(t,e,r);case es.ResponsiveImage:return _(e.type===es.ResponsiveImage),ed.compare(t,e,r);case es.Link:return _(e.type===es.Link),eg.compare(t,e,r);case es.Number:return _(e.type===es.Number),ev.compare(t,e,r);case es.RichText:return _(e.type===es.RichText),ey.compare(t,e,r);case es.String:return _(e.type===es.String),ew.compare(t,e,r);default:I(t);}}// src/code-generation/components/cms/bundled/models/DatabaseDictionaryIndexModel.ts\nvar eb=class{static deserialize(t){let e=t0(t),r=new E(e.buffer),n=r.readJson(),i=r.readUint8(),s=[];for(let t=0;t<i;t++){let t=r.readString();s.push(t);}let o=new eb(s,{collation:n}),a=r.readUint32();for(let t=0;t<a;t++){let t=[];for(let e=0;e<i;e++){let e=ea.read(r);t.push(e);}let e=ei.read(r);o.entries.insert({values:t,pointer:e});}return o;}serialize(){let t=new er;for(let e of(t.writeJson(this.options.collation),t.writeUint8(this.fieldNames.length),this.fieldNames))t.writeString(e);for(let e of(t.writeUint32(this.entries.size),this.entries)){let{values:r,pointer:n}=e.key;for(let e of r)e.write(t);n.write(t);}let e=t.subarray();return tZ(e);}addItem(t,e){let r=this.fieldNames.map(e=>{var r;return null!=(r=t.getField(e))?r:new ea(null);});this.entries.insert({values:r,pointer:e});}constructor(t,e){this.fieldNames=t,this.options=e,this.entries=new t3.default((t,e)=>{let r=t.values,n=e.values;for(let t=0;t<this.fieldNames.length;t++){let e=r[t],i=n[t];j(e,\"Left has incorrect number of field values\"),j(i,\"Right has incorrect number of field values\");let s=ea.compare(e,i,this.options.collation);if(0!==s)return s;}return t.pointer.compare(e.pointer);});}},ek=p(b()),e_=\"\\r\\n\",eI=\"--\";async function eS(t,e){let r=await fetch(t,{headers:{Range:eF(e)}});if(!r.ok)throw Error(`Request failed: ${r.status} ${r.statusText}`);let n=await r.arrayBuffer(),i=new Uint8Array(n);if(200===r.status)return e.map(t=>{if(t.to>i.length)throw Error(\"Missing data\");return i.slice(t.from,t.to);});if(206===r.status){let t=r.headers.get(\"Content-Type\");if(!t)throw Error(\"Missing Content-Type header\");let n=new eL,s=new ek.default(t);if(\"multipart\"===s.type&&\"byteranges\"===s.subtype){let t=s.parameters.get(\"boundary\");if(!t)throw Error(\"Missing boundary parameter\");let e=ex(i,t);for(let{headers:t,body:r}of e){let e=t.get(\"Content-Range\");if(!e)throw Error(\"Missing Content-Range header\");let i=eM(e);if(\"bytes\"!==i.unit)throw Error(\"Unsupported unit\");n.write(i.start,r);}}else{let t=r.headers.get(\"Content-Range\");if(!t)throw Error(\"Missing Content-Range header\");let e=eM(t);if(\"bytes\"!==e.unit)throw Error(\"Unsupported unit\");n.write(e.start,i);}return e.map(t=>n.read(t.from,t.to-t.from));}throw Error(`Unsupported response: ${r.status} ${r.statusText}`);}var eE=new TextEncoder,eU=new TextDecoder;function ex(t,e){let r=eE.encode(eI+e),n=eT(t,r);if(M(n))throw Error(\"Missing parts start\");let i=n+r.length,s=eE.encode(e_+eI+e+eI),o=eP(t,s);if(M(o))throw Error(\"Missing parts end\");let a=eE.encode(e_+eI+e),l=t.subarray(i,o),u=eB(l,a);return u.map(t=>{let e=eE.encode(e_+e_),r=eT(t,e);if(M(r))throw Error(\"Missing headers end\");let n=eE.encode(e_),i=t.subarray(0,r),s=eB(i,n),o=new Headers;for(let t of s){let e=eU.decode(t),[r,n]=e.split(\": \",2);r&&n&&o.append(r,n);}let a=r+e.length,l=t.slice(a);return{headers:o,body:l};});}function eM(t){let e=RegExp(\"^(?<unit>\\\\w+) (?<start>\\\\d+)-(?<end>\\\\d+)\\\\/(?<size>\\\\d+|\\\\*)$\",\"u\").exec(t);if(!e||!e.groups)throw Error(\"Invalid Content-Range header\");let{unit:r,start:n,end:i,size:s}=e.groups;return{unit:r,start:Number(n),end:Number(i),size:\"*\"!==s?Number(s):null};}var eL=class{read(t,e){for(let r of this.chunks){if(t<r.start)break;if(t>r.end)continue;if(t+e>r.end)break;let n=t-r.start,i=n+e;return r.data.slice(n,i);}throw Error(\"Missing data\");}write(t,e){let r=t,n=r+e.length,i=0,s=this.chunks.length;for(;i<s;i++){let t=this.chunks[i];if(_(t,\"Missing chunk\"),!(r>t.end)){if(r>t.start){let n=r-t.start,i=t.data.subarray(0,n);e=eA(i,e),r=t.start;}break;}}for(;s>i;s--){let t=this.chunks[s-1];if(_(t,\"Missing chunk\"),!(n<t.start)){if(n<t.end){let r=n-t.start,i=t.data.subarray(r);e=eA(e,i),n=t.end;}break;}}let o={start:r,end:n,data:e},a=s-i;this.chunks.splice(i,a,o);}constructor(){this.chunks=[];}};function eB(t,e){var r;let n=[];for(;t.length>0;){let i=null!=(r=eT(t,e))?r:t.length,s=t.subarray(0,i);n.push(s),t=t.subarray(i+e.length);}return n;}function eT(t,e){for(let r=0;r<t.length-e.length;r++){let n=t.subarray(r);if(ej(n,e))return r;}}function eP(t,e){for(let r=t.length-e.length;r>=0;r--){let n=t.subarray(r);if(ej(n,e))return r;}}function ej(t,e){for(let r=0;r<e.length;r++)if(t[r]!==e[r])return!1;return!0;}function eA(t,e){let r=t.length+e.length,n=new Uint8Array(r);return n.set(t,0),n.set(e,t.length),n;}function eF(t){_(t.length>0,\"Must have at least one range\");let e=[...t].sort((t,e)=>t.from-e.from),r=[];for(let t of e){let e=r.length-1,n=r[e];n&&t.from<=n.to?r[e]={from:n.from,to:Math.max(n.to,t.to)}:r.push(t);}let n=r.map(t=>`${t.from}-${t.to-1}`);return`bytes=${n.join(\",\")}`;}// src/code-generation/components/cms/bundled/DatabaseDictionaryIndex.ts\nvar eN=class{async loadModel(){let[t]=await eS(this.options.url,[this.options.range]);return _(t,\"Failed to load model\"),eb.deserialize(t);}async getModel(){return null!=this.modelPromise||(this.modelPromise=this.loadModel()),null!=this.model||(this.model=await this.modelPromise),this.model;}async lookupItems(t){var e;_(t.length===this.fields.length,\"Invalid query length\");let r=t[0];_(r,\"Invalid query length\");for(let r=1;r<t.length;r++)_((null==(e=t[r])?void 0:e.type)===\"All\"/* All */,\"Unsupported query\");let n=await this.getModel();switch(r.type){case\"All\"/* All */:return this.queryAll(n);case\"Equals\"/* Equals */:return this.queryEquals(n,r);case\"NotEquals\"/* NotEquals */:return this.queryNotEquals(n,r);case\"LessThan\"/* LessThan */:return this.queryLessThan(n,r);case\"GreaterThan\"/* GreaterThan */:return this.queryGreaterThan(n,r);case\"Contains\"/* Contains */:return this.queryContains(n,r);case\"StartsWith\"/* StartsWith */:return this.queryStartsWith(n,r);case\"EndsWith\"/* EndsWith */:return this.queryEndsWith(n,r);default:I(r);}}findItems(t,e){let r=[];for(let n of t.entries){let t=n.key.values[0];if(_(t,\"Value must exist\"),!e(t.value))continue;let i={};for(let t=0;t<this.options.fieldNames.length;t++){let e=n.key.values[t],r=this.options.fieldNames[t];_(e,\"Value must exist\"),_(r,\"Field name must exist\"),i[r]=e.value;}r.push({pointer:n.key.pointer.toString(),data:i});}return r;}queryAll(t){return this.findItems(t,()=>!0);}queryEquals(t,e){return this.findItems(t,t=>0===em(t,e.value,this.collation));}queryNotEquals(t,e){return this.findItems(t,t=>0!==em(t,e.value,this.collation));}queryLessThan(t,e){return this.findItems(t,t=>{let r=em(t,e.value,this.collation);return!L(t)&&(!!e.inclusive&&0===r||r<0);});}queryGreaterThan(t,e){return this.findItems(t,t=>{let r=em(t,e.value,this.collation);return!L(t)&&(!!e.inclusive&&0===r||r>0);});}queryContains(t,e){return this.findItems(t,t=>{var r;if((null==t?void 0:t.type)!==U.String||(null==(r=e.value)?void 0:r.type)!==U.String)return!1;let n=t.value,i=e.value.value;return 0/* CaseInsensitive */===this.collation.type&&(n=n.toLowerCase(),i=i.toLowerCase()),n.includes(i);});}queryStartsWith(t,e){return this.findItems(t,t=>{var r;if((null==t?void 0:t.type)!==U.String||(null==(r=e.value)?void 0:r.type)!==U.String)return!1;let n=t.value,i=e.value.value;return 0/* CaseInsensitive */===this.collation.type&&(n=n.toLowerCase(),i=i.toLowerCase()),n.startsWith(i);});}queryEndsWith(t,e){return this.findItems(t,t=>{var r;if((null==t?void 0:t.type)!==U.String||(null==(r=e.value)?void 0:r.type)!==U.String)return!1;let n=t.value,i=e.value.value;return 0/* CaseInsensitive */===this.collation.type&&(n=n.toLowerCase(),i=i.toLowerCase()),n.endsWith(i);});}constructor(t){this.options=t,this.supportedLookupTypes=[\"All\"/* All */,\"Equals\"/* Equals */,\"NotEquals\"/* NotEquals */,\"LessThan\"/* LessThan */,\"GreaterThan\"/* GreaterThan */,\"Contains\"/* Contains */,\"StartsWith\"/* StartsWith */,\"EndsWith\"/* EndsWith */],this.collation=this.options.collation;let e={},r=[];for(let t of this.options.fieldNames){let n=this.options.collectionSchema[t];_(n,`Missing definition for field ${t}`),e[t]=n,r.push({type:\"Identifier\",name:t});}this.schema=e,this.fields=r;}},e$=class{static read(t,e){let r=new e$,n=t.readUint32(),i=t.readBuffer(n),s=t0(new Uint8Array(i),{dictionary:e}),o=new E(s.buffer),a=o.readUint16();for(let t=0;t<a;t++){let t=o.readString(),e=ea.read(o);r.setField(t,e);}return r;}writeUncompressed(t){for(let[e,r]of(t.writeUint16(this.fields.size),this.fields))t.writeString(e),r.write(t);}write(t,e){let r=new er;this.writeUncompressed(r);let n=tZ(r.subarray(),{dictionary:e});t.writeUint32(n.byteLength),t.writeBuffer(n);}getData(){let t={};for(let[e,r]of this.fields)t[e]=r.value;return t;}setField(t,e){this.fields.set(t,e);}getField(t){return this.fields.get(t);}constructor(){this.fields=/* @__PURE__ */new Map;}},eO=class{scanItems(){return null!=this.itemsPromise||(this.itemsPromise=fetch(this.url).then(async t=>{if(!t.ok)throw Error(`Request failed: ${t.status} ${t.statusText}`);let e=await t.arrayBuffer(),r=new E(e),n=[],i=r.readUint32();for(let t=0;t<i;t++){let t=r.getOffset(),e=e$.read(r,this.compressionDictionary),i=r.getOffset()-t,s=new ei(this.id,t,i),o=s.toString(),a={pointer:o,data:e.getData()};this.itemLoader.prime(o,a),n.push(a);}return n;})),this.itemsPromise;}resolveItem(t){return this.itemLoader.load(t);}constructor(t,e,r){this.id=t,this.url=e,this.compressionDictionary=r,this.itemLoader=new k.default(async t=>{let e=t.map(t=>{let e=ei.fromString(t);return{from:e.offset,to:e.offset+e.length};}),r=await eS(this.url,e);return r.map((e,r)=>{let n=new E(e.buffer),i=e$.read(n,this.compressionDictionary),s=t[r];return _(s,\"Missing pointer\"),{pointer:s,data:i.getData()};});});}},eD=class{async scanItems(){let t=await Promise.all(this.chunks.map(async t=>t.scanItems()));return t.flat();}async resolveItems(t){return Promise.all(t.map(t=>{let e=ei.fromString(t),r=this.chunks[e.chunkId];return _(r,\"Missing chunk\"),r.resolveItem(t);}));}compareItems(t,e){let r=ei.fromString(t.pointer),n=ei.fromString(e.pointer);return r.compare(n);}compareValues(t,e,r){return em(t,e,r);}constructor(t){this.options=t,this.schema=this.options.schema,this.indexes=this.options.indexes,this.resolveRichText=this.options.resolveRichText;let e=new Uint8Array(this.options.compressionDictionary);this.chunks=this.options.chunks.map((t,r)=>new eO(r,t,e));}};export{eD as DatabaseCollection,eN as DatabaseDictionaryIndex};/*! Bundled license information:\n\nsplaytree/dist/splay.js:\n  (**\n   * splaytree v3.1.2\n   * Fast Splay tree for Node and browser\n   *\n   * @author Alexander Milevski <info@w8r.name>\n   * @license MIT\n   * @preserve\n   *)\n  (*! *****************************************************************************\n      Copyright (c) Microsoft Corporation. All rights reserved.\n      Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\n      this file except in compliance with the License. You may obtain a copy of the\n      License at http://www.apache.org/licenses/LICENSE-2.0\n  \n      THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n      KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\n      WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\n      MERCHANTABLITY OR NON-INFRINGEMENT.\n  \n      See the Apache Version 2.0 License for specific language governing permissions\n      and limitations under the License.\n      ***************************************************************************** *)\n*/\nexport const __FramerMetadata__ = {\"exports\":{\"DatabaseDictionaryIndex\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DatabaseCollection\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}", "let t=(t,e)=>async()=>{let r=await t();return r[e];},e=()=>import(\"./p_ZRklbwL-2.js\"),r=[t(e,\"richText\"),t(e,\"richText1\"),t(e,\"richText2\"),t(e,\"richText3\"),t(e,\"richText4\"),t(e,\"richText5\"),t(e,\"richText6\"),t(e,\"richText7\"),t(e,\"richText8\"),t(e,\"richText9\"),t(e,\"richText10\"),t(e,\"richText11\"),t(e,\"richText12\"),t(e,\"richText13\"),t(e,\"richText14\"),t(e,\"richText15\"),t(e,\"richText16\"),t(e,\"richText17\"),t(e,\"richText18\"),t(e,\"richText19\"),t(e,\"richText20\"),t(e,\"richText21\"),t(e,\"richText22\"),t(e,\"richText23\"),t(e,\"richText24\"),t(e,\"richText25\"),t(e,\"richText26\"),t(e,\"richText27\"),t(e,\"richText28\"),t(e,\"richText29\"),t(e,\"richText30\"),t(e,\"richText31\"),t(e,\"richText32\"),t(e,\"richText33\"),t(e,\"richText34\"),t(e,\"richText35\"),t(e,\"richText36\"),t(e,\"richText37\"),t(e,\"richText38\"),t(e,\"richText39\"),t(e,\"richText40\"),t(e,\"richText41\"),t(e,\"richText42\"),t(e,\"richText43\"),t(e,\"richText44\"),t(e,\"richText45\"),t(e,\"richText46\"),t(e,\"richText47\"),t(e,\"richText48\"),t(e,\"richText49\"),t(e,\"richText50\"),t(e,\"richText51\"),t(e,\"richText52\"),t(e,\"richText53\"),t(e,\"richText54\"),t(e,\"richText55\"),t(e,\"richText56\"),t(e,\"richText57\"),t(e,\"richText58\"),t(e,\"richText59\"),t(e,\"richText60\"),t(e,\"richText61\"),t(e,\"richText62\"),t(e,\"richText63\"),t(e,\"richText64\"),t(e,\"richText65\"),t(e,\"richText66\"),t(e,\"richText67\"),t(e,\"richText68\"),t(e,\"richText69\"),t(e,\"richText70\")];export async function resolveRichText(t){let e=r[t];if(e)return await e();}\nexport const __FramerMetadata__ = {\"exports\":{\"resolveRichText\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}", "import{addPropertyControls as e,ControlType as t,QueryEngine as l}from\"framer\";import{DatabaseCollection as r,DatabaseDictionaryIndex as a}from\"./p_ZRklbwL-0.js\";import{resolveRichText as i}from\"./p_ZRklbwL-1.js\";let o={AhNQYM66r:{isNullable:!0,type:t.RichText},apXl2m42W:{isNullable:!0,type:t.Boolean},drBimO239:{isNullable:!0,type:t.ResponsiveImage},id:{isNullable:!1,type:t.String},royCFnGoE:{isNullable:!0,type:t.String},s78r_5Sfi:{isNullable:!0,type:t.Date},Se2HuH_IO:{isNullable:!0,type:t.String},tB8hckVXV:{isNullable:!0,type:t.String}},n=new l,m={collectionByLocaleId:{default:new r({chunks:[new URL(\"./p_ZRklbwL-chunk-default-0.framercms\",\"https://framerusercontent.com/modules/7aKEcE234HUuUbxVUWG0/r00fiWVKf39CEBHzNofi/p_ZRklbwL.js\").href],compressionDictionary:[0,8,0,0,0,2,105,100,10,0,0,0,9,101,52,72,68,119,71,74,108,76,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,40,67,111,110,110,101,99,116,111,114,32,100,101,112,108,111,121,109,101,110,116,32,119,105,116,104,32,67,108,111,117,100,70,111,114,109,97,116,105,111,110,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,25,67,108,111,117,100,70,111,114,109,97,116,105,111,110,32,100,101,112,108,111,121,109,101,110,116,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,25,99,108,111,117,100,102,111,114,109,97,116,105,111,110,45,100,101,112,108,111,121,109,101,110,116,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,183,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,80,48,73,48,81,57,56,122,108,105,117,73,56,52,121,101,77,56,114,76,67,48,48,90,74,56,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,80,48,73,48,81,57,56,122,108,105,117,73,56,52,121,101,77,56,114,76,67,48,48,90,74,56,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,80,48,73,48,81,57,56,122,108,105,117,73,56,52,121,101,77,56,114,76,67,48,48,90,74,56,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,80,48,73,48,81,57,56,122,108,105,117,73,56,52,121,101,77,56,114,76,67,48,48,90,74,56,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,80,48,73,48,81,57,56,122,108,105,117,73,56,52,121,101,77,56,114,76,67,48,48,90,74,56,46,112,110,103,32,51,54,48,48,119,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,144,40,164,176,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,0,0,8,0,0,0,2,105,100,10,0,0,0,9,86,101,108,49,85,113,67,76,86,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,27,80,117,108,117,109,105,32,97,110,100,32,79,112,101,110,84,111,102,117,32,115,117,112,112,111,114,116,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,14,80,117,108,117,109,105,32,115,117,112,112,111,114,116,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,14,112,117,108,117,109,105,45,115,117,112,112,111,114,116,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,188,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,50,106,76,114,52,89,102,55,89,48,80,98,100,104,85,53,52,99,55,119,104,80,112,86,121,52,115,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,50,106,76,114,52,89,102,55,89,48,80,98,100,104,85,53,52,99,55,119,104,80,112,86,121,52,115,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,50,106,76,114,52,89,102,55,89,48,80,98,100,104,85,53,52,99,55,119,104,80,112,86,121,52,115,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,50,106,76,114,52,89,102,55,89,48,80,98,100,104,85,53,52,99,55,119,104,80,112,86,121,52,115,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,50,106,76,114,52,89,102,55,89,48,80,98,100,104,85,53,52,99,55,119,104,80,112,86,121,52,115,46,112,110,103,32,51,54,48,48,119,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,143,255,113,208,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,1,0,8,0,0,0,2,105,100,10,0,0,0,9,78,95,82,90,57,119,55,121,88,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,35,69,120,112,111,114,116,32,68,78,83,32,70,105,108,116,101,114,105,110,103,32,76,111,103,115,32,116,111,32,65,87,83,32,83,51,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,20,83,121,110,99,32,68,78,83,70,32,76,111,103,115,32,116,111,32,83,51,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,20,115,121,110,99,45,100,110,115,102,45,108,111,103,115,45,116,111,45,115,51,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,183,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,120,79,121,108,53,71,50,77,53,79,65,89,119,103,81,51,103,86,98,67,69,84,84,65,104,111,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,120,79,121,108,53,71,50,77,53,79,65,89,119,103,81,51,103,86,98,67,69,84,84,65,104,111,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,120,79,121,108,53,71,50,77,53,79,65,89,119,103,81,51,103,86,98,67,69,84,84,65,104,111,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,120,79,121,108,53,71,50,77,53,79,65,89,119,103,81,51,103,86,98,67,69,84,84,65,104,111,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,120,79,121,108,53,71,50,77,53,79,65,89,119,103,81,51,103,86,98,67,69,84,84,65,104,111,46,112,110,103,32,51,54,48,48,119,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,143,111,63,192,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,2,0,8,0,0,0,2,105,100,10,0,0,0,9,117,120,90,98,115,50,74,121,77,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,27,75,117,98,101,114,110,101,116,101,115,32,79,112,101,114,97,116,111,114,32,118,48,46,49,48,46,48,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,20,75,56,115,32,79,112,101,114,97,116,111,114,32,118,48,46,49,48,46,48,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,20,107,56,115,45,111,112,101,114,97,116,111,114,45,118,48,45,49,48,45,48,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,183,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,75,118,87,79,86,70,120,75,70,72,101,121,118,86,76,89,111,72,102,71,81,77,74,109,70,111,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,75,118,87,79,86,70,120,75,70,72,101,121,118,86,76,89,111,72,102,71,81,77,74,109,70,111,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,75,118,87,79,86,70,120,75,70,72,101,121,118,86,76,89,111,72,102,71,81,77,74,109,70,111,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,75,118,87,79,86,70,120,75,70,72,101,121,118,86,76,89,111,72,102,71,81,77,74,109,70,111,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,75,118,87,79,86,70,120,75,70,72,101,121,118,86,76,89,111,72,102,71,81,77,74,109,70,111,46,112,110,103,32,51,54,48,48,119,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,143,13,102,236,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,3,0,8,0,0,0,2,105,100,10,0,0,0,9,89,83,77,89,68,122,101,119,102,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,27,71,101,111,45,98,97,115,101,100,32,67,111,110,110,101,99,116,111,114,32,82,111,117,116,105,110,103,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,17,71,101,111,45,98,97,115,101,100,32,82,111,117,116,105,110,103,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,17,103,101,111,45,98,97,115,101,100,45,114,111,117,116,105,110,103,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,178,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,72,101,80,50,57,56,98,86,83,121,82,75,72,76,88,85,70,49,78,53,71,86,85,108,48,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,72,101,80,50,57,56,98,86,83,121,82,75,72,76,88,85,70,49,78,53,71,86,85,108,48,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,72,101,80,50,57,56,98,86,83,121,82,75,72,76,88,85,70,49,78,53,71,86,85,108,48,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,72,101,80,50,57,56,98,86,83,121,82,75,72,76,88,85,70,49,78,53,71,86,85,108,48,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,72,101,80,50,57,56,98,86,83,121,82,75,72,76,88,85,70,49,78,53,71,86,85,108,48,46,112,110,103,32,51,54,48,48,119,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,143,44,77,20,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,4,0,8,0,0,0,2,105,100,10,0,0,0,9,89,80,101,84,104,111,103,113,99,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,33,69,110,114,111,108,108,101,100,32,71,114,111,117,112,115,32,102,111,114,32,68,78,83,32,70,105,108,116,101,114,105,110,103,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,34,69,110,114,111,108,108,101,100,32,71,114,111,117,112,115,32,102,111,114,32,68,78,83,32,70,105,108,116,101,114,105,110,103,32,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,33,101,110,114,111,108,108,101,100,45,103,114,111,117,112,115,45,102,111,114,45,100,110,115,45,102,105,108,116,101,114,105,110,103,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,183,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,89,65,119,86,84,69,76,84,114,83,106,88,75,120,50,78,89,118,116,102,78,89,86,77,90,65,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,89,65,119,86,84,69,76,84,114,83,106,88,75,120,50,78,89,118,116,102,78,89,86,77,90,65,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,89,65,119,86,84,69,76,84,114,83,106,88,75,120,50,78,89,118,116,102,78,89,86,77,90,65,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,89,65,119,86,84,69,76,84,114,83,106,88,75,120,50,78,89,118,116,102,78,89,86,77,90,65,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,89,65,119,86,84,69,76,84,114,83,106,88,75,120,50,78,89,118,116,102,78,89,86,77,90,65,46,112,110,103,32,51,54,48,48,119,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,143,3,26,52,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,5,0,8,0,0,0,2,105,100,10,0,0,0,9,119,75,103,90,52,100,98,71,119,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,14,82,101,113,117,101,115,116,32,65,99,99,101,115,115,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,14,82,101,113,117,101,115,116,32,65,99,99,101,115,115,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,14,114,101,113,117,101,115,116,45,97,99,99,101,115,115,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,188,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,73,112,52,55,90,114,65,72,108,110,106,89,110,76,102,112,73,82,85,109,57,76,89,108,102,80,77,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,73,112,52,55,90,114,65,72,108,110,106,89,110,76,102,112,73,82,85,109,57,76,89,108,102,80,77,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,73,112,52,55,90,114,65,72,108,110,106,89,110,76,102,112,73,82,85,109,57,76,89,108,102,80,77,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,73,112,52,55,90,114,65,72,108,110,106,89,110,76,102,112,73,82,85,109,57,76,89,108,102,80,77,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,73,112,52,55,90,114,65,72,108,110,106,89,110,76,102,112,73,82,85,109,57,76,89,108,102,80,77,46,112,110,103,32,51,54,48,48,119,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,142,233,90,104,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,6,0,8,0,0,0,2,105,100,10,0,0,0,9,68,65,86,120,90,81,79,54,101,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,38,68,101,108,101,116,101,32,67,117,115,116,111,109,101,114,32,78,101,116,119,111,114,107,115,32,105,110,32,77,83,80,32,80,111,114,116,97,108,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,24,68,101,108,101,116,101,32,67,117,115,116,111,109,101,114,32,78,101,116,119,111,114,107,115,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,24,100,101,108,101,116,101,45,99,117,115,116,111,109,101,114,45,110,101,116,119,111,114,107,115,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,183,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,83,118,100,105,110,81,82,50,116,51,119,90,103,116,57,98,81,121,118,86,53,73,72,69,121,111,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,83,118,100,105,110,81,82,50,116,51,119,90,103,116,57,98,81,121,118,86,53,73,72,69,121,111,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,83,118,100,105,110,81,82,50,116,51,119,90,103,116,57,98,81,121,118,86,53,73,72,69,121,111,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,83,118,100,105,110,81,82,50,116,51,119,90,103,116,57,98,81,121,118,86,53,73,72,69,121,111,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,83,118,100,105,110,81,82,50,116,51,119,90,103,116,57,98,81,121,118,86,53,73,72,69,121,111,46,112,110,103,32,51,54,48,48,119,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,142,192,39,136,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,7,0,8,0,0,0,2,105,100,10,0,0,0,9,75,109,120,120,76,114,71,71,104,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,26,75,117,98,101,114,110,101,116,101,115,32,79,112,101,114,97,116,111,114,32,118,48,46,55,46,48,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,19,75,56,115,32,79,112,101,114,97,116,111,114,32,118,48,46,55,46,48,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,19,107,56,115,45,111,112,101,114,97,116,111,114,45,118,48,45,55,45,48,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,183,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,75,118,87,79,86,70,120,75,70,72,101,121,118,86,76,89,111,72,102,71,81,77,74,109,70,111,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,75,118,87,79,86,70,120,75,70,72,101,121,118,86,76,89,111,72,102,71,81,77,74,109,70,111,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,75,118,87,79,86,70,120,75,70,72,101,121,118,86,76,89,111,72,102,71,81,77,74,109,70,111,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,75,118,87,79,86,70,120,75,70,72,101,121,118,86,76,89,111,72,102,71,81,77,74,109,70,111,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,75,118,87,79,86,70,120,75,70,72,101,121,118,86,76,89,111,72,102,71,81,77,74,109,70,111,46,112,110,103,32,51,54,48,48,119,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,142,130,91,56,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,8,0,8,0,0,0,2,105,100,10,0,0,0,9,118,108,54,105,82,82,55,70,67,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,31,69,120,112,111,114,116,32,78,101,116,119,111,114,107,32,69,118,101,110,116,115,32,116,111,32,65,87,83,32,83,51,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,17,83,121,110,99,32,101,118,101,110,116,115,32,116,111,32,83,51,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,27,101,120,112,111,114,116,45,110,101,116,119,111,114,107,45,101,118,101,110,116,115,45,116,111,45,115,51,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,178,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,50,106,114,79,82,55,50,83,78,112,56,89,101,113,82,69,100,122,101,72,51,81,73,120,115,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,50,106,114,79,82,55,50,83,78,112,56,89,101,113,82,69,100,122,101,72,51,81,73,120,115,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,50,106,114,79,82,55,50,83,78,112,56,89,101,113,82,69,100,122,101,72,51,81,73,120,115,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,50,106,114,79,82,55,50,83,78,112,56,89,101,113,82,69,100,122,101,72,51,81,73,120,115,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,50,106,114,79,82,55,50,83,78,112,56,89,101,113,82,69,100,122,101,72,51,81,73,120,115,46,112,110,103,32,51,54,48,48,119,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,142,11,232,244,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,9,0,8,0,0,0,2,105,100,10,0,0,0,9,87,76,110,49,106,115,82,57,71,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,38,73,110,116,101,114,110,101,116,32,83,101,99,117,114,105,116,121,32,67,108,105,101,110,116,32,67,111,110,102,105,103,117,114,97,116,105,111,110,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,20,68,78,83,32,70,105,108,116,101,114,105,110,103,32,67,111,110,102,105,103,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,54,105,110,116,101,114,110,101,116,45,115,101,99,117,114,105,116,121,45,99,108,105,101,110,116,45,99,111,110,102,105,103,117,114,97,116,105,111,110,45,117,116,109,45,115,111,117,114,99,101,45,116,101,115,116,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,188,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,108,86,87,121,69,122,89,101,86,80,50,55,67,71,69,75,121,86,49,104,89,109,74,79,53,87,89,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,108,86,87,121,69,122,89,101,86,80,50,55,67,71,69,75,121,86,49,104,89,109,74,79,53,87,89,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,108,86,87,121,69,122,89,101,86,80,50,55,67,71,69,75,121,86,49,104,89,109,74,79,53,87,89,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,108,86,87,121,69,122,89,101,86,80,50,55,67,71,69,75,121,86,49,104,89,109,74,79,53,87,89,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,108,86,87,121,69,122,89,101,86,80,50,55,67,71,69,75,121,86,49,104,89,109,74,79,53,87,89,46,112,110,103,32,51,54,48,48,119,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,141,154,157,12,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,10,0,8,0,0,0,2,105,100,10,0,0,0,9,85,99,77,77,85,103,73,71,86,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,33,67,114,111,119,100,115,116,114,105,107,101,32,73,110,116,101,103,114,97,116,105,111,110,32,102,111,114,32,76,105,110,117,120,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,21,67,114,111,119,100,115,116,114,105,107,101,32,102,111,114,32,76,105,110,117,120,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,21,99,114,111,119,100,115,116,114,105,107,101,45,102,111,114,45,108,105,110,117,120,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,188,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,83,69,89,76,85,68,120,101,116,97,103,81,120,83,83,53,77,105,120,115,105,70,83,84,77,107,111,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,83,69,89,76,85,68,120,101,116,97,103,81,120,83,83,53,77,105,120,115,105,70,83,84,77,107,111,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,83,69,89,76,85,68,120,101,116,97,103,81,120,83,83,53,77,105,120,115,105,70,83,84,77,107,111,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,83,69,89,76,85,68,120,101,116,97,103,81,120,83,83,53,77,105,120,115,105,70,83,84,77,107,111,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,83,69,89,76,85,68,120,101,116,97,103,81,120,83,83,53,77,105,120,115,105,70,83,84,77,107,111,46,112,110,103,32,51,54,48,48,119,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,141,175,54,124,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,11,0,8,0,0,0,2,105,100,10,0,0,0,9,118,69,83,73,74,117,75,79,109,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,21,85,115,97,103,101,45,98,97,115,101,100,32,97,117,116,111,45,108,111,99,107,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,21,85,115,97,103,101,45,98,97,115,101,100,32,97,117,116,111,45,108,111,99,107,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,21,117,115,97,103,101,45,98,97,115,101,100,45,97,117,116,111,45,108,111,99,107,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,178,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,68,66,89,122,114,50,107,113,120,106,89,48,112,113,111,66,68,120,56,113,48,97,52,107,89,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,68,66,89,122,114,50,107,113,120,106,89,48,112,113,111,66,68,120,56,113,48,97,52,107,89,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,68,66,89,122,114,50,107,113,120,106,89,48,112,113,111,66,68,120,56,113,48,97,52,107,89,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,68,66,89,122,114,50,107,113,120,106,89,48,112,113,111,66,68,120,56,113,48,97,52,107,89,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,68,66,89,122,114,50,107,113,120,106,89,48,112,113,111,66,68,120,56,113,48,97,52,107,89,46,112,110,103,32,51,54,48,48,119,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,141,103,29,116,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,12,0,8,0,0,0,2,105,100,10,0,0,0,9,109,115,120,76,111,101,95,49,54,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,26,75,117,98,101,114,110,101,116,101,115,32,79,112,101,114,97,116,111,114,32,118,48,46,50,46,48,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,19,75,56,115,32,79,112,101,114,97,116,111,114,32,118,48,46,50,46,48,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,19,107,56,115,45,111,112,101,114,97,116,111,114,45,118,48,45,50,45,48,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,183,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,75,118,87,79,86,70,120,75,70,72,101,121,118,86,76,89,111,72,102,71,81,77,74,109,70,111,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,75,118,87,79,86,70,120,75,70,72,101,121,118,86,76,89,111,72,102,71,81,77,74,109,70,111,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,75,118,87,79,86,70,120,75,70,72,101,121,118,86,76,89,111,72,102,71,81,77,74,109,70,111,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,75,118,87,79,86,70,120,75,70,72,101,121,118,86,76,89,111,72,102,71,81,77,74,109,70,111,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,75,118,87,79,86,70,120,75,70,72,101,121,118,86,76,89,111,72,102,71,81,77,74,109,70,111,46,112,110,103,32,51,54,48,48,119,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,141,67,16,240,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,13,0,8,0,0,0,2,105,100,10,0,0,0,9,109,52,111,97,111,101,121,112,109,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,13,68,78,83,32,70,105,108,116,101,114,105,110,103,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,13,68,78,83,32,70,105,108,116,101,114,105,110,103,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,13,100,110,115,45,102,105,108,116,101,114,105,110,103,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,183,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,116,98,90,111,83,113,116,74,104,108,85,115,75,49,101,67,108,88,72,89,103,104,109,115,81,107,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,116,98,90,111,83,113,116,74,104,108,85,115,75,49,101,67,108,88,72,89,103,104,109,115,81,107,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,116,98,90,111,83,113,116,74,104,108,85,115,75,49,101,67,108,88,72,89,103,104,109,115,81,107,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,116,98,90,111,83,113,116,74,104,108,85,115,75,49,101,67,108,88,72,89,103,104,109,115,81,107,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,116,98,90,111,83,113,116,74,104,108,85,115,75,49,101,67,108,88,72,89,103,104,109,115,81,107,46,112,110,103,32,51,54,48,48,119,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,141,20,183,180,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,14,0,8,0,0,0,2,105,100,10,0,0,0,9,113,52,99,111,80,76,115,70,48,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,24,67,111,110,110,101,99,116,105,111,110,32,72,105,115,116,111,114,121,32,71,114,97,112,104,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,24,67,111,110,110,101,99,116,105,111,110,32,72,105,115,116,111,114,121,32,71,114,97,112,104,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,24,99,111,110,110,101,99,116,105,111,110,45,104,105,115,116,111,114,121,45,103,114,97,112,104,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,197,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,50,116,97,54,115,81,101,80,88,83,105,50,114,103,119,85,87,74,70,83,48,119,78,69,117,86,115,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,50,116,97,54,115,81,101,80,88,83,105,50,114,103,119,85,87,74,70,83,48,119,78,69,117,86,115,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,50,116,97,54,115,81,101,80,88,83,105,50,114,103,119,85,87,74,70,83,48,119,78,69,117,86,115,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,50,116,97,54,115,81,101,80,88,83,105,50,114,103,119,85,87,74,70,83,48,119,78,69,117,86,115,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,50,116,97,54,115,81,101,80,88,83,105,50,114,103,119,85,87,74,70,83,48,119,78,69,117,86,115,46,112,110,103,32,51,54,48,48,119,34,44,34,97,108,116,34,58,34,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,140,86,44,104,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,15,0,8,0,0,0,2,105,100,10,0,0,0,9,76,71,101,54,83,81,68,76,97,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,24,65,32,78,101,119,32,66,105,108,108,105,110,103,32,69,120,112,101,114,105,101,110,99,101,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,22,78,101,119,32,66,105,108,108,105,110,103,32,69,120,112,101,114,105,101,110,99,101,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,22,110,101,119,45,98,105,108,108,105,110,103,45,101,120,112,101,114,105,101,110,99,101,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,197,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,113,117,113,67,120,119,117,113,84,85,106,110,84,54,65,99,66,120,119,57,57,50,53,82,55,49,56,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,113,117,113,67,120,119,117,113,84,85,106,110,84,54,65,99,66,120,119,57,57,50,53,82,55,49,56,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,113,117,113,67,120,119,117,113,84,85,106,110,84,54,65,99,66,120,119,57,57,50,53,82,55,49,56,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,113,117,113,67,120,119,117,113,84,85,106,110,84,54,65,99,66,120,119,57,57,50,53,82,55,49,56,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,113,117,113,67,120,119,117,113,84,85,106,110,84,54,65,99,66,120,119,57,57,50,53,82,55,49,56,46,112,110,103,32,50,52,48,48,119,34,44,34,97,108,116,34,58,34,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,140,34,172,208,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,16,0,8,0,0,0,2,105,100,10,0,0,0,9,101,106,97,97,88,106,122,71,69,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,27,69,120,112,111,114,116,32,65,117,100,105,116,32,76,111,103,115,32,116,111,32,65,87,83,32,83,51,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,23,69,120,112,111,114,116,32,65,117,100,105,116,32,76,111,103,115,32,116,111,32,83,51,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,23,101,120,112,111,114,116,45,97,117,100,105,116,45,108,111,103,115,45,116,111,45,115,51,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,197,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,104,104,78,78,90,57,67,67,65,85,48,83,77,77,78,112,50,77,82,98,81,97,52,80,72,56,85,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,104,104,78,78,90,57,67,67,65,85,48,83,77,77,78,112,50,77,82,98,81,97,52,80,72,56,85,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,104,104,78,78,90,57,67,67,65,85,48,83,77,77,78,112,50,77,82,98,81,97,52,80,72,56,85,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,104,104,78,78,90,57,67,67,65,85,48,83,77,77,78,112,50,77,82,98,81,97,52,80,72,56,85,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,104,104,78,78,90,57,67,67,65,85,48,83,77,77,78,112,50,77,82,98,81,97,52,80,72,56,85,46,112,110,103,32,51,54,48,48,119,34,44,34,97,108,116,34,58,34,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,139,197,250,88,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,17,0,8,0,0,0,2,105,100,10,0,0,0,9,71,90,106,100,52,57,81,106,74,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,19,75,117,98,101,114,110,101,116,101,115,32,111,112,101,114,97,116,111,114,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,19,75,117,98,101,114,110,101,116,101,115,32,111,112,101,114,97,116,111,114,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,19,107,117,98,101,114,110,101,116,101,115,45,111,112,101,114,97,116,111,114,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,187,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,100,82,117,70,104,81,117,83,89,71,98,90,48,48,57,111,99,48,103,54,85,86,101,115,77,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,100,82,117,70,104,81,117,83,89,71,98,90,48,48,57,111,99,48,103,54,85,86,101,115,77,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,100,82,117,70,104,81,117,83,89,71,98,90,48,48,57,111,99,48,103,54,85,86,101,115,77,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,100,82,117,70,104,81,117,83,89,71,98,90,48,48,57,111,99,48,103,54,85,86,101,115,77,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,100,82,117,70,104,81,117,83,89,71,98,90,48,48,57,111,99,48,103,54,85,86,101,115,77,46,112,110,103,32,51,54,48,48,119,34,44,34,97,108,116,34,58,34,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,139,167,20,48,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,18,0,8,0,0,0,2,105,100,10,0,0,0,9,98,50,118,90,76,67,107,82,120,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,14,68,105,115,99,111,110,110,101,99,116,32,73,100,80,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,14,68,105,115,99,111,110,110,101,99,116,32,73,100,80,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,14,100,105,115,99,111,110,110,101,99,116,45,105,100,112,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,197,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,104,53,102,104,84,106,67,121,121,85,78,122,120,74,106,56,103,69,68,106,85,71,117,111,114,90,69,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,104,53,102,104,84,106,67,121,121,85,78,122,120,74,106,56,103,69,68,106,85,71,117,111,114,90,69,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,104,53,102,104,84,106,67,121,121,85,78,122,120,74,106,56,103,69,68,106,85,71,117,111,114,90,69,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,104,53,102,104,84,106,67,121,121,85,78,122,120,74,106,56,103,69,68,106,85,71,117,111,114,90,69,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,104,53,102,104,84,106,67,121,121,85,78,122,120,74,106,56,103,69,68,106,85,71,117,111,114,90,69,46,112,110,103,32,50,52,48,48,119,34,44,34,97,108,116,34,58,34,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,139,146,122,192,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,19,0,8,0,0,0,2,105,100,10,0,0,0,9,118,84,72,49,51,116,105,118,84,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,21,78,101,116,119,111,114,107,32,79,118,101,114,118,105,101,119,32,80,97,103,101,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,21,78,101,116,119,111,114,107,32,79,118,101,114,118,105,101,119,32,80,97,103,101,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,21,110,101,116,119,111,114,107,45,111,118,101,114,118,105,101,119,45,112,97,103,101,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,197,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,86,82,106,108,72,73,68,117,104,110,105,56,54,117,55,90,115,51,49,79,55,70,119,71,83,75,115,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,86,82,106,108,72,73,68,117,104,110,105,56,54,117,55,90,115,51,49,79,55,70,119,71,83,75,115,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,86,82,106,108,72,73,68,117,104,110,105,56,54,117,55,90,115,51,49,79,55,70,119,71,83,75,115,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,86,82,106,108,72,73,68,117,104,110,105,56,54,117,55,90,115,51,49,79,55,70,119,71,83,75,115,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,86,82,106,108,72,73,68,117,104,110,105,56,54,117,55,90,115,51,49,79,55,70,119,71,83,75,115,46,112,110,103,32,50,52,48,48,119,34,44,34,97,108,116,34,58,34,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,139,136,46,8,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,20,0,8,0,0,0,2,105,100,10,0,0,0,9,89,77,122,71,120,99,111,79,80,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,20,85,112,100,97,116,101,100,32,66,105,108,108,105,110,103,32,80,97,103,101,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,20,85,112,100,97,116,101,100,32,66,105,108,108,105,110,103,32,80,97,103,101,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,20,117,112,100,97,116,101,100,45,98,105,108,108,105,110,103,45,112,97,103,101,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,197,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,85,116,86,53,78,116,100,103,118,112,75,70,104,49,103,120,52,116,81,66,54,76,104,119,80,77,81,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,85,116,86,53,78,116,100,103,118,112,75,70,104,49,103,120,52,116,81,66,54,76,104,119,80,77,81,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,85,116,86,53,78,116,100,103,118,112,75,70,104,49,103,120,52,116,81,66,54,76,104,119,80,77,81,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,85,116,86,53,78,116,100,103,118,112,75,70,104,49,103,120,52,116,81,66,54,76,104,119,80,77,81,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,85,116,86,53,78,116,100,103,118,112,75,70,104,49,103,120,52,116,81,66,54,76,104,119,80,77,81,46,112,110,103,32,50,52,48,48,119,34,44,34,97,108,116,34,58,34,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,139,125,225,80,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,21,0,8,0,0,0,2,105,100,10,0,0,0,9,108,84,113,48,52,113,55,116,103,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,31,71,111,111,103,108,101,32,87,111,114,107,115,112,97,99,101,32,83,101,108,101,99,116,105,118,101,32,83,121,110,99,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,31,71,111,111,103,108,101,32,87,111,114,107,115,112,97,99,101,32,83,101,108,101,99,116,105,118,101,32,83,121,110,99,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,31,103,111,111,103,108,101,45,119,111,114,107,115,112,97,99,101,45,115,101,108,101,99,116,105,118,101,45,115,121,110,99,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,192,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,114,76,76,81,71,100,57,73,122,66,87,68,85,86,119,80,75,98,83,49,106,120,110,90,111,69,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,114,76,76,81,71,100,57,73,122,66,87,68,85,86,119,80,75,98,83,49,106,120,110,90,111,69,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,114,76,76,81,71,100,57,73,122,66,87,68,85,86,119,80,75,98,83,49,106,120,110,90,111,69,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,114,76,76,81,71,100,57,73,122,66,87,68,85,86,119,80,75,98,83,49,106,120,110,90,111,69,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,114,76,76,81,71,100,57,73,122,66,87,68,85,86,119,80,75,98,83,49,106,120,110,90,111,69,46,112,110,103,32,51,54,48,48,119,34,44,34,97,108,116,34,58,34,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,139,100,33,132,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,22,0,8,0,0,0,2,105,100,10,0,0,0,9,83,98,101,113,81,111,71,75,57,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,16,69,112,104,101,109,101,114,97,108,32,97,99,99,101,115,115,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,16,69,112,104,101,109,101,114,97,108,32,97,99,99,101,115,115,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,16,101,112,104,101,109,101,114,97,108,45,97,99,99,101,115,115,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,197,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,99,110,57,76,111,88,82,97,66,112,110,122,117,104,69,50,82,117,77,66,70,87,90,87,69,115,65,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,99,110,57,76,111,88,82,97,66,112,110,122,117,104,69,50,82,117,77,66,70,87,90,87,69,115,65,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,99,110,57,76,111,88,82,97,66,112,110,122,117,104,69,50,82,117,77,66,70,87,90,87,69,115,65,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,99,110,57,76,111,88,82,97,66,112,110,122,117,104,69,50,82,117,77,66,70,87,90,87,69,115,65,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,99,110,57,76,111,88,82,97,66,112,110,122,117,104,69,50,82,117,77,66,70,87,90,87,69,115,65,46,112,110,103,32,51,54,48,48,119,34,44,34,97,108,116,34,58,34,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,139,28,8,124,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,23,0,8,0,0,0,2,105,100,10,0,0,0,9,104,75,110,98,55,114,121,49,68,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,34,109,97,99,79,83,32,100,101,118,105,99,101,32,112,111,115,116,117,114,101,32,99,104,101,99,107,32,117,112,100,97,116,101,115,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,20,109,97,99,79,83,32,112,111,115,116,117,114,101,32,99,104,101,99,107,115,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,20,109,97,99,111,115,45,112,111,115,116,117,114,101,45,99,104,101,99,107,115,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,197,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,109,111,118,71,72,67,85,111,66,51,120,106,122,111,114,53,65,84,98,111,78,77,115,82,78,80,52,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,109,111,118,71,72,67,85,111,66,51,120,106,122,111,114,53,65,84,98,111,78,77,115,82,78,80,52,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,109,111,118,71,72,67,85,111,66,51,120,106,122,111,114,53,65,84,98,111,78,77,115,82,78,80,52,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,109,111,118,71,72,67,85,111,66,51,120,106,122,111,114,53,65,84,98,111,78,77,115,82,78,80,52,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,109,111,118,71,72,67,85,111,66,51,120,106,122,111,114,53,65,84,98,111,78,77,115,82,78,80,52,46,112,110,103,32,51,54,48,48,119,34,44,34,97,108,116,34,58,34,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,138,139,214,108,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,24,0,8,0,0,0,2,105,100,10,0,0,0,9,106,55,117,105,109,74,73,98,76,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,23,83,116,97,110,100,97,108,111,110,101,32,109,97,99,79,83,32,67,108,105,101,110,116,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,23,83,116,97,110,100,97,108,111,110,101,32,109,97,99,79,83,32,67,108,105,101,110,116,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,23,115,116,97,110,100,97,108,111,110,101,45,109,97,99,111,115,45,99,108,105,101,110,116,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,197,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,51,83,75,77,119,119,71,119,118,79,86,76,51,82,68,82,119,66,79,67,68,106,90,76,79,84,52,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,51,83,75,77,119,119,71,119,118,79,86,76,51,82,68,82,119,66,79,67,68,106,90,76,79,84,52,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,51,83,75,77,119,119,71,119,118,79,86,76,51,82,68,82,119,66,79,67,68,106,90,76,79,84,52,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,51,83,75,77,119,119,71,119,118,79,86,76,51,82,68,82,119,66,79,67,68,106,90,76,79,84,52,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,51,83,75,77,119,119,71,119,118,79,86,76,51,82,68,82,119,66,79,67,68,106,90,76,79,84,52,46,112,110,103,32,51,54,48,48,119,34,44,34,97,108,116,34,58,34,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,138,93,125,48,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,25,0,8,0,0,0,2,105,100,10,0,0,0,9,101,78,52,71,76,65,67,108,79,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,27,83,101,99,117,114,105,116,121,32,80,111,108,105,99,121,32,111,110,32,82,101,115,111,117,114,99,101,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,46,65,112,112,108,121,32,83,101,99,117,114,105,116,121,32,80,111,108,105,99,105,101,115,32,100,105,114,101,99,116,108,121,32,116,111,32,82,101,115,111,117,114,99,101,115,32,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,18,112,111,108,105,99,121,45,111,110,45,114,101,115,111,117,114,99,101,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,187,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,110,116,80,97,88,111,84,65,103,74,74,79,82,85,98,90,98,81,106,65,109,109,78,49,56,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,110,116,80,97,88,111,84,65,103,74,74,79,82,85,98,90,98,81,106,65,109,109,78,49,56,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,110,116,80,97,88,111,84,65,103,74,74,79,82,85,98,90,98,81,106,65,109,109,78,49,56,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,110,116,80,97,88,111,84,65,103,74,74,79,82,85,98,90,98,81,106,65,109,109,78,49,56,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,110,116,80,97,88,111,84,65,103,74,74,79,82,85,98,90,98,81,106,65,109,109,78,49,56,46,112,110,103,32,51,54,48,48,119,34,44,34,97,108,116,34,58,34,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,137,241,87,164,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,26,0,8,0,0,0,2,105,100,10,0,0,0,9,83,120,68,74,57,109,79,86,56,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,22,65,117,116,111,45,97,114,99,104,105,118,105,110,103,32,100,101,118,105,99,101,115,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,22,65,117,116,111,45,97,114,99,104,105,118,105,110,103,32,100,101,118,105,99,101,115,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,22,97,117,116,111,45,97,114,99,104,105,118,105,110,103,45,100,101,118,105,99,101,115,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,197,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,113,50,112,105,52,104,70,57,90,53,75,117,83,79,104,107,97,86,119,50,102,122,65,89,108,112,103,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,113,50,112,105,52,104,70,57,90,53,75,117,83,79,104,107,97,86,119,50,102,122,65,89,108,112,103,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,113,50,112,105,52,104,70,57,90,53,75,117,83,79,104,107,97,86,119,50,102,122,65,89,108,112,103,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,113,50,112,105,52,104,70,57,90,53,75,117,83,79,104,107,97,86,119,50,102,122,65,89,108,112,103,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,113,50,112,105,52,104,70,57,90,53,75,117,83,79,104,107,97,86,119,50,102,122,65,89,108,112,103,46,112,110,103,32,51,54,48,48,119,34,44,34,97,108,116,34,58,34,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,137,143,126,208,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,27,0,8,0,0,0,2,105,100,10,0,0,0,9,82,110,104,71,112,122,83,75,72,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,26,83,101,114,105,97,108,32,110,117,109,98,101,114,32,118,101,114,105,102,105,99,97,116,105,111,110,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,26,83,101,114,105,97,108,32,110,117,109,98,101,114,32,118,101,114,105,102,105,99,97,116,105,111,110,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,26,115,101,114,105,97,108,45,110,117,109,98,101,114,45,118,101,114,105,102,105,99,97,116,105,111,110,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,197,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,87,54,87,97,106,100,84,110,87,109,54,102,103,101,81,98,52,89,86,99,48,85,113,55,119,117,89,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,87,54,87,97,106,100,84,110,87,109,54,102,103,101,81,98,52,89,86,99,48,85,113,55,119,117,89,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,87,54,87,97,106,100,84,110,87,109,54,102,103,101,81,98,52,89,86,99,48,85,113,55,119,117,89,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,87,54,87,97,106,100,84,110,87,109,54,102,103,101,81,98,52,89,86,99,48,85,113,55,119,117,89,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,87,54,87,97,106,100,84,110,87,109,54,102,103,101,81,98,52,89,86,99,48,85,113,55,119,117,89,46,112,110,103,32,51,54,48,48,119,34,44,34,97,108,116,34,58,34,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,137,35,89,68,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,28,0,8,0,0,0,2,105,100,10,0,0,0,9,88,81,107,83,56,121,95,52,105,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,18,87,101,98,65,117,116,104,110,32,111,110,32,109,111,98,105,108,101,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,35,87,101,98,65,117,116,104,110,32,115,117,112,112,111,114,116,32,111,110,32,105,79,83,32,97,110,100,32,65,110,100,114,111,105,100,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,15,119,101,98,97,117,116,104,110,45,109,111,98,105,108,101,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,192,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,72,71,80,100,115,66,56,52,118,65,84,66,50,109,65,70,79,112,117,49,69,117,78,56,71,77,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,72,71,80,100,115,66,56,52,118,65,84,66,50,109,65,70,79,112,117,49,69,117,78,56,71,77,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,72,71,80,100,115,66,56,52,118,65,84,66,50,109,65,70,79,112,117,49,69,117,78,56,71,77,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,72,71,80,100,115,66,56,52,118,65,84,66,50,109,65,70,79,112,117,49,69,117,78,56,71,77,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,72,71,80,100,115,66,56,52,118,65,84,66,50,109,65,70,79,112,117,49,69,117,78,56,71,77,46,112,110,103,32,51,54,48,48,119,34,44,34,97,108,116,34,58,34,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,136,28,180,240,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,29,0,8,0,0,0,2,105,100,10,0,0,0,9,88,74,76,78,121,76,75,70,112,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,18,70,97,118,111,114,105,116,101,32,82,101,115,111,117,114,99,101,115,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,18,70,97,118,111,114,105,116,101,32,82,101,115,111,117,114,99,101,115,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,18,102,97,118,111,114,105,116,101,45,114,101,115,111,117,114,99,101,115,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,187,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,121,73,121,106,49,119,53,78,71,57,100,102,54,103,50,109,90,72,84,107,82,49,77,117,65,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,121,73,121,106,49,119,53,78,71,57,100,102,54,103,50,109,90,72,84,107,82,49,77,117,65,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,121,73,121,106,49,119,53,78,71,57,100,102,54,103,50,109,90,72,84,107,82,49,77,117,65,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,121,73,121,106,49,119,53,78,71,57,100,102,54,103,50,109,90,72,84,107,82,49,77,117,65,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,121,73,121,106,49,119,53,78,71,57,100,102,54,103,50,109,90,72,84,107,82,49,77,117,65,46,112,110,103,32,51,54,48,48,119,34,44,34,97,108,116,34,58,34,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,136,28,180,240,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,30,0,8,0,0,0,2,105,100,10,0,0,0,9,85,51,78,101,66,53,104,69,86,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,37,87,101,98,65,117,116,104,110,32,115,117,112,112,111,114,116,32,111,110,32,116,104,101,32,65,100,109,105,110,32,67,111,110,115,111,108,101,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,25,87,101,98,65,117,116,104,110,32,111,110,32,65,100,109,105,110,32,67,111,110,115,111,108,101,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,22,119,101,98,97,117,116,104,110,45,97,100,109,105,110,45,99,111,110,115,111,108,101,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,182,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,74,76,66,85,57,116,105,65,101,76,108,98,114,80,54,83,120,118,57,89,118,105,104,48,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,74,76,66,85,57,116,105,65,101,76,108,98,114,80,54,83,120,118,57,89,118,105,104,48,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,74,76,66,85,57,116,105,65,101,76,108,98,114,80,54,83,120,118,57,89,118,105,104,48,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,74,76,66,85,57,116,105,65,101,76,108,98,114,80,54,83,120,118,57,89,118,105,104,48,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,74,76,66,85,57,116,105,65,101,76,108,98,114,80,54,83,120,118,57,89,118,105,104,48,46,112,110,103,32,51,54,48,48,119,34,44,34,97,108,116,34,58,34,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,135,176,143,100,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,31,0,8,0,0,0,2,105,100,10,0,0,0,9,83,113,54,102,112,106,54,101,101,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,16,82,101,115,111,117,114,99,101,32,65,108,105,97,115,101,115,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,16,82,101,115,111,117,114,99,101,32,65,108,105,97,115,101,115,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,16,114,101,115,111,117,114,99,101,45,97,108,105,97,115,101,115,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,197,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,48,65,114,90,85,121,50,106,109,82,108,76,104,56,51,108,53,99,117,100,73,82,50,105,86,83,48,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,48,65,114,90,85,121,50,106,109,82,108,76,104,56,51,108,53,99,117,100,73,82,50,105,86,83,48,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,48,65,114,90,85,121,50,106,109,82,108,76,104,56,51,108,53,99,117,100,73,82,50,105,86,83,48,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,48,65,114,90,85,121,50,106,109,82,108,76,104,56,51,108,53,99,117,100,73,82,50,105,86,83,48,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,48,65,114,90,85,121,50,106,109,82,108,76,104,56,51,108,53,99,117,100,73,82,50,105,86,83,48,46,112,110,103,32,51,54,48,48,119,34,44,34,97,108,116,34,58,34,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,135,68,105,216,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,32,0,8,0,0,0,2,105,100,10,0,0,0,9,110,99,120,111,103,119,74,71,97,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,44,65,100,100,32,73,100,101,110,116,105,116,121,32,80,114,111,118,105,100,101,114,32,97,110,100,32,83,111,99,105,97,108,32,76,111,103,105,110,32,85,115,101,114,115,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,20,73,68,80,32,97,110,100,32,83,111,99,105,97,108,32,76,111,103,105,110,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,16,105,100,112,45,115,111,99,105,97,108,45,108,111,103,105,110,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,192,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,118,73,76,89,89,72,108,82,87,98,51,101,69,49,77,113,77,67,81,90,108,86,51,51,73,56,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,118,73,76,89,89,72,108,82,87,98,51,101,69,49,77,113,77,67,81,90,108,86,51,51,73,56,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,118,73,76,89,89,72,108,82,87,98,51,101,69,49,77,113,77,67,81,90,108,86,51,51,73,56,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,118,73,76,89,89,72,108,82,87,98,51,101,69,49,77,113,77,67,81,90,108,86,51,51,73,56,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,118,73,76,89,89,72,108,82,87,98,51,101,69,49,77,113,77,67,81,90,108,86,51,51,73,56,46,112,110,103,32,51,54,48,48,119,34,44,34,97,108,116,34,58,34,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,134,252,80,208,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,33,0,8,0,0,0,2,105,100,10,0,0,0,9,74,121,121,98,82,97,120,120,52,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,18,75,97,110,100,106,105,32,73,110,116,101,103,114,97,116,105,111,110,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,18,75,97,110,100,106,105,32,73,110,116,101,103,114,97,116,105,111,110,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,18,107,97,110,100,106,105,45,105,110,116,101,103,114,97,116,105,111,110,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,216,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,117,77,85,53,107,86,57,106,101,71,119,115,104,50,75,111,122,82,76,108,114,76,102,108,73,65,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,117,77,85,53,107,86,57,106,101,71,119,115,104,50,75,111,122,82,76,108,114,76,102,108,73,65,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,117,77,85,53,107,86,57,106,101,71,119,115,104,50,75,111,122,82,76,108,114,76,102,108,73,65,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,117,77,85,53,107,86,57,106,101,71,119,115,104,50,75,111,122,82,76,108,114,76,102,108,73,65,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,117,77,85,53,107,86,57,106,101,71,119,115,104,50,75,111,122,82,76,108,114,76,102,108,73,65,46,112,110,103,32,51,54,48,48,119,34,44,34,97,108,116,34,58,34,75,97,110,100,106,105,32,73,110,116,101,103,114,97,116,105,111,110,32,73,109,97,103,101,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,134,149,81,160,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,34,0,8,0,0,0,2,105,100,10,0,0,0,9,90,81,117,120,50,48,115,108,66,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,46,87,101,98,65,117,116,104,110,32,115,117,112,112,111,114,116,32,102,111,114,32,84,119,111,45,70,97,99,116,111,114,32,65,117,116,104,101,110,116,105,99,97,116,105,111,110,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,12,87,101,98,65,117,116,104,110,32,50,70,65,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,12,119,101,98,97,117,116,104,110,45,50,102,97,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,210,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,73,112,67,75,115,103,114,56,79,70,49,55,57,97,54,84,83,88,117,83,99,108,76,120,107,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,73,112,67,75,115,103,114,56,79,70,49,55,57,97,54,84,83,88,117,83,99,108,76,120,107,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,73,112,67,75,115,103,114,56,79,70,49,55,57,97,54,84,83,88,117,83,99,108,76,120,107,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,73,112,67,75,115,103,114,56,79,70,49,55,57,97,54,84,83,88,117,83,99,108,76,120,107,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,73,112,67,75,115,103,114,56,79,70,49,55,57,97,54,84,83,88,117,83,99,108,76,120,107,46,112,110,103,32,51,54,48,48,119,34,44,34,97,108,116,34,58,34,87,101,98,65,117,116,104,110,32,50,70,65,32,83,99,114,101,101,110,115,104,111,116,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,134,72,18,60,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,35,0,8,0,0,0,2,105,100,10,0,0,0,9,68,57,90,68,116,69,70,53,120,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,23,83,101,110,116,105,110,101,108,79,110,101,32,73,110,116,101,103,114,97,116,105,111,110,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,23,83,101,110,116,105,110,101,108,111,110,101,32,73,110,116,101,103,114,97,116,105,111,110,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,23,115,101,110,116,105,110,101,108,111,110,101,45,105,110,116,101,103,114,97,116,105,111,110,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,231,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,65,71,73,99,74,66,54,50,113,76,101,75,89,52,112,98,106,108,103,86,76,51,112,90,83,108,85,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,65,71,73,99,74,66,54,50,113,76,101,75,89,52,112,98,106,108,103,86,76,51,112,90,83,108,85,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,65,71,73,99,74,66,54,50,113,76,101,75,89,52,112,98,106,108,103,86,76,51,112,90,83,108,85,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,65,71,73,99,74,66,54,50,113,76,101,75,89,52,112,98,106,108,103,86,76,51,112,90,83,108,85,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,65,71,73,99,74,66,54,50,113,76,101,75,89,52,112,98,106,108,103,86,76,51,112,90,83,108,85,46,112,110,103,32,51,54,48,48,119,34,44,34,97,108,116,34,58,34,83,101,110,116,105,110,101,108,111,110,101,32,73,110,116,101,103,114,97,116,105,111,110,32,115,99,114,101,101,110,115,104,111,116,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,133,235,95,196,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,36,0,8,0,0,0,2,105,100,10,0,0,0,9,86,101,71,81,80,104,115,120,115,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,30,65,114,99,104,105,118,105,110,103,32,97,110,100,32,66,108,111,99,107,105,110,103,32,68,101,118,105,99,101,115,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,26,65,114,99,104,105,118,105,110,103,32,66,108,111,99,107,105,110,103,32,68,101,118,105,99,101,115,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,26,97,114,99,104,105,118,105,110,103,45,98,108,111,99,107,105,110,103,45,100,101,118,105,99,101,115,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,225,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,108,73,70,50,104,82,97,50,118,112,85,54,112,110,56,80,53,67,72,112,119,99,102,114,104,97,103,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,108,73,70,50,104,82,97,50,118,112,85,54,112,110,56,80,53,67,72,112,119,99,102,114,104,97,103,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,108,73,70,50,104,82,97,50,118,112,85,54,112,110,56,80,53,67,72,112,119,99,102,114,104,97,103,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,108,73,70,50,104,82,97,50,118,112,85,54,112,110,56,80,53,67,72,112,119,99,102,114,104,97,103,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,108,73,70,50,104,82,97,50,118,112,85,54,112,110,56,80,53,67,72,112,119,99,102,114,104,97,103,46,112,110,103,32,51,54,48,48,119,34,44,34,97,108,116,34,58,34,65,114,99,104,105,118,105,110,103,32,100,101,118,105,99,101,115,32,115,99,114,101,101,110,115,104,111,116,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,133,116,237,128,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,37,0,8,0,0,0,2,105,100,10,0,0,0,9,83,121,68,49,77,104,72,102,75,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,26,67,108,105,101,110,116,32,82,101,115,111,117,114,99,101,32,86,105,115,105,98,105,108,105,116,121,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,26,67,108,105,101,110,116,32,82,101,115,111,117,114,99,101,32,86,105,115,105,98,105,108,105,116,121,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,26,99,108,105,101,110,116,45,114,101,115,111,117,114,99,101,45,118,105,115,105,98,105,108,105,116,121,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,229,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,82,52,98,83,52,76,78,50,116,98,66,118,66,65,101,119,107,120,51,55,118,82,49,89,57,52,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,82,52,98,83,52,76,78,50,116,98,66,118,66,65,101,119,107,120,51,55,118,82,49,89,57,52,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,82,52,98,83,52,76,78,50,116,98,66,118,66,65,101,119,107,120,51,55,118,82,49,89,57,52,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,82,52,98,83,52,76,78,50,116,98,66,118,66,65,101,119,107,120,51,55,118,82,49,89,57,52,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,82,52,98,83,52,76,78,50,116,98,66,118,66,65,101,119,107,120,51,55,118,82,49,89,57,52,46,112,110,103,32,51,54,48,48,119,34,44,34,97,108,116,34,58,34,67,108,105,101,110,116,32,82,101,115,111,117,114,99,101,32,86,105,115,105,98,105,108,105,116,121,32,115,99,114,101,101,110,115,104,111,116,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,132,223,149,20,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,38,0,8,0,0,0,2,105,100,10,0,0,0,9,88,67,121,57,70,52,106,76,109,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,29,68,105,115,112,108,97,121,32,80,114,111,116,111,99,111,108,32,82,101,115,116,114,105,99,116,105,111,110,115,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,29,68,105,115,112,108,97,121,32,80,114,111,116,111,99,111,108,32,82,101,115,116,114,105,99,116,105,111,110,115,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,29,100,105,115,112,108,97,121,45,112,114,111,116,111,99,111,108,45,114,101,115,116,114,105,99,116,105,111,110,115,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,187,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,104,97,111,97,66,113,121,56,72,120,103,70,74,51,116,57,84,76,53,52,115,66,101,80,115,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,104,97,111,97,66,113,121,56,72,120,103,70,74,51,116,57,84,76,53,52,115,66,101,80,115,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,104,97,111,97,66,113,121,56,72,120,103,70,74,51,116,57,84,76,53,52,115,66,101,80,115,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,104,97,111,97,66,113,121,56,72,120,103,70,74,51,116,57,84,76,53,52,115,66,101,80,115,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,104,97,111,97,66,113,121,56,72,120,103,70,74,51,116,57,84,76,53,52,115,66,101,80,115,46,112,110,103,32,51,54,48,48,119,34,44,34,97,108,116,34,58,34,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,132,156,162,104,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,39,0,8,0,0,0,2,105,100,10,0,0,0,9,107,67,75,117,107,57,48,95,108,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,17,84,101,97,109,32,80,97,103,101,32,82,101,102,114,101,115,104,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,14,84,101,97,109,32,68,97,116,97,32,71,114,105,100,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,14,116,101,97,109,45,100,97,116,97,45,103,114,105,100,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,192,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,120,84,98,78,111,89,72,51,117,68,102,99,55,51,79,112,77,111,97,52,89,66,84,80,98,107,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,120,84,98,78,111,89,72,51,117,68,102,99,55,51,79,112,77,111,97,52,89,66,84,80,98,107,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,120,84,98,78,111,89,72,51,117,68,102,99,55,51,79,112,77,111,97,52,89,66,84,80,98,107,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,120,84,98,78,111,89,72,51,117,68,102,99,55,51,79,112,77,111,97,52,89,66,84,80,98,107,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,120,84,98,78,111,89,72,51,117,68,102,99,55,51,79,112,77,111,97,52,89,66,84,80,98,107,46,112,110,103,32,51,54,48,48,119,34,44,34,97,108,116,34,58,34,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,132,94,214,24,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,40,0,8,0,0,0,2,105,100,10,0,0,0,9,88,110,53,118,109,98,69,109,110,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,18,73,110,116,117,110,101,32,73,110,116,101,103,114,97,116,105,111,110,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,18,73,110,116,117,110,101,32,73,110,116,101,103,114,97,116,105,111,110,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,18,105,110,116,117,110,101,45,105,110,116,101,103,114,97,116,105,111,110,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,192,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,80,97,56,114,102,88,101,122,79,55,119,114,52,74,105,57,81,118,86,66,66,72,67,83,56,73,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,80,97,56,114,102,88,101,122,79,55,119,114,52,74,105,57,81,118,86,66,66,72,67,83,56,73,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,80,97,56,114,102,88,101,122,79,55,119,114,52,74,105,57,81,118,86,66,66,72,67,83,56,73,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,80,97,56,114,102,88,101,122,79,55,119,114,52,74,105,57,81,118,86,66,66,72,67,83,56,73,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,80,97,56,114,102,88,101,122,79,55,119,114,52,74,105,57,81,118,86,66,66,72,67,83,56,73,46,112,110,103,32,51,54,48,48,119,34,44,34,97,108,116,34,58,34,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,132,58,201,148,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,41,0,8,0,0,0,2,105,100,10,0,0,0,9,118,71,69,102,78,53,89,87,77,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,20,77,97,110,97,103,101,32,66,105,108,108,105,110,103,32,80,108,97,110,115,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,20,77,97,110,97,103,101,32,66,105,108,108,105,110,103,32,80,108,97,110,115,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,20,109,97,110,97,103,101,45,98,105,108,108,105,110,103,45,112,108,97,110,115,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,182,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,87,70,121,101,100,83,52,80,65,84,57,69,57,71,111,48,50,86,65,82,112,78,74,103,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,87,70,121,101,100,83,52,80,65,84,57,69,57,71,111,48,50,86,65,82,112,78,74,103,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,87,70,121,101,100,83,52,80,65,84,57,69,57,71,111,48,50,86,65,82,112,78,74,103,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,87,70,121,101,100,83,52,80,65,84,57,69,57,71,111,48,50,86,65,82,112,78,74,103,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,87,70,121,101,100,83,52,80,65,84,57,69,57,71,111,48,50,86,65,82,112,78,74,103,46,112,110,103,32,51,54,48,48,119,34,44,34,97,108,116,34,58,34,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,132,58,201,148,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,42,0,8,0,0,0,2,105,100,10,0,0,0,9,104,82,86,68,119,117,72,53,50,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,19,78,101,120,116,68,78,83,32,105,110,116,101,103,114,97,116,105,111,110,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,8,78,101,120,116,32,68,78,83,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,8,110,101,120,116,45,100,110,115,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,197,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,51,81,116,48,99,79,122,108,88,100,87,102,118,51,111,66,83,53,103,48,52,55,109,81,108,77,56,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,51,81,116,48,99,79,122,108,88,100,87,102,118,51,111,66,83,53,103,48,52,55,109,81,108,77,56,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,51,81,116,48,99,79,122,108,88,100,87,102,118,51,111,66,83,53,103,48,52,55,109,81,108,77,56,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,51,81,116,48,99,79,122,108,88,100,87,102,118,51,111,66,83,53,103,48,52,55,109,81,108,77,56,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,51,81,116,48,99,79,122,108,88,100,87,102,118,51,111,66,83,53,103,48,52,55,109,81,108,77,56,46,112,110,103,32,51,54,48,48,119,34,44,34,97,108,116,34,58,34,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,131,196,87,80,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,43,0,8,0,0,0,2,105,100,10,0,0,0,9,69,108,49,75,76,121,85,81,85,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,16,74,97,109,102,32,73,110,116,101,103,114,97,116,105,111,110,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,16,74,97,109,102,32,73,110,116,101,103,114,97,116,105,111,110,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,16,106,97,109,102,45,105,110,116,101,103,114,97,116,105,111,110,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,197,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,70,78,98,83,50,83,103,51,49,80,120,55,111,108,77,82,85,83,121,54,83,104,68,115,48,107,89,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,70,78,98,83,50,83,103,51,49,80,120,55,111,108,77,82,85,83,121,54,83,104,68,115,48,107,89,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,70,78,98,83,50,83,103,51,49,80,120,55,111,108,77,82,85,83,121,54,83,104,68,115,48,107,89,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,70,78,98,83,50,83,103,51,49,80,120,55,111,108,77,82,85,83,121,54,83,104,68,115,48,107,89,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,50,48,52,56,32,50,48,52,56,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,70,78,98,83,50,83,103,51,49,80,120,55,111,108,77,82,85,83,121,54,83,104,68,115,48,107,89,46,112,110,103,32,51,54,48,48,119,34,44,34,97,108,116,34,58,34,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,131,155,36,112,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,44,0,8,0,0,0,2,105,100,10,0,0,0,9,117,99,76,53,113,51,115,89,52,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,27,67,111,110,110,101,99,116,101,100,32,115,116,97,116,101,32,102,111,114,32,100,101,118,105,99,101,115,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,27,67,111,110,110,101,99,116,101,100,32,83,116,97,116,101,32,102,111,114,32,68,101,118,105,99,101,115,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,27,99,111,110,110,101,99,116,101,100,45,115,116,97,116,101,45,102,111,114,45,100,101,118,105,99,101,115,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,103,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,74,119,120,102,76,100,51,65,116,54,79,110,66,119,82,76,55,120,71,110,72,82,103,113,98,69,81,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,74,119,120,102,76,100,51,65,116,54,79,110,66,119,82,76,55,120,71,110,72,82,103,113,98,69,81,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,74,119,120,102,76,100,51,65,116,54,79,110,66,119,82,76,55,120,71,110,72,82,103,113,98,69,81,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,74,119,120,102,76,100,51,65,116,54,79,110,66,119,82,76,55,120,71,110,72,82,103,113,98,69,81,46,112,110,103,32,49,50,48,48,119,34,44,34,97,108,116,34,58,34,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,131,139,177,92,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,45,0,8,0,0,0,2,105,100,10,0,0,0,9,70,121,66,80,77,77,52,107,101,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,41,82,101,115,111,117,114,99,101,32,97,117,116,104,101,110,116,105,99,97,116,105,111,110,32,115,116,97,116,101,115,32,105,110,32,99,108,105,101,110,116,115,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,21,67,108,105,101,110,116,32,82,101,115,111,117,114,99,101,32,83,116,97,116,101,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,21,99,108,105,101,110,116,45,114,101,115,111,117,114,99,101,45,115,116,97,116,101,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,103,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,89,70,99,56,57,110,83,110,115,108,122,111,78,79,106,121,102,116,79,81,69,75,105,52,51,121,73,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,89,70,99,56,57,110,83,110,115,108,122,111,78,79,106,121,102,116,79,81,69,75,105,52,51,121,73,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,89,70,99,56,57,110,83,110,115,108,122,111,78,79,106,121,102,116,79,81,69,75,105,52,51,121,73,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,89,70,99,56,57,110,83,110,115,108,122,111,78,79,106,121,102,116,79,81,69,75,105,52,51,121,73,46,112,110,103,32,49,50,48,48,119,34,44,34,97,108,116,34,58,34,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,131,139,177,92,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,46,0,8,0,0,0,2,105,100,10,0,0,0,9,102,121,52,100,99,98,122,107,49,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,9,76,105,110,117,120,32,65,82,77,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,9,76,105,110,117,120,32,65,82,77,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,9,108,105,110,117,120,45,97,114,109,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,91,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,108,99,118,112,105,105,111,98,72,56,69,68,66,115,54,86,116,55,54,111,67,75,52,56,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,108,99,118,112,105,105,111,98,72,56,69,68,66,115,54,86,116,55,54,111,67,75,52,56,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32,53,49,50,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,108,99,118,112,105,105,111,98,72,56,69,68,66,115,54,86,116,55,54,111,67,75,52,56,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,49,48,50,52,32,49,48,50,52,119,44,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,108,99,118,112,105,105,111,98,72,56,69,68,66,115,54,86,116,55,54,111,67,75,52,56,46,112,110,103,32,49,50,48,48,119,34,44,34,97,108,116,34,58,34,34,125,0,0,0,9,115,55,56,114,95,53,83,102,105,3,0,0,1,131,139,177,92,0,0,0,0,9,65,104,78,81,89,77,54,54,114,9,0,0,0,47,0,8,0,0,0,2,105,100,10,0,0,0,9,88,71,68,100,103,49,73,95,106,0,0,0,9,97,112,88,108,50,109,52,50,87,1,1,0,0,0,9,83,101,50,72,117,72,95,73,79,10,0,0,0,31,78,101,116,119,111,114,107,32,69,118,101,110,116,115,32,105,110,32,65,100,109,105,110,32,67,111,110,115,111,108,101,0,0,0,9,114,111,121,67,70,110,71,111,69,10,0,0,0,14,78,101,116,119,111,114,107,32,69,118,101,110,116,115,0,0,0,9,116,66,56,104,99,107,86,88,86,10,0,0,0,14,110,101,116,119,111,114,107,45,101,118,101,110,116,115,0,0,0,9,100,114,66,105,109,79,50,51,57,6,0,0,1,103,123,34,115,114,99,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,89,72,102,116,74,81,71,76,119,102,52,122,69,118,103,112,78,76,122,103,77,120,75,86,78,120,69,46,112,110,103,34,44,34,115,114,99,83,101,116,34,58,34,104,116,116,112,115,58,47,47,102,114,97,109,101,114,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109,47,105,109,97,103,101,115,47,89,72,102,116,74,81,71,76,119,102,52,122,69,118,103,112,78,76,122,103,77,120,75,86,78,120,69,46,112,110,103,63,115,99,97,108,101,45,100,111,119,110,45,116,111,61,53,49,50,32],indexes:[new a({collation:{type:1},collectionSchema:o,fieldNames:[\"id\",\"AhNQYM66r\"],range:{from:0,to:1161},url:new URL(\"./p_ZRklbwL-indexes-default.framercms\",\"https://framerusercontent.com/modules/7aKEcE234HUuUbxVUWG0/r00fiWVKf39CEBHzNofi/p_ZRklbwL.js\").href}),new a({collation:{type:0},collectionSchema:o,fieldNames:[\"apXl2m42W\",\"AhNQYM66r\"],range:{from:1161,to:1635},url:new URL(\"./p_ZRklbwL-indexes-default.framercms\",\"https://framerusercontent.com/modules/7aKEcE234HUuUbxVUWG0/r00fiWVKf39CEBHzNofi/p_ZRklbwL.js\").href}),new a({collation:{type:0},collectionSchema:o,fieldNames:[\"Se2HuH_IO\",\"AhNQYM66r\"],range:{from:1635,to:3235},url:new URL(\"./p_ZRklbwL-indexes-default.framercms\",\"https://framerusercontent.com/modules/7aKEcE234HUuUbxVUWG0/r00fiWVKf39CEBHzNofi/p_ZRklbwL.js\").href}),new a({collation:{type:0},collectionSchema:o,fieldNames:[\"royCFnGoE\",\"AhNQYM66r\"],range:{from:3235,to:4667},url:new URL(\"./p_ZRklbwL-indexes-default.framercms\",\"https://framerusercontent.com/modules/7aKEcE234HUuUbxVUWG0/r00fiWVKf39CEBHzNofi/p_ZRklbwL.js\").href}),new a({collation:{type:0},collectionSchema:o,fieldNames:[\"tB8hckVXV\",\"AhNQYM66r\"],range:{from:4667,to:6055},url:new URL(\"./p_ZRklbwL-indexes-default.framercms\",\"https://framerusercontent.com/modules/7aKEcE234HUuUbxVUWG0/r00fiWVKf39CEBHzNofi/p_ZRklbwL.js\").href}),new a({collation:{type:0},collectionSchema:o,fieldNames:[\"drBimO239\",\"AhNQYM66r\"],range:{from:6055,to:9759},url:new URL(\"./p_ZRklbwL-indexes-default.framercms\",\"https://framerusercontent.com/modules/7aKEcE234HUuUbxVUWG0/r00fiWVKf39CEBHzNofi/p_ZRklbwL.js\").href}),new a({collation:{type:0},collectionSchema:o,fieldNames:[\"s78r_5Sfi\",\"AhNQYM66r\"],range:{from:9759,to:10573},url:new URL(\"./p_ZRklbwL-indexes-default.framercms\",\"https://framerusercontent.com/modules/7aKEcE234HUuUbxVUWG0/r00fiWVKf39CEBHzNofi/p_ZRklbwL.js\").href}),new a({collation:{type:0},collectionSchema:o,fieldNames:[\"AhNQYM66r\",\"AhNQYM66r\"],range:{from:10573,to:11072},url:new URL(\"./p_ZRklbwL-indexes-default.framercms\",\"https://framerusercontent.com/modules/7aKEcE234HUuUbxVUWG0/r00fiWVKf39CEBHzNofi/p_ZRklbwL.js\").href})],resolveRichText:i,schema:o})},displayName:\"Changelog\"};export default m;e(m,{apXl2m42W:{defaultValue:!0,title:\"Published\",type:t.Boolean},Se2HuH_IO:{defaultValue:\"WebAuthN Support for Two-Factor Authnetication\",title:\"Title\",type:t.String},royCFnGoE:{defaultValue:\"\",placeholder:\"Keep it under 20 char so it looks good in the nav\",title:\"Short Title\",type:t.String},tB8hckVXV:{title:\"Slug\",type:t.String},drBimO239:{title:\"Image\",type:t.ResponsiveImage},s78r_5Sfi:{title:\"Date\",type:t.Date},AhNQYM66r:{defaultValue:\"\",title:\"Changes\",type:t.RichText}});export const enumToDisplayNameFunctions={};export const utils={async getSlugByRecordId(e,t){let[l]=await n.query({from:{data:m,type:\"Collection\"},limit:{type:\"LiteralValue\",value:1},select:[{name:\"tB8hckVXV\",type:\"Identifier\"}],where:{left:{name:\"id\",type:\"Identifier\"},operator:\"==\",right:{type:\"LiteralValue\",value:e},type:\"BinaryOperation\"}},t);return null==l?void 0:l.tB8hckVXV;},async getRecordIdBySlug(e,t){let[l]=await n.query({from:{data:m,type:\"Collection\"},limit:{type:\"LiteralValue\",value:1},select:[{name:\"id\",type:\"Identifier\"}],where:{left:{name:\"tB8hckVXV\",type:\"Identifier\"},operator:\"==\",right:{type:\"LiteralValue\",value:e},type:\"BinaryOperation\"}},t);return null==l?void 0:l.id;}};\nexport const __FramerMetadata__ = {\"exports\":{\"enumToDisplayNameFunctions\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"data\",\"name\":\"data\",\"annotations\":{\"framerSlug\":\"tB8hckVXV\",\"framerContractVersion\":\"1\",\"framerCollectionUtils\":\"1\",\"framerData\":\"\",\"framerRecordIdKey\":\"id\",\"framerCollectionId\":\"p_ZRklbwL\",\"framerEnumToDisplayNameUtils\":\"2\"}},\"utils\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}", "import{jsx as e,jsxs as t}from\"react/jsx-runtime\";import{addPropertyControls as r,ComponentPresetsConsumer as n,ControlType as o,Link as s}from\"framer\";import{motion as a}from\"framer-motion\";import*as i from\"react\";import{Youtube as c}from\"https://framerusercontent.com/modules/NEd4VmDdsxM3StIUbddO/fJ8vwGe6kxfz7kj9H7Sk/YouTube.js\";import l from\"https://framerusercontent.com/modules/pVk4QsoHxASnVtUBp6jr/VRQHcjrUbz44BGN94kVX/CodeBlock.js\";let h=\"xT_4SVBSB\",d=\"WRWHbDdVF\",p=\"puRBDtdWy\",u=\"htIvfYBOu\",m=\"KppWsNgH6\",g=\"T0RLCFXgR\",w=\"NKOuDS7O_\",f=\"BOY5LSewc\",y=\"sgpwe4L0J\",b=\"YnwyMK7wB\",v=\"BkRMOcYdn\",k=\"HHZApOdSa\",T=(e,t)=>{if(e&&\"object\"==typeof e)return{...e,alt:t};},S=[{index:0,id:\"DKS85n_Ww\",[h]:!0,[d]:!0,[p]:\"Twingate Product Updates: April 2024\",[u]:\"April 2024 Product Updates\",[m]:\"april-2024-product-updates\",[g]:\"\",[w]:\"Anna Liu\",[f]:\"2024-05-07T00:00:00.000Z\",[y]:\"KI2UGBfh7\",[b]:T({src:\"https://framerusercontent.com/images/BIrABs9TLNkHgDzqsZzlNYvoZGo.png\",srcSet:\"https://framerusercontent.com/images/BIrABs9TLNkHgDzqsZzlNYvoZGo.png?scale-down-to=512 512w,https://framerusercontent.com/images/BIrABs9TLNkHgDzqsZzlNYvoZGo.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/BIrABs9TLNkHgDzqsZzlNYvoZGo.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/BIrABs9TLNkHgDzqsZzlNYvoZGo.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/BIrABs9TLNkHgDzqsZzlNYvoZGo.png\",srcSet:\"https://framerusercontent.com/images/BIrABs9TLNkHgDzqsZzlNYvoZGo.png?scale-down-to=512 512w,https://framerusercontent.com/images/BIrABs9TLNkHgDzqsZzlNYvoZGo.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/BIrABs9TLNkHgDzqsZzlNYvoZGo.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/BIrABs9TLNkHgDzqsZzlNYvoZGo.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"April was a busy month for us, especially when it comes to new and expanded integrations. And that\u2019s on top of some exciting new native functionality!\"}),/*#__PURE__*/e(\"p\",{children:\"Let\u2019s dive in.\"}),/*#__PURE__*/e(\"h2\",{children:\"Request access to locked resources\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,Ip47ZrAHlnjYnLfpIRUm9LYlfPM.png\",\"data-framer-height\":\"1890\",\"data-framer-width\":\"3600\",height:\"945\",src:\"https://framerusercontent.com/images/Ip47ZrAHlnjYnLfpIRUm9LYlfPM.png\",srcSet:\"https://framerusercontent.com/images/Ip47ZrAHlnjYnLfpIRUm9LYlfPM.png?scale-down-to=512 512w,https://framerusercontent.com/images/Ip47ZrAHlnjYnLfpIRUm9LYlfPM.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/Ip47ZrAHlnjYnLfpIRUm9LYlfPM.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/Ip47ZrAHlnjYnLfpIRUm9LYlfPM.png 3600w\",style:{aspectRatio:\"3600 / 1890\"},width:\"1800\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/usage-based-auto-lock\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate Usage-based auto-lock policies\"})}),\" revoke access if a set usage requirement isn\u2019t met, automatically reducing your attack surface and automating least privilege access. But what if a user needs to re-establish access to a locked Resource?\"]}),/*#__PURE__*/e(\"p\",{children:\"End users can now request and obtain access directly through Twingate. Incoming access requests can be reviewed in Twingate, via email, or in your preferred channel via webhook.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://youtu.be/eq12XTl5v1g\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Watch this short demo video\"})}),\" to see access requests in action, or check out \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/usage-based-auto-lock#requesting-access\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"the docs page\"})}),\".\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/e(\"h2\",{children:\"DNS filtering enrollment groups\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,7HN3j0hnhWwfpiLTNAJsYVQ4By4.png\",\"data-framer-height\":\"1891\",\"data-framer-width\":\"3600\",height:\"945\",src:\"https://framerusercontent.com/images/7HN3j0hnhWwfpiLTNAJsYVQ4By4.png\",srcSet:\"https://framerusercontent.com/images/7HN3j0hnhWwfpiLTNAJsYVQ4By4.png?scale-down-to=512 512w,https://framerusercontent.com/images/7HN3j0hnhWwfpiLTNAJsYVQ4By4.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/7HN3j0hnhWwfpiLTNAJsYVQ4By4.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/7HN3j0hnhWwfpiLTNAJsYVQ4By4.png 3600w\",style:{aspectRatio:\"3600 / 1891\"},width:\"1800\"}),/*#__PURE__*/t(\"p\",{children:[\"You can now \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/dns-filtering#enabling-dns-filtering-for-specific-groups-and-users\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"enable Twingate Internet Security for specific groups\"})}),\", making it easy to test new functionality and stagger rollout across your users.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/use-case/dns-filtering\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate DNS Filtering\"})}),\" automatically detects, flags, and blocks malicious web threats like malware, phishing, cryptojacking, and more.\"]}),/*#__PURE__*/e(\"h2\",{children:\"New and expanded integrations\"}),/*#__PURE__*/e(\"p\",{children:\"Investing in native integrations is a critical component of Twingate\u2019s approach to Zero Trust security. Here\u2019s the latest from our integration partnerships:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Our \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/coder-integration\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"new integration Coder\"})}),\" makes it easy to securely access private resources directly from Coder\u2019s open source dev environments.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"The \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/integrations/pulumi\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate Pulumi provider\"})}),\" has officially moved from beta to GA.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"We continue to make improvements to our \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/changelog/k8s-operator-v0-10-0\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Kubernetes Operator\"})}),\", including making it easier to migrate over to K8s from a different tool.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"The \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/integrations/jumpcloud\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate x JumpCloud integration\"})}),\" is now available to self-serve directly in the Admin Console.\"]})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h2\",{children:\"More from the Product Team\"}),/*#__PURE__*/e(\"p\",{children:\"We\u2019ve got plenty of other features we\u2019re excited to share, plus a peek at some upcoming releases:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Twingate routing now prioritizes connecting to the closest Connectors geographically, with no action needed from admins besides \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/upgrading-connectors\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"ensuring Connectors are up-to-date\"})}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Local peer-to-peer connections enable better performance and throughput when clients and Connectors are on the same network\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"[Coming soon] We\u2019re further expanding our AWS S3 integration to enable customers to sync DNS filtering logs to an AWS S3 bucket.\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"Stay in the know\"}),/*#__PURE__*/e(\"p\",{children:\"We\u2019ve always got lots of things cooking over here at Twingate, and the easiest way to stay in the know is to subscribe to our changelog.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"We have a few different feeds, so you can subscribe to whichever fits best for your team:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://twingate.com/changelog.rss.xml\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"What\u2019s new RSS\"})}),\": our biggest new feature releases\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/changelog-clients.rss.xml\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Client RSS\"})}),\": information on the latest Client versions and bug fixes\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://twingate.com/changelog-connectors.rss.xml\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Connector RSS\"})}),\": updates and improvements to Twingate Connectors\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/changelog/api\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"API changelog\"})}),\": the latest changes and updates to our GraphQL-based Admin API\"]})})]}),/*#__PURE__*/t(\"p\",{children:[\"Not a Twingate customer yet? If you\u2019re interested in taking Twingate for a spin, you can request a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"personalized demo\"})}),\" from our team or \",/*#__PURE__*/e(s,{href:\"https://auth.twingate.com/\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"try it out yourself for free\"})}),\".\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]})]})},{index:1,id:\"Dd29qvFV5\",[h]:!0,[d]:!1,[p]:\"Twingate in the Kandji Auto App Store\",[u]:\"Kandji Auto App\",[m]:\"kandji-auto-app\",[g]:\"\",[w]:\"Emily Lehman\",[f]:\"2024-05-02T00:00:00.000Z\",[y]:\"KI2UGBfh7\",[b]:T({src:\"https://framerusercontent.com/images/Thy79tYAvyIXl8yVMgsWU99e0k.png\",srcSet:\"https://framerusercontent.com/images/Thy79tYAvyIXl8yVMgsWU99e0k.png?scale-down-to=512 512w,https://framerusercontent.com/images/Thy79tYAvyIXl8yVMgsWU99e0k.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/Thy79tYAvyIXl8yVMgsWU99e0k.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/Thy79tYAvyIXl8yVMgsWU99e0k.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/Thy79tYAvyIXl8yVMgsWU99e0k.png\",srcSet:\"https://framerusercontent.com/images/Thy79tYAvyIXl8yVMgsWU99e0k.png?scale-down-to=512 512w,https://framerusercontent.com/images/Thy79tYAvyIXl8yVMgsWU99e0k.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/Thy79tYAvyIXl8yVMgsWU99e0k.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/Thy79tYAvyIXl8yVMgsWU99e0k.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"At Twingate we invest heavily in integrations so that our customers can build the best possible security stack, and that means expanding our functionality with existing tech partners.\"}),/*#__PURE__*/t(\"p\",{children:[\"We\u2019re thrilled to share that we\u2019re expanding our partnership with Kandji: Twingate\u2019s standalone MacOS client is now available in the\",/*#__PURE__*/e(s,{href:\"https://support.kandji.io/support/solutions/articles/72000560297-available-auto-apps\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\" Kandji Auto App catalog\"})}),\"!\\xa0\"]}),/*#__PURE__*/e(\"p\",{children:\"Kandji is the Device Harmony platform for Apple devices in the enterprise, keeping Apple users secure and productive. Kandji goes beyond Apple MDM solutions by integrating device security and device management into one platform.\"}),/*#__PURE__*/e(\"p\",{children:\"Now that Twingate is available in the Kandji Auto App catalog, it\u2019s easier than ever to deploy and manage the Twingate Client. Customers no longer need to spend time worrying about packaging, managing profiles, and having out-of-date deployments - Kandji handles it all for you.\"}),/*#__PURE__*/e(\"p\",{children:\"With Twingate, organizations can apply access policies at the endpoint device, applying the principle of least privileged access for enhanced security. These policies can include both native device posture checks for things like hard drive encryption, antivirus, screen lock, firewall, etc, plus integrations with MDM and EDR solutions.\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/integrations/kandji\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"native integration with Kandji\"})}),\" enables organizations to bridge their device source of truth and network access management policies.\\xa0\"]}),/*#__PURE__*/e(\"p\",{children:\"When Kandji is selected as a trust method within Twingate\u2019s Device Security, it can be incorporated into Security Policies. Only Macs that are verified through the Kandji integration will be considered satisfying the Trusted Profile and thus be allowed to access private resources.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate enables companies to set access policies at the endpoint device, applying the principle of least privileged access for enhanced security.\"}),/*#__PURE__*/t(\"p\",{children:[\"To get started, head to the \",/*#__PURE__*/e(s,{href:\"https://support.kandji.io/support/solutions/articles/72000560297-available-auto-apps\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Kandji Auto App library\"})}),\", or check out our \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/integrations/kandji\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"integration overview\"})}),\" for more details about trusted devices with Kandji + Twingate.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Not a Twingate customer yet? If you\u2019re interested in taking Twingate for a spin, you can request a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"personalized demo\"})}),\" from our team or \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"try it out yourself for free\"})}),\".\"]})]})},{index:2,id:\"KgvEzaqMt\",[h]:!0,[d]:!1,[p]:\"Announcing Twingate + Coder\",[u]:\"Coder Integration\",[m]:\"coder-integration\",[g]:\"\",[w]:\"Chen Bishop\",[f]:\"2024-04-24T00:00:00.000Z\",[y]:\"nwIUHELao\",[b]:T({src:\"https://framerusercontent.com/images/DxJYrUCfBu3qfZp6XfmAWHY7ZY.png\",srcSet:\"https://framerusercontent.com/images/DxJYrUCfBu3qfZp6XfmAWHY7ZY.png?scale-down-to=512 512w,https://framerusercontent.com/images/DxJYrUCfBu3qfZp6XfmAWHY7ZY.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/DxJYrUCfBu3qfZp6XfmAWHY7ZY.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/DxJYrUCfBu3qfZp6XfmAWHY7ZY.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/DxJYrUCfBu3qfZp6XfmAWHY7ZY.png\",srcSet:\"https://framerusercontent.com/images/DxJYrUCfBu3qfZp6XfmAWHY7ZY.png?scale-down-to=512 512w,https://framerusercontent.com/images/DxJYrUCfBu3qfZp6XfmAWHY7ZY.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/DxJYrUCfBu3qfZp6XfmAWHY7ZY.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/DxJYrUCfBu3qfZp6XfmAWHY7ZY.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Historically, software and DevOps engineers did the work of developing directly on their local laptops. To access private resources necessary to get that work done - internal databases, pipeline tools, etc - devs needed a VPN to securely access those resources.\"}),/*#__PURE__*/e(\"p\",{children:\"Today things work a bit differently. Instead of developing exclusively on a local device, developer environments have grown in popularity. They provide sandboxed environments for offering a reliable development experience. However, these tools come with their own headaches, particularly when it comes to accessing private resources, particularly if they can\u2019t always access the VPN connection and the IP addresses involved are ephemeral.\"}),/*#__PURE__*/t(\"p\",{children:[\"But accessing essential resources from dev environments doesn\u2019t \",/*#__PURE__*/e(\"em\",{children:\"need\"}),\" to be painful. In this blog we\u2019ll discuss how Twingate can help teams secure private resources while managing and scaling access via developer environments through our new integration with Coder.\"]}),/*#__PURE__*/e(\"h2\",{children:\"What is Coder\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://coder.com/product\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Coder\"})}),\" is an open-source development environment that also supports self-hosting, offering numerous advantages for developers.\"]}),/*#__PURE__*/e(\"p\",{children:\"In today\u2019s fast-paced development landscape, managing multiple projects simultaneously can be cumbersome due to the need to switch between environment variables, manage secrets, and adjust SDK versions. Coder offers a solution by enabling developers to effortlessly handle multiple projects within tailored development environments. This streamlined approach enhances productivity, allowing developers to focus more on coding and less on administrative tasks. Moreover, Coder promotes cost-efficiency by enabling organizations to offload computationally intensive tasks to the cloud or on-premises infrastructure, reducing the substantial hardware costs associated with providing high-performance devices to each developer.\"}),/*#__PURE__*/e(\"p\",{children:\"Additionally, Coder simplifies administration by centralizing software management, allowing IT teams to easily roll out updates across all development environments regardless of individual developers\u2019 operating system preferences. With enhanced security features, Coder provides isolated development environments that safeguard source code, minimizing the risk of unauthorized access or leaks. In the event of a breach, Coder\u2019s isolated environments ensure that only the affected project is compromised, limiting the impact and providing peace of mind to organizations and developers alike.\"}),/*#__PURE__*/e(\"h2\",{children:\"What is Twingate\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate is a Zero Trust Network Access (ZTNA) solution that enables organizations to apply modern security principles across their network, even as environments and workforces grow increasingly distributed.\"}),/*#__PURE__*/e(\"p\",{children:\"Unlike traditional VPNs, Twingate takes a \u201Cmany to many\u201D approach to network security rather than a perimeter-based approach. Twingate fosters direct peer-to-peer connections to private corporate resources - on-prem servers, applications, cloud environments, etc. - enabling organizations to limit their exposure to the public internet, reduce their attack surface, and significantly improve the end user experience with faster, more reliable access to those resources.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate's architecture eliminates the need for complex VPN configurations and provides granular control over access permissions, allowing organizations to enforce security policies based on factors like user identity, device posture, and location.\"}),/*#__PURE__*/e(\"p\",{children:\"Because Twingate also invests heavily in our API and supports automation tools like Kubernetes and Terraform, customers can implement and maintain a Zero Trust security model programatically.\"}),/*#__PURE__*/e(\"h2\",{children:\"Twingate + Coder\"}),/*#__PURE__*/e(\"p\",{children:\"We mentioned earlier that development environments often require access to internal resources such as databases and pipeline tools. That\u2019s where the new Twingate + Coder integration comes into play.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate helps engineers access these internal resources securely and easily from within their Coder development environments. This gives organizations all the benefits of Coder - isolated dev environments, centralized software management, reduced hardware costs, and more - without the performance and security risks of legacy remote access tools.\"}),/*#__PURE__*/t(\"p\",{children:[\"How does it work? By modifying the Coder template, the Twingate client can be deployed within the Coder workspace. The Twingate client can operate in \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/services-headless-clients\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"headless mode\"})}),\", utilizing \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/services\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"service accounts\"})}),\", or in interactive mode, allowing users to sign in with their Twingate accounts.\"]}),/*#__PURE__*/t(\"p\",{children:[\"For a detailed, step-by-step guide on setting up Twingate in Coder, refer to the documentation available \",/*#__PURE__*/e(s,{href:\"https://github.com/Twingate-Labs/tg-coder\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\". Not a Twingate customer yet? If you\u2019re interested in taking Twingate for a spin, you can \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"request a personalized demo\"})}),\" from our team or \",/*#__PURE__*/e(s,{href:\"https://auth.twingate.com/signup-v2\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"try it out yourself for free\"})}),\".\"]})]})},{index:3,id:\"dqVpwmnke\",[h]:!0,[d]:!1,[p]:\"How Zero Trust Simplifies Automation Through Terraform\",[u]:\"How Zero Trust Simplifies Automation Through Terraform\",[m]:\"how-zero-trust-simplifies-automation-through-terraform\",[g]:\"\",[w]:\"Twingate Team\",[f]:\"2024-04-17T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/vms4mnE1UtYvGQBGA3m4bCmVt4.png\",srcSet:\"https://framerusercontent.com/images/vms4mnE1UtYvGQBGA3m4bCmVt4.png?scale-down-to=512 512w,https://framerusercontent.com/images/vms4mnE1UtYvGQBGA3m4bCmVt4.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/vms4mnE1UtYvGQBGA3m4bCmVt4.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/vms4mnE1UtYvGQBGA3m4bCmVt4.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/vms4mnE1UtYvGQBGA3m4bCmVt4.png\",srcSet:\"https://framerusercontent.com/images/vms4mnE1UtYvGQBGA3m4bCmVt4.png?scale-down-to=512 512w,https://framerusercontent.com/images/vms4mnE1UtYvGQBGA3m4bCmVt4.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/vms4mnE1UtYvGQBGA3m4bCmVt4.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/vms4mnE1UtYvGQBGA3m4bCmVt4.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"h1\",{children:\"How Zero Trust Simplifies Automation Through Terraform\"}),/*#__PURE__*/e(\"p\",{children:\"As you increasingly shift your network to the cloud, the need for robust security frameworks and efficient automation becomes paramount. \"}),/*#__PURE__*/e(\"p\",{children:\"Terraform, a popular tool for infrastructure as code (IaC), has emerged as a cornerstone for your automation by applying consistent rules across servers. However, to enhance your security alongside automation, integrating a Zero Trust model can be transformative. \"}),/*#__PURE__*/e(\"p\",{children:\"Here\u2019s how Zero Trust can streamline your automation efforts with Terraform, ensuring secure and efficient management of your network.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h2\",{children:\"Understanding Terraform in a Cloud-Based Environment\"}),/*#__PURE__*/e(\"p\",{children:\"Terraform lets you define and provision infrastructure using a high-level configuration syntax. This means you can manage your entire cloud infrastructure, which includes multiple service providers and services, using code. \"}),/*#__PURE__*/e(\"p\",{children:\"By shifting to a one-to-many approach, you no longer have to manually configure servers individually. Terraform helps you maintain consistency, avoid human errors, and simplify the processes of deployment and scaling.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h2\",{children:\"The Role of Zero Trust\"}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust operates on the principle that you should trust no entity, whether inside or outside your network, by default. This principle is becoming increasingly crucial for you as you face growing threats to data security and stringent regulatory demands. \"}),/*#__PURE__*/e(\"p\",{children:\"By combining Zero Trust with Terraform, you can enhance this approach. Terraform allows you to automate the deployment of secure infrastructures and apply Zero Trust policies across your network efficiently. \"}),/*#__PURE__*/e(\"p\",{children:\"This integration helps ensure that every access request is continuously verified, aligning with your security protocols and regulatory compliance needs. It's a powerful strategy to maintain high security standards while managing complex cloud environments effectively.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h2\",{children:\"Integration of Zero Trust with Terraform\"}),/*#__PURE__*/t(\"ol\",{style:{\"--framer-font-size\":\"16px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(13, 13, 13)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Automated and Segmented Access Control:\"}),\" Zero Trust can be integrated into Terraform scripts to automate the deployment of granular access controls. This means you can automatically set up environments where access is strictly regulated based on the principle of least privilege. \"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"The Zero Trust solution would utilize the same configuration files as Terraform to automate these controls, ensuring that only authorized personnel can access specific applications at specific times.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Simplifying Compliance:\"}),\" By using Terraform alongside Zero Trust principles, you can not only automate the setup of your cloud environments but also ensure that these environments meet compliance standards from the get-go. \"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"For example, rules can be predefined in the Terraform scripts that comply with GDPR, HIPAA, or other regulatory frameworks, and the Zero Trust architecture will enforce these rules by default.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Dynamic Configuration Updates:\"}),\" As Terraform enables dynamic updates to your infrastructure, integrating Zero Trust means that any changes in your configuration or infrastructure are instantly reflected in your access controls. \"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"This synchronization ensures that your security measures are always up-to-date with the latest infrastructure changes, minimizing vulnerabilities. This way, you can maintain a secure environment that adapts quickly to new requirements or threats.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Enhanced Security with Minimal Overhead:\"}),\" Automating security measures through Terraform with a Zero Trust approach reduces your need for manual security configurations and constant oversight. This not only cuts down on your administrative burden but also speeds up your deployment cycles and reduces the potential for human error. \"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"This streamlined process allows you to focus more on strategic tasks while ensuring your network remains secure and compliant.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]})]}),/*#__PURE__*/e(\"h2\",{children:\"Practical Example: Implementing Zero Trust in Terraform\"}),/*#__PURE__*/e(\"p\",{children:\"Imagine you are deploying a set of virtual machines for a project team across multiple regions. With Terraform, you can script the deployment of these VMs along with network settings and security policies. \"}),/*#__PURE__*/e(\"p\",{children:\"By integrating Zero Trust, you can also define which team members have access to which VMs, under what conditions, and ensure that all communications are authenticated and encrypted based on the latest security policies.\"}),/*#__PURE__*/e(\"p\",{children:\"This integration not only streamlines workflows but also fortifies your infrastructure against threats, making it an indispensable strategy for modern cybersecurity in cloud environments.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h2\",{children:\"Get Started with Zero Trust\"}),/*#__PURE__*/e(\"p\",{children:\"The combination of Terraform and Zero Trust provides a powerful solution for automating cloud infrastructures securely. This approach not only simplifies the management of complex environments but also enhances the overall security posture without adding unnecessary complexity or overhead. As you look towards future-proofing your cloud deployments, consider how Zero Trust can make your Terraform automation even more effective and secure.\"}),/*#__PURE__*/t(\"p\",{children:[\"At Twingate, our \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/landing/best-zero-trust\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust Network Access (ZTNA) solution\"})}),\" is specifically optimized for DevOps workflows. By working off the same configuration files used in your Terraform scripts, our software automates segmented granular access controls. This ensures that only the right people can access the right applications at the right time, seamlessly integrating with your existing operations to bolster security without hindering performance.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Fifteen minutes is all it takes to deploy Twingate\u2019s modern ZTNA solution. To find out how, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"contact Twingate today\"})}),\".\"]})]})},{index:4,id:\"WrxSdzhTv\",[h]:!0,[d]:!1,[p]:\"Zero Trust: Streamlining Compliance Across 10 Key Global Regulatory Frameworks\",[u]:\"Zero Trust: Streamlining Compliance Across 10 Key Global Regulatory Frameworks\",[m]:\"zero-trust-streamlining-compliance-across-10-key-global-regulatory-frameworks\",[g]:\"\",[w]:\"Twingate Team\",[f]:\"2024-04-15T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/ZtvqHYKGdxfSxc6sBw0Snarm2Kw.png\",srcSet:\"https://framerusercontent.com/images/ZtvqHYKGdxfSxc6sBw0Snarm2Kw.png?scale-down-to=512 512w,https://framerusercontent.com/images/ZtvqHYKGdxfSxc6sBw0Snarm2Kw.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/ZtvqHYKGdxfSxc6sBw0Snarm2Kw.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/ZtvqHYKGdxfSxc6sBw0Snarm2Kw.png 2400w\"},\"Zero Trust: Streamlining Compliance Across 10 Key Global Regulatory Frameworks\"),[v]:T({src:\"https://framerusercontent.com/images/ZtvqHYKGdxfSxc6sBw0Snarm2Kw.png\",srcSet:\"https://framerusercontent.com/images/ZtvqHYKGdxfSxc6sBw0Snarm2Kw.png?scale-down-to=512 512w,https://framerusercontent.com/images/ZtvqHYKGdxfSxc6sBw0Snarm2Kw.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/ZtvqHYKGdxfSxc6sBw0Snarm2Kw.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/ZtvqHYKGdxfSxc6sBw0Snarm2Kw.png 2400w\"},\"Zero Trust: Streamlining Compliance Across 10 Key Global Regulatory Frameworks\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"h1\",{children:/*#__PURE__*/e(\"strong\",{children:\"How Zero Trust Architecture Simplifies Compliance for the Top 10 Global Regulatory Frameworks\"})}),/*#__PURE__*/e(\"p\",{children:\"In today's world, you may find it challenging to quickly grow your business while also following strict rules. As your organization expands and regulations become more detailed, this challenge only intensifies. Zero Trust is a leading strategy that can solve this problem for you.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/the-3-core-principles-of-zero-trust\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"One of its three main principles\"})}),\" involves segmenting or dividing systems to reduce risks, aligning well with today's detailed compliance frameworks.\"]}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust offers a seamless solution that allows for rapid growth and compliance to coexist, especially as rules about protecting data globally become more complex.\"}),/*#__PURE__*/e(\"p\",{children:\"Top 10 Regulatory Frameworks for Cyber Security Compliance:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"code\",{children:/*#__PURE__*/e(\"strong\",{children:\"CCPA (California Consumer Privacy Act)\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"code\",{children:/*#__PURE__*/e(\"strong\",{children:\"GDPR (General Data Protection Regulation)\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"code\",{children:/*#__PURE__*/e(\"strong\",{children:\"HIPAA (Health Insurance Portability and Accountability Act)\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"code\",{children:/*#__PURE__*/e(\"strong\",{children:\"PCI DSS (Payment Card Industry Data Security Standard)\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"code\",{children:/*#__PURE__*/e(\"strong\",{children:\"SOX (Sarbanes-Oxley Act)\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"code\",{children:/*#__PURE__*/e(\"strong\",{children:\"ISO/IEC 27001\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"code\",{children:/*#__PURE__*/e(\"strong\",{children:\"NIST Cybersecurity Framework\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"code\",{children:/*#__PURE__*/e(\"strong\",{children:\"PIPEDA (Personal Information Protection and Electronic Documents Act)\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"code\",{children:/*#__PURE__*/e(\"strong\",{children:\"LGPD (Lei Geral de Prote\\xe7\\xe3o de Dados)\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"code\",{children:/*#__PURE__*/e(\"strong\",{children:\"Australia\u2019s Privacy Act\"})})})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Introduction to Zero Trust in the Modern Data Privacy Landscape\"})}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust is a cybersecurity approach based on the fundamental belief that no one, whether inside or outside your network perimeter, should be trusted by default.\"}),/*#__PURE__*/e(\"p\",{children:'This \"never trust, always verify\" principle is increasingly relevant as you face growing threats to data security and stringent regulatory demands.'}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust can tackle the challenges posed by privacy-driven applications and the need for data decoupling in a way that aligns with compliance requirements.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"The Role of Zero Trust in Facilitating Data Decoupling\"})}),/*#__PURE__*/e(\"p\",{children:\"Data decoupling, the practice of separating data from applications, is crucial for you as you aim to enhance data protection and comply with privacy laws.\"}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust architecture aids in this by establishing strict access rules and vetting every access request, regardless of its origin. This approach significantly lowers the risk of unauthorized data access and potential data breaches.\"}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust Network Access ensures that only the necessary data is accessed and retained, which is vital for adhering to major privacy laws like the GDPR and CCPA, which are designed to protect personal data from misuse and unauthorized access.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Enhancing Data Governance through Micro-Segmentation\"})}),/*#__PURE__*/e(\"p\",{children:\"Micro-segmentation is a key part of the Zero Trust framework. It allows you to apply specific data governance policies by creating secure, separate areas within your network.\"}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust makes it possible for you to set up custom privacy controls for sensitive data, ensuring that access is given only when absolutely necessary. This improves your security and makes the auditing process easier, providing a clear view of how data moves and who accesses it, which is important for meeting compliance requirements.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Global Compliance through Zero Trust Flexibility\"})}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust architecture is very flexible, helping you adapt to the complex rules of data protection around the world.\"}),/*#__PURE__*/e(\"p\",{children:\"By changing how you handle data and control access based on where your users are and the laws in those areas, Zero Trust ensures that you can follow the rules without losing efficiency.\"}),/*#__PURE__*/e(\"p\",{children:\"This flexibility is especially important if you want to operate internationally and deal with different data privacy laws in various countries.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Addressing Specific Regulatory Frameworks with Zero Trust\"})}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"CCPA\"}),\": Enhances consumer privacy rights and data protection by enforcing strict access controls and monitoring data access requests in real-time.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust helps protect personal information by ensuring that only authenticated and authorized users can access data. It limits the risk of unauthorized data disclosure, which is critical for compliance with CCPA's requirements for data protection.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"GDPR\"}),\": Supports data protection by default and design, ensuring that personal data is accessed securely and only when absolutely necessary.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"This framework requires that data protection measures be built into the system by design and by default. Zero Trust architecture can help ensure that only necessary data is accessed and processed by authenticated and authorized entities, supporting the GDPR's principle of data minimization and security.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"HIPAA\"}),\": Protects sensitive health information, allowing only authenticated and authorized access to PHI, thereby reducing data breaches.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust architectures can enforce strict access controls and secure communications that are vital for protecting sensitive health information (PHI). This adherence to security provisions helps organizations meet HIPAA's requirements to protect PHI from unauthorized access and breaches.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"PCI DSS\"}),\": Ensures that payment card data is accessed and processed in a secure environment, limiting data exposure.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"This standard requires restricted access to cardholder data. Implementing Zero Trust can ensure that access to payment systems and data is tightly controlled and monitored, aligning with PCI DSS requirements for maintaining a secure network.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"SOX\"}),\": Strengthens financial data security by managing access to financial systems and data through rigorous verification processes.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"Although SOX is primarily about financial reporting, the implementation of Zero Trust can enhance the security controls around access to financial systems and data integrity, thus supporting compliance.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"ISO/IEC 27001\"}),\": Aligns with the standard\u2019s requirements for an information security management system by enforcing security controls across all data access points.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust supports the ISO/IEC 27001 requirement for a systematic examination of information security risks. Its principles help in implementing suitable information security controls that protect information assets effectively.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"NIST Cybersecurity Framework\"}),\": Supports the framework\u2019s core functions of Identify, Protect, Detect, Respond, and Recover by implementing layered security controls and continuous monitoring.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"This framework includes identifying, protecting, detecting, responding, and recovering from cybersecurity threats. Zero Trust architecture supports all these aspects by ensuring robust identity verification, minimizing lateral movement in the network, and enhancing detection and response capabilities.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"PIPEDA\"}),\": Adheres to the Act\u2019s requirement for security of personal information through robust access control and management practices.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust helps in compliance by ensuring that personal information is only accessed by individuals who have a legitimate need to know, consistent with PIPEDA's requirements for limiting use, disclosure, and retention.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"LGPD\"}),\": Aligns with Brazil\u2019s stringent privacy laws by ensuring precise and controlled access to personal data based on strict necessity.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"Similar to GDPR, the LGPD can benefit from Zero Trust by ensuring that access to personal data is tightly controlled and monitored, which supports compliance with its principles of accountability and traceability of data access.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Australia\u2019s Privacy Act\"}),\": Meets the Australian Privacy Principles by implementing strong governance of personal information access and processing.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"Implementing Zero Trust can help organizations ensure that personal information is accessed securely and only by authorized personnel, supporting compliance with the Australian Privacy Principles, especially those related to security of personal information.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]})]}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"The Strategic Advantage of Zero Trust Network Access\"})}),/*#__PURE__*/e(\"p\",{children:\"Adopting Zero Trust principles is more than just improving cybersecurity; it's a strategic step to your organization for future challenges and changes in laws related to the digital world. \"}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust provides a complete system that not only deals with today's security and legal issues but also gives you the ability to adjust to new laws in the future. By embracing Zero Trust, you can confidently tackle the complexities of data privacy and compliance, ensuring your readiness to face the cybersecurity challenges of today and tomorrow.\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust solution\"})}),\" gives companies a more secure, flexible, and efficient way for companies to handle network access, enhancing compliance with data protection regulations. Resources can be in the cloud or on-premises. Users can be anywhere in the world. \"]}),/*#__PURE__*/t(\"p\",{children:[\"Twingate makes it easy for you to enforce granular access control policies based on \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/principle-of-least-privilege\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"least-privilege principles\"})}),\". And without the need to re-architect your networks, you can reap the benefits of Zero Trust for compliance in minutes. Use Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=remote-access-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"free Starter plan\"})}),\" to experience how simple and easy Zero Trust can be. \",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]})]})},{index:5,id:\"dRSDF0zK8\",[h]:!0,[d]:!1,[p]:\"How ZTNA Outshines Legacy VPN in Visibility and Risk Management\",[u]:\"How ZTNA Outshines Legacy VPN in Visibility and Risk Management\",[m]:\"how-ztna-outshines-legacy-vpn-in-visibility-and-risk-management\",[g]:\"\",[w]:\"Twingate Team\",[f]:\"2024-04-10T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/4n35jLLlkAkozTAJQ9TwboetI.png\",srcSet:\"https://framerusercontent.com/images/4n35jLLlkAkozTAJQ9TwboetI.png?scale-down-to=512 512w,https://framerusercontent.com/images/4n35jLLlkAkozTAJQ9TwboetI.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/4n35jLLlkAkozTAJQ9TwboetI.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/4n35jLLlkAkozTAJQ9TwboetI.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/4n35jLLlkAkozTAJQ9TwboetI.png\",srcSet:\"https://framerusercontent.com/images/4n35jLLlkAkozTAJQ9TwboetI.png?scale-down-to=512 512w,https://framerusercontent.com/images/4n35jLLlkAkozTAJQ9TwboetI.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/4n35jLLlkAkozTAJQ9TwboetI.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/4n35jLLlkAkozTAJQ9TwboetI.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"h1\",{children:/*#__PURE__*/e(\"strong\",{children:\"Illuminating the Shadows: How ZTNA Outshines Legacy VPN in Visibility and Risk Management\"})}),/*#__PURE__*/e(\"p\",{children:\"As your organization grows and changes, you'll notice your network becomes much more complex. This growth is vital for scalability. But, it brings a dark side of more visibility problems and security risks. This is especially true for old network solutions. \"}),/*#__PURE__*/e(\"p\",{children:\"Legacy network solutions like the traditional VPN were designed for a simpler time. They struggle to provide you with the necessary visibility and control over an increasingly remote and hybrid environment. \"}),/*#__PURE__*/e(\"p\",{children:\"In this blog, we delve into the visibility and risk management challenges you face with legacy network solutions and highlight how Zero Trust Network Access (ZTNA) emerges as a beacon of clarity and security in the murky waters of modern network environments.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"The Blind Spots of Legacy Network Solutions\"})}),/*#__PURE__*/e(\"p\",{children:\"Legacy network solutions, including traditional VPNs and perimeter-based security models, were built on the assumption that everything inside your network is trustworthy. This assumption creates significant blind spots for you, as these solutions focus on securing the perimeter while neglecting the internal movements and activities within your network. Such an oversight leads to several critical issues for you:\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Limited Internal Visibility:\"}),\" Once an entity gains access through your perimeter defense, its activities within the network often go unnoticed, allowing potential malicious actions to unfold undetected.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Difficulty in Managing Complex Environments:\"}),\" As your IT environments become more complex with cloud services, mobile devices, and IoT, legacy solutions struggle to provide you with a comprehensive view across all your assets.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Inadequate Risk Assessment:\"}),\" Without detailed visibility into network activities and access patterns, accurately assessing and mitigating risks becomes a near-impossible task for you.\"]}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"ZTNA: A Better Approach to Network Security\"})}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust Network Access (ZTNA) addresses your visibility and risk management challenges head-on by abandoning the outdated trust assumptions of legacy solutions. ZTNA operates on the principle that trust must never be implicit and that verification is required from anyone and anything trying to access resources in your network. This approach fundamentally changes how you manage visibility and risk:\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Granular Visibility and Control:\"}),\" ZTNA provides you with detailed insights into who is accessing what resources, from where, and under what conditions. This granular level of visibility ensures that any unauthorized or suspicious activities can be detected and mitigated promptly.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Seamless Management Across Environments:\"}),\" ZTNA solutions are designed to function across your diverse and complex IT ecosystems, offering visibility and control whether resources are hosted on-premises or in the cloud.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Proactive Risk Management:\"}),\" By continuously monitoring access requests and network activities, ZTNA enables you to proactively identify and address security risks before they escalate into breaches.\"]}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Transitioning to ZTNA: Illuminating the Path Ahead\"})}),/*#__PURE__*/e(\"p\",{children:'As Frank Slootman once pointed out, \"in dynamic, high-growth environments, there is a premium on drivers\u2014people who make things happen, who move the dials, who stop at literally nothing. True drivers, the types that change history, like Steve Jobs, are rare and usually found in super high-profile situations.'}),/*#__PURE__*/e(\"p\",{children:'However, many people possess the potential to be drivers; they are naturally inclined to develop that way, and what they need is an empowering environment. You don\u2019t keep drivers on a short leash, or any leash for that matter. Like wild horses, you let them run. You encourage, resource, and motivate them as much as you can.\"'}),/*#__PURE__*/e(\"p\",{children:\"Don\u2019t just be a passenger in your organization; be the driver. Here are three simple steps to get started:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"h3\",children:[/*#__PURE__*/e(\"h3\",{children:\"Conduct a Comprehensive Network Audit\"}),/*#__PURE__*/e(\"p\",{children:\"Thoroughly evaluate the integrity and security of your network infrastructure. Begin by identifying all your assets, applications, and data flows to fully understand the current state of your network visibility and security. This systematic assessment will allow you to pinpoint vulnerabilities and develop strategies to enhance your overall security posture.\"})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"h3\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(13, 13, 13)\",\"--framer-text-decoration\":\"none\"},children:[/*#__PURE__*/e(\"h3\",{children:\"Choose a ZTNA Solution\"}),/*#__PURE__*/t(\"p\",{children:[\"Implement a ZTNA solution that fits your organization\u2019s specific needs, considering factors like integration capabilities, scalability, and ease of deployment. At Twingate, we offer a \",/*#__PURE__*/e(s,{href:\"https://auth.twingate.com/signup-v2\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"free signup\"})}),\" for organizations looking to explore a Zero Trust solution without any commitments.\"]})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"h3\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(13, 13, 13)\",\"--framer-text-decoration\":\"none\"},children:[/*#__PURE__*/e(\"h3\",{children:\"Shift Towards Least Privilege Access\"}),/*#__PURE__*/e(\"p\",{children:\"Ensure sure you and all stakeholders understand the Zero Trust philosophy and the operational changes it entails. It's essential to challenge outdated practices, such as assigning administrative privileges to directors or executives merely as a status symbol, rather than based on the necessities of their roles.\"})]})]}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Stepping into the Light with ZTNA\"})}),/*#__PURE__*/e(\"p\",{children:\"The transition from legacy network solutions to a Zero Trust model represents a significant paradigm shift in how you approach network security. \"}),/*#__PURE__*/e(\"p\",{children:\"By addressing the critical visibility and risk management challenges inherent in traditional models, Zero Trust Network Access offers you a more secure, manageable, and adaptable solution for today's complex digital environments.\"}),/*#__PURE__*/e(\"p\",{children:\"In a simpler information age, the legacy VPN model was a solution that matched the way business worked. Today\u2019s world is more complex, dynamic, and distributed which is why businesses need a modern approach to network access control.\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust solution\"})}),\" gives companies a more secure, flexible, and performant way to manage network access. Resources can be in the cloud or on-premises. Users can be anywhere in the world. Twingate makes it easy for you to enforce granular access control policies based on \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/principle-of-least-privilege\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"least-privilege principles\"})}),\". And without the need to re-architect your networks, you can reap the benefits of Zero Trust in minutes.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Use Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=remote-access-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"free Starter plan\"})}),\" to experience how simple and easy Zero Trust can be. Or \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=remote-access-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"contact us\"})}),\" for more information about how Zero Trust can work for your organization.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]})]})},{index:6,id:\"ZsYj9rSTk\",[h]:!0,[d]:!1,[p]:\"Accelerating DevOps Through Automation with Zero Trust\",[u]:\"Accelerating DevOps Through Automation with Zero Trust\",[m]:\"accelerating-devops-through-automation-with-zero-trust\",[g]:\"\",[w]:\"Twingate Team\",[f]:\"2024-04-08T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/8fEmAT26DntRFO1AvsCWUYRE6RU.png\",srcSet:\"https://framerusercontent.com/images/8fEmAT26DntRFO1AvsCWUYRE6RU.png?scale-down-to=512 512w,https://framerusercontent.com/images/8fEmAT26DntRFO1AvsCWUYRE6RU.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/8fEmAT26DntRFO1AvsCWUYRE6RU.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/8fEmAT26DntRFO1AvsCWUYRE6RU.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/8fEmAT26DntRFO1AvsCWUYRE6RU.png\",srcSet:\"https://framerusercontent.com/images/8fEmAT26DntRFO1AvsCWUYRE6RU.png?scale-down-to=512 512w,https://framerusercontent.com/images/8fEmAT26DntRFO1AvsCWUYRE6RU.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/8fEmAT26DntRFO1AvsCWUYRE6RU.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/8fEmAT26DntRFO1AvsCWUYRE6RU.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"h1\",{children:/*#__PURE__*/e(\"strong\",{children:\"Accelerating DevOps Through Automation with Zero Trust\"})}),/*#__PURE__*/e(\"p\",{children:\"You operate in a fast-paced DevOps environment where the mantra is to build, test, and deploy software at lightning speeds. In this world, the Zero Trust security model can play a crucial role in accelerating your development cycles. By integrating security into your DevOps processes\u2014a practice often referred to as DevSecOps\u2014Zero Trust can significantly enhance your operations. \"}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust Network Access drives faster, more secure development. Let's explore how Zero Trust principles perfectly align with your DevOps objectives to foster an environment of rapid innovation and development.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Automation: The Catalyst for DevOps Speed and Security\"})}),/*#__PURE__*/e(\"p\",{children:\"At the heart of both your DevOps practices and the Zero Trust model is a profound reliance on automation. \"}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust leverages automation to enforce dynamic security policies and access controls, seamlessly integrating these measures into the CI/CD pipelines that are vital to your DevOps operations. This integration ensures that security is not a bottleneck but rather a facilitator of faster release cycles. \"}),/*#__PURE__*/e(\"p\",{children:\"Automated security checks, compliance validations, and threat detections are built into your development process. They allow your DevOps teams to find and fix security issues in real-time, without slowing down your workflow.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Streamlining Development with Reduced Manual Security Interventions\"})}),/*#__PURE__*/e(\"p\",{children:\"The adoption of Zero Trust within your DevOps context minimizes the need for manual security interventions, which can be time-consuming and prone to human error. \"}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust automates security protocols, allowing you to focus on your core tasks: coding, testing, and deploying. You can avoid getting sidetracked by security concerns. This reduction in manual tasks not only speeds up your development process but also enhances both code quality and security.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Enhancing Collaboration Between DevOps and Security Teams\"})}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust fosters a culture of collaboration between your DevOps and security teams. By integrating security into DevOps, Zero Trust helps blur the traditional boundaries between these teams. It encourages a more unified and swift approach to development. \"}),/*#__PURE__*/e(\"p\",{children:\"This collaboration ensures that security is considered right from the start of development, leading to more secure apps and a faster time-to-market for your projects.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Simplifying Compliance and Improving Auditability\"})}),/*#__PURE__*/e(\"p\",{children:\"For you and your DevOps team operating in regulated industries, compliance is a critical concern that can often slow down your development processes. \"}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust architectures improve compliance and auditability by automatically logging all access requests and actions within your development environment. \"}),/*#__PURE__*/e(\"p\",{children:\"This clear visibility simplifies audits and helps your team prove compliance with regulations without slowing down your workflows.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Improve Development Speed with Twingate Today\"})}),/*#__PURE__*/e(\"p\",{children:\"Integrating Zero Trust principles into your DevOps practices doesn't just bolster security\u2014it automates many processes to improve your development speed. \"}),/*#__PURE__*/e(\"p\",{children:\"By automating security measures, reducing manual interventions, and fostering collaboration between your development and security teams, Zero Trust enables you to thrive in an environment marked by rapid innovation and continuous delivery. With speed and security at the forefront of development today, the fusion of Zero Trust and DevOps is a powerful strategy that helps your organization gain a competitive edge.\"}),/*#__PURE__*/t(\"p\",{children:[\"If you're interested to see how Twingate can automate security processes and enhance your development speed, click \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\" to request a demo. Our sales engineers will contact you to arrange a free test session, we speak DevOps. Alternatively, if you're ready to experience the benefits immediately, you can sign up for a free Twingate account \",/*#__PURE__*/e(s,{href:\"https://auth.twingate.com/signup-v2\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\" and start optimizing your development workflow today.\"]})]})},{index:7,id:\"I9KGJZ1OV\",[h]:!0,[d]:!1,[p]:\"The 3 Core Principles of Zero Trust\",[u]:\"The 3 Core Principles of Zero Trust\",[m]:\"the-3-core-principles-of-zero-trust\",[g]:\"\",[w]:\"Twingate Team\",[f]:\"2024-04-04T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/0ONZITnTiTqcTEWAXUk60t8RY.png\",srcSet:\"https://framerusercontent.com/images/0ONZITnTiTqcTEWAXUk60t8RY.png?scale-down-to=512 512w,https://framerusercontent.com/images/0ONZITnTiTqcTEWAXUk60t8RY.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/0ONZITnTiTqcTEWAXUk60t8RY.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/0ONZITnTiTqcTEWAXUk60t8RY.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/0ONZITnTiTqcTEWAXUk60t8RY.png\",srcSet:\"https://framerusercontent.com/images/0ONZITnTiTqcTEWAXUk60t8RY.png?scale-down-to=512 512w,https://framerusercontent.com/images/0ONZITnTiTqcTEWAXUk60t8RY.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/0ONZITnTiTqcTEWAXUk60t8RY.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/0ONZITnTiTqcTEWAXUk60t8RY.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"h1\",{children:/*#__PURE__*/e(\"strong\",{children:\"The 3 Core Principles of Zero Trust\"})}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust has been a topic of cybersecurity for over two decades, gaining prominence in 2010 when John Kindervag championed the concept. \"}),/*#__PURE__*/t(\"p\",{children:[\"Today, as cyber threats evolve and organizational perimeters expand with remote work and cloud integration, \",/*#__PURE__*/e(s,{href:\"https://trends.google.com/trends/explore?date=all&geo=US&q=zero%20trust&hl=en\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"interest in Zero Trust is higher than ever\"})}),\". This makes it a perfect opportunity to revisit the robust foundations of Zero Trust Network Access (ZTNA).\"]}),/*#__PURE__*/e(\"img\",{alt:\"interest in zero trust is more popular than ever\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,HtGY0V4lzBtrc0umyorwcur8IQ.png\",\"data-framer-height\":\"886\",\"data-framer-width\":\"2366\",height:\"443\",src:\"https://framerusercontent.com/images/HtGY0V4lzBtrc0umyorwcur8IQ.png\",srcSet:\"https://framerusercontent.com/images/HtGY0V4lzBtrc0umyorwcur8IQ.png?scale-down-to=512 512w,https://framerusercontent.com/images/HtGY0V4lzBtrc0umyorwcur8IQ.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/HtGY0V4lzBtrc0umyorwcur8IQ.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/HtGY0V4lzBtrc0umyorwcur8IQ.png 2366w\",style:{aspectRatio:\"2366 / 886\"},width:\"1183\"}),/*#__PURE__*/t(\"p\",{children:[\"In this guide, we\u2019ll delve into the three fundamental principles of Zero Trust: Least Privilege Access, Always Verify, and Risk Mitigation. Each principle is critical for building a resilient and dynamic security environment where threats are not only recognized but also effectively contained. Join us as we explore how these principles can fortify your organization against the ever-changing landscape of cyber threats.\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"code\",{children:\"Least Privilege Access\"})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"code\",{children:\"Always Verify\"})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"code\",{children:\"Risk Mitigation\"}),/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]})})]}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"What is Zero Trust Security?\"})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"br\",{}),\"Zero Trust Security is a cybersecurity strategy that challenges the conventional perimeter-based security models, which have increasingly shown their limitations in the face of modern cyber threats and evolving work environments. Traditional security models operate under the assumption that everything inside an organization\u2019s network can be trusted. However, this assumption has become flawed due to the rising sophistication of cyber attacks and the fact that insiders can often be threats themselves.\"]}),/*#__PURE__*/t(\"p\",{children:[\"In the face of evolving cyber threats and changing work environments, traditional perimeter-based security models are proving inadequate. Enter ZTNA, a paradigm shift in cybersecurity that embodies the principle of \u201Cnever trust, always verify.\u201D\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Least Privilege Access\"})}),/*#__PURE__*/e(\"p\",{children:\"In a Zero Trust architecture, access controls are dynamically and strictly enforced to ensure robust security. Let's explore the five distinct levels of access that are particularly relevant within a Zero Trust framework:\"}),/*#__PURE__*/t(\"ol\",{style:{\"--framer-font-size\":\"16px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(13, 13, 13)\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"No Access:\"}),\" This is the default setting for any user or device. Access is not granted until explicit authentication and authorization are achieved, reinforcing the security from the ground up.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Public Access:\"}),\" This level allows users to access publicly available information or resources without the need for authentication. It's designed for maximum accessibility while still maintaining overarching security protocols.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"General Access:\"}),\" Within an organization, general access typically includes access to basic organizational tools such as email. This level is meant for day-to-day operational activities by regular staff members.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Administrative Access:\"}),\" Reserved for IT and security personnel, this is the highest level of access. It includes comprehensive privileges over all systems and applications, enabling these authorized users to modify, delete, or configure high-level settings as required for system management and security.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Privileged Access:\"}),\" At this level, users and systems are granted only the minimum levels of access\u2014or permissions\u2014necessary to perform specific functions. This careful allocation of privileges is crucial for minimizing the attack surface and limiting the potential damage from security breaches or insider threats. This foundational principle of granting the least privilege necessary to complete your tasks is the core of the Zero Trust model.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"Each of these access levels plays a vital role in the enforcement of Zero Trust principles, ensuring that security is maintained through meticulous control over who can access what within your network.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Always Verify\"})}),/*#__PURE__*/e(\"p\",{children:\"In the Zero Trust model, the concept of implicit trust is completely abandoned in favor of constant verification. This approach operates under the assumption that a security breach is already present within your system. \"}),/*#__PURE__*/e(\"p\",{children:\"Consequently, Zero Trust protocols strictly limit access privileges to only those necessary for specific tasks and continuously scan for signs of malicious activity. Implementing Zero Trust can significantly mitigate your risks associated with data breaches, ransomware, and insider threats. \"}),/*#__PURE__*/t(\"p\",{children:[\"Although this model imposes stricter access controls, it streamlines your organization\u2019s cybersecurity framework, facilitating a more manageable and secure system environment. This enhanced security architecture is crucial for safeguarding your data and assets.\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Risk Mitigation\"})}),/*#__PURE__*/e(\"p\",{children:\"To effectively minimize the blast radius within a network, the Zero Trust framework advocates for an 'assume breach' approach. By segmenting the network into smaller, secure zones, this strategy enhances control over access and sharply curtails the possibility for threats to move laterally within the system. \"}),/*#__PURE__*/e(\"p\",{children:\"This segmentation not only restricts access to sensitive areas but also contains potential breaches to isolated segments, dramatically reducing the overall risk and impact of security threats. This proactive and compartmentalized approach is essential for robustly defending against and swiftly responding to cybersecurity threats.\"}),/*#__PURE__*/e(\"p\",{children:\"As our VP of engineering would explain:\"}),/*#__PURE__*/e(\"p\",{children:\"\\\"Imagine your computer network is like a city, and each service or application is a building within that city. The 'blast radius' refers to how much damage a potential security breach could cause\u2014just like how far the impact of an explosion might reach in a real city.\"}),/*#__PURE__*/e(\"p\",{children:'In cybersecurity, if a hacker gains unauthorized access to part of the network, the blast radius is the extent to which they can move from that entry point to other parts of the network. With a larger blast radius, hackers can access more data and cause more damage. By limiting the blast radius, you\\'re essentially building walls or barriers between different parts of your \"city\" (or network). If one barrier is compromised, only those within that area would be impacted. The damage doesn\\'t spread to other buildings behind other barriers.\"'}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"code\",{children:\"TL;DR: the blast radius in cybersecurity is about the damage a breach can cause in a network. Strategies like network segmentation contain breaches and minimize this damage.\"})}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"See how Zero Trust can help your organization\"})}),/*#__PURE__*/e(\"p\",{children:\"Cyber threats keep evolving. Organizational perimeters are getting more porous due to remote work and cloud adoption. The shift to Zero Trust Network Access is a strategic move to a more secure, agile, and resilient security model. By embracing ZTNA, you can protect your critical assets while growing your business in today\u2019s fast digital landscape.\"}),/*#__PURE__*/t(\"p\",{children:[\"Transitioning from the secure perimeter paradigm to one based on \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" does not happen overnight. It is a new way of thinking about secure access and requires new security processes. At the same time, ZTNA cannot disrupt business operations if you want to keep executive and stakeholder support. Careful planning must account for the potential challenges and risks. Take a phased approach that starts with a proof-of-concept project before gradually rolling it out to the rest of the organization. This is where having the right ZTNA vendor makes a difference.\"]}),/*#__PURE__*/t(\"p\",{children:[\"We designed the Twingate \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"secure access solution\"})}),\" to make migrating to Zero Trust seamless. You do not have to change your network infrastructure since Twingate works across firewalls, subnets, and cloud services. Twingate is compatible with your existing security stack, including your current \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/business-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN system\"})}),\", as well as with your DevOps team\u2019s CI/CD pipeline. Twingate customers have deployed our Zero Trust solution within minutes.\"]}),/*#__PURE__*/e(\"p\",{children:\"Using your new ZTNA system is just as easy. Administrator consoles let your staff update access permissions quickly. Easy-to-use apps run quietly in the background. Even the most demanding users love it because Twingate just works.\"}),/*#__PURE__*/t(\"p\",{children:[\"See how easy Zero Trust can be by trying our \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=zero-trust-network\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"free Starter plan\"})}),\" for individuals. Or \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=zero-trust-network\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"contact us\"})}),\" to learn how Twingate ZTNA solutions can work for your team.\"]})]})},{index:8,id:\"wfEqZR9WE\",[h]:!0,[d]:!1,[p]:\"Shifting Paradigms: From Perimeter Defense and VPNs to Zero Trust Security\",[u]:\"Zero Trust: Alternative to Perimeter Defense and VPNs\",[m]:\"zero-trust-alternative-to-perimeter-defense-and-vpns\",[g]:\"\",[w]:\"Twingate Team\",[f]:\"2024-04-03T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/fFjElYM1xfiyq5WPB7RLuEvPDWo.png\",srcSet:\"https://framerusercontent.com/images/fFjElYM1xfiyq5WPB7RLuEvPDWo.png?scale-down-to=512 512w,https://framerusercontent.com/images/fFjElYM1xfiyq5WPB7RLuEvPDWo.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/fFjElYM1xfiyq5WPB7RLuEvPDWo.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/fFjElYM1xfiyq5WPB7RLuEvPDWo.png 2400w\"},\"zero trust alternative to perimeter defense and vpn\"),[v]:T({src:\"https://framerusercontent.com/images/fFjElYM1xfiyq5WPB7RLuEvPDWo.png\",srcSet:\"https://framerusercontent.com/images/fFjElYM1xfiyq5WPB7RLuEvPDWo.png?scale-down-to=512 512w,https://framerusercontent.com/images/fFjElYM1xfiyq5WPB7RLuEvPDWo.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/fFjElYM1xfiyq5WPB7RLuEvPDWo.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/fFjElYM1xfiyq5WPB7RLuEvPDWo.png 2400w\"},\"zero trust alternative to perimeter defense and vpn\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"h1\",{children:/*#__PURE__*/e(\"strong\",{children:\"Shifting Paradigms: From Perimeter Defense and VPNs to Zero Trust Security\"})}),/*#__PURE__*/e(\"p\",{children:\"In cybersecurity, the traditional defense model is changing.\"}),/*#__PURE__*/e(\"p\",{children:\"It often relies on Virtual Private Networks (VPNs). But, it is now being outpaced by complex threats and the challenges of modern, distributed work environments. Cloud computing, mobile work, and SaaS have blurred traditional network boundaries. This has made old security models less effective. \"}),/*#__PURE__*/t(\"p\",{children:[\"This shift necessitates a more dynamic and robust approach to security: \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust.\"})})]}),/*#__PURE__*/e(\"img\",{alt:\"legacy vpn limitations\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,3W0FBbJBMW8j8DOwnX1oPugP7Q.png\",\"data-framer-height\":\"1392\",\"data-framer-width\":\"2390\",height:\"696\",src:\"https://framerusercontent.com/images/3W0FBbJBMW8j8DOwnX1oPugP7Q.png\",srcSet:\"https://framerusercontent.com/images/3W0FBbJBMW8j8DOwnX1oPugP7Q.png?scale-down-to=512 512w,https://framerusercontent.com/images/3W0FBbJBMW8j8DOwnX1oPugP7Q.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/3W0FBbJBMW8j8DOwnX1oPugP7Q.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/3W0FBbJBMW8j8DOwnX1oPugP7Q.png 2390w\",style:{aspectRatio:\"2390 / 1392\"},width:\"1195\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Understanding the Limitations of Perimeter Defense and VPNs\"})}),/*#__PURE__*/e(\"p\",{children:'Historically, organizations have relied on the perimeter defense model, creating a digital \"fortress\" around their network resources. Within this fortress, everything was considered safe, while everything outside was deemed a threat. '}),/*#__PURE__*/e(\"p\",{children:\"VPNs played a crucial role in this model by extending the perimeter to remote users, creating secure tunnels for employees to access internal resources from outside the corporate network.\"}),/*#__PURE__*/e(\"p\",{children:\"However, traditional VPNs have several limitations in today's digital landscape:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(13, 13, 13)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"Implicit Trust: Once inside the perimeter, users often have broad access, increasing the risk of internal threats and lateral movement by attackers.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(13, 13, 13)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"Network Complexity: The expansion of cloud services and remote work has complicated network architectures, making them harder to secure with a perimeter-based approach.\"})}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(13, 13, 13)\",\"--framer-text-decoration\":\"none\"},children:[/*#__PURE__*/e(\"p\",{children:\"Scalability Issues: VPNs can become bottlenecks, especially when scaling up remote access, leading to performance issues and a poor user experience.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]})]}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"The Rise of Zero Trust: A Paradigm Shift\"})}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust is a strategic approach to cybersecurity that eliminates the concept of trust from an organization's network architecture. \"}),/*#__PURE__*/e(\"p\",{children:'Rooted in the principle of \"never trust, always verify,\" Zero Trust requires strict identity verification for every person and device trying to access resources on a private network, regardless of whether they are sitting within or outside of the network perimeter.'}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"4 Key Advantages of Zero Trust Over Traditional VPNs\"})}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"h3\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(13, 13, 13)\",\"--framer-text-decoration\":\"none\"},children:[/*#__PURE__*/e(\"h3\",{children:\"Enhanced Security \"}),/*#__PURE__*/e(\"p\",{children:\"By verifying everything before granting access, Zero Trust significantly reduces the risk of data breaches. In Zero Trust, there's no concept of unknown traffic and all traffic internally is verified.\"})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"h3\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(13, 13, 13)\",\"--framer-text-decoration\":\"none\"},children:[/*#__PURE__*/e(\"h3\",{children:\"Improved Compliance\"}),/*#__PURE__*/e(\"p\",{children:\"The granular control over access makes it easier for organizations to comply with data protection regulations. Regulatory environments are increasingly segmented, required more bespoke access levels for each country, which perfect suits Zero Trust's model of micro-segmentation.\"})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"h3\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(13, 13, 13)\",\"--framer-text-decoration\":\"none\"},children:[/*#__PURE__*/e(\"h3\",{children:\"Scalability and Flexibility\"}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust security solutions are tailored for today's cloud-centric environments, offering enhanced scalability and flexibility over traditional VPN defenses. As office boundaries extend beyond fixed locations, the need for open endpoints to access VPN business resources increases the attack surface and complexity of configurations.\"})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"h3\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(13, 13, 13)\",\"--framer-text-decoration\":\"none\"},children:[/*#__PURE__*/e(\"h3\",{children:\"Better User Experience\"}),/*#__PURE__*/e(\"p\",{children:\"By eliminating the need for a VPN, Zero Trust security allows users to access the resources they need more quickly and reliably from anywhere. In the fast-paced tech industry, this speed and reliability translate into a significant competitive advantage.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]})]}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Implementing Zero Trust: A Strategic Journey\"})}),/*#__PURE__*/e(\"p\",{children:\"Transitioning to a Zero Trust architecture is not a one-size-fits-all process but rather a strategic journey that involves assessing your current infrastructure, identifying sensitive data and systems, and incrementally implementing Zero Trust principles across the organization.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact Twingate today\"})}),\" to learn how to customize a Zero Trust solution around your needs.\"]}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"5 Steps to Get Started with Zero Trust\"})}),/*#__PURE__*/e(\"p\",{children:\"Everyone wants to know what product to buy to implement Zero Trust best suited to each organization. The truth is that you won't know the answer to that until you've gone through the process.\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"h3\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(13, 13, 13)\",\"--framer-text-decoration\":\"none\"},children:[/*#__PURE__*/e(\"h3\",{children:\"Define the Protect Surface\"}),/*#__PURE__*/e(\"p\",{children:\"Every Zero Trust environment is tailor-made for each protect surface. Until you know what you need to protect and how it works, you wont know the most effective solution. So first Identify what critical data, assets, applications, and services you need to protect. \"})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"h3\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(13, 13, 13)\",\"--framer-text-decoration\":\"none\"},children:[/*#__PURE__*/e(\"h3\",{children:\"Map the Transaction Flows\"}),/*#__PURE__*/e(\"p\",{children:\"Understand how data moves within your organization to design appropriate access policies. There is never a time that any resource on your internal network should go outbound to an unknown server on the internet.\"})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"h3\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(13, 13, 13)\",\"--framer-text-decoration\":\"none\"},children:[/*#__PURE__*/e(\"h3\",{children:\"Architect Your Zero Trust Network\"}),/*#__PURE__*/e(\"p\",{children:\"What protections do you have so far? Assess or reassess your existing solutions within the context of a Zero Trust environment. Implement the necessary technology solutions, such as identity and access management (IAM), multi-factor authentication (MFA), and micro-segmentation tools.\"})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"h3\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(13, 13, 13)\",\"--framer-text-decoration\":\"none\"},children:[/*#__PURE__*/e(\"h3\",{children:\"Create a Zero Trust Policy\"}),/*#__PURE__*/e(\"p\",{children:\"Think about the who, what, where, when and why. Define policies based on user roles, data classification, and context. Only ensure that users have the least privilege access necessary to complete their tasks.\"})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"h3\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(13, 13, 13)\",\"--framer-text-decoration\":\"none\"},children:[/*#__PURE__*/e(\"h3\",{children:\"Monitor and Maintain\"}),/*#__PURE__*/e(\"p\",{children:\"Continuously monitor network activity and adjust policies as needed to address emerging threats and changing business needs. Every security stack should be future proof and a system should be in place to for Continuous Threat Management (CTEM).\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]})]}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Conclusion\"})}),/*#__PURE__*/e(\"p\",{children:\"In the face of evolving cyber threats and the changing nature of work, organizations must move beyond traditional perimeter defense and VPNs. \"}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust offers a more adaptive and effective security model, tailored for the complexity and dynamism of modern IT environments. By embracing Zero Trust, organizations can not only enhance their security posture but also support a seamless, efficient, and scalable IT operation. \"}),/*#__PURE__*/e(\"p\",{children:\"The journey to Zero Trust is iterative and strategic, requiring commitment and collaboration across the organization, but the payoff in terms of security, compliance, and operational efficiency is well worth the effort.\"}),/*#__PURE__*/e(\"p\",{children:\"At Twingate, our ZTNA solution is tailored to address many of the threats facing your organization today. And, we offer a free signup for organizations looking to explore a Zero Trust solution without any commitments.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://auth.twingate.com/signup-v2\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/t(\"a\",{children:[\"Connect with us to learn more.\\xa0\",/*#__PURE__*/e(\"br\",{})]})})})]})},{index:9,id:\"xiFRdCIYE\",[h]:!0,[d]:!1,[p]:\"Top 5 Cybersecurity Trends in 2024\",[u]:\"Top 5 Cybersecurity Trends in 2024\",[m]:\"top-5-cybersecurity-trends-in-2024\",[g]:\"\",[w]:\"Twingate Team\",[f]:\"2024-03-31T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/WvWIcXexuob75jjmNaHj7DBn5jk.png\",srcSet:\"https://framerusercontent.com/images/WvWIcXexuob75jjmNaHj7DBn5jk.png?scale-down-to=512 512w,https://framerusercontent.com/images/WvWIcXexuob75jjmNaHj7DBn5jk.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/WvWIcXexuob75jjmNaHj7DBn5jk.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/WvWIcXexuob75jjmNaHj7DBn5jk.png?scale-down-to=4096 4096w,https://framerusercontent.com/images/WvWIcXexuob75jjmNaHj7DBn5jk.png 4800w\"},\"5 cybersecurity trends in 2024\"),[v]:T({src:\"https://framerusercontent.com/images/WvWIcXexuob75jjmNaHj7DBn5jk.png\",srcSet:\"https://framerusercontent.com/images/WvWIcXexuob75jjmNaHj7DBn5jk.png?scale-down-to=512 512w,https://framerusercontent.com/images/WvWIcXexuob75jjmNaHj7DBn5jk.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/WvWIcXexuob75jjmNaHj7DBn5jk.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/WvWIcXexuob75jjmNaHj7DBn5jk.png?scale-down-to=4096 4096w,https://framerusercontent.com/images/WvWIcXexuob75jjmNaHj7DBn5jk.png 4800w\"},\"5 cybersecurity trends in 2024\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"h1\",{children:/*#__PURE__*/e(\"strong\",{children:\"Top 5 Cybersecurity Trends in 2024\"})}),/*#__PURE__*/e(\"p\",{children:\"As the first quarter of 2024 draws to a close, the cybersecurity landscape continues to evolve at an unprecedented pace. \"}),/*#__PURE__*/e(\"p\",{children:\"Driven by the rapid digital transformation of businesses, the increasing sophistication of cyber threats, and regulatory changes around the globe, organizations are compelled to adopt new strategies and technologies to safeguard their digital assets. \"}),/*#__PURE__*/e(\"p\",{children:\"This year, five key trends have emerged as pivotal influences on the cybersecurity strategies of forward-thinking companies. From leveraging the power of generative AI to rethinking how we manage compliance, these trends are setting the stage for a more resilient and dynamic approach to cybersecurity.\"}),/*#__PURE__*/e(\"p\",{children:\"Take a look at the top 5 cybersecurity trends in 2024:\"}),/*#__PURE__*/e(a.div,{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/VRQHcjrUbz44BGN94kVX/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"1. Generative AI in Cybersecurity\\n2. Continuous Threat Management (CTEM)\\n3. Zero Trust to Address Compliance\\n4. Security Behavior Programs\\n5. Third-Party Risk Management\",language:\"JSX\"})})}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Generative AI in Cybersecurity\"})}),/*#__PURE__*/e(\"p\",{children:\"Generative AI is revolutionizing cybersecurity practices by offering tools that can produce human-like content. \"}),/*#__PURE__*/e(\"p\",{children:\"This technology is being harnessed to enhance security protocols, simulate phishing attacks for training purposes, and predict potential threats. However, its capabilities also present new challenges, as attackers use it to create sophisticated phishing campaigns and malware. \"}),/*#__PURE__*/e(\"p\",{children:\"The dual use of generative AI underscores the importance of leveraging this technology responsibly and staying ahead of malicious actors in the cybersecurity arms race.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Continuous Threat Management (CTEM)\"})}),/*#__PURE__*/e(\"p\",{children:\"The concept of Continuous Threat Management (CTEM) marks a departure from periodic security assessments to a more vigilant, real-time monitoring and assessment of the cybersecurity landscape. \"}),/*#__PURE__*/e(\"p\",{children:\"CTEM enables organizations to identify and mitigate threats as they emerge, ensuring that their security posture is constantly updated to counteract new vulnerabilities and attack vectors. \"}),/*#__PURE__*/e(\"p\",{children:\"This proactive approach is critical for maintaining the integrity of digital assets in an era where cyber threats evolve rapidly.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Zero Trust to Address Compliance\"})}),/*#__PURE__*/e(\"p\",{children:\"With a trend towards privacy-driven applications and data decoupling, the adoption of Zero Trust principles has become a cornerstone of modern cybersecurity strategies in 2024. \"}),/*#__PURE__*/e(\"p\",{children:\"The adaptability of Zero Trust architectures allows for the secure and compliant use of privacy-driven applications across multiple jurisdictions, each with its own set of data protection laws. Organizations can dynamically adjust access and data handling policies based on the geographic location of users and the specific legal mandates of those regions, ensuring global compliance without sacrificing operational efficiency.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=zero-trust-automation\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact Twingate today\"})}),\" to learn how easily Zero Trust can automate compliance.\"]}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Security Behavior Programs\"})}),/*#__PURE__*/e(\"p\",{children:\"Acknowledging that cybersecurity is not solely a technological challenge, Security Behavior Programs focus on the human element, aiming to build a culture of security awareness. \"}),/*#__PURE__*/e(\"p\",{children:\"These programs employ gamification, personalized learning, and behavioral analytics to instill a sense of responsibility and improve security practices among employees. \"}),/*#__PURE__*/e(\"p\",{children:\"Given that human error remains a significant vulnerability, fostering a security-conscious workforce is essential for reducing the risk of breaches and enhancing organizational resilience.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Third-Party Risk Management\"})}),/*#__PURE__*/e(\"p\",{children:\"In an interconnected world, the security of an organization is often as strong as its weakest link, which frequently lies with third-party vendors and partners. \"}),/*#__PURE__*/e(\"p\",{children:\"Robust Third-Party Risk Management (TPRM) practices are essential for assessing and monitoring the security postures of external entities, ensuring they comply with established security standards and contractual obligations. \"}),/*#__PURE__*/e(\"p\",{children:\"As supply chain attacks become increasingly common, effective TPRM is vital for mitigating risks and safeguarding against indirect breaches.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Cybersecurity Trends of 2024\"})}),/*#__PURE__*/e(\"p\",{children:\"The cybersecurity trends of 2024 reflect a holistic approach to digital protection, balancing technological advancements with strategic frameworks and human-centric initiatives. The integration of Generative AI, Continuous Threat Management, Zero Trust architectures, Security Behavior Programs, and Third-Party Risk Management into cybersecurity strategies underscores the need for agility, vigilance, and collaboration in combating cyber threats. As we navigate the complexities of the digital age, these trends offer a roadmap for achieving greater security and resilience in an ever-evolving landscape.\"}),/*#__PURE__*/e(\"p\",{children:\"For comprehensive guidance tailored to your specific needs, consider seeking assistance from cybersecurity experts. At Twingate, our ZTNA solutions address many of the threats facing organizations today.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://www.twingate.com\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Connect with us to learn more.\\xa0\"})})})]})},{index:10,id:\"pfAlf2i1k\",[h]:!0,[d]:!1,[p]:\"Twingate Product Updates: March 2024\",[u]:\"March 2024 Product Updates\",[m]:\"march-2024-product-updates\",[g]:\"\",[w]:\"Anna Liu\",[f]:\"2024-04-02T00:00:00.000Z\",[y]:\"KI2UGBfh7\",[b]:T({src:\"https://framerusercontent.com/images/dvwN74l1XYUzmfWL8GwTGySkM.png\",srcSet:\"https://framerusercontent.com/images/dvwN74l1XYUzmfWL8GwTGySkM.png?scale-down-to=512 512w,https://framerusercontent.com/images/dvwN74l1XYUzmfWL8GwTGySkM.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/dvwN74l1XYUzmfWL8GwTGySkM.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/dvwN74l1XYUzmfWL8GwTGySkM.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/dvwN74l1XYUzmfWL8GwTGySkM.png\",srcSet:\"https://framerusercontent.com/images/dvwN74l1XYUzmfWL8GwTGySkM.png?scale-down-to=512 512w,https://framerusercontent.com/images/dvwN74l1XYUzmfWL8GwTGySkM.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/dvwN74l1XYUzmfWL8GwTGySkM.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/dvwN74l1XYUzmfWL8GwTGySkM.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"We\u2019re constantly shipping new features over here at Twingate, but unless you're subscribed to our changelog you might not see all of them.\"}),/*#__PURE__*/e(\"p\",{children:\"That\u2019s why we\u2019re starting a new series to make it easy to find the latest Twingate product news in one place.\"}),/*#__PURE__*/e(\"p\",{children:\"Let\u2019s get into it.\"}),/*#__PURE__*/e(\"h2\",{children:\"Expanded AWS S3 log syncing\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,njrdt2pPBFxPX6s1M5A7U3LxD0.png\",\"data-framer-height\":\"538\",\"data-framer-width\":\"1024\",height:\"269\",src:\"https://framerusercontent.com/images/njrdt2pPBFxPX6s1M5A7U3LxD0.png\",srcSet:\"https://framerusercontent.com/images/njrdt2pPBFxPX6s1M5A7U3LxD0.png?scale-down-to=512 512w,https://framerusercontent.com/images/njrdt2pPBFxPX6s1M5A7U3LxD0.png 1024w\",style:{aspectRatio:\"1024 / 538\"},width:\"512\"}),/*#__PURE__*/t(\"p\",{children:[\"We\u2019ve expanded our \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/syncing-data-to-s3\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"AWS S3 integration\"})}),\". You can now sync Twingate Audit Logs and Network Events to your selected S3 bucket.\"]}),/*#__PURE__*/e(\"p\",{children:\"This data can be programmatically consumed or sent to a SIEM, which gives you real time visibility to help with investigating admin activities within Twingate, observing end user connections across your network, and general troubleshooting.\"}),/*#__PURE__*/t(\"p\",{children:[\"Check out our docs page for \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/syncing-data-to-s3\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"step-by-step configuration instructions\"})}),\".\"]}),/*#__PURE__*/e(\"h2\",{children:\"In-console DNS filtering log data\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,yy1pTXJPidmuIIyRyUId0ZtII.png\",\"data-framer-height\":\"664\",\"data-framer-width\":\"1506\",height:\"332\",src:\"https://framerusercontent.com/images/yy1pTXJPidmuIIyRyUId0ZtII.png\",srcSet:\"https://framerusercontent.com/images/yy1pTXJPidmuIIyRyUId0ZtII.png?scale-down-to=512 512w,https://framerusercontent.com/images/yy1pTXJPidmuIIyRyUId0ZtII.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/yy1pTXJPidmuIIyRyUId0ZtII.png 1506w\",style:{aspectRatio:\"1506 / 664\"},width:\"753\"}),/*#__PURE__*/t(\"p\",{children:[\"We\u2019ve added \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/dns-filtering#dns-filtering-logs\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"in-console DNS analytics\"})}),\" for customers with \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/product/internet-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate Internet Security\"})}),\" enabled.\"]}),/*#__PURE__*/t(\"p\",{children:[\"You can now view a summary of your \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/dns-filtering#dns-filtering-logs\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"DNS filtering activity\"})}),\", plus a log of recent DNS events. Review high-level analytics or drill down into specifics like an individual device\u2019s IP address and block reason.\"]}),/*#__PURE__*/e(\"h2\",{children:\"More from the Product Team\"}),/*#__PURE__*/e(\"p\",{children:\"We\u2019ve got plenty of other features we\u2019re excited to share, plus a peek at some upcoming releases:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"The \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/changelog/clients#macos-2024-57-release\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"macOS standalone Client\"})}),\" can be installed using a PKG file, making it easier to distribute via MDM.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"We\u2019ve made a number of updates to our \",/*#__PURE__*/e(s,{href:\"https://github.com/Twingate/kubernetes-operator\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"K8s operator\"})}),\", with major improvement to how it handles Twingate Connector reconciliation.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"MSPs can now delete Customer Networks, simplifying management within the \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/msp\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate MSP Portal\"})}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"[Coming soon] We\u2019re further expanding our AWS S3 integration to enable customers to sync DNS filtering logs to an AWS S3 bucket.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"[Coming soon] To streamline testing of Twingate DNS Filtering, we\u2019re adding the ability to enable Internet Security mode for only specifically selected enrollment groups.\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"New resources\"}),/*#__PURE__*/e(\"p\",{children:\"The Twingate Customer Solutions team has been hard at work creating resources to make our customers\u2019 lives easier.\\xa0\"}),/*#__PURE__*/t(\"p\",{children:[\"Our \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=jRn7TMjloYA&list=PLhIqF3vafamPK6f0ET3dbqhvkZJpzQJsM\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"new onboarding video series\"})}),\" has 10+ videos, so you can easily find exactly what you need to get started with Twingate.\"]}),/*#__PURE__*/e(\"p\",{children:\"They\u2019ve also created a number of guides and how-to\u2019s over on the Twingate Docs page:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/how-nat-traversal-works\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How NAT Traversal works\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/troubleshooting-p2p\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to troubleshoot peer-to-peer connections\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/how-encryption-works-in-twingate\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Understanding encryption in Twingate\"})})})})]}),/*#__PURE__*/e(\"h2\",{children:\"Twingate in the wild\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s VP of Engineering Eran Kampf is always busy, but he made it to Civo Navigate to present (plus he gave a \",/*#__PURE__*/e(s,{href:\"https://youtube.com/shorts/hD-NDAzN8bw?si=Pb7cnbh5bTXA5uWk\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"rapid-fire overview\"})}),\" of why Twingate is better than traditional VPNs).\"]}),/*#__PURE__*/t(\"p\",{children:[\"Eran also hosted a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/webinars/march-20-2024-reliability\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"recent webinar\"})}),\" all about reliability, taking viewers through the steps he and the team took to go from two major outages to 99.9% reliability in just 6 months.\"]}),/*#__PURE__*/e(\"p\",{children:\"There\u2019s always lots happening in the Twingate Community, but here are a few more highlights:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"In his new course Justin from \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=2TX7Pal5NMc\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"CodingEntrepreneurs\"})}),\" shows viewers how to use modern Django to build out a content engine project in a private and secure way leveraging Twingate.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=uYrEELGIX1g\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Azure Academy\"})}),\" takes you through a Twingate deployment on Azure in just 10 minutes.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"The ability to configure high availability is a key callout in \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=tIwRu-U1Q4A\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"WunderTech\u2019s recent video\"})}),\", which demonstrates how he uses Twingate to access a Synology NAS.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Over on TikTok \",/*#__PURE__*/e(s,{href:\"https://www.tiktok.com/@wjpearce_/video/7342826211858468128\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"W. J. Pearce\"})}),\" takes you through how Twingate can help future-proof your cybersecurity career (plus he\u2019s got \",/*#__PURE__*/e(s,{href:\"https://wjpearce.substack.com/p/time-to-ditch-the-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"step-by-step instructions\"})}),\" on his Substack).\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Fellow TikTokker \",/*#__PURE__*/e(s,{href:\"https://www.tiktok.com/@umacodes/video/7348108067902475563?is_from_webapp=1&sender_device=pc&web_id=7348164632840635934\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Uma Codes\"})}),\" takes you through the pitfalls of common remote access solutions, and takes you through a Twingate deployment.\"]})})]}),/*#__PURE__*/t(\"p\",{children:[\"Don\u2019t forget to swing by \",/*#__PURE__*/e(s,{href:\"https://www.reddit.com/r/twingate/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"r/twingate\"})}),\" over on Reddit for all your Twingate related questions, use case discussions, best practices and more. We\u2019ve already seen some great posts, including one on using \",/*#__PURE__*/e(s,{href:\"https://www.reddit.com/r/twingate/comments/1anbha8/twingate_on_vacation_1/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate on vacation\"})}),\" and another showcasing Twingate already working on the \",/*#__PURE__*/e(s,{href:\"https://www.reddit.com/r/twingate/comments/1asekht/twingate_already_working_perfectly_on_apple/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Apple Vision Pro\"})}),\"!\"]}),/*#__PURE__*/t(\"p\",{children:[\"Not a Twingate customer yet? If you\u2019re interested in taking Twingate for a spin, you can request a personalized demo from our team or\",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\" try it out yourself for free\"})}),\".\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]})]})},{index:11,id:\"lAX5hqj12\",[h]:!0,[d]:!1,[p]:\"Free Remote Access to your Plex Media Server without Port Forwarding\",[u]:\"Plex Media Server\",[m]:\"plex-media-server\",[g]:\"A step-by-step guide to enable secure, remote access to your Plex Media Server without port forwarding using Twingate\",[w]:\"Jimmy Li\",[f]:\"2022-01-03T00:00:00.000Z\",[y]:\"nwIUHELao\",[b]:T({src:\"https://framerusercontent.com/images/06mBY9RBLtMDwEKlbwS6JWBtfM.png\",srcSet:\"https://framerusercontent.com/images/06mBY9RBLtMDwEKlbwS6JWBtfM.png?scale-down-to=512 512w,https://framerusercontent.com/images/06mBY9RBLtMDwEKlbwS6JWBtfM.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/06mBY9RBLtMDwEKlbwS6JWBtfM.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/06mBY9RBLtMDwEKlbwS6JWBtfM.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/06mBY9RBLtMDwEKlbwS6JWBtfM.png\",srcSet:\"https://framerusercontent.com/images/06mBY9RBLtMDwEKlbwS6JWBtfM.png?scale-down-to=512 512w,https://framerusercontent.com/images/06mBY9RBLtMDwEKlbwS6JWBtfM.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/06mBY9RBLtMDwEKlbwS6JWBtfM.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/06mBY9RBLtMDwEKlbwS6JWBtfM.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Plex Media Server is a great solution to organize all of your media and access them from your laptop, phone, TV, or lots of other places. It's easy to listen to your music or watch your movies via Plex when you're at home and connected to your home network. But what about when you are away on vacation, or if you want to share access to your library with friends and family?\"}),/*#__PURE__*/e(\"h2\",{children:\"Plex remote access not working?\"}),/*#__PURE__*/e(\"p\",{children:\"Plex offers a remote access feature that relies on port forwarding, but the configuration may not always work or there may be other common issues like Double-NAT. Using port forwarding also exposes an open port to your home network that can potentially be exploited. For mobile access, Plex provides mobile apps, but without a paid subscription, video and music streaming is limited to 1 minute and photos are watermarked.\"}),/*#__PURE__*/t(\"p\",{children:[\"There are other common approaches, but as the table below illustrates, they are cumbersome, insecure, and potentially expensive. We are excited to offer a new simple, secure, and free solution: \",/*#__PURE__*/e(s,{href:\"https://github.com/Twingate/www.twingate.com/blob/313411cac1b1630d1395f64ca35f176fb5828611/pricing?utm_source=blog&utm_medium=blog&utm_campaign=plex-media-server\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate Starter\"})}),\"!\"]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,63mXoYbGzUA4owEaRz06taJQbYc.png\",\"data-framer-height\":\"558\",\"data-framer-width\":\"1414\",height:\"279\",src:\"https://framerusercontent.com/images/63mXoYbGzUA4owEaRz06taJQbYc.png\",srcSet:\"https://framerusercontent.com/images/63mXoYbGzUA4owEaRz06taJQbYc.png?scale-down-to=512 512w,https://framerusercontent.com/images/63mXoYbGzUA4owEaRz06taJQbYc.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/63mXoYbGzUA4owEaRz06taJQbYc.png 1414w\",style:{aspectRatio:\"1414 / 558\"},width:\"707\"}),/*#__PURE__*/t(\"p\",{children:[\"We've created a quick start guide below to walk you through the steps to setup Twingate to access your Plex Media Server. Once you're done, all it takes is a few clicks to add access to any other resource on your home network like \",/*#__PURE__*/e(s,{href:\"https://github.com/Twingate/www.twingate.com/blob/313411cac1b1630d1395f64ca35f176fb5828611/blog/raspberry-pi-home-assistant\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Home Assistant\"})}),\".\"]}),/*#__PURE__*/t(\"p\",{children:[\"Please also join us in our \",/*#__PURE__*/e(s,{href:\"https://forum.twingate.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"community forum\"})}),\" to share and discuss your experience and any other use cases you've discovered!\"]}),/*#__PURE__*/e(\"h2\",{children:\"Prerequisites\"}),/*#__PURE__*/e(\"p\",{children:\"The rest of this guide assumes that you have some components already installed. If not, please following these instructions first.\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Plex Media Server can be installed on a variety of devices. A common choice is a dedicated device like a NAS or a Raspberry Pi, all of which are supported by Twingate. Please install Plex Media Server \",/*#__PURE__*/e(s,{href:\"https://www.plex.tv/media-server-downloads#plex-media-server\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Twingate can be installed either as a Docker container or directly on the OS. If you prefer the first approach, please first \",/*#__PURE__*/e(s,{href:\"https://docs.docker.com/get-docker/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"install Docker\"})}),\" on the device that hosts your Plex Media Server.\"]})})]}),/*#__PURE__*/e(\"h2\",{children:\"Sign up for Twingate\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate Starter is a new free plan that is designed for home and personal use. If you don't have an account already, please click \",/*#__PURE__*/e(s,{href:\"https://github.com/Twingate/www.twingate.com/blob/313411cac1b1630d1395f64ca35f176fb5828611/blog/twingate-starter-setup?utm_source=blog&utm_medium=blog&utm_campaign=plex-media-server\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\" and follow the simple steps to sign up for a Starter account and begin the initial setup.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Add a Remote Network\"}),/*#__PURE__*/e(\"p\",{children:'Click on the \"Add a Remote Network\" button, and you should see a popup. Twingate supports many different kinds of remote networks. If you are looking to connect to AWS, Azure, or GCP, then select the appropriate option in the dropdown menu. If you are connecting to your home network, choose \"Other\" for the Location. Regardless of which option you choose, give the network a name, like \u201CHome Network\u201D, then click \"Add Remote Network\" to create it.'}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,ejQL5XCkTRSh48A6Vc0qSQIuD6w.png\",\"data-framer-height\":\"1127\",\"data-framer-width\":\"1332\",height:\"563\",src:\"https://framerusercontent.com/images/ejQL5XCkTRSh48A6Vc0qSQIuD6w.png\",srcSet:\"https://framerusercontent.com/images/ejQL5XCkTRSh48A6Vc0qSQIuD6w.png?scale-down-to=512 512w,https://framerusercontent.com/images/ejQL5XCkTRSh48A6Vc0qSQIuD6w.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/ejQL5XCkTRSh48A6Vc0qSQIuD6w.png 1332w\",style:{aspectRatio:\"1332 / 1127\"},width:\"666\"}),/*#__PURE__*/e(\"h2\",{children:\"Add a Connector\"}),/*#__PURE__*/e(\"p\",{children:\"After completing the steps above, you should now have a Starter account with a Remote Network set up. The next step is to deploy a Twingate Connector, which is a piece of software that allows for secure access to your remote network and the devices connected to it. For it to work, you first need to deploy the Connector on the device that is hosting your Plex Media Server. Please follow the instructions below for some common devices:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://github.com/Twingate/www.twingate.com/blob/313411cac1b1630d1395f64ca35f176fb5828611/blog/synology-nas\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Synology NAS\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://github.com/Twingate/www.twingate.com/blob/313411cac1b1630d1395f64ca35f176fb5828611/blog/raspberry-pi-home-assistant\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Raspberry Pi\"})})})})]}),/*#__PURE__*/e(\"h2\",{children:\"Add a Resource\"}),/*#__PURE__*/e(\"p\",{children:\"You've now set up a Connector on your device. This Connector enables remote access for any device or service on your home network (called a \u201CResource\u201D in Twingate). For now, we\u2019re just interested in enabling access to Plex, so we need to add it as a Resource.\"}),/*#__PURE__*/t(\"p\",{children:['Go back to your Remote Network and click on the \"Add Resource\" link. You\\'ll see a popup like the one below. Click on the \"CIDR Address\" box, choose a Label name for the Resource, enter the local IP address of Plex (likely ',/*#__PURE__*/e(\"code\",{children:\"10.x.x.x\"}),\" or \",/*#__PURE__*/e(\"code\",{children:\"192.168.x.x\"}),\"), choose \",/*#__PURE__*/e(\"code\",{children:\"32400\"}),' for the Port Restriction, and click \"Add Resource\". Congrats! Your Plex Media Server is now enabled for secure remote access.']}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,ibLRJOTmgNbdRuSzl0ZGlO4eN5k.png\",\"data-framer-height\":\"1666\",\"data-framer-width\":\"2394\",height:\"833\",src:\"https://framerusercontent.com/images/ibLRJOTmgNbdRuSzl0ZGlO4eN5k.png\",srcSet:\"https://framerusercontent.com/images/ibLRJOTmgNbdRuSzl0ZGlO4eN5k.png?scale-down-to=512 512w,https://framerusercontent.com/images/ibLRJOTmgNbdRuSzl0ZGlO4eN5k.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/ibLRJOTmgNbdRuSzl0ZGlO4eN5k.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/ibLRJOTmgNbdRuSzl0ZGlO4eN5k.png 2394w\",style:{aspectRatio:\"2394 / 1666\"},width:\"1197\"}),/*#__PURE__*/e(\"h2\",{children:\"Download the Twingate Client\"}),/*#__PURE__*/e(\"p\",{children:\"All that's left to do now is to install Twingate on your device (we support Windows, Mac, Linux and have apps for iOS and Android) and access your Plex Media Server. As an example, let's walk through setting up the Twingate client on iOS.\"}),/*#__PURE__*/t(\"p\",{children:[\"First, download and install the iOS app \",/*#__PURE__*/e(s,{href:\"https://api.twingate.com/download/ios\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\". Type in the Network URL that you chose when you signed up and tap \\\"Join Network\\\". You'll be automatically asked to log in using the same account you used to sign up. After signing in, you'll land on the home screen, where you should already see your Plex Resource listed. When you are connected to your Twingate network, a \u201CVPN\u201D icon will appear in the top bar of your screen.\"]}),/*#__PURE__*/e(\"p\",{children:\"To test it out, stay connected to Twingate, disconnect from your local network (e.g., by disabling WiFi), and navigate to your Plex Media Server instance on your phone's browser. You should be able to access it just as if you were at home.\"}),/*#__PURE__*/e(\"p\",{children:\"Finally, disconnect from Twingate and try accessing Plex again -- you should see that it's inaccessible.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,rHbreFlyTLVC83sWp2Zvt7a9AY.png\",\"data-framer-height\":\"924\",\"data-framer-width\":\"1280\",height:\"462\",src:\"https://framerusercontent.com/images/rHbreFlyTLVC83sWp2Zvt7a9AY.png\",srcSet:\"https://framerusercontent.com/images/rHbreFlyTLVC83sWp2Zvt7a9AY.png?scale-down-to=512 512w,https://framerusercontent.com/images/rHbreFlyTLVC83sWp2Zvt7a9AY.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/rHbreFlyTLVC83sWp2Zvt7a9AY.png 1280w\",style:{aspectRatio:\"1280 / 924\"},width:\"640\"}),/*#__PURE__*/t(\"p\",{children:[\"Congrats! You've finished setting up Twingate for Plex Media Server. Join us in the \",/*#__PURE__*/e(s,{href:\"https://forum.twingate.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"community forum\"})}),\" to share how things went and what cool use cases you've discovered!\"]}),/*#__PURE__*/e(\"h2\",{children:\"Sharing Is Caring\"}),/*#__PURE__*/e(\"p\",{children:\"Do you want to share access with a family member? You can easily do this from the Twingate web UI. Just go to the Team tab and click \u201CInvite User\u201D to send an email invitation. The recipient would simply follow the same steps to download the Twingate client, join your network, and get access to Plex, or any other resource you set up!\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,Iv4XMXFYxX0BKTkAsLEapAE6RI.png\",\"data-framer-height\":\"1127\",\"data-framer-width\":\"1332\",height:\"563\",src:\"https://framerusercontent.com/images/Iv4XMXFYxX0BKTkAsLEapAE6RI.png\",srcSet:\"https://framerusercontent.com/images/Iv4XMXFYxX0BKTkAsLEapAE6RI.png?scale-down-to=512 512w,https://framerusercontent.com/images/Iv4XMXFYxX0BKTkAsLEapAE6RI.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/Iv4XMXFYxX0BKTkAsLEapAE6RI.png 1332w\",style:{aspectRatio:\"1332 / 1127\"},width:\"666\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]})},{index:12,id:\"Uy1IMyPj4\",[h]:!0,[d]:!1,[p]:\"Announcing Twingate & Amazon S3\",[u]:\"Amazon S3 Integration\",[m]:\"amazon-s3-integration\",[g]:\"\",[w]:\"Emily Lehman\",[f]:\"2024-01-22T00:00:00.000Z\",[y]:\"KI2UGBfh7\",[b]:T({src:\"https://framerusercontent.com/images/w8hTOtEkMJKhUXmgdA1cnTKJk.png\",srcSet:\"https://framerusercontent.com/images/w8hTOtEkMJKhUXmgdA1cnTKJk.png?scale-down-to=512 512w,https://framerusercontent.com/images/w8hTOtEkMJKhUXmgdA1cnTKJk.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/w8hTOtEkMJKhUXmgdA1cnTKJk.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/w8hTOtEkMJKhUXmgdA1cnTKJk.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/w8hTOtEkMJKhUXmgdA1cnTKJk.png\",srcSet:\"https://framerusercontent.com/images/w8hTOtEkMJKhUXmgdA1cnTKJk.png?scale-down-to=512 512w,https://framerusercontent.com/images/w8hTOtEkMJKhUXmgdA1cnTKJk.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/w8hTOtEkMJKhUXmgdA1cnTKJk.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/w8hTOtEkMJKhUXmgdA1cnTKJk.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"We\u2019re excited to share the new \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/integrations/amazon-s3\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate and Amazon S3 integration\"})}),\"!\\xa0\"]}),/*#__PURE__*/e(\"p\",{children:\"Amazon S3 is cloud object storage with industry-leading scalability, data availability, security, and performance. With this new integration, users can configure Twingate to send audit logs to an Amazon S3 bucket, which in turn means they can connect that data to their SIEM of choice.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate Audit Logs are crucial for both troubleshooting and investigating suspicious activity. These logs include create, delete, edit, and connect events across a wide set of categories:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Access\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"API Keys\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Devices\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Device Integrations\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Device Security\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Secure DNS (includes DNS-over-HTTPS and DNS filtering)\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Network (includes Remote Networks, Connectors, and Resources)\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Policies\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Service Accounts\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Users & Groups\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"While this data is useful on its own, the new \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/integrations/amazon-s3\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Amazon S3 integration\"})}),\" significantly expands these insights by enabling admins to centralize their data management in S3, and in turn connect Twingate Audit Logs to any SIEM or activity monitoring tool.\\xa0\"]}),/*#__PURE__*/e(\"h2\",{children:\"Security & Flexibility at Scale\"}),/*#__PURE__*/e(\"p\",{children:\"As organizations grow and generate more data, the ability to seamlessly scale storage while keeping data secure is paramount. Amazon S3\u2019s scalability ensures that organizations can store and manage their Twingate Audit Logs efficiently, without worrying about storage limitations. Plus, S3 provides encryption options for data at rest and in transit, ensuring that Twingate Audit Logs remain secure throughout their lifecycle.\"}),/*#__PURE__*/e(\"p\",{children:\"More than that, flexibility is a key focus at Twingate - your tools need to work for you. Organizations need a flexible environment to customize storage configurations based on their specific needs, and Amazon S3 does just that. With this new integration, you can leverage that flexibility specifically for your Twingate Audit Log data.\"}),/*#__PURE__*/e(\"p\",{children:\"It\u2019s important to keep in mind that this flexibility extends beyond Amazon S3 itself. If you\u2019re a Splunk customer, you can now run SPL searches, create dashboards, reports, correlate Twingate data, and even search Twingate Audit Logs at rest in S3, all without needing to connect Twingate and Splunk directly.\\xa0\"}),/*#__PURE__*/e(\"h2\",{children:\"Streamline troubleshooting & compliance\"}),/*#__PURE__*/e(\"p\",{children:\"Auditing data can be a pain, whether it's for troubleshooting or compliance issues. By using S3 as a centralized tool, you can significantly reduce the resourcing required to isolate errors, suspicious activity, and more.\"}),/*#__PURE__*/e(\"p\",{children:\"Because Twingate data syncs automatically every 5 minutes, you\u2019re able to further reduce mistakes by removing the possibility of human error that comes with manual data transfers.\"}),/*#__PURE__*/e(\"h2\",{children:\"Conclusion\"}),/*#__PURE__*/e(\"p\",{children:\"Comprehensive visibility into your network is essential to staying secure and productive, and we\u2019re excited to share this key step in making it easier than ever to programmatically sync key network data across systems. Twingate Audit Logs provide significant insights into your network, and we\u2019re working towards an even more comprehensive integration with Amazon S3 through Network Event syncing, coming very soon!\"}),/*#__PURE__*/t(\"p\",{children:[\"You can explore this new integration in the \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/syncing-data-to-s3\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"documents page\"})}),\" or check out the \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/integrations/amazon-s3\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"integration overview\"})}),\".\\xa0\"]}),/*#__PURE__*/t(\"p\",{children:[\"Not a Twingate customer yet? If you\u2019re interested in taking Twingate for a spin, you can request a personalized demo from our team or \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"try it out yourself for free\"})}),\".\"]})]})},{index:13,id:\"rZMy1vjYT\",[h]:!0,[d]:!1,[p]:\"The Many Layers of Zero Trust - SSH Access Management\",[u]:\"Smallstep Integration\",[m]:\"smallstep-integration\",[g]:\"\",[w]:\"Emrul Islam\",[f]:\"2024-01-19T00:00:00.000Z\",[y]:\"nwIUHELao\",[b]:T({src:\"https://framerusercontent.com/images/DIDLgQw0RRPfW5G3dG7tLlgTJuc.png\",srcSet:\"https://framerusercontent.com/images/DIDLgQw0RRPfW5G3dG7tLlgTJuc.png?scale-down-to=512 512w,https://framerusercontent.com/images/DIDLgQw0RRPfW5G3dG7tLlgTJuc.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/DIDLgQw0RRPfW5G3dG7tLlgTJuc.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/DIDLgQw0RRPfW5G3dG7tLlgTJuc.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/DIDLgQw0RRPfW5G3dG7tLlgTJuc.png\",srcSet:\"https://framerusercontent.com/images/DIDLgQw0RRPfW5G3dG7tLlgTJuc.png?scale-down-to=512 512w,https://framerusercontent.com/images/DIDLgQw0RRPfW5G3dG7tLlgTJuc.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/DIDLgQw0RRPfW5G3dG7tLlgTJuc.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/DIDLgQw0RRPfW5G3dG7tLlgTJuc.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"What does it take to secure SSH access if you\u2019re not using a VPN? In this blog we\u2019ll answer that question, plus take a closer look at how to apply additional levels of security to SSH access when using a ZTNA solution like Twingate.\"}),/*#__PURE__*/e(\"h2\",{children:\"Using Twingate to govern access to SSH resources\"}),/*#__PURE__*/e(\"p\",{children:\"It is very easy to use Twingate to govern network-level access. Supposing you have a server running SSH in your internal network and you'd like to provide access to a couple of administrators you can add the server as a resource in Twingate and assign a couple of users to have access to it.\"}),/*#__PURE__*/e(\"p\",{children:\"Without Twingate, no one outside the network will be able to establish a network connection to the resource. And with Twingate, only the users you've granted access can establish a connection. This satisfies the principle of least privileged access.\"}),/*#__PURE__*/t(\"p\",{children:[\"Fine-grained access to network resources such as SSH (or almost any TCP/UDP service at the\",/*#__PURE__*/e(s,{href:\"https://en.wikipedia.org/wiki/Transport_layer\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\" Transport Layer\"})}),\") is possible without requiring us to install or run anything special on the servers. For many of our users this simplicity is part of why they select Twingate for their Zero Trust remote access requirements.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Out-of-the-box however, Twingate doesn't provide any mechanism to authenticate you at the \",/*#__PURE__*/e(s,{href:\"https://en.wikipedia.org/wiki/Application_layer\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Application Layer\"})}),\". If you grant a user access to an SSH service, the user will still need credentials such as a username/password or an SSH key to actually log in to the device. From the users we've spoken to, this is not a problem in practice; they are used to adding SSH keys to their servers. But we often hear that SSH access management can be a concern - we'll look at options for this later in this post.\"]}),/*#__PURE__*/e(\"p\",{children:\"The addition of Twingate to their existing process provides three quick-wins:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"Easily revoke access to a server by removing access to the resource - making any SSH key useless immediately and allowing time for administrators to remove credentials on the server.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"Users can use their existing SSH client and other tools with no reconfiguration required.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[\"Prevent brute-force attacks on the SSH host since it does not have to be accessible over a public IP address or DNS. Without Twingate here,\",/*#__PURE__*/e(s,{href:\"https://github.com/fail2ban/fail2ban\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\" fail2ban\"})}),\" becomes an almost essential need for some level of protection.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"And once again, these benefits are available without needing to install software on every SSH server in an estate.\"}),/*#__PURE__*/e(\"h2\",{children:\"Application layer authentication\"}),/*#__PURE__*/e(\"p\",{children:\"But what if we also need application-layer credential management for our users? In the SSH case that can mean governing what users exist on the host and what credentials can be used to access them.\"}),/*#__PURE__*/t(\"p\",{children:[\"There are several options for this and we come across customers using or evaluating ones such as StrongDM and the Open Source Teleport, amongst others. These solutions do need more work to setup with additional client-side and server-side configuration required. For this article however we're going to look at an excellent solution we've been testing within Twingate called\",/*#__PURE__*/e(s,{href:\"https://smallstep.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\" Smallstep\"})}),\".\"]}),/*#__PURE__*/e(\"h2\",{children:\"Twingate + Smallstep\"}),/*#__PURE__*/t(\"p\",{children:[\"Smallstep enables security teams to generate short-lived credentials for users to access specific resources such as SSH. These credentials can be generated following an authentication challenge against an Identity Provider such as \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/integrations/okta\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Okta\"})}),\" or \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/integrations/google-workspace\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Google Workspace\"})}),\".\"]}),/*#__PURE__*/e(\"p\",{children:\"So let's consider what we'd like to achieve in a fictitious but real-world scenario:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"For regular users that access internal web applications and network shares, Twingate already provides secure, controlled access.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"For development teams they're going to manage SSH keys to development environments themselves and Twingate allows security teams to isolate those development environments from the public Internet.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"For production systems, SSH access has to be carefully managed. Not only would we like Twingate to protect network access, we'd like our SSH users to perform a further security challenge to gain access.\"})})]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,aBOOWHHPBejP7gXiZSn8J4LTP0.png\",\"data-framer-height\":\"1208\",\"data-framer-width\":\"2000\",height:\"604\",src:\"https://framerusercontent.com/images/aBOOWHHPBejP7gXiZSn8J4LTP0.png\",srcSet:\"https://framerusercontent.com/images/aBOOWHHPBejP7gXiZSn8J4LTP0.png?scale-down-to=512 512w,https://framerusercontent.com/images/aBOOWHHPBejP7gXiZSn8J4LTP0.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/aBOOWHHPBejP7gXiZSn8J4LTP0.png 2000w\",style:{aspectRatio:\"2000 / 1208\"},width:\"1000\"}),/*#__PURE__*/e(\"p\",{children:\"This last point is fairly significant - having additional layers of security challenge proportionate to the risk of a specific resource or system is a universal best practice. At the same time, having onerous security requirements to access low-risk systems might provide questionable security benefit and create a poor user experience. At Twingate, user experience is central to our product design because not only does usability drive better adoption, it minimizes the chances of someone actively working around rules or systems they find cumbersome.\"}),/*#__PURE__*/t(\"p\",{children:[\"With Twingate and Smallstep together, security teams can carefully tune the level of security applied to different systems. And where Smallstep is added, \",/*#__PURE__*/e(\"strong\",{children:\"a bad actor would have to breach 2 independent systems\"}),\" - one that governs network access (Twingate), and another that governs credentials (Smallstep) - before they could gain unauthorised access to a protected system.\"]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,s300Rvmyn4nHTtI3vtKcsLS1BdU.svg\",\"data-framer-height\":\"669\",\"data-framer-width\":\"506\",height:\"334\",src:\"https://framerusercontent.com/images/s300Rvmyn4nHTtI3vtKcsLS1BdU.svg\",srcSet:\"https://framerusercontent.com/images/s300Rvmyn4nHTtI3vtKcsLS1BdU.svg 506w\",style:{aspectRatio:\"506 / 669\"},width:\"253\"}),/*#__PURE__*/t(\"p\",{children:[\"You might notice that in the diagram above there is a potential weakness - the IdP ultimately provides authentication for both systems. Of course, an IdP will always be a critical component of any security infrastructure but there additional security checks you can leverage to mitigate risk in this scenario - for instance by layering IdPs or leveraging Twingate\u2019s built-in\",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/what-is-device-posture-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\" device posture checks\"})}),\" and\",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/what-is-webauthn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\" WebAuthn\"})}),\" MFA.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Find out more and get started\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate is available with a free Starter tier and Smallstep is available as both self-hosted and as a commercial offering (SaaS). For more technical details and getting started steps please visit our\",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/ssh-smallstep\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\" docs\"})}),\" page.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/ssh-smallstep\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Docs Page - Twingate with Smallstep\\xa0\"})})})]})},{index:14,id:\"fK4ayszPQ\",[h]:!0,[d]:!0,[p]:\"Announcing Twingate Internet Security\",[u]:\"Internet Security Announcement\",[m]:\"internet-security-announcement\",[g]:\"\",[w]:\"Emily Lehman\",[f]:\"2023-12-06T00:00:00.000Z\",[y]:\"KI2UGBfh7\",[b]:T({src:\"https://framerusercontent.com/images/1esz5e7aqP0UG65i078OOZJU3Q.png\",srcSet:\"https://framerusercontent.com/images/1esz5e7aqP0UG65i078OOZJU3Q.png?scale-down-to=512 512w,https://framerusercontent.com/images/1esz5e7aqP0UG65i078OOZJU3Q.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/1esz5e7aqP0UG65i078OOZJU3Q.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/1esz5e7aqP0UG65i078OOZJU3Q.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/aNQY357VQjZ6ZVSY6c05FKxz0.png\",srcSet:\"https://framerusercontent.com/images/aNQY357VQjZ6ZVSY6c05FKxz0.png?scale-down-to=512 512w,https://framerusercontent.com/images/aNQY357VQjZ6ZVSY6c05FKxz0.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/aNQY357VQjZ6ZVSY6c05FKxz0.png 1200w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"We\u2019ve been hinting at some very exciting news over here at Twingate, and now we can finally share it: \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/early-access/internet-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate Internet Security\"})}),\" is officially available in Beta.\"]}),/*#__PURE__*/e(\"p\",{children:\"Since we first launched, Twingate has made huge improvements when it comes to accessing and protecting your most sensitive resources, but that only protects one vector of attack.\\xa0\"}),/*#__PURE__*/t(\"p\",{children:[\"From websites infected with malware, to phishing attempts, to botnet recruitment sites, the open internet poses a huge security risk to organizations. With \",/*#__PURE__*/e(s,{href:\"https://www.verizon.com/business/en-gb/resources/reports/dbir\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"74% of data breaches\"})}),\" involving a human element, securing end user activity needs to be a critical component of your security model. This means protecting more than just your private resources.\"]}),/*#__PURE__*/e(\"p\",{children:\"That\u2019s where Twingate Internet Security comes in.\\xa0\"}),/*#__PURE__*/t(\"p\",{children:[\"With \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/early-access/internet-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate Internet Security\"})}),\" you can now leverage Twingate to continuously protect and encrypt all internet traffic across all end user devices. Twingate \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/dns-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Secure DNS\"})}),\" continuously encrypts traffic, and \",/*#__PURE__*/e(s,{href:\"http://twingate.com/docs/dns-filtering\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate DNS Filtering\"})}),\" automatically filters bad or unwanted content at the DNS level.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Why start with DNS security?\"}),/*#__PURE__*/e(\"p\",{children:\"You\u2019ll notice that the first features we\u2019re launching as a part of Twingate Internet Security are related to DNS - why is that?\"}),/*#__PURE__*/t(\"p\",{children:[\"Because almost all internet connections require DNS, the DNS layer is a significant focus for cybercriminals. The numbers back this up: according to the \",/*#__PURE__*/e(s,{href:\"https://efficientip.com/wp-content/uploads/2022/10/IDC-EUR149048522-EfficientIP-infobrief_FINAL.pdf\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"2021 IDC Global DNS Threat Report\"})}),\", 87% of organizations have experienced a DNS attack and 85% of modern malware uses DNS for malicious activity.\\xa0\"]}),/*#__PURE__*/t(\"p\",{children:[\"We\u2019ve already made huge strides to protect the DNS layer. Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/architecture\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"unique approach to network architecture\"})}),\" allows us to use a transparent proxy system so that users can access private DNS addresses without having access to the private DNS resolver.\\xa0\"]}),/*#__PURE__*/e(\"p\",{children:\"When we started thinking about the first features we wanted to build, DNS security stood out. Let\u2019s dive into the new features.\"}),/*#__PURE__*/e(\"h2\",{children:\"Native DNS Filtering\"}),/*#__PURE__*/t(\"p\",{children:[\"There are \",/*#__PURE__*/e(s,{href:\"https://www.forbes.com/advisor/business/software/website-statistics/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"over a billion domains\"})}),\" in the wild today, and an estimated 200,000 new ones created every day. While it\u2019s practically impossible to get a truly accurate estimate of how many domains are malicious, even if just 1% are malicious, that\u2019s 2,000 new domains to block every single day. There\u2019s no way for a single team to continuously identify and block so many domains, so we\u2019re doing it for you.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"http://twingate.com/docs/dns-filtering\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate DNS Filtering\"})}),\" enables you to automatically block access to all domains that are considered a security risk across all users. Twingate DNS Filtering automatically categorizes and flags potentially malicious or harmful sites as they appear on the internet, with no extra work needed from you.\"]}),/*#__PURE__*/e(\"p\",{children:\"Twingate DNS Filtering blocks a broach range of security threats, including:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Threat Intelligence Feeds for malware, phishing, and more\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"DNS Rebinding\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"IDN Homograph Attacks\\xa0\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Typosquatting\\xa0\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Domain Generation Algorithms\\xa0\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Newly registered domains\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Parked domains\"})})]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,CMXrNGTsDPwkNWXc8P6E1eO1tGw.png\",\"data-framer-height\":\"1791\",\"data-framer-width\":\"2428\",height:\"895\",src:\"https://framerusercontent.com/images/CMXrNGTsDPwkNWXc8P6E1eO1tGw.png\",srcSet:\"https://framerusercontent.com/images/CMXrNGTsDPwkNWXc8P6E1eO1tGw.png?scale-down-to=512 512w,https://framerusercontent.com/images/CMXrNGTsDPwkNWXc8P6E1eO1tGw.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/CMXrNGTsDPwkNWXc8P6E1eO1tGw.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/CMXrNGTsDPwkNWXc8P6E1eO1tGw.png 2428w\",style:{aspectRatio:\"2428 / 1791\"},width:\"1214\"}),/*#__PURE__*/t(\"p\",{children:[\"You can further customize your filtering preferences with specialized block and allow lists, fallback methods, exceptions, and more, all from within the \",/*#__PURE__*/e(s,{href:\"https://auth.twingate.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate Admin Console\"})}),\".\\xa0\"]}),/*#__PURE__*/e(\"p\",{children:\"Beyond just protecting users from significant attack vectors, Twingate DNS Filtering stops malicious attacks earlier than other tools like traditional firewalls. DNS filtering prevents attacks at the DNS layer, which is earlier than other tools can act.\\xa0 That means broader, faster protection for all of your end users.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate DNS Filtering also provides specialized privacy tools so you can block third party tracking, affiliate links, and more.\\xa0\"}),/*#__PURE__*/e(\"h2\",{children:\"Looking ahead\"}),/*#__PURE__*/e(\"p\",{children:\"This is an exciting first step in broadening the scope of Twingate protection. These features offer a significant jump forward in Twingate\u2019s security capabilities, and we have an exciting roadmap planned to continue enhancing and expanding Twingate\u2019s ability to protect organizations from security threats.\"}),/*#__PURE__*/e(\"p\",{children:\"As the world of work continues to evolve, the ability to work securely from anywhere becomes not just a nice-to-have, but a necessity. Achieving this requires rich security tools for every resource, every user, every device, and every environment. Twingate\u2019s goal is to make that a reality without slowing down the pace of business.\\xa0\"}),/*#__PURE__*/t(\"p\",{children:[\"That means not just investing in new capabilities like Internet Security, but ensuring that our \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/integrations\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"best-in-class integrations\"})}),\" remain a priority so that you can expand the impact of your entire security stack, build Twingate security into your existing workflows, and programmatically deploy and maintain new features without adding to admin overhead.\"]}),/*#__PURE__*/e(\"p\",{children:\"It also means digging deep into the impact of these new features. With the ability to keep the Twingate Client running, plus DNS filtering functionality enabled, in the future Twingate will be able to leverage that rich log data in order to surface key insights into the unique risk channels your organization faces, and the steps you can take to mitigate them.\"}),/*#__PURE__*/t(\"p\",{children:[\"You can explore these new features in our documents pages for \",/*#__PURE__*/e(s,{href:\"http://twingate.com/docs/dns-filtering\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"DNS Filtering\"})}),\" and \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/dns-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Secure DNS\"})}),\". If you\u2019re ready to take these features for a spin, you can request beta access to \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/early-access/internet-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate Internet Security\"})}),\".\\xa0\"]}),/*#__PURE__*/t(\"p\",{children:[\"Not a Twingate customer yet? If you\u2019re interested in taking Twingate for a spin, you can request a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"personalized demo\"})}),\" from our team or \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"try it out yourself for free\"})}),\".\"]})]})},{index:15,id:\"Bedy9Je1I\",[h]:!0,[d]:!0,[p]:\"Introducing Twingate Ephemeral Access\",[u]:\"Ephemeral Access\",[m]:\"ephemeral-access-launch\",[g]:\"\",[w]:\"Emily Lehman\",[f]:\"2023-11-24T00:00:00.000Z\",[y]:\"KI2UGBfh7\",[b]:T({src:\"https://framerusercontent.com/images/W9V0tJzyELmfkUt6JMmrxwU37eE.png\",srcSet:\"https://framerusercontent.com/images/W9V0tJzyELmfkUt6JMmrxwU37eE.png?scale-down-to=512 512w,https://framerusercontent.com/images/W9V0tJzyELmfkUt6JMmrxwU37eE.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/W9V0tJzyELmfkUt6JMmrxwU37eE.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/W9V0tJzyELmfkUt6JMmrxwU37eE.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/XhI6jdRzjUOLQndaqdPRmvK71w.png\",srcSet:\"https://framerusercontent.com/images/XhI6jdRzjUOLQndaqdPRmvK71w.png?scale-down-to=512 512w,https://framerusercontent.com/images/XhI6jdRzjUOLQndaqdPRmvK71w.png 1024w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"We\u2019re thrilled to announce that you can now leverage \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/ephemeral-access-to-resources\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Ephemeral Access policies\"})}),\" when protecting Twingate Resources. Twingate customers can now set an expiration time for Groups that have been granted access to Resources. Once a Group\u2019s expiration time has elapsed, access to the relevant Resource will automatically be revoked.\"]}),/*#__PURE__*/e(\"p\",{children:\"The expiration time for a particular access right can be set to any time from the next hour to one year from the current date. When the expiration time has elapsed, the Group will be removed from the Resource and users in that Group will no longer have access to that Resource.\"}),/*#__PURE__*/e(\"p\",{children:\"This is an exciting step forward in making least privilege access fully automated, keeping your most sensitive resources protected, and reducing vectors of attack for malicious actors, all without adding time consuming overhead for admin teams.\"}),/*#__PURE__*/t(\"p\",{children:[\"If you have contractors who are only working with your team for a set amount of time, or have a break glass scenario that requires troubleshooting for today only, or maybe you just know that access to certain servers will only be needed until the end of the year, you can automate access provisioning so that you maintain strict access policies without adding extra work to already resource-strapped teams.\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/e(\"h2\",{children:\"A quick history lesson\"}),/*#__PURE__*/e(\"p\",{children:\"How long, exactly, has the concept of least privilege access been around? The short answer: a while.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"The principle of least privilege as it relates to access dates to the Multics operating system\u2019s development in the 1960s, which was the first operating system to make the controlled sharing of information a design requirement.\\xa0\"}),/*#__PURE__*/t(\"p\",{children:[\"The official formulation is often credited to \",/*#__PURE__*/e(s,{href:\"https://ieeexplore.ieee.org/document/1451869\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"a 1974 article\"})}),\" from MIT professor Jerome Saltzer, where he synthesized the concept into a single sentence:\",/*#__PURE__*/e(\"br\",{}),\"\u201CEvery program and every privileged user of the system should operate using the least amount of privilege necessary to complete the job.\u201D\"]}),/*#__PURE__*/t(\"p\",{children:[\"Other than a trip down computer science memory lane, what\u2019s the purpose of bringing up the history of least privilege access? The fact that the concept has been around for so many decades highlights a key problem that Twingate is trying to solve: it\u2019s really hard to put into practice.\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/e(\"h2\",{children:\"Making least privilege a reality\"}),/*#__PURE__*/e(\"p\",{children:\"So why is least privilege so hard to do?\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"The first problem we identified here at Twingate was that perimeter-based approaches to network security don\u2019t cut it. For starters, a perimeter based approach means that once an attack gets the metaphorical keys, they can move laterally across resources. Then you have the issue of what a modern network actually looks like: on-prem servers, cloud environments, SaaS apps, and legacy applications. It can be incredibly difficult to have complete visibility into complex networks, which makes applying security controls challenging.\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/how-twingate-works\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"unique approach to network architecture\"})}),\" leverages direct peer-to-peer connections that sit behind your firewall rather than centralized chokepoints, which has the double advantage of automatically limiting lateral network traffic while improving performance for end users. That\u2019s one step closer to making least privilege a reality for organizations.\"]}),/*#__PURE__*/e(\"p\",{children:\"Next, you have the problem of granularity: you need robust data and powerful access controls to actually grant and restrict access. Historically this data is siloed and access policies are cumbersome to implement.\\xa0\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate supports fine-grain access policies based on identity, device, and context, with a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/integrations\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"rich library of integrations\"})}),\" so you can deepen the impact of other tools in your security stack. In addition to integrations with major IdPs, MDMs, EDRs, and native device posture checks, you can apply Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/two-factor-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"universal MFA\"})}),\" to any Resource, including things like RDP and SSH. With our user-friendly admin console, applying these granular access policies is simpler and faster than other ZTNA solutions.\"]}),/*#__PURE__*/e(\"p\",{children:\"You\u2019ll notice that we\u2019ve referenced usability and speed a few times. That\u2019s another reason why least privilege access has been a challenge for many organizations. The fact is, people need access to stuff to get their work done. When remote access tools slow down the pace of business, take eons to actually deploy, and require heavy admin overhead to maintain, teams often have to sacrifice ideal-state security in the name of getting things done.\"}),/*#__PURE__*/t(\"p\",{children:[\"We\u2019ve invested heavily in making Twingate a best-in-class user experience for both end users and admins. With deep investments in IaC tools like \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/integrations/terraform\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Terraform\"})}),\" and \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/integrations/pulumi\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Pulumi\"})}),\", plus \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/getting-started-with-the-api\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate\u2019s API\"})}),\", you can programmatically deploy and manage access across your entire network.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Dynamic least privilege for a dynamic world\"}),/*#__PURE__*/t(\"p\",{children:[\"Let\u2019s get back to \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/ephemeral-access-to-resources\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Ephemeral Access\"})}),\", which is just one component of the next big problem of least privilege access that Twingate is working to solve.\\xa0\"]}),/*#__PURE__*/e(\"p\",{children:\"Organizations aren\u2019t static, and neither are malicious actors, but access is often treated as such.\\xa0 To implement true least privilege, admins would have to constantly audit network resources, users and groups, access lists, the application of access policies, and then spend time adapting access permissions accordingly. It\u2019s neither realistic nor especially secure to expect admins to dedicate all of their time scrambling to manually update access.\"}),/*#__PURE__*/e(\"p\",{children:\"Ephemeral access is just the first step Twingate is taking to enable organizations to implement dynamic least privilege access that keeps pace with our dynamic world.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"A key requirement of that is automating access provisioning and deprovisioning. With time-bound access expirations, admins can automate a number of key steps - no more calendar reminders to remove access, no extra provisioning work required.\"}),/*#__PURE__*/t(\"p\",{children:[\"You can find full details on Twingate\u2019s Ephemeral Access on the \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/ephemeral-access-to-resources\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"documents page\"})}),\". Not a Twingate customer yet? If you\u2019re interested in taking Twingate for a spin, you can request a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"personalized demo\"})}),\" from our team or \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"try it out yourself for free\"})}),\".\"]})]})},{index:16,id:\"uffyWG4EY\",[h]:!0,[d]:!1,[p]:\"Twingate Community Highlights | October 2023\",[u]:\"Community Highlights October 2023\",[m]:\"community-highlights-october-2023\",[g]:\"\",[w]:\"Emily Lehman\",[f]:\"2023-10-26T00:00:00.000Z\",[y]:\"KI2UGBfh7\",[b]:T({src:\"https://framerusercontent.com/images/a4r5Ado0Tx0Nao0sgdattE67Jc.png\",srcSet:\"https://framerusercontent.com/images/a4r5Ado0Tx0Nao0sgdattE67Jc.png?scale-down-to=512 512w,https://framerusercontent.com/images/a4r5Ado0Tx0Nao0sgdattE67Jc.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/a4r5Ado0Tx0Nao0sgdattE67Jc.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/a4r5Ado0Tx0Nao0sgdattE67Jc.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/wzo1IcUMOWeyVXbKWJbgKQJzww.png\",srcSet:\"https://framerusercontent.com/images/wzo1IcUMOWeyVXbKWJbgKQJzww.png?scale-down-to=512 512w,https://framerusercontent.com/images/wzo1IcUMOWeyVXbKWJbgKQJzww.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/wzo1IcUMOWeyVXbKWJbgKQJzww.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/wzo1IcUMOWeyVXbKWJbgKQJzww.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"There\u2019s always lots happening in the Twingate Community, and we get to share the latest and greatest updates from Twingate users and experts in the wild through our monthly series: Twingate Community Highlights.\"}),/*#__PURE__*/e(\"p\",{children:\"Take a look at what\u2019s been happening as of October 2023.\"}),/*#__PURE__*/e(\"h2\",{children:\"Introduction to Zero Trust Networking & Infra Access with Twingate | Open Source Cafe podcast featuring Eran Kampf\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://buff.ly/3Qrg1PV\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Watch the podcast recording\"})})}),/*#__PURE__*/t(\"p\",{children:[\"When your technology serves as the backbone of your customers\u2019 networks, if your tech goes down your customers can\u2019t work. In this episode of the \",/*#__PURE__*/e(s,{href:\"https://buff.ly/3Qrg1PV\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Open Source Cafe podcast\"})}),\", Twingate\u2019s Director of Engineering Eran Kampf chats with DevOps educator and thought leader Kunal Kushwaha about the importance of making reliability a top priority as a network security provider.\"]}),/*#__PURE__*/e(\"p\",{children:\"Kampf dives into Twingate\u2019s approach to architecture and infrastructure in order to ensure the 1 billion+ connections going through Twingate monthly can continue to count on us. Plus, he digs into why VPNs just don\u2019t cut it when it comes to IaC and infrastructure access.\\xa0\"}),/*#__PURE__*/e(\"h2\",{children:\"Zero Trust Explained | CertBros\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=Y3DjoTiOiOU\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Watch the full video\"})})}),/*#__PURE__*/t(\"p\",{children:[\"What actually is zero trust? In the \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=Y3DjoTiOiOU\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"latest CertBros video\"})}),\", Sam Thompson answers that question. To get there, he takes you through the history of perimeter-based network security, why that causes security risks for modern networks, and what zero trust is (and is not).\"]}),/*#__PURE__*/t(\"p\",{children:[\"Sam agreed to partner with Twingate, so he\u2019s able to take you through a real world example of using Twingate to put the concept of zero trust security into action.\\xa0\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/e(\"h2\",{children:\"Gaming Anywhere, Anytime: Streamlining with SteamLink and Twingate | Drop in the Ocean\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://dropintheocean.tech/index.php/2023/05/17/gaming-anywhere-anytime-streamlining-with-steamlink-and-twingate/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Read the blog post\"})})}),/*#__PURE__*/e(\"p\",{children:\"In our increasingly distributed world where people can work from anywhere and travel easily, one frustration gaming enthusiasts increasingly face is physically accessing their gaming computers.\"}),/*#__PURE__*/t(\"p\",{children:[\"In his \",/*#__PURE__*/e(s,{href:\"https://dropintheocean.tech/index.php/2023/05/17/gaming-anywhere-anytime-streamlining-with-steamlink-and-twingate/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"latest blog post\"})}),\", Senior Full Stack Developer Jason Rogers breaks down how he uses SteamLink and Twingate to connect to your gaming set-up from anywhere without sacrificing security. By combining these two solutions, gaming enthusiasts can access and play their games regardless of physical location.\"]}),/*#__PURE__*/e(\"h2\",{children:\"MERN Ecommerce App With Authentication - Build A React Advanced Project | PedroTech\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=XnbUHzZkypQ\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Watch the full video\"})})}),/*#__PURE__*/t(\"p\",{children:[\"In a \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=XnbUHzZkypQ\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"recent video\"})}),\", Pedro Machado of the YouTube channel PedroTech shows viewers how to build a full stack MERN ecommerce application with authentication from scratch. He takes viewers step-by-step, outlines best practices, and provides all the code an aspiring developer could need to try the project out for themselves.\"]}),/*#__PURE__*/e(\"p\",{children:\"Pedro leverages Twingte to enable remote access to a MongoDB project, regardless of physical location.\"}),/*#__PURE__*/e(\"h2\",{children:\"Establish SSH connection to Azure DevOps pipeline agent | Gjoko Pargo\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://pargo.info/devops/azure-devops/connect-azure-devops-agent-ssh/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Read the blog post\"})})}),/*#__PURE__*/e(\"p\",{children:\"So you want to debug your Azure DevOps CI pipelines remotely. Well, that\u2019s difficult - the easiest way to do that would be to SSH into the pipeline agent, but unlike other solutions, Azure DevOps doesn\u2019t offer that capability for Microsoft-hosted agents.\"}),/*#__PURE__*/t(\"p\",{children:[\"Enter: Twingate. In \",/*#__PURE__*/e(s,{href:\"https://pargo.info/devops/azure-devops/connect-azure-devops-agent-ssh/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"his recent blog post\"})}),\" DevOps engineer Gjoko Pargo takes readers step-by-step through a Twingate deployment so that they can connect to their pipelines, roam through the system and even gain \",/*#__PURE__*/e(\"em\",{children:\"sudo\"}),\" privileges.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"br\",{}),\"Have a cool Twingate project, video, or blog post? We want to see it! \",/*#__PURE__*/e(s,{href:\"https://docs.google.com/forms/d/e/1FAIpQLSe93LKF3EdNdt_zEwkh8R5dEJgG7OJPDxflnjVLabLnmGmtfQ/viewform?usp=sf_link\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Share it with us\"})}),\" and you might be featured in a future Twingate Community highlight!\"]})]})},{index:17,id:\"VsuRR5xEq\",[h]:!0,[d]:!1,[p]:\"Twingate Community Highlights | September 2023\",[u]:\"Community Highlights September 2023\",[m]:\"community-highlights-september-2023\",[g]:\"\",[w]:\"Emily Lehman\",[f]:\"2023-09-18T00:00:00.000Z\",[y]:\"KI2UGBfh7\",[b]:T({src:\"https://framerusercontent.com/images/W7Hfrn9WklKUXVuGCmPy6X9HlrI.png\",srcSet:\"https://framerusercontent.com/images/W7Hfrn9WklKUXVuGCmPy6X9HlrI.png?scale-down-to=512 512w,https://framerusercontent.com/images/W7Hfrn9WklKUXVuGCmPy6X9HlrI.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/W7Hfrn9WklKUXVuGCmPy6X9HlrI.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/W7Hfrn9WklKUXVuGCmPy6X9HlrI.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/ePRNByBgF1FUivDeuwWSbmsqx4I.png\",srcSet:\"https://framerusercontent.com/images/ePRNByBgF1FUivDeuwWSbmsqx4I.png?scale-down-to=512 512w,https://framerusercontent.com/images/ePRNByBgF1FUivDeuwWSbmsqx4I.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/ePRNByBgF1FUivDeuwWSbmsqx4I.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/ePRNByBgF1FUivDeuwWSbmsqx4I.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"The Twingate Community is constantly shipping cool new projects, so in an effort to showcase their work we\u2019re starting a new series on the blog: Twingate Community Highlights.\"}),/*#__PURE__*/e(\"p\",{children:\"From unique use cases, to technical deep dives, to new video overviews, we\u2019ll be featuring the latest and greatest from Twingate customers, users, and partners out in the wild.\"}),/*#__PURE__*/e(\"h2\",{children:\"DevOps Toolkit: Stop Using VPNs! Peer-to-Peer Zero-Trust Communication With Twingate\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://youtu.be/LxkAGgn9Yec?si=uuJgka9OVJFar__L\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Watch video\"})})}),/*#__PURE__*/e(\"p\",{children:\"Viktor Farcic of the YouTube channel DevOps Toolkit hates VPNs. How much? He calls them \u201Cthe incarnation of evil that represents remnants of the past.\u201D\\xa0 You get the picture. We reached out to see if he\u2019d give Twingate a look, and he dove right in.\"}),/*#__PURE__*/e(\"p\",{children:\"In a recent video on DevOps Toolkit, Viktor explores how VPNs work, why they just don\u2019t cut it anymore, and how Twingate\u2019s approach to ZTNA solves the VPN problems many organizations can\u2019t seem to escape. We especially like his overview of history of VPNs - why they used to be best-in-breed for network security, and how the changing landscape of work means old approaches to network architecture slow down work and present security risks.\"}),/*#__PURE__*/e(\"h2\",{children:\"Benjamin Tseng: Setting Up Pihole, Nginx Proxy, and Twingate with OpenMediaVault\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://benjamintseng.com/2023/08/setting-up-pihole-nginx-proxy-and-twingate-with-openmediavault/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Blog post\"})})}),/*#__PURE__*/e(\"p\",{children:\"Benjamin Tseng is a startup product leader & AI technologist with over a decade of experience as a deeptech/cross-border VC. In a previous blog post, he set up Dynamic DNS and a Wireguard VPN to grant secure access to the network from external devices. While it worked, he identified a few flaws with this initial approach:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Setting up each device for Wireguard was a heavy lift with lots of configuration. \"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Open port requirements present a security risk. \"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Maintaining a Dynamic DNS setup could present vulnerabilities to multiple points of failure and potentially make changing domain providers difficult.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"He decided to give Twingate a try, and was impressed. With our simplified configuration and client experience, plus security improvements like eliminating open ports, he was able to securely access his network while keeping local DNS settings and avoiding the common pitfalls of Dynamic DNS and opening ports.\"}),/*#__PURE__*/e(\"h2\",{children:\"Be A Better Dev: A Better Way to Securely Access Your AWS Cloud Resources | No JumpBox & No VPN\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=t4eLRKjfQFc\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Watch video\"})})}),/*#__PURE__*/e(\"p\",{children:\"We talk a lot about how easy it is to deploy Twingate, but those are just words. Seeing a Twingate deployment in action, now that is something to get excited about - just ask Daniel Galati from Be A Better Dev.\"}),/*#__PURE__*/e(\"p\",{children:'\"In less than 10 minutes I was able to complete the end-to-end set-up with my AWS accounts,\" he says in his latest video. Galati uses Twingate to securely access his AWS resources - no VPN, JumpBox, or open ports required. He goes step-by-step through the set-up process, demonstrating how to deploy and use Twingate to access your AWS RDS database.'}),/*#__PURE__*/e(\"h2\",{children:\"Christian Lempa: STOP using VPN, embrace Zero-Trust networking!\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=iKq15WXdN88\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Watch video\"})})}),/*#__PURE__*/e(\"p\",{children:\"Another great video from a Twingate partner launched recently, this time from Christian Lempa. Lempa uses his YouTube channel to share educational videos about his homelab and tech projects.\"}),/*#__PURE__*/e(\"p\",{children:\"He does a great job explaining Twingate and showing us in action, but what we really want to highlight is his overview of zero trust. At this point, zero trust can feel like a sticker vendors throw onto their product to capitalize on the latest buzzword. Lempa takes things back to basics and goes into the core concepts of zero trust, not just the marketing lingo.\\xa0\"}),/*#__PURE__*/e(\"h2\",{children:\"Join the Twingate Community\"}),/*#__PURE__*/t(\"p\",{children:[\"Have a cool Twingate project, video, or blog post? We want to see it! \",/*#__PURE__*/e(s,{href:\"https://docs.google.com/forms/d/e/1FAIpQLSe93LKF3EdNdt_zEwkh8R5dEJgG7OJPDxflnjVLabLnmGmtfQ/viewform?usp=sf_link\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Share it with us\"})}),\" and you might be featured in a future Twingate Community highlight!\"]})]})},{index:18,id:\"V0e0sVZit\",[h]:!0,[d]:!1,[p]:\"Twingate Customers Can Trim 80% of Unnecessary Access within 90 Days\",[u]:\"Trimmed Access Analysis\",[m]:\"trimmed-access-analysis\",[g]:\"How Twingate eliminates the ticking time bomb of unnecessary access\",[w]:\"Daniel Dong\",[f]:\"2023-09-08T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/LGK4bun2wnSf92gJ8eWz22PeQ.png\",srcSet:\"https://framerusercontent.com/images/LGK4bun2wnSf92gJ8eWz22PeQ.png?scale-down-to=512 512w,https://framerusercontent.com/images/LGK4bun2wnSf92gJ8eWz22PeQ.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/LGK4bun2wnSf92gJ8eWz22PeQ.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/LGK4bun2wnSf92gJ8eWz22PeQ.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/LGK4bun2wnSf92gJ8eWz22PeQ.png\",srcSet:\"https://framerusercontent.com/images/LGK4bun2wnSf92gJ8eWz22PeQ.png?scale-down-to=512 512w,https://framerusercontent.com/images/LGK4bun2wnSf92gJ8eWz22PeQ.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/LGK4bun2wnSf92gJ8eWz22PeQ.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/LGK4bun2wnSf92gJ8eWz22PeQ.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"With the rise of remote work and cloud-based operations, enforcing least-privileged access and a Zero Trust model within an organization\u2019s network have become important levers for organizations to reduce attack surface and risk to breaches. However, practitioners often throw in the towel due to the complexity of implementation. Since its launch in 2020, Twingate has persistently pushed for \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/network-connectivity-for-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"a new implementation\"})}),\" that makes it easy for organizations to leapfrog their Zero Trust network access without painful configuration and maintenance. Recent \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/network-chuck-twingate\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"NetworkChuck coverage\"})}),\" has exemplified the simple elegance for Twingate\u2019s model to scale from a homelab access to enterprise businesses.\\xa0\"]}),/*#__PURE__*/e(\"p\",{children:\"In order to better understand how we are helping our customers view and manage network access,\\xa0 Twingate recently conducted a review of more than 250+ of Twingate\u2019s largest customers. Our findings suggest that more than 80% of access granted by organizations using traditional cloud-based VPNs may be unnecessary. Simply by switching to a product like Twingate, customers can reduce their exposure to attacks by 5x.\"}),/*#__PURE__*/e(\"h2\",{children:\"Twingate Customers Can Trim 80% of Unnecessary Access\"}),/*#__PURE__*/e(\"p\",{children:\"With Twingate, customers have the ability to implement granular access controls on specific cloud-based (AWS, Azure, Google) or on-premise resources directly within the admin panel. In this way, we can calculate exactly how many accesses are granted by looking at the number of users allowed on each cloud resource. We then compare the actual number of access on Twingate against the number that would\u2019ve been granted if the customer was running on a monolithic, cloud-based VPN gateway.\"}),/*#__PURE__*/e(\"p\",{children:\"The results reveal that Twingate customers utilize only 17.9% of access they would have theoretically granted to organizational users before switching to Twingate. With Twingate, IT and Security administrators can directly manage access to cloud resources from Twingate and trim as much as 82.1% of access within the first 3 months of using Twingate.\\xa0\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,S6mq5VNb6VMXr9cGhVf7G7Mc.png\",\"data-framer-height\":\"604\",\"data-framer-width\":\"2518\",height:\"302\",src:\"https://framerusercontent.com/images/S6mq5VNb6VMXr9cGhVf7G7Mc.png\",srcSet:\"https://framerusercontent.com/images/S6mq5VNb6VMXr9cGhVf7G7Mc.png?scale-down-to=512 512w,https://framerusercontent.com/images/S6mq5VNb6VMXr9cGhVf7G7Mc.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/S6mq5VNb6VMXr9cGhVf7G7Mc.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/S6mq5VNb6VMXr9cGhVf7G7Mc.png 2518w\",style:{aspectRatio:\"2518 / 604\"},width:\"1259\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"*Compared to Monolithic VPN\"})}),/*#__PURE__*/e(\"h2\",{children:\"Unnecessary Access is a ticking time bomb for your enterprise security\"}),/*#__PURE__*/e(\"p\",{children:\"Conceptually, the number of unnecessary resource access granted to users is directly correlated to the size of the attack surface and the opportunity for lateral movements. With the rise of remote work and access to IT resources outside of corporate networks, a traditional VPN\u2019s \u201Cdrawbridge\u201D model can no longer adequately compartmentalize and minimize attacks.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"In fact, many of the recent breaches to companies such as CircleCI, Okta, Uber, and Twilio were made possible because of unpruned access privileges. Many of them followed a similar pattern:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"An employee\u2019's device was infected with malware, which hijacked a 2FA backed SSO session\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Attacker used that session cookie to access production and escalate privileges\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Attacker then began to search across their environment and exfiltrate data\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"In addition to best practices in authentication and device controls, pruning access privileges is another antidote to reducing the probability and magnitude of breaches.\\xa0\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/e(\"h2\",{children:\"Understanding Your Access Graph and Testing Twingate\"}),/*#__PURE__*/e(\"p\",{children:\"By administering access on a per-resource basis, Twingate is the next-generation solution that helps IT and Security teams understand and manage how their users currently access all IT resources. Usually, an initiative for granular visibility and control can require a herculean effort from cross-functional teams. However, Twingate\u2019s unique architecture and admin interface allow deployment behind any of your AWS, Azure, GCP, and SaaS resources within 15 minutes. Twingate also provides native MFA and device control capabilities, in addition to integrations of all your favorite security tools.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Even if a user's credentials are compromised, you want to limit the damage that can be done. Twingate does that for enterprises of all sizes and saves costs on alternatives such as complicated MeshVPN implementations.\"}),/*#__PURE__*/t(\"p\",{children:[\"If you\u2019re curious to compare how Twingate can dramatically reduce and prune unnecessary access while you sip your coffee, request a demo \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\" and our sales engineers will reach out to set up a free test for you. Or if you prefer, you can give Twingate a try by signing up for a free account \",/*#__PURE__*/e(s,{href:\"https://auth.twingate.com/signup\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\".\\xa0\"]})]})},{index:19,id:\"tC0xtAh4c\",[h]:!0,[d]:!1,[p]:\"Applying for the State and Local Cybersecurity Grant Program: A step-by-step guide\",[u]:\"SLCGP Guide\",[m]:\"slcgp-guide\",[g]:\"A Step-by-Step Guide\",[w]:\"Ben Arnstein\",[f]:\"2023-09-01T00:00:00.000Z\",[y]:\"nwIUHELao\",[b]:T({src:\"https://framerusercontent.com/images/rjcuR9QcseB4YCmum7gJeo6dFcQ.png\",srcSet:\"https://framerusercontent.com/images/rjcuR9QcseB4YCmum7gJeo6dFcQ.png?scale-down-to=512 512w,https://framerusercontent.com/images/rjcuR9QcseB4YCmum7gJeo6dFcQ.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/rjcuR9QcseB4YCmum7gJeo6dFcQ.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/rjcuR9QcseB4YCmum7gJeo6dFcQ.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/rjcuR9QcseB4YCmum7gJeo6dFcQ.png\",srcSet:\"https://framerusercontent.com/images/rjcuR9QcseB4YCmum7gJeo6dFcQ.png?scale-down-to=512 512w,https://framerusercontent.com/images/rjcuR9QcseB4YCmum7gJeo6dFcQ.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/rjcuR9QcseB4YCmum7gJeo6dFcQ.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/rjcuR9QcseB4YCmum7gJeo6dFcQ.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"The new State and Local Cybersecurity Grant Program provides a unique opportunity for leaders to access funds to prepare for and prevent cyber crime at a time when cyberattacks continue to climb. With the October 6, 2023, application deadline approaching, what can you do to access these funds?\"}),/*#__PURE__*/e(\"p\",{children:\"In this step-by-step guide, we\u2019ll go over the basics of the program and what you need to do to apply.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"What we'll cover:\"})}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"What is the State and Local Cybersecurity Grant Program and why is it a big deal?\"})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Pre-application preparations\"})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Application process\"})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Application submission\"})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Post-submission steps\"})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Additional resources\"})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Conclusion\"})})})]}),/*#__PURE__*/e(\"h2\",{children:\"What is the State and Local Cybersecurity Grant Program, and why is it a big deal?\"}),/*#__PURE__*/t(\"p\",{children:[\"The \",/*#__PURE__*/e(s,{href:\"https://www.fema.gov/grants/preparedness/state-local-cybersecurity-grant-program\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"State and Local Cybersecurity Grant Program\"})}),\", offered by FEMA, provides funding to state, local, and territorial (SLT) governments to address cybersecurity risks and cybersecurity threats to SLT-owned or operated information systems. All requirements and program guidance are established in the Notice of Funding Opportunity (NOFO).\\xa0 You can explore the full grant details over on \",/*#__PURE__*/e(s,{href:\"https://www.grants.gov/web/grants/view-opportunity.html?oppId=349776\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Grants.gov\"})}),\".\"]}),/*#__PURE__*/e(\"p\",{children:\"In today's digital landscape, state and local organizations play a crucial role in delivering essential services. Remember the impact of the Colonial Pipeline ransomware attack in 2021? It highlighted the real-world consequences of cyber threats. Enter the State and Local Cybersecurity Grant Program: a lifeline to fortify your cyber defenses.\"}),/*#__PURE__*/e(\"p\",{children:\"\uD83D\uDCA1Enhance Your Defenses: This grant is your chance to bolster your Cybersecurity Plans and activities. Strengthen your resilience against cyber threats and safeguard the services your community depends on.\"}),/*#__PURE__*/e(\"p\",{children:\"\uD83D\uDD12 Invest in Security: With funding at your fingertips, you can empower your organization to stand firm against evolving cyber risks. It's an investment in the safety and stability of your digital operations.\"}),/*#__PURE__*/e(\"p\",{children:\"Step up your cyber readiness with the State and Local Cybersecurity Grant Program and keep your community's digital domain secure. \uD83D\uDEE1\uFE0F\uD83C\uDF10\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.fema.gov/sites/default/files/documents/fema_gpd-slcgp-ib-489_fy2023.pdf\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"This FEMA bulletin\"})}),\" provides details about per-state funding allocations for FY2023.\"]}),/*#__PURE__*/e(\"h2\",{children:\"When is the 2023 SLCGP application deadline?\"}),/*#__PURE__*/e(\"p\",{children:\"The application deadline for this year is October 6, 2023.\"}),/*#__PURE__*/e(\"h2\",{children:\"Who can apply?\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The 56 (State Administrative Agency) SAAs for states and territories submit applications on behalf of local entities for SLCGP funding. In addition, two or more eligible entities may jointly apply for assistance as a multi-entity group. Under SLCGP, a multi-entity group is two or more SAAs that apply for joint projects. However, each SAA must submit separate applications. Local governments interested in participating in the SLCGP should contact their SAAs.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Local governments can participate in the SLCGP as subrecipients to their state.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Must be a state, local, tribal, or territorial government entity.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Must demonstrate a clear need for enhancing cybersecurity capabilities.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Must submit the application through the State Administrative Agency (SAA) responsible for the program.\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"How do states apply?\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\" 1. Review the Reference Guide\"})}),/*#__PURE__*/t(\"p\",{children:[\"Start by thoroughly reviewing the \",/*#__PURE__*/e(s,{href:\"https://www.cisa.gov/sites/default/files/2023-08/2023-08-03_FY-2023_SLCGP_NOFO_FAQs_CISA_FEMA_FINAL_508.pdf\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"FY23 State and Local Cybersecurity Grant Program FAQS\"})}),\".  This guide contains essential information about eligibility, application requirements, and evaluation criteria.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\" 2. Determine Eligibility\"})}),/*#__PURE__*/e(\"p\",{children:\"To be eligible for the grant, your jurisdiction must meet specific criteria outlined in the reference guide:\"}),/*#__PURE__*/e(\"p\",{children:\"As a condition of receiving the SLCGP grant, states will need to: \"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Establish a Cybersecurity Planning Committee;\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Develop a state-wide Cybersecurity Plan, unless the recipient already has a state-wide Cybersecurity Plan and uses the funds to implement or revise a state-wide Cybersecurity Plan;\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Conduct assessment and evaluations as the basis for individual projects throughout the life of the program; and\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Adopt key cybersecurity best practices.\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"More details on eligibility can be found in the \",/*#__PURE__*/e(s,{href:\"https://www.fema.gov/fact-sheet/department-homeland-security-notice-funding-opportunity-fiscal-year-2023-state-and-local#c\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Notice of Funding Opportunity\"})}),\".\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\" 3. Identify Project Needs\"})}),/*#__PURE__*/e(\"p\",{children:\"Identify and document the specific cybersecurity needs of your jurisdiction. This could involve strengthening network security, enhancing incident response capabilities, improving employee training, or addressing other cybersecurity gaps.\"}),/*#__PURE__*/e(\"p\",{children:\"As part of your Cybersecurity Plan, applicants are required to address in their applications how they will meet the following program objectives:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Objective 1: Develop and establish appropriate governance structures, including developing, implementing, or revising cybersecurity plans, to improve capabilities to respond to cybersecurity incidents and ensure continuity of operations.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Objective 2: Understand their current cybersecurity posture and areas for improvement based on continuous testing, evaluation, and structured assessments.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Objective 3: Implement security protections commensurate with risk.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Objective 4: Ensure organization personnel are appropriately trained in cybersecurity, commensurate with responsibility.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"As part of creating a Cybersecurity Plan, DHS recommends implementing certain cybersecurity best practices including:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Implement multi-factor authentication\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Enable enhanced logging\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Use data encryption for data at rest and in transit\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"End the use of unsupported/end of life software and hardware that are accessible from the internet\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Restrict the use of known/fixed/default passwords and credentials\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Ensure the ability to reconstitute systems (backups)\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Engage in rapid bidirectional sharing between CISA and SLT entities to drive down cyber risk\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Migrate to the .gov internet domain\"})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\" 4. Create a Detailed Project Plan\"})}),/*#__PURE__*/t(\"p\",{children:[\"Develop a comprehensive project plan that clearly outlines the goals, objectives, budget, timeline, and expected outcomes of your cybersecurity initiative. For guidance on creating a project plan, check out the \",/*#__PURE__*/e(s,{href:\"https://www.fema.gov/sites/default/files/documents/fema_gpd-slcgp-project-worksheet-user-guide_fy2023.pdf\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"FEMA Project Worksheet User Guide\"})}),\".\"]}),/*#__PURE__*/e(\"h2\",{children:\"The application process\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"1. Coordinate with State Administrative Agency\"})}),/*#__PURE__*/e(\"p\",{children:\"Keep in mind that only the State Administrative Agency (SAA) is authorized to submit applications for the State and Local Cybersecurity Grant Program. Therefore, it's essential to work closely with your SAA throughout the application process.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\" 2. Review Application Requirements\"})}),/*#__PURE__*/e(\"p\",{children:\"Work with your SAA to review the application requirements outlined in the reference guide and ensure that your proposed project aligns with the program's goals.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\" 3. Provide Necessary Information\"})}),/*#__PURE__*/e(\"p\",{children:\"Collaborate with your SAA to provide all necessary information for the application, including project details, budget estimates, and any supporting documents.\"}),/*#__PURE__*/e(\"p\",{children:\"Useful guides include:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://www.fema.gov/sites/default/files/documents/fema_gpd-slcgp-investiment-justification-user-guide_fy2023.pdf\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"FY 2023 SLCGP Investment Justification User Guide\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://www.fema.gov/sites/default/files/documents/fema_gpd-slcgp-project-worksheet-user-guide_fy2023.pdf\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"FEMA Project Worksheet User Guide\"})})})})]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\" 4. Begin Application in \"}),/*#__PURE__*/e(s,{href:\"https://www.grants.gov/web/grants\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:/*#__PURE__*/e(\"strong\",{children:\"Grants.gov\"})})})]}),/*#__PURE__*/e(\"p\",{children:\"While your SAA will handle the submission, be prepared to assist in the process. They will start a new application in Grants.gov using the appropriate funding opportunity information.\"}),/*#__PURE__*/e(\"h2\",{children:\"Additional resources\"}),/*#__PURE__*/e(\"p\",{children:\"There are lots of resources to help you get your grant application across the finish line. In addition to those linked above, you can use the following:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://www.fema.gov/grants/preparedness/state-local-cybersecurity-grant-program\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"FEMA State and Local Cybersecurity Grant Program Website\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://www.fema.gov/fact-sheet/fiscal-year-2023-state-and-local-cybersecurity-grant-program-fact-sheet\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"FY23 SLCGP Fact Sheet\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://www.grants.gov/applicants/applicant-training.html\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Grants.gov Applicant Training Resources\"})})})})]}),/*#__PURE__*/e(\"h2\",{children:\"Conclusion\"}),/*#__PURE__*/e(\"p\",{children:\"Congratulations on taking the initiative to enhance your jurisdiction's cybersecurity through the State and Local Cybersecurity Grant Program! By working closely with your State Administrative Agency and following this guide, you're taking important steps toward strengthening your cybersecurity capabilities and safeguarding your community's digital assets.\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate provides key functionality that help you satisfy a number of the grants requirement, including our \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/two-factor-authentication?utm_source=blog&utm_medium=website&utm_campaign=slcgp-guide\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"universal MFA\"})}),\" and \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/analytics?utm_source=blog&utm_medium=website&utm_campaign=slcgp-guide\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"network activity logs\"})}),\". You can \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=website&utm_campaign=slcgp-guide\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"try Twingate out for free\"})}),\", or \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=website&utm_campaign=slcgp-guide\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"request a demo\"})}),\" from our team.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]})},{index:20,id:\"mtKjui76H\",[h]:!0,[d]:!1,[p]:\"Announcing the Twingate MSP Portal\",[u]:\"Twingate MSP Portal\",[m]:\"msp-portal-announcement\",[g]:\"\",[w]:\"Emily Lehman\",[f]:\"2023-08-01T00:00:00.000Z\",[y]:\"KI2UGBfh7\",[b]:T({src:\"https://framerusercontent.com/images/Ra7g2oEaZAzizIASdQ1AvjF2bIE.png\",srcSet:\"https://framerusercontent.com/images/Ra7g2oEaZAzizIASdQ1AvjF2bIE.png?scale-down-to=512 512w,https://framerusercontent.com/images/Ra7g2oEaZAzizIASdQ1AvjF2bIE.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/Ra7g2oEaZAzizIASdQ1AvjF2bIE.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/Ra7g2oEaZAzizIASdQ1AvjF2bIE.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/Ra7g2oEaZAzizIASdQ1AvjF2bIE.png\",srcSet:\"https://framerusercontent.com/images/Ra7g2oEaZAzizIASdQ1AvjF2bIE.png?scale-down-to=512 512w,https://framerusercontent.com/images/Ra7g2oEaZAzizIASdQ1AvjF2bIE.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/Ra7g2oEaZAzizIASdQ1AvjF2bIE.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/Ra7g2oEaZAzizIASdQ1AvjF2bIE.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"We\u2019re thrilled to announce the new \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/msp\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate MSP Portal\"})}),\". This is an exciting step in our commitment to making Zero Trust a reality for managed service providers and their customers. The \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/msp\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate MSP Portal\"})}),\" provides a centralized, intuitive interface that consolidates all the critical information you need to protect, manage, and monitor your customers\u2019 networks.\"]}),/*#__PURE__*/e(\"p\",{children:\"MSPs continue to play a critical role in the digital infrastructure of organizations across the world. Because they touch so many different companies across industries, sizes, and geographies, it\u2019s critical that MSPs have tools that make it easy to deploy and manage Zero Trust strategies across their portfolios.\"}),/*#__PURE__*/e(\"p\",{children:\"\u201CMSPs are a core focus for Twingate, and we\u2019re thrilled to share the new Twingate MSP Portal, which helps MSPs bring a Zero Trust security model to their customers\u201D said Twingate CEO Tony Huie. \u201COur team has deep experience working with (and running) MSPs, and we've designed these new capabilities to make it easy for MSPs to bring the power of Twingate to their customers.\u201D\"}),/*#__PURE__*/e(\"h3\",{children:\"Bringing Zero Trust to MSPs\"}),/*#__PURE__*/e(\"p\",{children:\"As cyberattacks continue to rise year-over-year, MSPs have the added challenge of managing not just their own network, but those of their customers. Legacy network security solutions typically come with lengthy, resource-heavy deployments, as well as clunky admin experiences and significantly slower performance for end users.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate ZTNA replaces legacy VPNs and makes it easy to implement modern security tools like granular access controls, device posture checks, universal MFA, and more, all without slowing down end users.\"}),/*#__PURE__*/e(\"p\",{children:\"Because Twingate Connectors sit behind the firewall within an MSP customer\u2019s private network, Twingate enables organizations to close off network entrypoints, prevent lateral network traffic, eliminate exposure to the public internet, all while improving productivity for MSPs.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate can be deployed in just 15 minutes (without recutting a customer\u2019s network), meaning MSPs can rapidly deploy security features needed to meet strict compliance and regulatory requirements, or to meet criteria to lower their cyber insurance premiums.\"}),/*#__PURE__*/t(\"p\",{children:[\"With the new \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/msp\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate MSP Portal\"})}),\", managing multiple Twingate networks is easier than ever. Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/msp\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"multitenant portal\"})}),\" gives MSPs a single view to manage all of their customers\u2019 networks, including visibility into billing and trial status. Admins can easily add new customer networks, adjust end user counts, and leverage Twingate\u2019s best-in-class support.\"]}),/*#__PURE__*/e(\"p\",{children:\"Twingate also invests heavily in integrations so that customers can build a complete Zero Trust ecosystem. With Twingate as a central orchestration layer, MSPs can easily bridge together the component solutions that form their unique security environment.\"}),/*#__PURE__*/e(\"h3\",{children:\"A User Experience Built for Today\"}),/*#__PURE__*/e(\"p\",{children:\"As a service provider, a seamless user experience is more than a \u201Cnice to have\u201D for MSPs. The experience of their clients is a critical selling point for MSPs, and hiccups in that experience affect MSPs\u2019 bottom line in the long term, and productivity in the short term.\"}),/*#__PURE__*/e(\"p\",{children:\"With legacy VPNs, dropped connections are an unfortunately common end user complaint. Fielding those complaints means not only diagnosing the issue, but also walking end users through often clunky interfaces on the client side. Then consider that any impact on speed or latency means more tickets for MSPs. These issues can quickly compound and divert meaningful resources away from strategic projects, forcing MSPs to focus on simply managing and maintaining their VPNs.\"}),/*#__PURE__*/t(\"p\",{children:[\"\u201CWe used to have tickets for customers calling in not understanding how to type in credentials, not understanding where the icon for the VPN is, lots of general confusion around traditional VPNs because the interfaces are very technical,\u201D said Chris Scerbo, Systems Engineer at Delaware-based MSP \",/*#__PURE__*/e(s,{href:\"https://www.techsolutionsinc.com/\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"TechSolutions\"})}),\". \u201CWe deal with so many fewer issues with Twingate than we did with other systems.\u201D\"]}),/*#__PURE__*/e(\"p\",{children:\"Twingate\u2019s unique architecture utilizes modern technologies such as NAT traversal, QUIC, private proxies, and split tunneling to create direct peer-to-peer connections. Unlike legacy Zero Trust remote access solutions and traditional VPNs, traffic is not proxied through centralized chokepoints. That means connections are faster, end users are happier, and MSPs can rest easier.\"}),/*#__PURE__*/t(\"p\",{children:[\"Just how much faster is Twingate? Our team \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/twingate-performance\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"crunched the numbers\"})}),\":\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"96.7% faster than other ZTNA solutions\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"97.8% faster than legacy VPNs\"})})]}),/*#__PURE__*/e(\"p\",{children:\"This unique approach to architecture does more than provide faster connections, it also builds resiliency into MSPs\u2019 networks. Because Twingate doesn\u2019t rely on centralized chokepoints, customers don\u2019t put their security stack at greater risk of outages and service disruptions.\"}),/*#__PURE__*/e(\"h3\",{children:\"Getting started with the Twingate MSP Portal\"}),/*#__PURE__*/t(\"p\",{children:[\"To learn more about the \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/msp\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate MSP Portal\"})}),\" and start your journey towards delivering enhanced managed security services, request a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/partners\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"personalized demo\"})}),\" from our team or \",/*#__PURE__*/e(s,{href:\"https://auth.twingate.com/msp-signup\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"try it out for yourself\"})}),\".\"]})]})},{index:21,id:\"H9A19xIXe\",[h]:!0,[d]:!1,[p]:\"Twingate Ecosystem Highlights: May 2023\",[u]:\"May 2023 Ecoystem Highlights\",[m]:\"may-2023-ecosystem-highlights\",[g]:\"The latest integrations from the Twingate team\",[w]:\"Emily Lehman\",[f]:\"2023-05-24T00:00:00.000Z\",[y]:\"KI2UGBfh7\",[b]:T({src:\"https://framerusercontent.com/images/Qv1UhkGFNwxUmmh91wFsVixqKs.png\",srcSet:\"https://framerusercontent.com/images/Qv1UhkGFNwxUmmh91wFsVixqKs.png?scale-down-to=512 512w,https://framerusercontent.com/images/Qv1UhkGFNwxUmmh91wFsVixqKs.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/Qv1UhkGFNwxUmmh91wFsVixqKs.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/Qv1UhkGFNwxUmmh91wFsVixqKs.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/Qv1UhkGFNwxUmmh91wFsVixqKs.png\",srcSet:\"https://framerusercontent.com/images/Qv1UhkGFNwxUmmh91wFsVixqKs.png?scale-down-to=512 512w,https://framerusercontent.com/images/Qv1UhkGFNwxUmmh91wFsVixqKs.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/Qv1UhkGFNwxUmmh91wFsVixqKs.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/Qv1UhkGFNwxUmmh91wFsVixqKs.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"At Twingate integrations aren\u2019t just another \u201Cnice to have\u201D feature. To us, integrations are core (and required) to successfully implement a Zero Trust security model. As new threats emerge, organizations need new tools to combat them. And yet very few of those tools actually play nicely. We believe it\u2019s critical to build a product that doesn\u2019t just work with, but actually enhances the benefits of other cybersecurity tools.\"}),/*#__PURE__*/e(\"p\",{children:\"As a central orchestration layer, Twingate makes it easy to bridge together the various component solutions that form your unique security environment. We\u2019re constantly developing new native and out-of-the-box integrations, and we\u2019re excited to share just a few recent releases.\"}),/*#__PURE__*/e(\"h2\",{children:\"Datadog\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,8IY6QLHaNX1a6odd2YQcRNvvI8.png\",\"data-framer-height\":\"1104\",\"data-framer-width\":\"2000\",height:\"552\",src:\"https://framerusercontent.com/images/8IY6QLHaNX1a6odd2YQcRNvvI8.png\",srcSet:\"https://framerusercontent.com/images/8IY6QLHaNX1a6odd2YQcRNvvI8.png?scale-down-to=512 512w,https://framerusercontent.com/images/8IY6QLHaNX1a6odd2YQcRNvvI8.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/8IY6QLHaNX1a6odd2YQcRNvvI8.png 2000w\",style:{aspectRatio:\"2000 / 1104\"},width:\"1000\"}),/*#__PURE__*/t(\"p\",{children:[\"Customers can now conveniently visualize and analyze real-time data from \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/how-twingate-works\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate Connectors\"})}),\" directly within the \",/*#__PURE__*/e(s,{href:\"https://www.datadoghq.com/\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Datadog\"})}),\" platform.\"]}),/*#__PURE__*/e(\"p\",{children:\"Datadog is a modern monitoring and security platform that makes your applications, infrastructure, and third-party services observable, enabling businesses to secure their systems, avoid downtime, and ensure the best possible end-user experience. \"}),/*#__PURE__*/t(\"p\",{children:[\"Users can easily configure their Twingate Connectors to send real-time network logs from their Connectors to Datadog, providing an additional layer of security. Improved monitoring capabilities make key Twingate metrics \u2013 including data transfer amounts, resource access activity, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/security-policies\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"security policy\"})}),\" data, and more \u2013 observable within the Datadog platform. \"]}),/*#__PURE__*/e(\"p\",{children:\"That means users can:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Trigger automated security alerts in the Datadog platform based on Twingate data\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Build custom dashboard widgets to monitor various Twingate data\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Quickly identify access attempts from sanctioned or high-risk countries\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Analyze trends in usage and access data to right size resource allocation\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"Read the full \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/datadog-integration?utm_source=blog&utm_medium=blog&utm_campaign=launchweekQ2FY23\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"blog post\"})}),\" or check out the \",/*#__PURE__*/e(s,{href:\"https://docs.datadoghq.com/integrations/twingate/\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"set-up instructions\"})}),\" for more details.\"]}),/*#__PURE__*/e(\"h2\",{children:\"SentinelOne\"}),/*#__PURE__*/t(\"p\",{children:[\"You can now automate device security by configuring \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/security-policies\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate Security Policies\"})}),\" so that only \",/*#__PURE__*/e(s,{href:\"https://www.sentinelone.com/\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"SentinelOne\"})}),\"-compliant devices can sign into Twingate or access protected Resources. \"]}),/*#__PURE__*/e(\"p\",{children:\"SentinelOne provides autonomous security solutions for endpoint, cloud, and identity environments.\"}),/*#__PURE__*/e(\"p\",{children:\"SentinelOne users can bypass manual device verification and opt to identify company-managed devices through SentinelOne instead.\"}),/*#__PURE__*/t(\"p\",{children:[\"Full set-up instructions can be found in our \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/sentinelone-configuration\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"docs page\"})}),\".\"]}),/*#__PURE__*/e(\"h2\",{children:\"Aptible\"}),/*#__PURE__*/e(\"video\",{autoPlay:!0,className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,sn68fkKFfmNQYPZg53z95mz1PkI.mp4\",loop:!0,muted:!0,playsInline:!0,src:\"https://framerusercontent.com/assets/sn68fkKFfmNQYPZg53z95mz1PkI.mp4\"}),/*#__PURE__*/t(\"p\",{children:[\"Thanks to the work of the Twingate Labs team, you can now \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/aptible\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"deploy Connectors on Aptible\"})}),\" via tg, our open-source CLI. This makes it easy to provide secure and controlled access to Aptible services so remote users and engineers can seamlessly access these environments.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.linkedin.com/company/aptible/?lipi=urn%3Ali%3Apage%3Ad_flagship3_company_admin%3BdkDqqM0jQvOtyUBRlTOk7g%3D%3D\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Aptible\"})}),\" is a PaaS that manages the operation of all your infrastructure, security, and compliance so you can focus on building your product. \"]}),/*#__PURE__*/e(\"p\",{children:\"Aptible provides a platform where users can provision databases and dockerized applications that meet the stringent operating criteria required for the most prevalent types of industry certifications \u2013 think SOC2, HIPAA, and more.\"}),/*#__PURE__*/e(\"p\",{children:\"These types of certifications are critical for organizations that operate in high-risk or regulated industries. Twingate\u2019s unique identity-first networking and device posture features help customers pass third-party audits more smoothly than other remote access and VPN solutions.\"}),/*#__PURE__*/e(\"p\",{children:\"With Twingate, you can securely access these apps for development purposes, technical troubleshooting and to provide an additional layer of security to your endpoints.\"}),/*#__PURE__*/t(\"p\",{children:[\"For more full details check out \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/aptible-integration\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"our blog post\"})}),\" and \",/*#__PURE__*/e(s,{href:\"https://hubs.li/Q01R3Rgl0\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"docs page\"})}),\".\"]}),/*#__PURE__*/e(\"h2\",{children:\"Kandji\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.kandji.io/\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Kandji\"})}),\" is the Device Harmony platform for Apple devices in the enterprise, keeping Apple users secure and productive.\"]}),/*#__PURE__*/e(\"p\",{children:\"Organizations can now bridge their device source of truth and network access management policies by defining what it means to be a Trusted Device in Twingate using their existing Kandji deployment.\"}),/*#__PURE__*/t(\"p\",{children:[\"When Kandji is selected as a trust method within \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/kandji-configuration\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate\u2019s Device Security\"})}),\", it can be incorporated into Security Policies. Only Macs that are verified through the Kandji integration will be considered satisfying the Trusted Profile and thus be allowed to access private resources.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Dive into set-up on our \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/kandji-configuration\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"docs page\"})}),\".\"]}),/*#__PURE__*/e(\"h2\",{children:\"A Zero Trust Ecosystem Made Easy\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate is a central Zero Trust orchestration layer, so you can create a best-in-class security ecosystem without having to recut your network. Leverage out-of-the-box integrations with major IdPs, MDM/EDRs, SIEMs, DOH providers, and more.\"}),/*#__PURE__*/t(\"p\",{children:[\"Not a Twingate customer yet? If you\u2019re interested in taking Twingate for a spin, you can request a personalized demo from our team or \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"try it out yourself for free\"})}),\".\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]})},{index:22,id:\"lLvMOdBSQ\",[h]:!0,[d]:!1,[p]:\"How mature are ZTNA implementations? A Twingate Benchmark Survey\",[u]:\"Twingate ZTNA Benchmark Survey\",[m]:\"twingate-ztna-benchmark-survey\",[g]:\"\",[w]:\"Daniel Dong\",[f]:\"2023-05-16T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/2QkOEtYNSkkqHtq1SHyCUNfYZY.png\",srcSet:\"https://framerusercontent.com/images/2QkOEtYNSkkqHtq1SHyCUNfYZY.png?scale-down-to=512 512w,https://framerusercontent.com/images/2QkOEtYNSkkqHtq1SHyCUNfYZY.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/2QkOEtYNSkkqHtq1SHyCUNfYZY.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/2QkOEtYNSkkqHtq1SHyCUNfYZY.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/2QkOEtYNSkkqHtq1SHyCUNfYZY.png\",srcSet:\"https://framerusercontent.com/images/2QkOEtYNSkkqHtq1SHyCUNfYZY.png?scale-down-to=512 512w,https://framerusercontent.com/images/2QkOEtYNSkkqHtq1SHyCUNfYZY.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/2QkOEtYNSkkqHtq1SHyCUNfYZY.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/2QkOEtYNSkkqHtq1SHyCUNfYZY.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Twingate recently conducted a survey on the state of Zero Trust Network Access. \",/*#__PURE__*/e(s,{href:\"https://www.surveymonkey.com/r/5YWCH2C\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Complete the survey\"})}),\" to see how you compare to industry benchmarks.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Finding Highlights\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Most organizations are still in the \u201Cbuild phase\u201D of Zero Trust Network Access\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Most organizations are able to segment traffic on a resource rather than a network level (60%+).\\xa0\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"There are still significant gaps in implementing least-privilege access, reducing public attack surface, upgrading authentication protocols to FIDO2/WebAuthn, and managing all Zero Trust pillars under \u201Cone single pane of glass.\u201D\\xa0\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"The State of Zero Trust\"}),/*#__PURE__*/t(\"p\",{children:[\"Lots of organizations want to move to a Zero Trust model, but getting started can be daunting. That\u2019s why we\u2019re excited to share \",/*#__PURE__*/e(s,{href:\"https://www.surveymonkey.com/r/5YWCH2C\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate\u2019s new ZTNA Benchmark Report\"})}),\".\"]}),/*#__PURE__*/e(\"p\",{children:\"Between marketing buzzwords and vague promises of better security, the ZTNA marketplace often has a distinct lack of clarity from vendors. This confusion isn\u2019t just a nuisance, it can lead to security gaps and misconfigurations that leave companies vulnerable to cyberattacks\"}),/*#__PURE__*/e(\"p\",{children:\"To combat this, we surveyed organizations across industries, geographies, and sizes, to get a pulse on the state of Zero Trust adoption. You can now compare your organization's ZTNA practices against benchmarks and best practices to pinpoint areas for improvement and identify key focus areas for your own ZTNA infrastructure roadmap.\"}),/*#__PURE__*/t(\"p\",{children:[\"You can get your own custom report benchmarking yourself against your peers \",/*#__PURE__*/e(s,{href:\"https://www.surveymonkey.com/r/5YWCH2C\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"by completing this survey\"})}),\".\\xa0\"]}),/*#__PURE__*/e(\"h2\",{children:\"Twingate ZTNA Benchmark Survey Findings\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate's benchmark survey provides valuable insights into the state of ZTNA adoption among organizations of varying sizes and industries. Most organizations surveyed are still in the build phase of perfecting their ZTNA infrastructure. Commonly cited challenges are around difficulty of configurations and organizational alignment across teams.\"}),/*#__PURE__*/t(\"p\",{children:[\"Some of the key trends and insights from the \",/*#__PURE__*/e(s,{href:\"https://www.surveymonkey.com/r/5YWCH2C\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate survey\"})}),\" are:\"]}),/*#__PURE__*/t(\"p\",{children:[\"1. \",/*#__PURE__*/e(\"strong\",{children:\"Admins are getting mature with segmentation and traffic filtering\"}),\": Our research identified a growing trend towards segmenting traffic at the resource level instead of the network level, with 63% of respondents reporting they have migrated to this paradigm. However, 70% still have some resources exposed to the public internet, increasing their attack surface without proper visibility and alerting. DNS manipulation and information leaks are also significant vulnerabilities, with 77% of organizations remaining unprotected in those areas. To address these challenges, businesses should prioritize implementing resource-level segmentation and DNS filtering solutions to minimize their attack surface and protect against data leakage.\"]}),/*#__PURE__*/t(\"p\",{children:[\"2. \",/*#__PURE__*/e(\"strong\",{children:\"There\u2019s still a gap to upgrading Identity Authentication Protocols\"}),\": Organizations are increasingly shifting from legacy MFA/2FA to more secure identity protocols such as FIDO/Web2Authn, with 27% of respondents already migrated to these newer protocols. This trend is especially prevalent in regulated industries like banking and finance, where data security is paramount. Businesses should assess the effectiveness of their current authentication mechanisms and consider migrating to more robust solutions like FIDO/Web2Authn to enhance their overall security posture and protect against man-in-the-middle attacks. These modern authentication protocols not only provide enhanced security but also offer a better user experience, helping to drive adoption and compliance among employees.\"]}),/*#__PURE__*/t(\"p\",{children:[\"3. \",/*#__PURE__*/e(\"strong\",{children:\"Organizations are migrating, however slowly, from role-based access to least-privilege access\"}),\": The survey shows that only 33% of organizations have implemented least-privilege access or least privilege and ephemeral access controls. The majority still grant access at the department or role level (23% and 43% adoption, respectively), leaving them vulnerable to privilege escalation and lateral movement attack vectors. To mitigate these risks, organizations should transition to a least-privilege access model, wherein users are granted access only to the resources necessary for their job functions. Implementing a granular access control system not only reduces the risk of unauthorized access but also aids in regulatory compliance by ensuring that sensitive data is accessed only by authorized personnel.\"]}),/*#__PURE__*/t(\"p\",{children:[\"4. \",/*#__PURE__*/e(\"strong\",{children:\"Needs are emerging for a centralized management of ZTNA pillars\"}),': While 71% of Twingate customers report having the ability to view and manage identity, device, and security posture in a single panel, 29% do not have a centralized panel. This fragmentation can lead to difficulties in monitoring and enforcing ZTNA policies across the organization. To streamline ZTNA management, businesses should invest in solutions that offer a centralized, \"single pane of glass\" view of their ZTNA infrastructure, allowing IT teams to efficiently monitor, manage, and respond to potential security threats.']}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h2\",{children:\"Conclusion\"}),/*#__PURE__*/t(\"p\",{children:[\"Organizations should focus on segmenting and filtering traffic at the resource level, upgrading their identity authentication protocols, adopting least-privilege access models, and centralizing the management of their ZTNA infrastructure. By benchmarking their ZTNA practices against the insights from the \",/*#__PURE__*/e(s,{href:\"https://www.surveymonkey.com/r/5YWCH2C\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate survey\"})}),\", organizations can identify gaps and create a roadmap to achieve a comprehensive, robust ZTNA infrastructure.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"Note: Given the ongoing nature of the survey, the data may evolve over time as more respondents submit survey data.\\xa0This study draws a statistically significant sample from select practitioners in IT, Security, and DevOps working in technology businesses\"})})]})},{index:23,id:\"l7TkncoYU\",[h]:!0,[d]:!1,[p]:\"From Startup to Scale-Up: Mastering Customer Communication with Tooling\",[u]:\"Mastering Customer Comms\",[m]:\"mastering-customer-comms\",[g]:\"How Twingate tackled their growing pains while maintaining strong customer relationships\",[w]:\"Emrul Islam\",[f]:\"2023-05-15T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/LnNiTpbwkJcXOZ1U4Sh3sDTC2Xk.png\",srcSet:\"https://framerusercontent.com/images/LnNiTpbwkJcXOZ1U4Sh3sDTC2Xk.png?scale-down-to=512 512w,https://framerusercontent.com/images/LnNiTpbwkJcXOZ1U4Sh3sDTC2Xk.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/LnNiTpbwkJcXOZ1U4Sh3sDTC2Xk.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/LnNiTpbwkJcXOZ1U4Sh3sDTC2Xk.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/LnNiTpbwkJcXOZ1U4Sh3sDTC2Xk.png\",srcSet:\"https://framerusercontent.com/images/LnNiTpbwkJcXOZ1U4Sh3sDTC2Xk.png?scale-down-to=512 512w,https://framerusercontent.com/images/LnNiTpbwkJcXOZ1U4Sh3sDTC2Xk.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/LnNiTpbwkJcXOZ1U4Sh3sDTC2Xk.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/LnNiTpbwkJcXOZ1U4Sh3sDTC2Xk.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Over the past few years, Twingate has made waves as a modern alternative to traditional VPNs, offering enhanced security with reduced setup and management hassles. As our customer base rapidly expanded, we faced challenges in maintaining open communication and staying connected with our customers. In this article, we write about our experiences and how we overcame one of the challenges.\"}),/*#__PURE__*/e(\"p\",{children:\"When Twingate launched in 2019 we saw great initial traction. Our customer base back then was mainly similarly-minded startups that found Twingate to be cheaper and/or easier than the alternatives they looked at.\"}),/*#__PURE__*/t(\"p\",{children:[\"Often times our prospects would be using Slack internally so we\u2019d setup \",/*#__PURE__*/e(s,{href:\"https://slack.com/intl/en-gb/connect\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Slack Connect\"})}),\" channels with them for easier communication. Customers almost always will have to communicate with different areas of any company that provides a service to them. Our customers were no different, sometimes there\u2019d be a technical question, other times there\u2019d be a legal query on our Terms of Service or perhaps there\u2019d be a query about procurement. Using Slack Connect allowed the most relevant person at a customer to directly contact us, and on our side, we could quickly make sure it was addressed by the most appropriate person in the company. No longer do customers have to direct all queries through an account manager who then has to figure out who to route it to and stay on top of any resolutions.\"]}),/*#__PURE__*/e(\"p\",{children:\"Slack Connect definitely helped us win a few sales deals, build rapport with our customers and keep a pulse on how they were doing. There really were no negatives, aside from the fact that not all our customers were on Slack.\"}),/*#__PURE__*/e(\"p\",{children:\"All was well until mid-2022. By this time our company had grown - instead of a \u2018team\u2019 being one person, we now had multi-person teams for almost every company function. And one of the reasons we\u2019d grown was of course the influx of customers we were receiving (we weren\u2019t complaining!). Our list of Slack Connect channels had grown significantly.\"}),/*#__PURE__*/e(\"p\",{children:\"This presented a few problems -\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"It was no longer scalable for all the possible Gators (the name we use to describe people who work at Twingate) that may need to interact with a customer to be in every Slack channel.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"If the Gators that were in a channel were on PTO it could mean queries going unanswered for an extended period of time.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Our support team were raising concerns also - we have a ticketing system to track technical issues and our team work through tickets largely on a First-In-First-Out basis, looping in our engineering team where necessary. How could they interrupt their system and maintain resolution tracking if a customer raised an issue ad-hoc via a Slack Connect channel?\"})})]}),/*#__PURE__*/e(\"p\",{children:\"There was some discussion on how to address all the many issues that were cropping up, we even contemplated giving up on channels altogether. The logic for doing so was pretty clear, but there was an appreciation that Slack Connect had been instrumental in building the loyal base of users that we have and there\u2019d definitely be a mutual loss if they went away. For instance, we\u2019d potentially lose the valuable product improvement nuggets we\u2019d been receiving via messages in these channels.\"}),/*#__PURE__*/t(\"p\",{children:[\"We also didn\u2019t want to lose the attention we paid to our customers as we grew into a larger organisation, after all, we were growing thanks to their loyalty so it would be slightly discourteous if nothing else. Plus it always feels a bit rough when we personally experience a great little startup growing and losing some of the \u2018personal touch\u2019 - we didn\u2019t want to be \",/*#__PURE__*/e(\"em\",{children:\"that\"}),\" startup.\"]}),/*#__PURE__*/e(\"p\",{children:\"In the end, we settled on one technical improvement (discussed shortly) and the following set of operational changes:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Limiting Slack Connect access to customers on our Enterprise tier or accounts with a large number of seats on Business.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Redirecting technical support requests to our ticketing system if not addressed immediately.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Assigning at least one member from our Customer Success team to each channel as the main point of contact.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"On the tech tooling side, what we wanted was a way to funnel all Slack Connect messages into a single internal Slack channel that Gators could be present in. That way, if anyone noticed a message that was relevant to their function they could jump into the customer channel and address it directly.\"}),/*#__PURE__*/e(\"p\",{children:\"We couldn\u2019t find any feature natively in Slack that did this, which we thought was a bit surprising.\"}),/*#__PURE__*/e(\"p\",{children:\"Spare engineering time within any tech startup is rarer than hen\u2019s teeth and things are no different at Twingate. Thankfully, it didn\u2019t take us long to put together something outside of our engineering team: A Slackbot that would subscribe itself to all customer channels and re-post customer messages into a central channel. The app is pretty simple - written in NodeJS, stateless and is deployed quite easily via Google CloudRun. If there\u2019s any interest we might even Open Source it.\"}),/*#__PURE__*/e(\"p\",{children:\"The app is so simple that we can\u2019t imagine it deserves an article being written about it - and this article isn\u2019t about the app we created, but what it enabled us to do.\"}),/*#__PURE__*/e(\"p\",{children:\"The results? Well, it can be hard to tell when no one grumbles but the outcome of these changes has been overwhelmingly positive. Our customers still communicate to us via Slack and as far as they\u2019re concerned we respond to them with the same personal touch as before. Our customer numbers continue to grow and we can still maintain Slack Connect channels with them. Within Twingate, the central channel is mainly subscribed to by the Account Managers, Customer Success and Solution Engineering teams. Oh and our CEO, Tony \uD83D\uDE42\"}),/*#__PURE__*/e(\"p\",{children:\"We\u2019re facing little challenges like this every day as our business grows and we\u2019re sure we\u2019re not the only startups going through this. We hope we can continue to find innovative solutions like this as our business expands.\"}),/*#__PURE__*/e(\"p\",{children:\"But the key take away, is for at least a little longer we can continue acting like a spunky startup.\"})]})},{index:24,id:\"XHMIaumvX\",[h]:!0,[d]:!1,[p]:\"From Command and Control to Shared Responsibility: How Zero Trust is Changing Access Control\",[u]:\"Guest Post: ConductorOne\",[m]:\"all-aboard-conductorone\",[g]:\"Twingate CEO and Co-founder Tony Huie sat down with ConductorOne for the All Aboard Podcast\",[w]:\"Alex Bovee\",[f]:\"2023-05-31T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/tU7cBr73vOLU5p8PlHjQG7UPo.png\",srcSet:\"https://framerusercontent.com/images/tU7cBr73vOLU5p8PlHjQG7UPo.png?scale-down-to=512 512w,https://framerusercontent.com/images/tU7cBr73vOLU5p8PlHjQG7UPo.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/tU7cBr73vOLU5p8PlHjQG7UPo.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/tU7cBr73vOLU5p8PlHjQG7UPo.png 2401w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/tU7cBr73vOLU5p8PlHjQG7UPo.png\",srcSet:\"https://framerusercontent.com/images/tU7cBr73vOLU5p8PlHjQG7UPo.png?scale-down-to=512 512w,https://framerusercontent.com/images/tU7cBr73vOLU5p8PlHjQG7UPo.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/tU7cBr73vOLU5p8PlHjQG7UPo.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/tU7cBr73vOLU5p8PlHjQG7UPo.png 2401w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/t(\"em\",{children:[\"This is a guest post by Alex Bovee, CEO and Co-Founder at ConductorOne, an identity security company.\",/*#__PURE__*/e(\"br\",{})]})}),/*#__PURE__*/e(\"p\",{children:\"The pandemic changed the way we work, pushing organizations to adopt remote work models virtually overnight. Suddenly, access to company resources and sensitive data were no longer limited to the corporate network, and traditional perimeter-based security models proved insufficient. As a result, the concept of Zero Trust has gained significant attention, as companies look to secure their workforce and sensitive data in a more decentralized environment.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/t(\"p\",{children:[\"I recently had the privilege of hosting Twingate\u2019s CEO and Co-Founder, Tony Huie, on the All Aboard podcast. During our conversation, we discussed Zero Trust, the growing mandate for usability in security products, and the power of embracing security as a shared responsibility.\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/t(\"p\",{children:[\"Below are a few highlights from our conversation. To hear it in full, check out the episode \",/*#__PURE__*/e(s,{href:\"https://www.conductorone.com/blog/tony-huie-twingate-breaking-down-zero-trust/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\" (also available on \",/*#__PURE__*/e(s,{href:\"https://podcasts.apple.com/us/podcast/all-aboard/id1683222606\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Apple Podcasts\"})}),\" and \",/*#__PURE__*/e(s,{href:\"https://open.spotify.com/show/4fanl3K95a7Xm4QLmX00MV?si=ee822c74ee4c4d90\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Spotify\"})}),\").\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h2\",{children:\"Decentralization of access control is a natural progression of the Zero Trust movement\"}),/*#__PURE__*/e(\"p\",{children:\"For better or worse, \u201CZero Trust\u201D has become the buzzword of the day. Despite the market hype, the tenets of Zero Trust remain transformative for how an organization thinks about security. Tony describes one of those core tenets as \u201Cmoving away from broad-based access to granular access.\u201D After all, the internal network is vastly different for a distributed workforce. And while the movement away from the corporate network has been underway for many years, the pandemic accelerated it overnight as employees started working from home, from Starbucks, and so on. This has impacted how teams deploy and manage access to technology.\"}),/*#__PURE__*/e(\"p\",{children:\"What\u2019s more, the explosion of SaaS and IaaS \u2013 combined with sprawling access to these technologies \u2013 has made securing an organization\u2019s identity attack surface more challenging. IT and Security teams are forced to change how they think about securing applications and infrastructure away from command and control, to more of a shared responsibility model with application owners. In the identity and access management sphere, this takes the form of granting those users with the right context and knowledge the power to make access decisions.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"\u201CProducts have to actually go and enable other parts of the business to participate in access controls. And I think it's really healthy because it makes security a shared responsibility.\u201D \u2013 Tony Huie, CEO, Twingate\"})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h2\",{children:\"Modern security products must be usable\"}),/*#__PURE__*/e(\"p\",{children:\"There\u2019s a shift in the way developers and SaaS companies build products. Technology has become such a critical part of how work gets done that technology decisions and business productivity concerns are now intertwined. At Dropbox, Tony witnessed first-hand the trend around the \u201Cconsumerization of IT\u2026 or software that doesn\u2019t suck that you actually use.\u201D A little more than a decade later, the movement has reached security. As technology becomes more entrenched in the employee experience, buyers are increasingly prioritizing end-user experience, buy-in, adoption, and time-to-value when evaluating new solutions.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"Tony also talked about the parallel demand for a superior admin experience. This means making it easier for admins to configure and deploy solutions so they can spend more time enabling the broader organization to make security-informed decisions.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"\u201CConsidering how big of a role employees\u2019 own behaviors play in keeping a company secure, that consideration around, Hey, if I force my employee base to do this when they don't want to do it \u2013 I think there's a much bigger recognition that human nature is going to be such that they're just going to figure out a way to get around that.\u201D \u2013 Tony Huie, CEO, Twingate\"})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h2\",{children:\"Companies are embracing security as a shared responsibility\"}),/*#__PURE__*/e(\"p\",{children:\"Although phrases like \u201CZero Trust\u201D may be peak hype cycle, they have broad recognition, which makes them useful for gaining internal buy-in on behavioral changes and tool adoption. Tony anticipates that there will be an increased general awareness of the importance of security and of preventing data breaches. Terms like Zero Trust will be used to talk to folks outside of the industry, which is crucial given user behavior plays a significant role in strengthening or weakening a company's overall security.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/t(\"p\",{children:[\"Tony says that the most effective leaders in IT and Security will be ones that excel at communicating with other departments \u2013 including those who control the budget (finance) and those who control end-user behavior (functional leads). This would involve providing more education around security best practices, fostering the idea that security is everyone\u2019s responsibility, and reinforcing the need to operate securely.\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"\u201CIf you really break down what is cybersecurity for most companies, it's actually about managing access. It's making sure that the right folks have access to the right things and the wrong people don't.\u201D \u2013 Tony Huie, CEO, Twingate\"})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/t(\"p\",{children:[\"Interested in scaling identity and access controls for your organization? Visit \",/*#__PURE__*/e(s,{href:\"https://www.conductorone.com/\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"conductorone.com\"})}),\" to learn more.\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"About the Author\"})}),/*#__PURE__*/e(\"p\",{children:\"Alex Bovee is co-founder and CEO of ConductorOne, a technology company focused on modern identity governance and access control. With a background in security and identity, he most recently led Okta's zero trust product portfolio and before that, enterprise device security products at Lookout Mobile Security. He co-founded ConductorOne to help companies become more secure and productive through identity-centric automation and access control. In his spare time, he enjoys playing guitar and shuttling his kids around to activities.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]})]})},{index:25,id:\"J4F2woOCm\",[h]:!0,[d]:!0,[p]:\"NetworkChuck uses Twingate for Remote Access\",[u]:\"NetworkChuck's Use Case\",[m]:\"network-chuck-twingate\",[g]:\"How NetworkChuck was able to solve his remote access problems with Twingate\u2019s zero trust proxy. No VPN, no firewall configuration, and no port forwarding required.\",[w]:\"Erin Risk\",[f]:\"2023-04-28T00:00:00.000Z\",[y]:\"KI2UGBfh7\",[b]:T({src:\"https://framerusercontent.com/images/g3IJUqASduanY2LFNw8VbhcIXOM.png\",srcSet:\"https://framerusercontent.com/images/g3IJUqASduanY2LFNw8VbhcIXOM.png?scale-down-to=512 512w,https://framerusercontent.com/images/g3IJUqASduanY2LFNw8VbhcIXOM.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/g3IJUqASduanY2LFNw8VbhcIXOM.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/g3IJUqASduanY2LFNw8VbhcIXOM.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/I89TzXRgOQXZFhhcPpK5qyWzDsc.png\",srcSet:\"https://framerusercontent.com/images/I89TzXRgOQXZFhhcPpK5qyWzDsc.png?scale-down-to=512 512w,https://framerusercontent.com/images/I89TzXRgOQXZFhhcPpK5qyWzDsc.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/I89TzXRgOQXZFhhcPpK5qyWzDsc.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/I89TzXRgOQXZFhhcPpK5qyWzDsc.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"What does IT guru NetworkChuck have to say about Twingate? One word: \u201Cmagic.\u201D Okay, a few more words (ones that we also hear from our customers): \u201CIt just works.\u201D\"}),/*#__PURE__*/t(\"p\",{children:[\"In his latest video, he puts us to the test and shows his millions of YouTube subscribers how easy it is to deploy and use Twingate. Check it out for yourself \",/*#__PURE__*/e(s,{href:\"https://youtu.be/IYmXPF3XUwo?t=0m0s\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\". \"]}),/*#__PURE__*/e(a.div,{className:\"framer-text-module\",style:{\"--aspect-ratio\":\"560 / 315\",aspectRatio:\"var(--aspect-ratio)\",height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:NEd4VmDdsxM3StIUbddO/fJ8vwGe6kxfz7kj9H7Sk/YouTube.js:Youtube\",children:t=>/*#__PURE__*/e(c,{...t,play:\"Loop\",shouldMute:!0,thumbnail:\"High Quality\",url:\"https://youtu.be/IYmXPF3XUwo?t=0m0s\"})})}),/*#__PURE__*/t(\"p\",{children:[\"NetworkChuck and his team needed a tool that would allow them to securely access their company NAS and video editing machines while on the road. They needed something that met their strict security standards, but also kept pace with the speed of their work. VPNs wouldn\u2019t cut it - not only were they too slow, they weren\u2019t secure enough for the NetworkChuck team. With granular security policies, rapid deployment, and lightning fast peer-to-peer connections, Twingate fit the bill.\\xa0\\xa0\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/e(\"p\",{children:\"Using Twingate, the NetworkChuck team implemented zero trust controls without the hassle of setting up a full tunnel VPN. In five minutes, they had Twingate up and running with zero firewall configurations and no port forwarding required.\"}),/*#__PURE__*/e(\"p\",{children:\"Watch the full 30 minute video, or skip to the sections that catch your eye:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://youtu.be/IYmXPF3XUwo?t=0m0s\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"0:00\"})}),\" - Network Chuck\u2019s Twingate Use Case\\xa0\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://youtu.be/IYmXPF3XUwo?t=2m5s\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"2:05\"})}),\" - Twingate Setup & Demo\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://youtu.be/IYmXPF3XUwo?t=10m50s\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"10:50\"})}),\" - How Twingate Works\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://youtu.be/IYmXPF3XUwo?t=19m45s\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"19:45\"})}),\" - Setting up Device Security & MFA\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://youtu.be/IYmXPF3XUwo?t=21m54s\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"21:54\"})}),\" - DNS-based Routing & Aliases\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://youtu.be/IYmXPF3XUwo?t=26m17s\",openInNewTab:!0,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"26:17\"})}),\" - Bonus Features: Wildcard Resources, Headless Clients, Terraform with CI/CD, IdP integrations, and Secure DNS\\xa0\\xa0\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"A huge thank you goes out to the NetworkChuck team for digging into Twingate and sharing with the world!\"})]})},{index:26,id:\"PeXcF6pWF\",[h]:!0,[d]:!1,[p]:\"Announcing WebAuthn for Twingate Universal MFA\",[u]:\"Announcing WebAuthn\",[m]:\"webauthn-announcement\",[g]:\"\",[w]:\"Emily Lehman\",[f]:\"2023-02-13T00:00:00.000Z\",[y]:\"KI2UGBfh7\",[b]:T({src:\"https://framerusercontent.com/images/KJAb8ocbB8Y26WPjqZalbbDrc.png\",srcSet:\"https://framerusercontent.com/images/KJAb8ocbB8Y26WPjqZalbbDrc.png?scale-down-to=512 512w,https://framerusercontent.com/images/KJAb8ocbB8Y26WPjqZalbbDrc.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/KJAb8ocbB8Y26WPjqZalbbDrc.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/KJAb8ocbB8Y26WPjqZalbbDrc.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/KJAb8ocbB8Y26WPjqZalbbDrc.png\",srcSet:\"https://framerusercontent.com/images/KJAb8ocbB8Y26WPjqZalbbDrc.png?scale-down-to=512 512w,https://framerusercontent.com/images/KJAb8ocbB8Y26WPjqZalbbDrc.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/KJAb8ocbB8Y26WPjqZalbbDrc.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/KJAb8ocbB8Y26WPjqZalbbDrc.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Twingate is excited to announce the launch of our support for WebAuthn, signaling the first step in laying the foundation for a passwordless future. With this new functionality, Twingate customers can leverage additional types of authentication \u2013 including biometrics and Yubikeys \u2013 when using Twingate\u2019s Universal MFA for SSH, RDP, or legacy applications that don\u2019t natively support MFA. \"}),/*#__PURE__*/t(\"p\",{children:[\"To enable WebAuthn for Twingate, customers just need to \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/two-factor-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"enable MFA\"})}),\" as a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/security-policies\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Security Policy\"})}),\" requirement for a Twingate-protected \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/resources\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Resource\"})}),\" - that\u2019s it. End users will then be prompted to configure a WebAuthn method as a part of the standard MFA workflow when attempting to access the Resource. Admins can then review which authentication methods are configured on a user\u2019s profile within the Admin Console.\"]}),/*#__PURE__*/e(\"img\",{alt:\"webauthn screenshot\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,H6mu6jVe9qJcAHnkiHFaVBvi6DI.png?originalFilename=webauthn-screenshot.png\",src:\"https://framerusercontent.com/images/H6mu6jVe9qJcAHnkiHFaVBvi6DI.png\",srcSet:\"https://framerusercontent.com/images/H6mu6jVe9qJcAHnkiHFaVBvi6DI.png?scale-down-to=512 512w,https://framerusercontent.com/images/H6mu6jVe9qJcAHnkiHFaVBvi6DI.png 800w\"}),/*#__PURE__*/e(\"h2\",{children:\"The problem with passwords\"}),/*#__PURE__*/t(\"p\",{children:[\"It\u2019s become a cliche to say it\u2019s \u201Cmore important than ever\u201A for organizations to improve their approaches to cybersecurity, but it\u2019s a cliche because it\u2019s true: cyberattacks \",/*#__PURE__*/e(s,{href:\"https://www.infosecurity-magazine.com/news/global-cyberattack-volume-surges\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"continue to surge year-over-year\"})}),\", and legacy security models don\u2019t address the new challenges presented by an increasingly distributed global workforce. \"]}),/*#__PURE__*/t(\"p\",{children:[\"We all know that passwords alone are simply not secure enough. They can be stolen, leaked, or unwittingly shared via phishing and social engineering attempts from hackers. These vulnerabilities are compounded by human behavior: up to 65% of people \",/*#__PURE__*/e(s,{href:\"https://www.infosecurity-magazine.com/blogs/your-employees-reusing-passwords\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"admit to reusing passwords\"})}),\", and 45% \",/*#__PURE__*/e(s,{href:\"https://www.infosecurity-magazine.com/blogs/your-employees-reusing-passwords\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"do not consider password reuse to be a serious issue\"})}),\". \"]}),/*#__PURE__*/t(\"p\",{children:[\"Multi-factor authentication is one step forward in improving security by providing an additional layer of authentication, but it\u2019s not infallible. The majority of MFA workflows still rely on one-time passwords (OTPs), and while certainly more secure than passwords alone, OTPs remain vulnerable to phishing attacks. Reverse proxy tools like \",/*#__PURE__*/e(s,{href:\"https://www.zdnet.com/article/new-tool-automates-phishing-attacks-that-bypass-2fa\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Modlishka\"})}),\" and \",/*#__PURE__*/e(s,{href:\"https://breakdev.org/evilginx-2-next-generation-of-phishing-2fa-tokens\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Evilginx2\"})}),\" can capture both credentials and the authentication tokens sent as cookies, allowing hackers to bypass 2FA. \"]}),/*#__PURE__*/e(\"p\",{children:\"So what can organizations do to combat these security weaknesses? Enter: WebAuthn.\"}),/*#__PURE__*/e(\"h2\",{children:\"What is WebAuthn?\"}),/*#__PURE__*/t(\"p\",{children:[\"WebAuthn is the shortened name for \",/*#__PURE__*/e(s,{href:\"https://www.w3.org/TR/webauthn-2\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Web Authentication API\"})}),\", a specification written by the W3C and FIDO, that allows servers to register and authenticate users using public key cryptography instead of a password.\"]}),/*#__PURE__*/t(\"p\",{children:[\"A WebAuthn registration workflow generates a private-public keypair once the user provides a strong authenticator - think a fingerprint or a YubiKey. The private key is stored securely on the user\u2019s device while the randomly generated public key is sent to the server for storage (you can read more about how WebAuthn works under the hood in \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/what-is-webauthn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"this blog post\"})}),\"). \"]}),/*#__PURE__*/e(\"p\",{children:\"This approach relies on authenticators that are both stronger and easier to use than passwords, leading to a number of security benefits:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Eliminate man-in-the-middle attacks\"}),\": Authentication requests can\u2019t be captured and successfully replayed, preventing hackers from using authentication tokens sent as cookies to bypass MFA.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Reduce incentive to hack databases\"}),\": Only public keys are stored on servers, but they are effectively useless without the corresponding private key. Theoretically, this makes databases less attractive to hackers since the public keys aren\u2019t useful on their own.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Improve end-user experience\"}),\": The more friction involved in a security workflow, the more people will try to get around it. By leveraging authentication methods that are actually easier for end-users, organizations can ensure that their employees don\u2019t try to work around their security procedures.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"It seems like the perfect solution to the world\u2019s cybersecurity woes - both more secure and easier to use \u2013 so why isn\u2019t WebAuthn more widely adopted?\"}),/*#__PURE__*/e(\"p\",{children:\"The simple answer is that WebAuthn gets very complicated very quickly (at least for application developers). WebAuthn is not browser agnostic, meaning product teams must explicitly build support for not just all browsers, but their various versions. Add to this the combinations of platforms and authenticators that need to be supported, and you quickly get a complex matrix of compatibilities that need to be accounted for. \"}),/*#__PURE__*/e(\"p\",{children:\"This complexity means that despite widespread acceptance of its security superiority, WebAuthn is not as widely supported or adopted as you might expect.\"}),/*#__PURE__*/e(\"h2\",{children:\"Zero Trust Made Easy\"}),/*#__PURE__*/e(\"p\",{children:\"A core tenet here at Twingate is making Zero Trust principles as easy to adopt as possible for both administrators and for end users.  \"}),/*#__PURE__*/e(\"p\",{children:\"Strong identity verification is a key component of a Zero Trust security model, but organizations often struggle to implement strident authentication policies across their entire ecosystem due to lack of functionality, heavy configuration requirements, and ongoing maintenance from already resource-strapped teams. \"}),/*#__PURE__*/e(\"p\",{children:\"Twingate makes it easy to implement MFA for historically unsupported workflows like SSH-ing, RDP-ing, and accessing legacy applications. Twingate\u2019s support for WebAuthn deepens the strength of these authentication methods while reducing friction in the end-user experience.\"}),/*#__PURE__*/t(\"p\",{children:[\"You can find full details on Twingate\u2019s Universal MFA on our \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/two-factor-authentication-security-policies\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"documents page\"})}),\". Not a Twingate customer yet? If you\u2019re interested in taking Twingate for a spin, you can request a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"personalized demo\"})}),\" from our team or \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"try it out yourself for free\"})}),\".\"]})]})},{index:27,id:\"YwWI7JSMc\",[h]:!0,[d]:!1,[p]:\"Visualize and Analyze Network Log Data with Twingate and Datadog\",[u]:\"Datadog Integration\",[m]:\"datadog-integration\",[g]:\"\",[w]:\"Emily Lehman\",[f]:\"2023-01-24T00:00:00.000Z\",[y]:\"KI2UGBfh7\",[b]:T({src:\"https://framerusercontent.com/images/wB6XiuXhQ6RkX2Ngy3esCC1j8VE.png\",srcSet:\"https://framerusercontent.com/images/wB6XiuXhQ6RkX2Ngy3esCC1j8VE.png?scale-down-to=512 512w,https://framerusercontent.com/images/wB6XiuXhQ6RkX2Ngy3esCC1j8VE.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/wB6XiuXhQ6RkX2Ngy3esCC1j8VE.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/wB6XiuXhQ6RkX2Ngy3esCC1j8VE.png 2401w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/wB6XiuXhQ6RkX2Ngy3esCC1j8VE.png\",srcSet:\"https://framerusercontent.com/images/wB6XiuXhQ6RkX2Ngy3esCC1j8VE.png?scale-down-to=512 512w,https://framerusercontent.com/images/wB6XiuXhQ6RkX2Ngy3esCC1j8VE.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/wB6XiuXhQ6RkX2Ngy3esCC1j8VE.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/wB6XiuXhQ6RkX2Ngy3esCC1j8VE.png 2401w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Today we\u2019re excited to announce the new Twingate and Datadog integration! \",/*#__PURE__*/e(s,{href:\"https://www.datadoghq.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Datadog\"})}),\" is a modern monitoring and security platform that makes your applications, infrastructure, and third-party services observable, enabling businesses to secure their systems, avoid downtime, and ensure the best possible end-user experience. Customers can now conveniently visualize and analyze real-time data from Twingate Connectors directly within the Datadog platform.\"]}),/*#__PURE__*/t(\"p\",{children:[\"As businesses face \",/*#__PURE__*/e(s,{href:\"https://www.infosecurity-magazine.com/news/global-cyberattack-volume-surges\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"more frequent cyberattacks\"})}),\" across an increasingly distributed workforce, it\u2019s critical for organizations to close off exposed entry points without sacrificing usability or speed. Twingate\u2019s Zero Trust \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/vpn-replacement-use-case\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"alternative to VPNs\"})}),\" enables teams to easily implement least privilege access with no impact on user performance or latency. Twingate Connectors sit behind your firewall, within the private network that protected resources are connected to, organizations using this new integration gain critical insights into resource usage and access without exposing themselves to the public internet.\"]}),/*#__PURE__*/t(\"p\",{children:[\"With the new Twingate and Datadog integration, users can easily configure their \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/how-twingate-works\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate Connectors\"})}),\" to send real-time network logs from their Connectors to Datadog, providing an additional layer of security. Improved monitoring capability makes key Twingate metrics \u2013 including data transfer amounts, resource access activity, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/security-policies\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"security policy\"})}),\" data, and more \u2013 observable within the Datadog platform. \"]}),/*#__PURE__*/e(\"img\",{alt:\"datadog UI\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,D8FmeymUmSm6sef4oCRdQU5e0M.png?originalFilename=datadog_UI.png\",src:\"https://framerusercontent.com/images/D8FmeymUmSm6sef4oCRdQU5e0M.png\",srcSet:\"https://framerusercontent.com/images/D8FmeymUmSm6sef4oCRdQU5e0M.png?scale-down-to=512 512w,https://framerusercontent.com/images/D8FmeymUmSm6sef4oCRdQU5e0M.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"This integration provides the ability to trigger alerts in their Datadog platform based on unusual patterns in network-log data, enabling teams to quickly identify and mitigate the impact of any potential suspicious activity. Customers can also monitor end-user IP addresses, so organizations can identify connection attempts from sanctioned or high-risk countries. \"}),/*#__PURE__*/e(\"p\",{children:\"Beyond just improvements in security, teams can drive efficiencies and eliminate redundancies in resource access thanks to visualized data showing which users are accessing which resources.\"}),/*#__PURE__*/t(\"p\",{children:[\"You can find full details on setting up your Twingate and Datadog integration \",/*#__PURE__*/e(s,{href:\"https://docs.datadoghq.com/integrations/twingate\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\". Not a Twingate customer yet?  If you\u2019re interested in taking Twingate for a spin, you can request a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"personalized demo\"})}),\" from our team or \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"try it out yourself for free\"})}),\".\"]})]})},{index:28,id:\"Q7WYW5XMy\",[h]:!0,[d]:!1,[p]:\"Aptible & Twingate: Making HIPAA and SOC2 seamless\",[u]:\"Aptible Integration\",[m]:\"aptible-integration\",[g]:\"\",[w]:\"Emrul Islam\",[f]:\"2023-01-18T00:00:00.000Z\",[y]:\"nwIUHELao\",[b]:T({src:\"https://framerusercontent.com/images/fGRieEr5BVTkqdIraW2vCpzqa70.png\",srcSet:\"https://framerusercontent.com/images/fGRieEr5BVTkqdIraW2vCpzqa70.png?scale-down-to=512 512w,https://framerusercontent.com/images/fGRieEr5BVTkqdIraW2vCpzqa70.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/fGRieEr5BVTkqdIraW2vCpzqa70.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/fGRieEr5BVTkqdIraW2vCpzqa70.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/fGRieEr5BVTkqdIraW2vCpzqa70.png\",srcSet:\"https://framerusercontent.com/images/fGRieEr5BVTkqdIraW2vCpzqa70.png?scale-down-to=512 512w,https://framerusercontent.com/images/fGRieEr5BVTkqdIraW2vCpzqa70.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/fGRieEr5BVTkqdIraW2vCpzqa70.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/fGRieEr5BVTkqdIraW2vCpzqa70.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"We\u2019re pleased to announce that \",/*#__PURE__*/e(\"em\",{children:\"tg\"}),\", our open-source CLI, has been updated to support \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/aptible\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"deploying connectors on Aptible\"})}),\".\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.aptible.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Aptible\"})}),\" is a PaaS that manages the the operation of all your infrastructure, security, and compliance so you can focus on building your product. With Aptible, certifications such as HIPAA and SOC2 become easier to achieve for startups. \"]}),/*#__PURE__*/e(\"p\",{children:\"Under the hood Aptible offers a platform where you can provision databases and dockerized applications that meet the stringent operating criteria required for the most prevalent types of industry certifications.\"}),/*#__PURE__*/e(\"p\",{children:\"These types of certifications are also important for many of Twingate customers that operate in high-risk or regulated industries. Our unique identity-first networking and device posture features help our customers pass third-party audits more smoothly than other remote access and VPN solutions.\"}),/*#__PURE__*/e(\"p\",{children:\"With Twingate, you can securely access these apps for development purposes, technical troubleshooting and to provide an additional layer of security to your endpoints.\"}),/*#__PURE__*/t(\"p\",{children:[\" Further information on getting started with Twingate on Aptible is available on our \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/aptible\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"documentation page\"})}),\".\"]})]})},{index:29,id:\"OBe6DFPCm\",[h]:!0,[d]:!1,[p]:\"Static IPs and More with DigitalOcean\",[u]:\"Static IPs with DigitalOcean\",[m]:\"static-ips-digitalocean\",[g]:\"\",[w]:\"Emrul Islam\",[f]:\"2022-12-21T00:00:00.000Z\",[y]:\"nwIUHELao\",[b]:T({src:\"https://framerusercontent.com/images/WAELCXbINuxlZa7s3DAFzM8LOw.png\",srcSet:\"https://framerusercontent.com/images/WAELCXbINuxlZa7s3DAFzM8LOw.png?scale-down-to=512 512w,https://framerusercontent.com/images/WAELCXbINuxlZa7s3DAFzM8LOw.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/WAELCXbINuxlZa7s3DAFzM8LOw.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/WAELCXbINuxlZa7s3DAFzM8LOw.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/WAELCXbINuxlZa7s3DAFzM8LOw.png\",srcSet:\"https://framerusercontent.com/images/WAELCXbINuxlZa7s3DAFzM8LOw.png?scale-down-to=512 512w,https://framerusercontent.com/images/WAELCXbINuxlZa7s3DAFzM8LOw.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/WAELCXbINuxlZa7s3DAFzM8LOw.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/WAELCXbINuxlZa7s3DAFzM8LOw.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"We\u2019re excited to announce that the Twingate Labs team has launched \",/*#__PURE__*/e(s,{href:\"https://webdeploy.tg-labs.net/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"WebDeploy\"})}),\" for DigitalOcean. DigitalOcean is a cloud provider that offers Virtual Machines (droplets) across 8 geographic regions. Twingate users can instantly provision a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/connectors\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Connector\"})}),\" in DigitalOcean without any scripting knowledge. These Droplets are firewalled off, making them completely invisible to the Internet and they\u2019re set to automatically apply Linux and Twingate updates and reboot when necessary. High-Availability and failover is easy too - deploy a 2nd connector in a different datacenter!\"]}),/*#__PURE__*/t(\"p\",{children:[\"As a modern, secure alternative to VPNs, Twingate focuses on brokering encrypted \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/how-twingate-works\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"peer-to-peer connections\"})}),\" for users rather than relying on Points-of-Presence (PoPs). While PoPs do enable the use of static IP addresses, they still leave users at the mercy of a vendor\u2019s distributed PoP footprint (often in the low 100s), in addition to incompatibility with certain protocol types and integration challenges.\"]}),/*#__PURE__*/e(\"p\",{children:\"Why do static IPs matter? Well, a fair few cloud services recommend or require all traffic originate from IP addresses that they can whitelist through their firewalls. Since many home users who don\u2019t have on-prem or cloud infrastructure are behind dynamic IPs (and also some serverless apps are too), their IP addresses can change without warning. It\u2019s no surprise then that so many are searching for an easy-to-manage solution to this problem.\"}),/*#__PURE__*/t(\"p\",{children:[\"Now, thanks to Twingate Labs\u2019 \",/*#__PURE__*/e(s,{href:\"https://webdeploy.tg-labs.net/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"WebDeploy\"})}),\" for DigitalOcean, users can retain the benefits of Twingate\u2019s peer-to-peer network connections while also establishing a static IP via DigitalOcean droplets, which offer great performance and generous bandwidth for about $6 per month. One of the advantages of this approach is that our customers are not locked-in to Twingate for their static IP.For those that prefer a CLI please don\u2019t feel left out! The Twingate CLI, can also deploy connectors to DigitalOcean. Visit our \",/*#__PURE__*/e(s,{href:\"https://www.digitalocean.com/community/tools/twingate-cli\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"DigitalOcean community tools page\"})}),\" for more information.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Try WebDeploy today by clicking \",/*#__PURE__*/e(s,{href:\"https://webdeploy.tg-labs.net/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\". If you don\u2019t yet have a DigitalOcean account you can create one \",/*#__PURE__*/e(s,{href:\"https://m.do.co/c/b04cffd77b69\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\", which includes free credits to get started with.\"]})]})},{index:30,id:\"I9tYfrg2w\",[h]:!0,[d]:!1,[p]:\"Demystifying Azure VPN Pricing & Affordable Alternatives\",[u]:\"Azure VPN Pricing\",[m]:\"azure-vpn-pricing\",[g]:\"\",[w]:\"Stuart Loh\",[f]:\"2022-11-07T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/O5aYMsf8h7n9MUR509E9gzyY0.png\",srcSet:\"https://framerusercontent.com/images/O5aYMsf8h7n9MUR509E9gzyY0.png?scale-down-to=512 512w,https://framerusercontent.com/images/O5aYMsf8h7n9MUR509E9gzyY0.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/O5aYMsf8h7n9MUR509E9gzyY0.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/O5aYMsf8h7n9MUR509E9gzyY0.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/O5aYMsf8h7n9MUR509E9gzyY0.png\",srcSet:\"https://framerusercontent.com/images/O5aYMsf8h7n9MUR509E9gzyY0.png?scale-down-to=512 512w,https://framerusercontent.com/images/O5aYMsf8h7n9MUR509E9gzyY0.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/O5aYMsf8h7n9MUR509E9gzyY0.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/O5aYMsf8h7n9MUR509E9gzyY0.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"h1\",{children:\"What is Azure VPN?\"}),/*#__PURE__*/e(\"p\",{children:\"Microsoft Azure VPN Gateway (or Azure VPN for short) is a managed service offered by Microsoft that allows organizations to establish secure connections between devices and private networks over the public internet. Azure VPN is offered as an easier way to deploy a VPN for use with Azure virtual networks (VNs) than having to manually manage the procurement, installation, configuration, and operation of VPN server software.\"}),/*#__PURE__*/e(\"p\",{children:\"Although Azure VPN may be technically easier to implement than a traditional VPN, the way Microsoft prices Azure VPN is complex. Azure VPN\u2019s pricing is dependent on a myriad of variables which makes the process of estimating how much it will cost quite confusing.\"}),/*#__PURE__*/e(\"p\",{children:\"To complicate things further, Azure VPN has two different service types: point-to-site (P2S) and site-to-site (S2S). The P2S VPN is designed to enable secure communication tunnels to be established between remote workers\u2019 devices and resources on private networks (in this case, an Azure VN that is used as a private network). These tunnels are temporary and are established on demand by workers when they sign into the remote network.\"}),/*#__PURE__*/e(\"p\",{children:\"S2S VPNs are designed to connect two different private networks (in this case, they could be used to securely connect two Azure VNs, or an Azure VN with an on-premises network). These tunnels are typically always active and are set up to handle large amounts of traffic.\"}),/*#__PURE__*/e(\"p\",{children:\"Microsoft prices its VPN Gateway service differently depending on whether you are using it for S2S tunnels or P2S tunnels. In this article, we will focus on demystifying Azure VPN\u2019s P2S pricing model by deconstructing exactly how it works, providing a convenient cost calculator, and reviewing some alternatives to Azure VPN.\"}),/*#__PURE__*/e(\"h1\",{children:\"How Azure VPN Pricing Works\"}),/*#__PURE__*/e(\"p\",{children:\"The costs for Azure VPN come from 3 components:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"VPN Gateway charge (time-based)\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Number of P2S tunnel connections used (time-based)\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Data transfer charges for egress data (usage-based)\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Let\u2019s examine each in turn.\"}),/*#__PURE__*/e(\"h2\",{children:\"VPN Gateway Charge\"}),/*#__PURE__*/e(\"p\",{children:\"Microsoft charges for each VPN gateway that you provision in an Azure VN. A fixed hourly fee is charged for the time a VPN gateway is provisioned and available. The amount of that fee depends on two factors:\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"1. VPN Gateway Type:\"}),\" Various gateway types are offered (Basic, VpnGw1, VpnGw2, VpnGw3, VpnGw4, and VpnGw5), with more powerful gateways able to support higher bandwidth throughput and more concurrent P2S tunnels (at greater cost). Additionally, \u201Chigh availability\u201A zone redundant versions of each gateway type are available. These gateways support Azure Availability Zones and provide more resiliency in the event of zone-level failures (also at greater cost).\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"2. VPN Gateway Region:\"}),\" The Azure region in which a gateway is located also impacts the hourly fee. While these fees are largely the same around the world, gateways hosted in Azure Government regions in the U.S. are priced higher.\"]}),/*#__PURE__*/e(\"ul\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Each VPN Gateway: $0.04 to $5.247 per hour\"})})}),/*#__PURE__*/e(\"h2\",{children:\"P2S Tunnel Connection Charges\"}),/*#__PURE__*/t(\"p\",{children:[\"Microsoft charges for the number of P2S tunnels established to a VPN gateway on a time and use basis. In general, all VPN gateway types support 128 P2S tunnels at no extra cost, but \",/*#__PURE__*/e(\"em\",{children:\"each tunnel\"}),\" in excess of 128 is charged an hourly fee. The amount of that fee depends on what region the gateway is in.\"]}),/*#__PURE__*/e(\"ul\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Each P2S tunnel connection in excess of 128: $0.01 to $0.013 per hour\"})})}),/*#__PURE__*/e(\"h2\",{children:\"Egress Data Transfer Charges\"}),/*#__PURE__*/e(\"p\",{children:\"Microsoft charges data transfer fees for data exiting an Azure VN to the internet via a P2S VPN connection on a bandwidth-used basis (per GB). The per GB data transfer charge depends on two factors:\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"1. VPN Gateway Region:\"}),\" The region of the VN from which the traffic is exiting determines the applicable bandwidth charges, with each region having its own pricing table.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"2. Aggregate Monthly Bandwidth Use:\"}),\" Each region\u2019s pricing table is tiered, with the per GB price decreasing if you use more bandwidth during a month. The first 100GB of data transfers each month is free.\"]}),/*#__PURE__*/e(\"ul\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Amount of egress data transferred: $0.04 to $0.181 per GB (after first 100 GB)\"})})}),/*#__PURE__*/e(\"p\",{children:\"Data transfer charges may add significant bandwidth costs if you are running your VPN clients in full tunnel mode, which sends all network traffic destined for the public internet through an Azure VPN gateway and its VN.\"}),/*#__PURE__*/e(\"h2\",{children:\"Azure VPN Pricing Calculator\"}),/*#__PURE__*/t(\"p\",{children:[\"Because there are a lot of variables to crunch when working out pricing, to help you estimate Azure VPN Gateway fees, we\u2019ve made this handy \",/*#__PURE__*/e(s,{href:\"https://docs.google.com/spreadsheets/d/17iVFiVBRQlnpnrORgdF1mJ8DfDWVY1fRRxaSeGCtyaY/edit#gid=1818588508\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Azure VPN Pricing Calculator\"})}),\".\"]}),/*#__PURE__*/e(\"img\",{alt:\"Azure VPN Pricing Calculator\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,0C4EqbMfo6oIk2I5OMlfKhvjE2Q.png?originalFilename=azurevpn-calculator.png\",src:\"https://framerusercontent.com/images/0C4EqbMfo6oIk2I5OMlfKhvjE2Q.png\",srcSet:\"https://framerusercontent.com/images/0C4EqbMfo6oIk2I5OMlfKhvjE2Q.png?scale-down-to=512 512w,https://framerusercontent.com/images/0C4EqbMfo6oIk2I5OMlfKhvjE2Q.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Azure VPN Pricing Calculator\"}),/*#__PURE__*/e(\"p\",{children:\"We note that pricing changes from time to time. The information in this article is accurate to the best of our knowledge at the date of writing, but you should check the Azure website for the most up to date pricing.\"}),/*#__PURE__*/e(\"h2\",{children:\"Summary\"}),/*#__PURE__*/e(\"p\",{children:\"In summary, the charges you can expect to pay include:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Hourly fees for each Azure VPN Gateway, based on the gateway type and region\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Hourly fees for each concurrent P2S tunnel connection over 128, based on the gateway region\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Bandwidth fees for egress traffic from your VN (representing an additional charge for full tunnel traffic that otherwise wouldn\u2019t need to flow through your VN), based on the gateway region\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"Alternatives to Azure VPN Gateway\"}),/*#__PURE__*/e(\"p\",{children:\"If you want to enable secure remote access to your Azure VNs, there are options apart from Azure VPN.\"}),/*#__PURE__*/e(\"h2\",{children:\"Azure Marketplace Products\"}),/*#__PURE__*/e(\"p\",{children:\"The Azure Marketplace features a large number of third party products that integrate with Microsoft Azure. Some vendors offer their own VPN solutions that work within an Azure VN, and each of these products comes with its own pricing model. For example, SoftEther offers a VPN solution that is licensed on a time-based model, which is additional to the infrastructure usage costs that Azure charges. Administratively, fees for these third party products can sometimes be charged via Azure, so you can benefit from consolidated billing.\"}),/*#__PURE__*/e(\"h2\",{children:\"Manually Installed Products\"}),/*#__PURE__*/e(\"p\",{children:\"It\u2019s also possible to manually install and configure an open source solution like OpenVPN within your Azure VN environments. Although there are no ongoing subscription fees associated with this route, it does require a lot more effort and expertise in terms of setup and maintenance. Additionally, support is not provided, so you may have to seek third party help if you run into problems (either paid, or from free sources like community forums). Azure infrastructure usage costs still apply as well.\"}),/*#__PURE__*/e(\"h2\",{children:\"Zero Trust Alternative\"}),/*#__PURE__*/t(\"p\",{children:[\"If you are ultimately looking for a remote access solution, you should also consider Zero Trust Network Access products that aren\u2019t based on VPN technology, such as Twingate. Twingate can be installed in an Azure VN with a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/accessing-private-resources-in-azure#deploying-the-connector\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"single line of code\"})}),\". Additionally, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/deployment-semi-automation\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"deployment can be automated\"})}),\" in a variety of ways. Twingate is also available on the \",/*#__PURE__*/e(s,{href:\"https://azuremarketplace.microsoft.com/en-us/marketplace/apps/twingateinc1663181014655.twingate_saas?tab=overview\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Azure Marketplace\"})}),\".\"]}),/*#__PURE__*/e(\"p\",{children:\"Another advantage of Twingate is that, unlike VPN technologies, there\u2019s no concept of setting up site-to-site VPN tunnels to establish connectivity to your various network subnets. That reduces deployment complexity, as well as pricing complexity. (As mentioned above, Azure S2S comes with a different pricing model than P2S.)\"}),/*#__PURE__*/t(\"p\",{children:[\"Zero Trust solutions have \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/zero-trust-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"distinct security advantages\"})}),\" over VPNs as well.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Twingate\u2019s Pricing Model\"}),/*#__PURE__*/e(\"p\",{children:\"A key benefit of using Twingate to secure remote access to your Azure environment is that the pricing model is straightforward. Twingate\u2019s pricing is based on a per user flat fee model. That means costs are predictable - and you don\u2019t need a spreadsheet to work them out!\"}),/*#__PURE__*/e(\"p\",{children:\"The only variables that impact Twingate\u2019s pricing are the number of users you have, the months or years you subscribe to the service (depending on whether you are billed monthly or annually), and the Twingate plan you select (Teams, Business or Enterprise). Twingate does not charge for bandwidth used or time connected. We even offer a free Starter plan if you want to try us out or if you only have a limited amount of infrastructure you need to secure.\"}),/*#__PURE__*/e(\"p\",{children:\"If you use Twingate with non-Azure environments, support for Azure comes at no extra cost. In fact, Twingate secures access to all major types of environments (AWS, GCP, Azure, and on-premises) you may have for the same fee, and the setup process is similar for each environment.\"}),/*#__PURE__*/e(\"h1\",{children:\"Simplify Your Azure Secure Remote Access Needs\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate aims to provide the \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/twingate-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"security benefits of a non-VPN Zero Trust solution\"})}),\" while making deployment and management of that solution \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/why-isnt-everyone-using-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"as simple as possible\"})}),\". Part of this is providing a simple to understand pricing model that won\u2019t unexpectedly blow out your budget.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=azure-vpn-pricing\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact us\"})}),\" to learn more about how easy and cost effective implementing a modern zero trust solution can be.\"]})]})},{index:31,id:\"BlDGGLJ5W\",[h]:!0,[d]:!1,[p]:\"How Google Cloud VPN Pricing Works & Affordable Alternatives\",[u]:\"Google Cloud VPN Pricing\",[m]:\"google-cloud-vpn-pricing\",[g]:\"\",[w]:\"Stuart Loh\",[f]:\"2022-10-28T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/GNofgKhnWsJ2kvfGZinfHXK98pk.png\",srcSet:\"https://framerusercontent.com/images/GNofgKhnWsJ2kvfGZinfHXK98pk.png?scale-down-to=512 512w,https://framerusercontent.com/images/GNofgKhnWsJ2kvfGZinfHXK98pk.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/GNofgKhnWsJ2kvfGZinfHXK98pk.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/GNofgKhnWsJ2kvfGZinfHXK98pk.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/GNofgKhnWsJ2kvfGZinfHXK98pk.png\",srcSet:\"https://framerusercontent.com/images/GNofgKhnWsJ2kvfGZinfHXK98pk.png?scale-down-to=512 512w,https://framerusercontent.com/images/GNofgKhnWsJ2kvfGZinfHXK98pk.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/GNofgKhnWsJ2kvfGZinfHXK98pk.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/GNofgKhnWsJ2kvfGZinfHXK98pk.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"h1\",{children:\"What is Google Cloud VPN?\"}),/*#__PURE__*/e(\"p\",{children:\"Google Cloud VPN is a managed service offered by Google that lets organizations securely access the resources they host in their Google Cloud Platform (GCP) virtual private clouds (VPCs). Google Cloud VPN is used to securely connect a GCP VPC with other VPCs or non-GCP private networks (site-to-site or S2S connections).\"}),/*#__PURE__*/e(\"p\",{children:\"It is important to note that Google Cloud VPN does not support users accessing VPC resources (point-to-site or P2S connections). If you need a solution for remotely accessing your VPC, see the \u201CAlternatives to Google Cloud VPN\u201A section below.\"}),/*#__PURE__*/e(\"p\",{children:\"It\u2019s possible to set up your own VPN server within GCP, but the selling point of Google Cloud VPN is that it streamlines the involved process of setting up, configuring and deploying a VPN server.\"}),/*#__PURE__*/e(\"p\",{children:\"While the technical process of setting up a Google Cloud VPN may be easier, it is a paid service that comes with a complicated pricing model. Whereas the costs of running and managing your own VPN server software are normally pretty clear, Google Cloud VPN\u2019s pricing is based on a confusing array of variables which make it challenging to determine expected costs for budgeting purposes.\"}),/*#__PURE__*/e(\"p\",{children:\"In this article, we\u2019ll break down how Google Cloud VPN\u2019s pricing works, provide a convenient cost calculator, and review some alternatives to Google Cloud VPN.\"}),/*#__PURE__*/e(\"h1\",{children:\"How Google Cloud VPN Pricing Works\"}),/*#__PURE__*/e(\"p\",{children:\"You will incur Google Cloud VPN charges for 3 different items:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Cloud VPN gateway charge (time-based)\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Number of non-tunnel external IP addresses assigned to a VPN gateway (time-based)\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Data transfer charges for IPsec egress traffic (usage-based)\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Let\u2019s dive into each item and understand what they are and what drives their cost.\"}),/*#__PURE__*/e(\"h2\",{children:\"VPN Gateway Charge\"}),/*#__PURE__*/e(\"p\",{children:\"Google charges for each VPN gateway you have based on the number of tunnels you have attached to that gateway. A tunnel in this case is a secure connection that is established between a VPN gateway, and another VPN gateway associated with a different private network (which could be another GCP VPC or a non-GCP private network, such as an on-premises office network). Additionally, Google will not bill for tunnels if they are in certain states (for example, a tunnel is not billed while it is in a provisioning or deprovisioning state).\"}),/*#__PURE__*/e(\"p\",{children:\"For each tunnel, Google charges an hourly fee that is based on the Google Cloud region in which the VPN gateway is located.\"}),/*#__PURE__*/e(\"p\",{children:\"Google also offers what it calls \u201Chigh availability\u201A (HA) VPN gateways. These gateways have a 99.99% availability SLA, but require a pair of tunnels to be set up on each gateway. This means that if you are connecting two VPCs together, you will need a total of 4 tunnels (2 tunnels attached to each HA VPN gateway in each VPC). Each HA VPN gateway must also be in the same Google Cloud region.\"}),/*#__PURE__*/e(\"ul\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Each VPN tunnel: $0.05 to $0.075 per hour\"})})}),/*#__PURE__*/e(\"h2\",{children:\"Non-tunnel External IP Addresses\"}),/*#__PURE__*/e(\"p\",{children:\"Google also charges for each external IP address assigned to a VPN gateway, but only if the IP address is not used as a public IP address for a Cloud VPN tunnel. (Google also does not charge for static external IP addresses that are assigned to forwarding rules that send traffic to the VPN gateway.)\"}),/*#__PURE__*/e(\"p\",{children:\"For each external IP address, Google charges an hourly fee that is based on their standard external IP address pricing, which is:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Static and ephemeral IP addresses used on standard VM instances: $0.004 per hour\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Static and ephemeral IP addresses used on preemptible VM instances: $0.002 per hour\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Preemptible VM instances are cheaper VMs that use excess Compute capacity within Google Cloud, but are subject to being stopped if the excess computing power is needed by standard VM instances.\"}),/*#__PURE__*/e(\"p\",{children:\"Currently, charges are the same regardless of the region that the VPN gateway is located in, but Google may introduce differentiated pricing in future. In summary:\"}),/*#__PURE__*/e(\"ul\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Each non-tunnel external IP address: $0.002 to $0.004 per hour\"})})}),/*#__PURE__*/e(\"h2\",{children:\"Egress Data Transfer Charges\"}),/*#__PURE__*/e(\"p\",{children:\"Google charges data transfer fees for egress traffic (traffic exiting a VPC via a Cloud VPN gateway). Two pricing schemes exist depending on the destination of that traffic: outbound traffic destined for another Cloud VPN gateway uses VM-VM egress pricing rates, and outbound traffic destined for a VPN gateway outside of Google Cloud uses internet egress pricing rates. Fees are attributed to the project of the VM that is sending the traffic.\"}),/*#__PURE__*/e(\"p\",{children:\"If the source and destination Cloud VPN gateways are in the same Google Cloud region, egress traffic is billed as traffic between zones in the same region.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"VM-VM egress pricing\"}),\": VM-VM traffic is priced on a per GB basis, and the rate is determined by the region of the source VPN gateway and the region of the destination VPN gateway, as well as whether internal IP addresses or external IP addresses are being used. (Note that the IP address of the destination VPN gateway determines the destination location, not the IP address of the destination VM a connection is ultimately intended for.)\"]}),/*#__PURE__*/e(\"p\",{children:\"Egress traffic is cheapest when it is sent to the same Google Cloud zone or region. Inter-regional egress traffic within the same continent is more expensive ($0.01 to $0.08 per GB), and intercontinental egress traffic is more expensive still ($0.08 to $0.15 per GB).\"}),/*#__PURE__*/e(\"ul\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Amount of VM-VM egress data transferred: Up to $0.15 per GB\"})})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Internet egress pricing\"}),\": Google offers two tiers of internet egress pricing - Standard and Premium (Premium is used as the default unless you specify Standard explicitly). Both tiers price using different approaches.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"em\",{children:\"Premium Tier\"}),\" pricing charges a per GB rate which is based on: (1) the region the source VPN gateway is located in, (2) the location of the traffic\u2019s destination, and (3) the aggregate monthly bandwidth used, with lower rates available with greater monthly bandwidth use.\"]}),/*#__PURE__*/e(\"p\",{children:\"For example, if you have a Cloud VPN gateway in the Las Vegas region (us-west4), the first 1 TB of egress traffic bound for Australia in a month is charged at $0.19 per GB, and the next 9 TB is charged at $0.18 per GB.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"em\",{children:\"Standard Tier\"}),\" pricing charges a per GB rate which is based on: (1) the region the source VPN gateway is located in, and (2) the aggregate monthly bandwidth used, with lower rates available with greater monthly bandwidth use.\"]}),/*#__PURE__*/e(\"p\",{children:\"For example, if you have a Cloud VPN gateway in the Tokyo region (asia-northeast1), the first 10 TB of egress traffic in a month is charged at $0.11 per GB (regardless of destination), and the next 140 TB is charged a $0.075 per GB.\"}),/*#__PURE__*/e(\"p\",{children:\"(As of the date of publication, we note there is an inconsistency with units in Google\u2019s pricing page for the Standard Tier - it mentions that egress pricing is per GiB delivered, but the table and everywhere else on the page references GB, so we have assumed GB is the correct unit. GBs are smaller than GiBs.)\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Amount of internet egress data transferred (premium tier): $0.08 to $0.23 per GB\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Amount of internet egress data transferred (standard tier): $0.045 to $0.12 per GB\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"Google Cloud VPN Pricing Calculator\"}),/*#__PURE__*/t(\"p\",{children:[\"Because there are a lot of variables to account for when working out pricing, we\u2019ve made this \",/*#__PURE__*/e(s,{href:\"https://docs.google.com/spreadsheets/d/1LjZ10Bc9Zr7GUhq2UqTDYKvSLjRZGwrCCnZftccFPuk/edit?usp=sharing\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Google Cloud VPN Pricing Calculator\"})}),\" to help you estimate the fees you can expect to pay for your Cloud VPN.\"]}),/*#__PURE__*/e(\"img\",{alt:\"Google Cloud VPN Pricing Calculator\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,Lf8NFMjsg1qOGDACiQcVR5CnKYE.png?originalFilename=gcvpn-calculator.png\",src:\"https://framerusercontent.com/images/Lf8NFMjsg1qOGDACiQcVR5CnKYE.png\",srcSet:\"https://framerusercontent.com/images/Lf8NFMjsg1qOGDACiQcVR5CnKYE.png?scale-down-to=512 512w,https://framerusercontent.com/images/Lf8NFMjsg1qOGDACiQcVR5CnKYE.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Google Cloud VPN Pricing Calculator\"}),/*#__PURE__*/e(\"p\",{children:\"We note that pricing changes from time to time. The information in this article is accurate to the best of our knowledge at the date of writing, but you should check the Google Cloud website for the most up to date pricing.\"}),/*#__PURE__*/e(\"h2\",{children:\"Summary\"}),/*#__PURE__*/e(\"p\",{children:\"Google Cloud VPN cannot be used as a P2S VPN server. If you use it as a P2P VPN server, the charges you can expect to pay for Google Cloud VPN include:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Hourly fees for each VPN tunnel attached to a Cloud VPN gateway\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Hourly fees for each non-tunnel external IP address assigned to a Cloud VPN gateway\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Bandwidth fees for egress traffic from the VPC the VPN gateway is located in\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"Alternatives to Google Cloud VPN\"}),/*#__PURE__*/e(\"p\",{children:\"Google Cloud VPN is not your only option for establishing a secure way to access your GCP VPC environments. Moreover, one of the major limitations of Google Cloud VPN is that it cannot currently be used as a point-to-site VPN gateway that allows clients to securely connect into a GCP VPC.\"}),/*#__PURE__*/e(\"h2\",{children:\"Google Cloud Marketplace Products\"}),/*#__PURE__*/t(\"p\",{children:[\"The Google Cloud Marketplace contains a range of service providers who offer their own VPN software solutions that integrate with GCP. If you are looking for a P2S VPN gateway for Google Cloud, Google suggests in its \",/*#__PURE__*/e(s,{href:\"https://cloud.google.com/vmware-engine/docs/concepts-vpn-gateways\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"documentation\"})}),\" that customers may choose a marketplace vendor solution if a P2S VPN gateway is needed.\"]}),/*#__PURE__*/e(\"p\",{children:\"Each vendor offers their own pricing model, and a common deployment model is to offer VPN server software within a virtual machine (VM) that you can deploy into your VPC. OpenVPN Access Server is one such P2S-capable solution that is made available as an appliance. A subscription to the solution is purchased directly from OpenVPN and fees are based on the number of VPN connections needed, with a 5 connection minimum, and can be billed monthly or annually.\"}),/*#__PURE__*/e(\"h2\",{children:\"Manually Installed Products\"}),/*#__PURE__*/e(\"p\",{children:\"On the other side of the spectrum, you could manually install and configure a software solution on a VM within your GCP VPC. Although there may be no software licensing fee associated with this route (such as for open source software) or perhaps a one-off payment for a perpetual license (for commercial software), it does require a lot more effort and expertise in terms of setup and maintenance. Additionally, support may not be provided, so you may have to seek third party help if you run into problems (either paid, or from free sources like community forums).\"}),/*#__PURE__*/e(\"h2\",{children:\"Zero Trust Alternative\"}),/*#__PURE__*/t(\"p\",{children:[\"If you are ultimately looking for a remote access solution, also consider Zero Trust Network Access products that aren\u2019t based on VPN technology, such as Twingate. Twingate can be installed in a GCP VPC with a single line of code. Additionally, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/deployment-semi-automation\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"deployment can be automated\"})}),\" in a variety of ways.\"]}),/*#__PURE__*/e(\"p\",{children:\"Another advantage of Twingate is that, unlike VPN technologies, there\u2019s no concept of setting up site-to-site VPN tunnels to establish connectivity to your various network subnets. That reduces deployment complexity, as well as pricing complexity.\"}),/*#__PURE__*/t(\"p\",{children:[\"Zero Trust solutions have \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/zero-trust-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"distinct security advantages\"})}),\" over VPNs as well.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Twingate\u2019s Pricing Model\"}),/*#__PURE__*/e(\"p\",{children:\"A key benefit of using Twingate to secure remote access to your GCP environment is that the pricing model is straightforward. Twingate\u2019s pricing is based on a per user flat fee model. That means costs are predictable - and you don\u2019t need a spreadsheet to work them out!\"}),/*#__PURE__*/e(\"p\",{children:\"The only variables that impact Twingate\u2019s pricing are the number of users you have, the months or years you subscribe to the service (depending on whether you are billed monthly or annually), and the Twingate plan you select (Teams, Business or Enterprise). Twingate does not charge for bandwidth used or time connected. We even offer a free Starter plan if you want to try us out or if you only have a limited amount of infrastructure you need to secure.\"}),/*#__PURE__*/e(\"p\",{children:\"If you use Twingate with non-GCP environments, support for GCP comes at no extra cost. In fact, Twingate secures access to all major types of environments (AWS, GCP, Azure, and on-premises) you may have for the same fee, and the setup process is similar for each environment.\"}),/*#__PURE__*/e(\"h1\",{children:\"Simplify Your GCP Secure Remote Access Needs\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate aims to provide the \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/twingate-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"security benefits of a non-VPN Zero Trust solution\"})}),\" while making deployment and management of that solution \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/why-isnt-everyone-using-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"as simple as possible\"})}),\". Part of this is providing a simple to understand pricing model that won\u2019t unexpectedly blow out your budget.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=google-cloud-vpn-pricing\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact us\"})}),\" to learn more about how easy and cost effective implementing a modern zero trust solution can be.\"]})]})},{index:32,id:\"M3YUylLav\",[h]:!0,[d]:!1,[p]:\"Announcing Twingate's partnership with NextDNS\",[u]:\"Twingate and NextDNS\",[m]:\"nextdns-twingate\",[g]:\"\",[w]:\"Shelby Ludtke\",[f]:\"2022-10-24T00:00:00.000Z\",[y]:\"KI2UGBfh7\",[b]:T({src:\"https://framerusercontent.com/images/kfbzVFUYkSXjsAT0G8xtiIDUppk.png\",srcSet:\"https://framerusercontent.com/images/kfbzVFUYkSXjsAT0G8xtiIDUppk.png?scale-down-to=512 512w,https://framerusercontent.com/images/kfbzVFUYkSXjsAT0G8xtiIDUppk.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/kfbzVFUYkSXjsAT0G8xtiIDUppk.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/kfbzVFUYkSXjsAT0G8xtiIDUppk.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/kfbzVFUYkSXjsAT0G8xtiIDUppk.png\",srcSet:\"https://framerusercontent.com/images/kfbzVFUYkSXjsAT0G8xtiIDUppk.png?scale-down-to=512 512w,https://framerusercontent.com/images/kfbzVFUYkSXjsAT0G8xtiIDUppk.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/kfbzVFUYkSXjsAT0G8xtiIDUppk.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/kfbzVFUYkSXjsAT0G8xtiIDUppk.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"h1\",{children:\"NextDNS + Twingate\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate is excited to announce our partnership with \",/*#__PURE__*/e(s,{href:\"https://nextdns.io/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"NextDNS\"})}),\". Earlier this year, we launched Secure DNS, adding an extra layer of protection for end users (and helping CISOs sleep better at night). \"]}),/*#__PURE__*/e(\"p\",{children:\"We\u2019d made the conscious choice with our architecture to optimize for performance, sending traffic that doesn\u2019t need to be encrypted over the public internet instead. We knew a gap existed with this modern approach - while it\u2019s faster, it left DNS queries hanging out as an easy attack vector. Even the savviest of users could be vulnerable - your traveling CEO, hopping on airport WiFi, could be a target for malware and phishing attacks, cryptojacking, and more.\"}),/*#__PURE__*/e(\"p\",{children:\"While the HTTPS protocol has become all but ubiquitous, DNS queries are still very common; because they\u2019re unencrypted, they are easy to intercept and manipulate, thus putting users at risk of many types of attack. With our Secure DNS functionality, admins can specify a DoH resolver of their choice, mitigating risk while maintaining exceptional performance. \"}),/*#__PURE__*/e(\"h2\",{children:\"Why Did We Choose to Partner with NextDNS?\"}),/*#__PURE__*/e(\"p\",{children:\"NextDNS is a modern, independent DNS filtering service founded by Romain Cointepas and Olivier Poitrey of Dailymotion, and backed by organisations like Mozilla. An industry leader, NextDNS\u2019 threat detection is based on AI and simple, intuitive heuristics. Logical questions like \u201CWas this DNS registered within the last 30 days? Is this answer even authentic?\u201A are taken into account. The system is built to catch malicious domains earlier than classic security solutions and blocks over 15,000,000,000 queries a month. \"}),/*#__PURE__*/e(\"h2\",{children:\"But is it fast?\"}),/*#__PURE__*/e(\"p\",{children:\"Sharing Twingate\u2019s vision of clean, intuitive UI and SPEED, NextDNS\u2019 globally distributed infrastructure means a low-latency, high performance experience. Browsing is fast and - because everything is done at the DNS level, not on your device - there is lower impact on memory, battery life, and CPU. \"}),/*#__PURE__*/e(\"h2\",{children:\"Connecting NextDNS + Twingate\"}),/*#__PURE__*/e(\"p\",{children:\"Recall how DNS works with Twingate [https://www.twingate.com/docs/how-dns-works-with-twingate/] and how easy it is to set up Secure DNS? Twingate operates at the network level on a user\u2019s device; Twingate DoH will encrypt all DNS traffic regardless of the originating application with no configuration changes required other than running the Twingate Client. You can access DoH configuration settings from the Secure DNS page under Settings in the Admin console.\"}),/*#__PURE__*/e(\"p\",{children:\"With the toggle of a button, Twingate admins can enable Secure DNS and specify NextDNS as the DoH resolver; no additional app installation or network configuration is required. Profiles that are configured in NextDNS can be selected directly within the Twingate Admin Console. \"}),/*#__PURE__*/e(\"h2\",{children:\"Benefits\"}),/*#__PURE__*/e(\"p\",{children:\"We know admins like data; Twingate\u2019s aim is to continually improve visibility to help you react and remediate faster. The NextDNS integration allows admins to review real-time logs and analytics. Admins can view traffic associated with specific devices because the integration includes device details in requests back; Twingate will by default send the first name of the user as well as the device model. \"}),/*#__PURE__*/e(\"p\",{children:\"NextDNS is also incredibly customizable - unlimited block/allow lists, an option to set or override the DNS response for any domain, and unlimited configurations within your account, each with different settings. Admins can determine the threat model and fine-tune security based on business needs, ensuring your CEO is safe to keep working in the airport lounge and isn\u2019t sending you a frustrated email when he can\u2019t navigate to Salesforce. \"}),/*#__PURE__*/t(\"p\",{children:[\"For more information on how to configure the NextDNS integration, please refer to \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/nextdns-configuration\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"our documentation\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"About Twingate\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate provides a secure access platform that replaces VPNs with a modern Zero Trust Network Access (ZTNA) solution that combines enterprise-grade security with a consumer-grade user experience. It can be set up in less than 15 minutes and integrates with all major cloud providers and identity providers. Twingate helps companies move towards a Zero Trust architecture by tying every network event to an identity\u2014user, device, and service\u2014giving businesses modern control and visibility over activity across their entire network.This year Twingate raised $42M in Series B financing led by BOND and existing investors at WndrCo, 8VC, and SignalFire. Read more about CEO Tony Huie\u2019s vision for Twingate in this blog post: \",/*#__PURE__*/e(s,{href:\"https://framer.com/projects/series-b-announcement?utm_source=blog&utm_medium=blog&utm_campaign=series-b-announcement&utm_content=opal-twingate-supporting-blend\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Solving the usability problem to unlock Zero Trust adoption\"})}),\".\"]}),/*#__PURE__*/t(\"p\",{children:[\"Want to check out Twingate? Click \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=opal-twingate-supporting-blend\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\" for a personalized demo.\"]})]})},{index:33,id:\"srKvNnVpq\",[h]:!0,[d]:!1,[p]:\"How Blend uses Opal and Twingate to implement a holistic Zero Trust strategy\",[u]:\"How Blend uses Opal and Twingate\",[m]:\"opal-twingate-blend-case-study\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2022-10-12T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/uucwKKmJGgZZ9QvfW4U5iT2bD8g.png\",srcSet:\"https://framerusercontent.com/images/uucwKKmJGgZZ9QvfW4U5iT2bD8g.png?scale-down-to=512 512w,https://framerusercontent.com/images/uucwKKmJGgZZ9QvfW4U5iT2bD8g.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/uucwKKmJGgZZ9QvfW4U5iT2bD8g.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/uucwKKmJGgZZ9QvfW4U5iT2bD8g.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/uucwKKmJGgZZ9QvfW4U5iT2bD8g.png\",srcSet:\"https://framerusercontent.com/images/uucwKKmJGgZZ9QvfW4U5iT2bD8g.png?scale-down-to=512 512w,https://framerusercontent.com/images/uucwKKmJGgZZ9QvfW4U5iT2bD8g.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/uucwKKmJGgZZ9QvfW4U5iT2bD8g.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/uucwKKmJGgZZ9QvfW4U5iT2bD8g.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"h2\",{children:\"Featuring:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.linkedin.com/in/paulguthrie\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Paul Guthrie\"})}),\" - Information Security Officer\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.linkedin.com/in/matthew-jackson-34644284\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Matthew Jackson\"})}),\" - Security Operations and Architecture Manager\"]})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Challenges\"})}),/*#__PURE__*/e(\"p\",{children:\"When Matthew Jackson, Security Operations and Architecture Manager, first joined Blend, there were about 100 employees. At that time, the Blend security team knew everyone at the company. However, as the company grew, both Blend\u2019s headcount and number of applications scaled considerably. The security team increasingly ran into requests from new Blend employees seeking access or existing employees requesting applications the security team was not familiar with. It soon became extremely time-consuming for the security team to make well-informed decisions around access.\"}),/*#__PURE__*/e(\"p\",{children:\"In response, Paul Guthrie, Information Security Officer, and Matthew Jackson implemented a bold and strategic vision to re-imagine employee access at Blend. From their experience, they knew that:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Management needed to be delegated away from centralized security to teams who had more context\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Security teams needed to set automated guardrails\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Access needed to be self-service and easy to request\"})})]}),/*#__PURE__*/e(\"p\",{children:\"The goal was to improve security while reducing user friction. Using a metaphor, Blend was looking to build guardrails on a coastal highway: safety measures that don\u2019t block the view, but instead protect users and enable teams to go faster than they would otherwise. From their perspective, the best security programs are the ones no one even knows are in place. Security is enforced behind the scenes, gently nudging users in the right direction without introducing friction.\"}),/*#__PURE__*/e(\"p\",{children:\"One of the core problems that they faced was that provisioning access was a manual and expensive process. There was a lot of coordination required between centralized IT support teams and a host of different application owners and managers. This slowed down employees from getting access to the systems they needed.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Why did Blend adopt Opal\"})}),/*#__PURE__*/e(\"p\",{children:\"To solve this problem, Blend had initially built an internal tool so that end users could make access requests for SSH servers, databases, and IAM roles using Slack. This worked well but required constant attention and maintenance. Blend had an excellent group of security engineers who built amazing tools, but they needed to be focused on their own applications and intellectual properties.\"}),/*#__PURE__*/e(\"p\",{children:\"By adopting Opal and deprecating their internal tool, Blend was able to shift their talented security engineers towards Blend\u2019s product and trust Opal to build an industry-leading access management solution. With Opal, Blend employees can use a self-service app catalog to make requests. Admins can scale approvals and management through decentralization of system owners and managers. Lastly, the security team can configure resource-specific access policies based on the sensitivity of the resource.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Why did Blend adopt Twingate\"})}),/*#__PURE__*/e(\"p\",{children:\"Ahead of adopting Twingate, the Blend team was managing multiple VPN solutions with inconsistent rules around who had access to what cloud resources. This meant that there was a lack of transparency and consistency around employee access controls which led to an increased workload on support and IT as their company scaled in size.\"}),/*#__PURE__*/e(\"p\",{children:\"Given these pain points Paul and Matthew spun up efforts to simplify network access controls for users while also making the deployment process easier for their security team. They found both outcomes with Twingate and were drawn to the platform\u2019s ability to seamlessly integrate with Okta and infrastructure orchestration platforms like Terraform and Opal.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"How did Opal and Twingate Provide Value to Blend\"})}),/*#__PURE__*/e(\"p\",{children:\"With Twingate and Opal together, Blend is able to implement a zero trust architecture both inside its network and across its applications and infrastructure. Zero trust is a powerful concept in network security where, by default, no access is given and no source is trusted. Implementing zero trust is challenging but when done correctly, it fortifies organizations against attack by limiting their attack surface.\"}),/*#__PURE__*/e(\"p\",{children:\"Both Twingate and Opal empower Blend to manage access granularly. With Twingate, Blend is able to grant very specific and short-lived network access. Once users receive network access, they can use Opal to request very specific infrastructure and cloud IAM access. Security can implement guardrails by configuring resource-specific access policies based on the sensitivity of the resource.\"}),/*#__PURE__*/e(\"p\",{children:\"In addition, both Twingate and Opal reduce operational friction. In order for a security program to be successful, it must be easily and widely adopted. Employees should be able to use workflows for getting access without in-depth technical knowledge. With Twingate\u2019s desktop application, application owners and users can deploy the solution without diving into the nitty-gritty of VPN workflows. In fact, end users barely know that Twingate is running, but it\u2019s actually powering a lot of the background interactions. Similarly, with Opal, end users can leverage a simple, self-service app catalog to search and filter for the access they need. Opal also enables users to make and approve requests directly out of Slack or start sessions for RDS and SSH access using the command line interface.\"}),/*#__PURE__*/e(\"p\",{children:\"By implementing zero trust across its network, applications and infrastructure, Twingate and Opal have helped Blend become secure by default. By leveraging the infrastructure that the security team has put in place, whether its defining Twingate resources or using Opal workflows, users are able to access the tools and systems they need in a secure manner.\"}),/*#__PURE__*/e(\"h1\",{children:\"About Twingate:\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate provides a secure access platform that replaces VPNs with a modern Zero Trust Network Access (ZTNA) solution that combines enterprise-grade security with a consumer-grade user experience. It can be set up in less than 15 minutes and integrates with all major cloud providers and identity providers. Twingate helps companies move towards a Zero Trust architecture by tying every network event to an identity\u2014user, device, and service\u2014giving businesses modern control and visibility over activity across their entire network.\"}),/*#__PURE__*/t(\"p\",{children:[\"This year Twingate raised $42M in Series B financing led by BOND and existing investors at WndrCo, 8VC, and SignalFire. Read more about CEO Tony Huie\u2019s vision for Twingate in this blog post: \",/*#__PURE__*/e(s,{href:\"https://framer.com/projects/series-b-announcement?utm_source=blog&utm_medium=blog&utm_campaign=series-b-announcement&utm_content=opal-twingate-supporting-blend\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Solving the usability problem to unlock Zero Trust adoption\"})}),\".\"]}),/*#__PURE__*/t(\"p\",{children:[\"Want to check out Twingate? \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=opal-twingate-supporting-blend\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Click here\"})}),\" for a personalized demo.\"]}),/*#__PURE__*/e(\"h1\",{children:\"About Opal:\"}),/*#__PURE__*/t(\"p\",{children:[\"Opal is the \",/*#__PURE__*/e(s,{href:\"https://opal.dev/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"centralized authorization platform for IT and Infrastructure teams\"})}),\". Deeply integrated with developer infrastructure, SaaS applications, and custom internal tools, Opal enables companies to implement scalable access management.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Want to see it yourself? Contact \",/*#__PURE__*/e(s,{href:\"mailto:hello@opal.dev\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"hello@opal.dev\"})}),\" or \",/*#__PURE__*/e(s,{href:\"https://calendly.com/spencermann/opal-product-demo\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"book a meeting here\"})}),\" for a personalized demo.\"]})]})},{index:34,id:\"yA6h5S3uO\",[h]:!0,[d]:!1,[p]:\"How Opal and Twingate support Blend\",[u]:\"Opal and Twingate support Blend\",[m]:\"opal-twingate-supporting-blend\",[g]:\"\",[w]:\"Eugene Ling\",[f]:\"2022-10-05T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/uucwKKmJGgZZ9QvfW4U5iT2bD8g.png\",srcSet:\"https://framerusercontent.com/images/uucwKKmJGgZZ9QvfW4U5iT2bD8g.png?scale-down-to=512 512w,https://framerusercontent.com/images/uucwKKmJGgZZ9QvfW4U5iT2bD8g.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/uucwKKmJGgZZ9QvfW4U5iT2bD8g.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/uucwKKmJGgZZ9QvfW4U5iT2bD8g.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/uucwKKmJGgZZ9QvfW4U5iT2bD8g.png\",srcSet:\"https://framerusercontent.com/images/uucwKKmJGgZZ9QvfW4U5iT2bD8g.png?scale-down-to=512 512w,https://framerusercontent.com/images/uucwKKmJGgZZ9QvfW4U5iT2bD8g.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/uucwKKmJGgZZ9QvfW4U5iT2bD8g.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/uucwKKmJGgZZ9QvfW4U5iT2bD8g.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"h2\",{children:\"Featuring:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.linkedin.com/in/paulguthrie\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Paul Guthrie\"})}),\" - Information Security Officer\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.linkedin.com/in/matthew-jackson-34644284\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Matthew Jackson\"})}),\" - Security Operations and Architecture Manager\"]})})]}),/*#__PURE__*/e(\"div\",{children:\"  \"}),/*#__PURE__*/e(\"h1\",{children:\"Transcript:\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Paul Guthrie:\"}),\"Well, I joined Blend when it was, I think about 400 people. Matt, how many people when you joined?\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Matt Jackson:\"}),\"About a hundred I\u2019d say.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Paul Guthrie:\"}),\"Yeah. So when you\u2019re a hundred people, the security team knows, does person A need access to application B and you can make those decisions. As you grow past about 3-400 people, we start getting into situations where somebody says, I need access to X and we\u2019ve never heard of this employee, nor have we heard of this application that they\u2019re requesting access to. And so we can\u2019t make a good informed decision. I think the major pain point, which was really on the IT support teams, is that access was being granted. The IT support teams would have to essentially go and ask somebody, Can I have approval to add this user to your particular resource. It was a very manual and expensive process, because it\u2019s manual process subject to error.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Matt Jackson\"}),\"It\u2019s a pretty tangible pain point that we did have before Twingate and Opal working in tandem. It was the fact that we did have multiple VPNs, of multiple different architectures depending on their need, which would then cause a situation where people have to log in to see what they need it for A, then log in toVPN two to get to B and then back and forth, back and forth. It\u2019s a terrible user experience, right?\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Paul Guthrie:\"}),\"What Twingate allows us to do both internally, and externally within our network, is it allows us to tie together logical access and network access. So if you don\u2019t have logical access, you also don\u2019t have network access. And if you do have network access, you should also have logical access and actually be able to log in. And so it\u2019s essentially, it\u2019s zero trust because the default state is no one has access to anything. We firmly believe that you cannot scale a security program without automating. And this is where our involvement with both Twingate and Opal comes in, Opal allows us to provision and Twingate allows us to tie what we\u2019ve provisioned logically to network access. And so, that really enables us to have these flows where access really is fully automated.\"]}),/*#__PURE__*/e(\"h1\",{children:\"About Twingate:\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate provides a secure access platform that replaces VPNs with a modern Zero Trust Network Access (ZTNA) solution that combines enterprise-grade security with a consumer-grade user experience. It can be set up in less than 15 minutes and integrates with all major cloud providers and identity providers. Twingate helps companies move towards a Zero Trust architecture by tying every network event to an identity\u2014user, device, and service\u2014giving businesses modern control and visibility over activity across their entire network.\"}),/*#__PURE__*/t(\"p\",{children:[\"This year Twingate raised $42M in Series B financing led by BOND and existing investors at WndrCo, 8VC, and SignalFire. Read more about CEO Tony Huie\u2019s vision for Twingate in this blog post: \",/*#__PURE__*/e(s,{href:\"https://framer.com/projects/series-b-announcement?utm_source=blog&utm_medium=blog&utm_campaign=series-b-announcement&utm_content=opal-twingate-supporting-blend\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Solving the usability problem to unlock Zero Trust adoption\"})}),\".\"]}),/*#__PURE__*/t(\"p\",{children:[\"Want to check out Twingate? \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=opal-twingate-supporting-blend\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Click here\"})}),\" for a personalized demo.\"]}),/*#__PURE__*/e(\"h1\",{children:\"About Opal:\"}),/*#__PURE__*/t(\"p\",{children:[\"Opal is the \",/*#__PURE__*/e(s,{href:\"https://opal.dev/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"centralized authorization platform for IT and Infrastructure teams\"})}),\". Deeply integrated with developer infrastructure, SaaS applications, and custom internal tools, Opal enables companies to implement scalable access management.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Want to see it yourself? Contact \",/*#__PURE__*/e(s,{href:\"mailto:hello@opal.dev\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"hello@opal.dev\"})}),\" or \",/*#__PURE__*/e(s,{href:\"https://calendly.com/spencermann/opal-product-demo\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"book a meeting here\"})}),\" for a personalized demo.\"]})]})},{index:35,id:\"V0gftLoiU\",[h]:!0,[d]:!1,[p]:\"Announcing Twingate's AWS Marketplace listing and integration\",[u]:\"Twingate's AWS Marketplace\",[m]:\"aws-cloudwatch-lambda-tag-synchronisation\",[g]:\"\",[w]:\"Emrul Islam\",[f]:\"2022-09-26T00:00:00.000Z\",[y]:\"KI2UGBfh7\",[b]:T({src:\"https://framerusercontent.com/images/D4h2xBKan6tyNNJ0QxnaAc8jvhA.png\",srcSet:\"https://framerusercontent.com/images/D4h2xBKan6tyNNJ0QxnaAc8jvhA.png?scale-down-to=512 512w,https://framerusercontent.com/images/D4h2xBKan6tyNNJ0QxnaAc8jvhA.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/D4h2xBKan6tyNNJ0QxnaAc8jvhA.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/D4h2xBKan6tyNNJ0QxnaAc8jvhA.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/D4h2xBKan6tyNNJ0QxnaAc8jvhA.png\",srcSet:\"https://framerusercontent.com/images/D4h2xBKan6tyNNJ0QxnaAc8jvhA.png?scale-down-to=512 512w,https://framerusercontent.com/images/D4h2xBKan6tyNNJ0QxnaAc8jvhA.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/D4h2xBKan6tyNNJ0QxnaAc8jvhA.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/D4h2xBKan6tyNNJ0QxnaAc8jvhA.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Twingate is now also available in the \",/*#__PURE__*/e(s,{href:\"https://aws.amazon.com/marketplace/pp/prodview-arv444wdbyvrw?sr=0-1&ref_=beagle&applicationId=AWSMPContessa\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"AWS Marketplace\"})}),\" so organizations can obtain Twingate directly through AWS and benefit from simplified procurement and billing. Along with this update we\u2019re also pleased to announce that our AWS customers have even more choice to manage their Zero Trust access controls. Administrators can use our AWS \",/*#__PURE__*/e(s,{href:\"https://github.com/Twingate-Labs/tg-aws-tag-sync\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"CloudWatch Lambda integration\"})}),\" to both define resources and manage access directly from the AWS Management Console with AWS Resource Tags.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Twingate is a Zero Trust Remote Access solution that makes it easy for network administrators to provide secure fine-grained access to internal or private resources. With Twingate, resources become available only once administrators have deployed our solution within their networks \",/*#__PURE__*/e(\"em\",{children:\"and\"}),\" have defined accessible resources.\"]}),/*#__PURE__*/e(\"p\",{children:\"Twingate Administrators are able to manage access to resources using several approaches to suit their needs:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Managing group memberships through our Identity Provider integrations (using \",/*#__PURE__*/e(s,{href:\"https://www.simplecloud.info/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"SCIM\"})}),\")\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Assigning resources via our web-based Admin Console\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Using our \",/*#__PURE__*/e(s,{href:\"https://registry.terraform.io/providers/Twingate/twingate/latest/docs\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Terraform\"})}),\" or \",/*#__PURE__*/e(s,{href:\"https://www.pulumi.com/registry/packages/twingate\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Pulumi\"})}),\" providers\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Using \",/*#__PURE__*/e(s,{href:\"https://github.com/twingate-labs/tg-cli\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"tg\"})}),\", our Open Source Command Line Interface\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"The new \",/*#__PURE__*/e(s,{href:\"https://github.com/Twingate-Labs/tg-aws-tag-sync\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"AWS CloudWatch Lambda integration\"})}),\" - the topic of this blog post.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"The Lambda integration supports a range of AWS resources including EC2 instances, RDS databases and ECS services.\"}),/*#__PURE__*/e(\"h2\",{children:\"Demo video\"}),/*#__PURE__*/e(\"p\",{children:\"A video walkthrough is available here:\"}),/*#__PURE__*/e(\"h2\",{children:\"Use cases\"}),/*#__PURE__*/e(\"p\",{children:\"This approach can be useful where there\u2019s a need to allow AWS administrators to not only define the resources in AWS but manage remote access. This tooling can help delegate access control management especially in situations where AWS administrators may face internal friction or operational constraints in amending Terraform or Pulumi scripts or updating groups within an Identity Provider. For example:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Allowing teams to self-administer remote access to certain environments\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Enabling more decentralised access controls for some or all environments\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Using AWS as the \",/*#__PURE__*/e(\"em\",{children:\"Source of Truth\"}),\" for remote access.\"]})})]}),/*#__PURE__*/e(\"h2\",{children:\"Technical architecture\"}),/*#__PURE__*/t(\"p\",{children:[\"The technical approach is based on a serverless workflow that involves a Lambda function to listen to CloudWatch Events within AWS. When a Resource Tag is modified the Lambda will call the Twingate API to make a corresponding change to reflect the tag value.\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/e(\"h2\",{children:\"Deploying Twingate AWS Tag Sync\"}),/*#__PURE__*/t(\"p\",{children:[\"If you\u2019d like to create a sandboxed AWS environment to test out this feature, check out our \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/terraform-aws\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"AWS Terraform guide\"})}),\".\"]}),/*#__PURE__*/t(\"p\",{children:[\"The AWS Tag Sync functionality is currently in beta and available in \",/*#__PURE__*/e(s,{href:\"https://github.com/Twingate-Labs/tg-aws-tag-sync\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"the Twingate AWS Tag Sync repository\"})}),\" along with deployment instructions. Users need appropriate permissions in their AWS account to deploy the CloudFormation stack.\"]}),/*#__PURE__*/t(\"p\",{children:[\"You can follow the instructions in the repository or also use the \",/*#__PURE__*/e(s,{href:\"https://github.com/twingate-labs/tg-cli\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate CLI\"})}),\" tool to deploy the Lambda with the command: \",/*#__PURE__*/e(\"code\",{children:\"tg deploy aws tag-sync\"}),\" - this command will automate uploading the Lambda code to S3 and deploying the CloudFormation stack.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Get started with Twingate today\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate makes Zero Trust remote access easy for organisations to adopt. Our device posture checks, integrations into best-of-breed solutions such as \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/changelog/crowdstrike-integration\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"CrowdStrike Falcon\"})}),\", and \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/announcing-secure-dns\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Secure DNS\"})}),\" are just a few of the unrivalled set of integrated components that help organisations solve their Remote Access problems. \",/*#__PURE__*/e(s,{href:\"https://auth.twingate.com/signup?utm_source=blog&utm_medium=blog&utm_campaign=managing-aws-resources\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Sign up for free\"})}),\" or \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=managing-aws-resources\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"request a demo\"})}),\" today!\"]}),/*#__PURE__*/t(\"p\",{children:[\"If you\u2019re already leveraging AWS, you can also sign up directly through our \",/*#__PURE__*/e(s,{href:\"https://aws.amazon.com/marketplace/pp/prodview-arv444wdbyvrw?sr=0-1&ref_=beagle&applicationId=AWSMPContessa\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Marketplace listing\"})}),\".\"]})]})},{index:36,id:\"Ojy53a74y\",[h]:!0,[d]:!1,[p]:\"How to Use WebAuthn for Stronger Authentication on the Web\",[u]:\"How to Use WebAuthn\",[m]:\"what-is-webauthn\",[g]:\"\",[w]:\"Paul Andre de Vera\",[f]:\"2022-09-23T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/6LCf98KrxVBQdDAsdPj0IZo6g.png\",srcSet:\"https://framerusercontent.com/images/6LCf98KrxVBQdDAsdPj0IZo6g.png?scale-down-to=512 512w,https://framerusercontent.com/images/6LCf98KrxVBQdDAsdPj0IZo6g.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/6LCf98KrxVBQdDAsdPj0IZo6g.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/6LCf98KrxVBQdDAsdPj0IZo6g.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/6LCf98KrxVBQdDAsdPj0IZo6g.png\",srcSet:\"https://framerusercontent.com/images/6LCf98KrxVBQdDAsdPj0IZo6g.png?scale-down-to=512 512w,https://framerusercontent.com/images/6LCf98KrxVBQdDAsdPj0IZo6g.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/6LCf98KrxVBQdDAsdPj0IZo6g.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/6LCf98KrxVBQdDAsdPj0IZo6g.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"How to Use WebAuthn for Stronger Authentication on the Web\"}),/*#__PURE__*/e(\"p\",{children:\"Web Authentication (WebAuthn) APIs promise to make security on the web easier for users, developers, and administrators by eliminating passwords and their many security limitations. Users can stop dealing with complex, hard-to-remember passwords. Businesses can stop protecting password databases and implement more robust authentication techniques.\"}),/*#__PURE__*/e(\"p\",{children:\"This overview of WebAuthn will explain how this industry standard works, its advantages over other authentication approaches, and some of the challenges WebAuthn still faces on the path to adoption.\"}),/*#__PURE__*/e(\"h1\",{children:\"What is WebAuthn?\"}),/*#__PURE__*/e(\"p\",{children:\"The World Wide Web Consortium (W3C) created WebAuthn to address a fundamental challenge to online security: passwords. Software-as-a-Service and other web applications rely on passwords to authenticate users and protect access to user data. However, the combination of human nature and poor information security hygiene makes passwords a common vector for cyberattacks.\"}),/*#__PURE__*/e(\"p\",{children:\"Multi-factor authentication (MFA) is one solution to this problem. Rather than relying solely on a password, MFA adds at least one more security check, such as a biometric scanner.\"}),/*#__PURE__*/t(\"p\",{children:[\"Traditional enterprise security models can enforce MFA by issuing company-managed devices and security keys. \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/byod\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"BYOD\"})}),\" and other trends, however, make enterprise users look more like the general public. They can access cloud resources from anywhere on any device. Designing an authentication system that covers all possible devices quickly becomes very complex.\"]}),/*#__PURE__*/e(\"p\",{children:\"Building on work from Google and Yubico, the Fast IDentity Online (FIDO) Alliance created an open standard for authentication with a USB security key. These devices use cryptography and an authentication protocol to create unique credentials that are more secure than passwords.\"}),/*#__PURE__*/t(\"p\",{children:[\"To push these standards beyond one device class, the FIDO Alliance handed their APIs to the W3C, which published \",/*#__PURE__*/e(s,{href:\"https://www.w3.org/TR/2019/REC-webauthn-1-20190304\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"\u201CWeb Authentication: An API for accessing Public Key Credentials\u201A\"})}),\" in 2019. This web authentication API lets companies build passwordless and multi-factor authentication systems that work with any compatible browser, device, and authentication method.\"]}),/*#__PURE__*/e(\"h1\",{children:\"How does WebAuthn work?\"}),/*#__PURE__*/e(\"p\",{children:\"From the end user\u2019s perspective, the WebAuthn experience isn\u2019t much different from what they do now. In most consumer applications, the user associates their device with a web service during account creation and then uses their device\u2019s authentication system to log in. Enterprises can implement more thorough registration and authentication methods.\"}),/*#__PURE__*/e(\"h2\",{children:\"WebAuthn authenticators\"}),/*#__PURE__*/e(\"p\",{children:\"Technological advances have let manufacturers embed powerful cryptoprocessors in their products. These embedded security chips create a protected environment for the generation of public-private cryptographic key pairs and the secure storage of private keys. Cryptoprocessors in modern computers and smartphones, such as Apple\u2019s Secure Enclave and the PC industry\u2019s Trusted Platform Module (TPM), serve as platform authenticators. Among other benefits, these security modules centrally manage cryptographic credentials.\"}),/*#__PURE__*/e(\"p\",{children:\"Of the three authentication categories \u2014 knowledge, possession, and inherence \u2014 knowledge is the easiest to compromise. WebAuthn\u2019s APIs make it easier to implement the other two factors.\"}),/*#__PURE__*/e(\"p\",{children:\"Possession factors include TOTP generators such as an authenticator app or a USB security fob. High-security environments might also use security cards or other devices that users carry.\"}),/*#__PURE__*/e(\"p\",{children:\"Inherence factors use biometrics to recognize physical aspects of the user. For example, iPhones use either TouchID or FaceID to recognize a user. Secure environments may use retinal scanners to control access.\"}),/*#__PURE__*/e(\"h2\",{children:\"WebAuthn registration\"}),/*#__PURE__*/e(\"p\",{children:\"During registration, authenticators on user devices generate public key credentials and send them to the site\u2019s web servers. Since the public key credential ID ties the device to the web service, nobody else can use it.\"}),/*#__PURE__*/e(\"p\",{children:\"A trust on first use (TOFU) approach is appropriate for low-risk public web services and enterprise applications that do not require identity verification. When users arrive at a WebAuthn-enabled account creation page, the registration process will follow these steps:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Web server sends an account creation page to the browser.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Browser displays the page and runs the WebAuthn Relying Party script.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Relying Party script sends a message to the user\u2019s browser.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Browser connects to an authenticator, such as a fingerprint reader, on the user\u2019s device.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"User performs an action appropriate to the authenticator, such as swiping a fingerprint reader.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Authenticator generates a cryptographic public-private key pair and sends a response, including the public key, to the browser.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Browser gives the public key credential to the Relying Party script.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Relying Party script forwards the public key credential to the web server.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Web server records the public key credential in the user\u2019s account.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Financial websites or enterprise resources need more options to protect their sensitive data. An out-of-band identity verification process or the registration of multiple WebAuthn authenticators would improve security.\"}),/*#__PURE__*/e(\"h2\",{children:\"WebAuthn authentication\"}),/*#__PURE__*/e(\"p\",{children:\"In the case of low-risk applications, a simple WebAuthn authentication process follows these steps:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Web server sends a login page to the browser\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Browser displays page and runs the WebAuthn Relying Party script.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"User enters their username in the web form.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Relying Party script asks the browser for an authentication assertion.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Browser connects to the authenticator.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"User takes actions appropriate to the authenticator.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Authenticator responds to the browser.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Browser sends the assertion to the Relying Party script.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Relying Party script forwards the assertion to the web server.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Web server verifies the assertion with the user\u2019s public key and authenticates the user.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"To provide access to enterprise applications and other sensitive resources, companies can use WebAuthn to implement MFA. For example, a web service could require a fingerprint scan on a second device after users enter a temporary one-time password generated on their laptop.\"}),/*#__PURE__*/e(\"h1\",{children:\"Benefits of WebAuthn\"}),/*#__PURE__*/e(\"p\",{children:\"WebAuthn\u2019s standards take much of the complexity out of online authentication, making strong security more straightforward for users and developers alike. As a result, WebAuthn\u2019s adoption delivers three core benefits:\"}),/*#__PURE__*/e(\"h2\",{children:\"Widespread support\"}),/*#__PURE__*/e(\"p\",{children:\"Google Chrome, Mozilla Firefox, Microsoft Edge, Apple Safari, and other popular web browsers support WebAuthn. In addition, modern smartphones and computers include the hardware needed to generate WebAuthn\u2019s cryptographic key pairs.\"}),/*#__PURE__*/e(\"p\",{children:\"Consumers and business users benefit from having WebAuthn support on the personal or business devices they use every day.\"}),/*#__PURE__*/e(\"p\",{children:\"Businesses also benefit from WebAuthn\u2019s cross-platform support. The standard\u2019s APIs allow authentication through various devices and authenticators without needing customized development. In most cases, companies can be confident that people with web access have technology that supports strong authentication.\"}),/*#__PURE__*/e(\"h2\",{children:\"Improved user experience\"}),/*#__PURE__*/e(\"p\",{children:\"WebAuthn removes many of the hassles that strong password security imposes on users. They don\u2019t have to create or remember complex passwords that expire every few months. Consumers get a better sense of security when doing business online. Business users can use the same authentication process across their company\u2019s web apps.\"}),/*#__PURE__*/e(\"p\",{children:\"Enterprise benefits from a streamlined user experience include reducing a common reason for help desk calls \u2014 forgotten passwords. For consumer-facing web apps, WebAuthn\u2019s passwordless logins lower abandonment rates during registration and improve customer retention.\"}),/*#__PURE__*/e(\"h2\",{children:\"Stronger security\"}),/*#__PURE__*/e(\"p\",{children:\"Weak, recycled passwords have become a thing of the past. WebAuthn creates stronger credentials by taking human nature out of the security equation. Cryptographic credentials that pair an authenticator with a web service are inherently difficult to hack.\"}),/*#__PURE__*/e(\"p\",{children:\"By going passwordless, companies do not need to store \u2014 or protect \u2014 shared secrets because WebAuthn pushes authentication to edge devices. Each authenticator\u2019s private key credentials stay on the device. Only the public key gets shared.\"}),/*#__PURE__*/e(\"p\",{children:\"WebAuthn lets companies require multi-factor authentication without a bespoke solution\u2019s development and maintenance burden. Using the right API call is all it takes. And by making MFA easier to use, WebAuthn improves user compliance with strong security practices.\"}),/*#__PURE__*/e(\"h2\",{children:\"WebAuthn vs. other authentication methods\"}),/*#__PURE__*/e(\"p\",{children:\"WebAuthn\u2019s simplicity, ubiquity, and security offer significant improvements over other authentication methods.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Passwords\"}),\" - Since people cannot remember complex passwords, they form all sorts of bad security habits. An analysis of 1.7 billion credentials stolen in 2021 found that \",/*#__PURE__*/e(s,{href:\"https://www.consumerreports.org/digital-security/tips-for-better-passwords-a3656305306\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"nearly two-thirds of victims used the same password across multiple accounts\"})}),\".\"]}),/*#__PURE__*/t(\"p\",{children:[\"When hackers can\u2019t buy the passwords they need, they can always phish for them. Social engineering techniques are so effective that a recent study found \",/*#__PURE__*/e(s,{href:\"https://venturebeat.com/security/22-very-bad-stats-on-the-growth-of-phishing-ransomware\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"emails account for 90% of initial attacks\"})}),\", driving a 46% increase in phishing attacks in 2021.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"One-time passwords (OTPs)\"}),\" - An easy way to implement MFA is by sending users one-time passwords via SMS messaging or email. However, OTPs can make websites less secure. The same social engineering attacks that let hackers steal passwords can open access to a person\u2019s email and mobile accounts allowing them to intercept OTPs and access the protected account.\"]}),/*#__PURE__*/e(\"h1\",{children:\"The Challenges of WebAuthn\"}),/*#__PURE__*/e(\"p\",{children:\"Published three years ago, WebAuthn is still a relatively new standard. Platform and hardware developers quickly added WebAuthn compatibility to their operating systems, browsers, and authenticators. Despite this early effort, WebAuthn is not as universal or complete as it first appears.\"}),/*#__PURE__*/e(\"h2\",{children:\"Inconsistent device support\"}),/*#__PURE__*/t(\"p\",{children:[\"Manufacturers of client devices do not implement security features the same way. Inexpensive Android devices, for example, may not have biometric sensors. Computers running Windows, especially consumer models, often shipped without TPM or with their TPM disabled. Microsoft addresses this by making TPM 2.0 a Windows 11 requirement, but it will take time for this to make a difference. A year after its launch, \",/*#__PURE__*/e(s,{href:\"https://www.techradar.com/news/windows-11-continues-to-struggle-to-attract-new-users\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Windows 11 is only 23% of the Windows installed base\"})}),\".\"]}),/*#__PURE__*/e(\"p\",{children:\"As the number of exceptions grows, implementing a consistent WebAuthn solution becomes more complicated. Companies that want stronger authentication must design solutions that address the capabilities of any devices that access their web services.\"}),/*#__PURE__*/e(\"h2\",{children:\"Using multiple devices is complicated\"}),/*#__PURE__*/e(\"p\",{children:\"WebAuthn registration creates a credential that links a web service with a device\u2019s authenticator. However, this credential does not include the user\u2019s identity. When a user tries to access the service from a different device or another authenticator on the original device, the WebAuthn authentication process fails. Moreover, the standard does not provide a recovery method should a user lose their device.\"}),/*#__PURE__*/e(\"p\",{children:\"One solution is to create separate credentials for all devices and authenticators during the registration process. This approach is appropriate for onboarding new employees when they and their devices are on-premises. Multi-device registration makes less sense for consumers, contractors, and remote users. Another out-of-band solution would be to let a user register a new device after verification through the original device.\"}),/*#__PURE__*/t(\"p\",{children:[\"Several proposals would refine WebAuthn\u2019s specifications to address these usability issues. Apple, for example, is turning its iCloud Keychain into a \",/*#__PURE__*/e(s,{href:\"https://arstechnica.com/information-technology/2022/03/a-big-bet-to-kill-the-password-for-good\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"proprietary credential manager\"})}),\" that would share WebAuthn credentials across a user\u2019s Apple products. The FIDO Alliance has proposed \",/*#__PURE__*/e(s,{href:\"https://media.fidoalliance.org/wp-content/uploads/2022/03/How-FIDO-Addresses-a-Full-Range-of-Use-Cases.pdf\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"platform-agnostic standards\"})}),\" to let WebAuthn create multi-device credentials and use Bluetooth to turn smartphones into roaming authenticators.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Slow adoption by public and private web services\"}),/*#__PURE__*/e(\"p\",{children:\"These outstanding compatibility and usability may not be a concern for companies that can impose strict controls over device usage. For companies that must support a wide range of use cases, WebAuthn\u2019s challenges may be too expensive to address. They cannot eliminate their password systems without excluding part of their user base. Rather than developing and maintaining parallel authentication processes, resources may be better spent securing their current password authentication system.\"}),/*#__PURE__*/e(\"h1\",{children:\"Despite hurdles, the case for WebAuthn is strong\"}),/*#__PURE__*/e(\"p\",{children:\"While WebAuthn adoption may not be as advanced as the standard\u2019s promoters hoped, its benefits are compelling. As more websites stop using passwords to verify their users\u2019 identities, online security will improve dramatically. Passwordless authentication that is as easy to implement as it is easy to use would create a seamless experience for people online while boosting their confidence that websites will protect their personal information.\"})]})},{index:37,id:\"U4wMfgIpR\",[h]:!0,[d]:!1,[p]:\"How to implement dynamic access controls with Opal, Okta and Twingate\",[u]:\"Opal, Okta and Twingate dynamic access controls\",[m]:\"implement-dynamic-access-controls-opal-twingate\",[g]:\"\",[w]:\"Emrul Islam\",[f]:\"2022-09-22T00:00:00.000Z\",[y]:\"nwIUHELao\",[b]:T({src:\"https://framerusercontent.com/images/1lPDuBhKjXXezkivW36Vvzoc1U.png\",srcSet:\"https://framerusercontent.com/images/1lPDuBhKjXXezkivW36Vvzoc1U.png?scale-down-to=512 512w,https://framerusercontent.com/images/1lPDuBhKjXXezkivW36Vvzoc1U.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/1lPDuBhKjXXezkivW36Vvzoc1U.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/1lPDuBhKjXXezkivW36Vvzoc1U.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/1lPDuBhKjXXezkivW36Vvzoc1U.png\",srcSet:\"https://framerusercontent.com/images/1lPDuBhKjXXezkivW36Vvzoc1U.png?scale-down-to=512 512w,https://framerusercontent.com/images/1lPDuBhKjXXezkivW36Vvzoc1U.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/1lPDuBhKjXXezkivW36Vvzoc1U.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/1lPDuBhKjXXezkivW36Vvzoc1U.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Today, we\u2019re excited to announce the new Opal + Twingate integration! \",/*#__PURE__*/e(s,{href:\"https://opal.dev/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Opal\"})}),\" makes it easy for companies to implement least privilege while improving productivity.\"]}),/*#__PURE__*/e(\"p\",{children:\"Trusted by forward thinking enterprises, such as Blend, Marqeta, and Databricks, Opal is a modern solution for identity governance and privileged access management. Employees can easily use Opal\u2019s permissions catalog to make self-service requests or generate auto-expiring credentials for cloud infrastructure. Admins can configure powerful security and governance policies on critical resources. Deployed without agents or proxies, Opal can be set up in the cloud or on-premise in hours.\"}),/*#__PURE__*/e(\"p\",{children:\"With the Opal + Twingate integration you can:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Allow users to request short-lived just-in-time access to infrastructure and applications from web and Slack\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Delegate approvals and management to system owners and managers with the most context\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Configure powerful governance policies for sensitive access\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Automatically escalate and revoke privileged resource access based on on-call schedules e.g.\",/*#__PURE__*/e(s,{href:\"https://opal.dev/integration/pagerduty\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\" PagerDuty\"})}),\" or\",/*#__PURE__*/e(s,{href:\"https://opal.dev/integration/opsgenie\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\" Opsgenie\"})})]})})]}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Twingate and Opal: Better Together\"})}),/*#__PURE__*/e(\"p\",{children:\"Customers have leveraged Twingate and Opal together for a holistic zero-trust architecture both inside their network and across their applications and infrastructure. Zero trust is a powerful concept in network security where, by default, no access is given and no source is trusted. Implementing zero trust is challenging but when done correctly, it fortifies organizations against attack by limiting their attack surface.\"}),/*#__PURE__*/e(\"p\",{children:\"Before Twingate, teams would manage multiple VPN solutions with inconsistent rules around who has access \u2013 resulting in a lack of transparency and consistency. Twingate enables companies to scale by simplifying network access controls with an easy deployment process that is seamlessly integrated with Okta and Terraform.\"}),/*#__PURE__*/e(\"p\",{children:\"As with zero trust solutions, Opal implements the principles of limiting and continuously verifying access. Opal\u2019s focus is managing resources outside the network layer, including developer infrastructure, identity provider groups and third-party SaaS roles. With Opal, employees are assumed by default to be unvetted. Access, for the most part, is not automatically granted and must be manually requested using Opal\u2019s seamless workflows via web or Slack. Once granted, access is continuously re-certified, either because the access grant was short-lived or as part of periodic compliance reviews.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,MMe1GEUxvvnVUVEZtAyEPPzsW0M.gif?originalFilename=dac-with-opal-twingate.gif\",src:\"https://framerusercontent.com/images/MMe1GEUxvvnVUVEZtAyEPPzsW0M.gif\",srcSet:\"https://framerusercontent.com/images/MMe1GEUxvvnVUVEZtAyEPPzsW0M.gif?scale-down-to=512 512w,https://framerusercontent.com/images/MMe1GEUxvvnVUVEZtAyEPPzsW0M.gif?scale-down-to=1024 1024w,https://framerusercontent.com/images/MMe1GEUxvvnVUVEZtAyEPPzsW0M.gif 1280w\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"How to use Twingate and Opal\"})}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Install the\",/*#__PURE__*/e(s,{href:\"https://opal.dev/integration/okta\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\" Opal integration for Okta\"})})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Setup your\",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/okta-configuration\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\" Twingate Okta integration\"})})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Start granting just-in-time access!\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"Any questions? Feel free to reach out and we\u2019re happy to\",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=partner&utm_campaign=opal\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\" schedule time for a demo\"})}),\"!\"]})]})},{index:38,id:\"vQkIkVOxw\",[h]:!0,[d]:!1,[p]:\"Why Zero Trust Network Access is Necessary for Third-party and Contractor Access\",[u]:\"ZTNA for Third-party\",[m]:\"ztna-is-necessary-for-third-party\",[g]:\"\",[w]:\"Paul Andre de Vera\",[f]:\"2022-09-15T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/p8QqSODybpW2TgHCWDl58kGTcrc.png\",srcSet:\"https://framerusercontent.com/images/p8QqSODybpW2TgHCWDl58kGTcrc.png?scale-down-to=512 512w,https://framerusercontent.com/images/p8QqSODybpW2TgHCWDl58kGTcrc.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/p8QqSODybpW2TgHCWDl58kGTcrc.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/p8QqSODybpW2TgHCWDl58kGTcrc.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/p8QqSODybpW2TgHCWDl58kGTcrc.png\",srcSet:\"https://framerusercontent.com/images/p8QqSODybpW2TgHCWDl58kGTcrc.png?scale-down-to=512 512w,https://framerusercontent.com/images/p8QqSODybpW2TgHCWDl58kGTcrc.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/p8QqSODybpW2TgHCWDl58kGTcrc.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/p8QqSODybpW2TgHCWDl58kGTcrc.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Traditional access control systems were designed for employees on managed devices. Today\u2019s blended workforces, however, force administrators to manage a shifting mix of employees and contractors who could be anywhere in the world. Securing contractor access is a particular concern for DevOps teams. Supply chain attacks are accelerating which makes developers primary targets for credential theft.\"}),/*#__PURE__*/t(\"p\",{children:[\"We will look at why cybercriminals are ramping up supply chain attacks, how credential theft puts DevOps teams at risk, and how legacy VPN technologies make the situation worse. Fortunately, the modern approach of Zero Trust Network Access (\",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"ZTNA\"})}),\") offers a path to better access and better security.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Contractors and securing your supply chain\"}),/*#__PURE__*/e(\"p\",{children:\"Compromising an IT supply chain lets hackers attack hundreds or thousands of organizations by using malicious code to open backdoors into their victims\u2019 networks. Once in, the hackers use lateral movement techniques to expand their foothold and plan the next phase of the attack.\"}),/*#__PURE__*/e(\"p\",{children:\"This multiplier effect drove a 300% increase in supply chain attacks in 2021 alone. Some of the highest-profile supply chain attacks of recent years include:\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"SolarWinds (2020)\"}),\" - State-sponsored hackers gained access to SolarWinds\u2019 network management software, potentially gaining access to more than 18,000 organizations, including US federal agencies. The resulting cleanup costs may have exceeded $100 billion.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Kaseya (2021)\"}),\" - Another network management software developer, Kaseya, was breached a year later letting hackers penetrate networks at hundreds of small and medium-sized businesses. The resulting ransomware demands ranged from $45,000 to as much as $11 million.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Vulnerabilities in developer workforces\"}),/*#__PURE__*/e(\"p\",{children:\"Although some supply chain attacks, such as Kaseya, begin with technical vulnerabilities, many start with stolen credentials. Compromised Office365 accounts gave hackers their first entry into SolarWinds\u2019 networks. Stolen credentials are nothing new \u2014 IBM reports that compromised accounts are the most common vector for cyberattacks in general. But access to a company\u2019s codebase makes developers\u2019 credentials juicy targets.\"}),/*#__PURE__*/e(\"p\",{children:\"This is where today\u2019s software development workforces make things complicated. Developers could be employees or contractors. They could work from a managed device or a personal device. They could be in the office or at home or at a coffee shop anywhere in the world. This flexibility lets businesses attract the best talent. But it makes network security extremely complex \u2014 especially with the weaknesses of technologies like VPN.\"}),/*#__PURE__*/e(\"p\",{children:\"Integrated into the physical and logical network architecture, these technologies were designed at a time when networks were more centralized and controlled. Today\u2019s decentralized, cloud environments push these legacy technologies to their breaking point.\"}),/*#__PURE__*/e(\"p\",{children:\"For example, giving contractors remote access through VPN increases security risks. VPN was created to give access to entire networks \u2014 and it still does. Letting contractors through a VPN gateway gives them access to any resource and service on that network. Should hackers compromise contractor credentials or devices, they get the same freedom of movement.\"}),/*#__PURE__*/e(\"p\",{children:\"Micro-segmentation can mitigate VPN\u2019s weaknesses. But sub-divided networks are expensive and difficult to manage. In addition, every change to any user\u2019s access permissions requires updates and synchronization across the network. Micro-segmentation simply is not compatible with large, dynamic development teams.\"}),/*#__PURE__*/e(\"h1\",{children:\"The need for least privilege access\"}),/*#__PURE__*/e(\"p\",{children:\"A modern network access approach makes micro-segmentation simple to implement and manage. ZTNA uses the principle of least privilege to provide granular control over resource access. Typically, a contractor only needs to use a few specific resources. Policies based on least privilege give contractors the access they need while blocking them from anything else.\"}),/*#__PURE__*/e(\"p\",{children:\"ZTNA systems decouple access control from the physical network which makes managing contractors much easier. When administrators update a user\u2019s permissions, the changes go into effect immediately without impacting the network.\"}),/*#__PURE__*/e(\"p\",{children:\"ZTNA\u2019s advantages over VPN do not stop there. Legacy technologies require separate systems to manage on-premises access and remote access to private networks. Each cloud platform and service has its own VPN technology. ZTNA replaces these redundant systems with a universal solution that applies consistent secure access policies to all users, resources, and networks.\"}),/*#__PURE__*/e(\"h1\",{children:\"Protecting the supply chain with Zero Trust Network Access\"}),/*#__PURE__*/e(\"p\",{children:\"With more control and simpler administration, ZTNA helps protect a company\u2019s own codebase from direct attack. But the company has no control over the security of its IT supply chain. As we\u2019ve seen, even the largest providers are vulnerable to attack. Dependencies based on under-supported open-source projects further expand supply chain risk.\"}),/*#__PURE__*/e(\"p\",{children:\"\u201CShifting left\u201A to bring supply chain security into DevOps earlier can help. So can layered defenses such as software composition analysis (SCA) and software bill of materials (SBOM). But what happens when these defenses fail?\"}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust is based on a fundamental assumption that failure isn\u2019t just an option \u2014 it\u2019s already happened. Assuming breaches have already happened shapes every part of a Zero Trust system.\"}),/*#__PURE__*/e(\"h2\",{children:\"Eliminate visibility\"}),/*#__PURE__*/e(\"p\",{children:\"ZTNA solutions deploy proxies in front of each protected resource. These proxies do not broadcast their locations and ignore all incoming requests, effectively rendering the protected resources invisible on any network, private or public.\"}),/*#__PURE__*/e(\"h2\",{children:\"Authenticate every user every time\"}),/*#__PURE__*/e(\"p\",{children:\"ZTNA requires every user to authenticate any time they request access. This is true no matter who the user is or where they are connecting from. Executives, managers, developers, and contractors must all verify their identities before the ZTNA system will grant them access.\"}),/*#__PURE__*/e(\"h2\",{children:\"Evaluate context\"}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust authentication requires more than identity verification. Everything from the time of day to the user\u2019s location or the source network must be considered. Twingate\u2019s ZTNA solution, for example, lets companies control access based on device security posture factors including:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Operating system\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Hard drive encryption\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Screen lock\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Firewall\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Antivirus\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Biometric\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"Certificate-based attestation and integrations with \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/what-is-device-posture-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"EDR\"})}),\" and \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/byod\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"MDM\"})}),\" solutions will make Twingate\u2019s context evaluations more robust while letting companies use their existing security stack.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Encrypted, least-privileged access\"}),/*#__PURE__*/e(\"p\",{children:\"Even when authenticated based on identity and context, the user does not get direct access to the protected resource. Instead, the ZTNA system facilitates an encrypted tunnel between a proxy client on the user\u2019s device and the proxy protecting the resource. All information about the resource proxy disappears once the session ends. A new session must go through the ZTNA system \u2014 with another round of authentication.\"}),/*#__PURE__*/e(\"p\",{children:\"Session-by-session authentication and one-to-one proxied tunnels let companies implement role-based policies that provide granular control over resource access.\"}),/*#__PURE__*/e(\"h2\",{children:\"Eliminate lateral movement\"}),/*#__PURE__*/e(\"p\",{children:\"Explicit verification with each connection request, proxied encrypted tunnels, and granular least-privileged access controls limit the impact of supply chain attacks. Hackers may gain access to one resource, but they cannot see other resources or networks. As a result, ZTNA neutralizes lateral movement techniques and significantly reduces the attack\u2019s blast radius.\"}),/*#__PURE__*/e(\"h1\",{children:\"How to adopt Zero Trust Network Access for Contractors\"}),/*#__PURE__*/e(\"p\",{children:\"Migrating from decades-old network access technologies to a modern Zero Trust solution does not have to disrupt your organization. ZTNA best practices encourage you to start small and expand in stages.\"}),/*#__PURE__*/e(\"p\",{children:\"Third-party access is one of the best places to start. Nothing changes for other users during this first stage. ZTNA solutions like Twingate require no changes to your existing network or resources. And moving contractors from the old VPN system to your Twingate ZTNA solution delivers instant results:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Contractors lose access to most networks and resources.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Contractors keep access to the resources they do need.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Administration is easier since access is not tied to the network.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Contractors\u2019 experience improves without the headaches of VPN.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Starting with contractors makes selling ZTNA to your remote DevOps employees much easier. They will have seen first-hand how much better the ZTNA experience is than the old VPN system. Your on-premises team members may even start asking when they can join the project.\"}),/*#__PURE__*/e(\"p\",{children:\"These early successes reinforce executive commitment and increase stakeholder support as your ZTNA rollout extends beyond DevOps to Finance and other high-priority teams.\"}),/*#__PURE__*/e(\"h1\",{children:\"Twingate improves contractor access and reduces supply chain risk\"}),/*#__PURE__*/e(\"p\",{children:\"Whether your company is the primary target or a means to an end, supply chain attacks have put your developer teams in cybercriminals\u2019 sights. SCA, SBOMs, and other defensive layers can keep the threat at bay, but they are not enough. VPN and similar legacy technologies simply cannot handle today\u2019s distributed networks and workforces.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate\u2019s modern Zero Trust solution assumes that breaches have already happened. Every request must be challenged, every identity verified, and context variables such as device posture evaluated. Only then can access policies based on the principle of least privilege go into effect. Twingate makes managing contractor access simpler and more convenient while significantly reducing your attack surface and limiting the blast radius of supply chain attacks.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://auth.twingate.com/signup?utm_source=blog&utm_medium=blog&utm_campaign=ztna-is-necessary-for-third-party\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Try our free Standard plan\"})}),\" for individuals and small teams to see for yourself how easy Zero Trust can be. Or \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=ztna-is-necessary-for-third-party\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"contact us to learn more\"})}),\" about protecting your company from the growing wave of supply chain attacks.\"]})]})},{index:39,id:\"llJnAkFIl\",[h]:!0,[d]:!1,[p]:\"Selecting Zero Trust Network Access for Business Growth\",[u]:\"ZTNA for Business Growth\",[m]:\"ztna-for-business-growth\",[g]:\"\",[w]:\"Lenore Adam\",[f]:\"2022-09-12T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/i7IpoXBHD1B9es3XAwsDBPcWbG0.png\",srcSet:\"https://framerusercontent.com/images/i7IpoXBHD1B9es3XAwsDBPcWbG0.png?scale-down-to=512 512w,https://framerusercontent.com/images/i7IpoXBHD1B9es3XAwsDBPcWbG0.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/i7IpoXBHD1B9es3XAwsDBPcWbG0.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/i7IpoXBHD1B9es3XAwsDBPcWbG0.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/i7IpoXBHD1B9es3XAwsDBPcWbG0.png\",srcSet:\"https://framerusercontent.com/images/i7IpoXBHD1B9es3XAwsDBPcWbG0.png?scale-down-to=512 512w,https://framerusercontent.com/images/i7IpoXBHD1B9es3XAwsDBPcWbG0.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/i7IpoXBHD1B9es3XAwsDBPcWbG0.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/i7IpoXBHD1B9es3XAwsDBPcWbG0.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Traditional network architectures struggle with today\u2019s pervasive threat environment and fading perimeters. Organizations need a \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/what-is-a-vpn-alternative\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN alternative\"})}),\" that keeps sensitive resources secure while simplifying network management and improving the user experience. Twingate\u2019s secure access solution, based on principles of Zero Trust Network Access (\",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"ZTNA\"})}),\"), lets enterprises transition away from their VPN without disrupting their existing infrastructure.\"]}),/*#__PURE__*/e(\"p\",{children:\"Shifting to ZTNA requires a solution that replaces legacy VPN without disrupting large, complex networks. Businesses choose Twingate for scalable, automated provisioning and management of secure access control. Here is a quick introduction to Twingate\u2019s solution and the selection criteria businesses use when modernizing secure access control.\"}),/*#__PURE__*/e(\"h1\",{children:\"Twingate Zero Trust Overview\"}),/*#__PURE__*/t(\"p\",{children:[\"Enterprises have been reluctant to adopt \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\". Early examples created the impression that Zero Trust required a protracted \u2014 and expensive \u2014 re-engineering of corporate networks. Things have changed since those pioneering projects. Twingate\u2019s software-based solution lets organizations quickly implement Zero Trust access controls without impacting their existing infrastructure.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Decoupling secure access\"}),/*#__PURE__*/e(\"p\",{children:\"Traditionally, access control was tightly bound to the physical network. Twingate decouples access control, making deployment and management much more straightforward. Changes to access rules do not propagate through routers and gateways. Similarly, changes in the network do not impact access rules. Twingate\u2019s software-based approach creates a flexible network overlay that supports a large user base with diverse access needs. Protected resources could be on-premises or across the cloud, while users could be in the office or working remotely.\"}),/*#__PURE__*/e(\"h2\",{children:\"Twingate software architecture\"}),/*#__PURE__*/e(\"p\",{children:\"The Twingate architecture consists of proxies between protected resources and the firewall. Called Connectors, these proxies make resources invisible from any network, public or private. Client apps enforce all security policies at the network edge, and proxy protected traffic directly to authorized Connectors through encrypted tunnels.\"}),/*#__PURE__*/e(\"h2\",{children:\"Simplifying enterprise Zero Trust\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate streamlines the enterprise journey to Zero Trust Network Access. Twingate\u2019s Client app explicitly verifies every access request and enforces least-privileged access policies before user devices connect to protected resources.\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate co-exists with established security systems. There is no need to rip and replace \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/enterprise-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"enterprise VPNs\"})}),\" with Twingate. Enterprises can introduce Twingate Zero Trust in stages, starting with users of the most sensitive resources. More people stop using VPNs as the deployment expands, letting administrators remove unused gateways.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Twingate vs. enterprise VPN solutions\"}),/*#__PURE__*/t(\"p\",{children:[\"Despite VPN providers\u2019 development efforts, these remote access solutions are based on a legacy architecture that does not work with modern networking. Cyber threats are pervasive and can strike at any time. Workforces and resources alike are less centralized thanks to modern \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/what-is-cloud-infrastructure-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"cloud-based infrastructure\"})}),\". Legacy remote access solutions\u2019 aging technology makes VPN-based access expensive, brittle, and unsecure.\"]}),/*#__PURE__*/e(\"p\",{children:\"Twingate\u2019s modern approach to secure access addresses the many weaknesses of VPNs.\"}),/*#__PURE__*/e(\"h2\",{children:\"Visibility\"}),/*#__PURE__*/e(\"p\",{children:\"VPN gateways must be publicly discoverable for remote users to access them. Such visibility makes VPN gateways easy targets for cyberattacks. Twingate\u2019s software-defined perimeters make protected resources invisible \u2014 even from a compromised network.\"}),/*#__PURE__*/e(\"h2\",{children:\"Permissiveness\"}),/*#__PURE__*/e(\"p\",{children:\"Business VPNs originally served as low-cost, site-to-site networks over the internet. Remote access VPNs use the same model. A user\u2019s device becomes an extension of the protected network. As a result, compromised credentials or breached VPN gateways let hackers traverse the network undetected. Twingate controls access on a user-by-user, resource-by-resource basis without giving any user access to the underlying network.\"}),/*#__PURE__*/e(\"h2\",{children:\"Network bandwidth\"}),/*#__PURE__*/e(\"p\",{children:\"VPN gateways concentrate remote traffic onto private networks even if that traffic is destined for the cloud. Twingate creates direct tunnels between each user and resource, letting users access cloud resources securely over the internet.\"}),/*#__PURE__*/e(\"p\",{children:\"VPN vendors channel all user traffic, business-related or not, through their gateways by default, further reducing the private network\u2019s performance. Twingate, on the other hand, uses split tunneling to route all non-essential traffic across the public internet.\"}),/*#__PURE__*/e(\"h2\",{children:\"Network latency\"}),/*#__PURE__*/e(\"p\",{children:\"Backhauling remote cloud access through a VPN gateway sends user traffic along a four-leg round trip, increasing latency and degrading the user experience. Twingate reduces latency by sending traffic on the most performant direct route.\"}),/*#__PURE__*/e(\"h2\",{children:\"Segmentation\"}),/*#__PURE__*/e(\"p\",{children:\"VPN access to segmented networks improves security at the expense of cost and manageability. Each segment requires a dedicated VPN gateway which companies must configure and maintain. With Twingate, enterprises create software-defined network segments by deploying Connectors.\"}),/*#__PURE__*/e(\"h1\",{children:\"Twingate Enterprise-Ready Features\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate often gets the attention of DevOps teams who want to leverage automated configuration and deployment of Zero Trust access controls. Security, network, and IT Ops teams appreciate the ease of implementing ZTNA without disrupting the existing network architecture.\"}),/*#__PURE__*/e(\"h2\",{children:\"Deployable at scale through CI/CD pipelines\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate\u2019s compatibility with corporate Infrastructure as Code workflows allows for fast deployments \u2014 customers have deployed Twingate globally within fifteen minutes.\"}),/*#__PURE__*/e(\"p\",{children:\"These deployments, and Twingate\u2019s management tools, work across all cloud environments and on-premises networks. IP allowlist rules let you extend your Identity Provider authentication to any SaaS application.\"}),/*#__PURE__*/e(\"p\",{children:\"A single docker command deploys a Connector to virtual machines, databases, and other resources on enterprise cloud platforms. While simple to deploy manually, Twingate will not undermine DevSecOps productivity. Providers for Terraform and Pulumi let developers automate Twingate actions.\"}),/*#__PURE__*/e(\"h2\",{children:\"Ready for complex network architectures\"}),/*#__PURE__*/e(\"p\",{children:\"Since Twingate is network-independent, our Zero Trust access control system does not depend upon or affect an enterprise\u2019s network infrastructure. Administrators do not need to reconfigure the network. Instead, a Twingate deployment creates a virtual, decentralized point-to-point network that automatically adjusts to any changes in the physical network.\"}),/*#__PURE__*/e(\"p\",{children:\"Deploying multiple Connectors to the same subnet activates performance and reliability features. Twingate will automatically balance loads from incoming Clients across the Connectors. If one Connector stops responding, its Clients will failover to the other Connectors.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate\u2019s software approach lets enterprises create decentralized virtual networks that are more robust than their physical infrastructures. Connectors take micro-segmentation to the extreme by turning each resource into a virtual subnet with its own secure access policies.\"}),/*#__PURE__*/e(\"h2\",{children:\"Supports blended and hybrid workforces\"}),/*#__PURE__*/e(\"p\",{children:\"Managing access for corporate workforces has become more complex. Hybrid work-from-home policies shift the balance between on-premises and remote users. Blended workforces introduce more third-party users into the access management equation.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate ends the VPN-imposed distinction between remote and on-premises. Organizations can manage all users within a single solution, no matter where those users are. Twingate also simplifies the management of third-party users. Installing and running the transparent Client app requires no changes to a third-party device\u2019s operating system.\"}),/*#__PURE__*/e(\"h2\",{children:\"Enforces strict Zero Trust security policies\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate lets administrators create strict, granular access control policies beyond password authentication.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Device posture:\"}),\" Twingate\u2019s Client can monitor device postures such as firewall and antivirus software status. Integrations with endpoint security platforms like CrowdStrike support more advanced \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/what-is-device-posture-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"device posture\"})}),\" checks.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Advanced authentication:\"}),\" Integrating enterprise \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/what-is-idp\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Identity Provider\"})}),\" solutions such as Okta adds Single Sign-On and Multi-Factor Authentication to anything Twingate protects. This protection extends to legacy technologies such as SSH and \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/what-is-rdp\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"RDP\"})}),\".\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"DNS security:\"}),\" Twingate can intercept DNS requests and resolve them at the Connector, keeping any sensitive requests within an encrypted TLS tunnel. By doing this, Twingate can limit resource access to specific DNS entries. Any non-Twingate traffic can be routed to public \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/announcing-secure-dns\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"DNS-over-HTTPS\"})}),\" servers, keeping user DNS requests secure when they access the internet.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Streamlined administration\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate streamlines access administration by unifying all resources and users within a single system. Non-technical personnel can use a simple Twingate console to onboard and offboard a user or change access policies. Twingate\u2019s APIs let more technical personnel automate access management. For example, administrators can programmatically onboard and offboard users without manual intervention.\"}),/*#__PURE__*/e(\"p\",{children:\"A new feature leverages Twingate\u2019s activity logs so administrators can monitor network status, troubleshoot errors, and identify which users access which resources. Alternatively, Twingate\u2019s real-time APIs integrate with Security Information and Event Management (SIEM) platforms such as Splunk to enhance monitoring systems with granular user, device, and resource data.\"}),/*#__PURE__*/e(\"h1\",{children:\"Experience the Simplicity of Enterprise-Ready Zero Trust\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate\u2019s modern Zero Trust Network Access solution gives organizations the simplicity and deployability needed to improve security and access where it\u2019s needed most urgently. Over time, Twingate\u2019s scalability and easy administration lets enterprises deploy Zero Trust to the entire organization without re-architecting their global networks.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=enterprise-ready-ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact Twingate today for a demonstration\"})}),\" and learn how our enterprise-ready Zero Trust solution can replace your legacy enterprise VPN.\"]})]})},{index:40,id:\"dKG5xJ6qQ\",[h]:!0,[d]:!1,[p]:\"How Zero Trust Network Access (ZTNA) Prevents Lateral Movement After a Breach\",[u]:\"How ZTNA Prevents Lateral Movement\",[m]:\"ztna-prevents-lateral-movement-after-breach\",[g]:\"\",[w]:\"Paul Andre de Vera\",[f]:\"2022-09-09T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/bvwPQrQU3cupGoZxBQRO4sC6w.png\",srcSet:\"https://framerusercontent.com/images/bvwPQrQU3cupGoZxBQRO4sC6w.png?scale-down-to=512 512w,https://framerusercontent.com/images/bvwPQrQU3cupGoZxBQRO4sC6w.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/bvwPQrQU3cupGoZxBQRO4sC6w.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/bvwPQrQU3cupGoZxBQRO4sC6w.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/bvwPQrQU3cupGoZxBQRO4sC6w.png\",srcSet:\"https://framerusercontent.com/images/bvwPQrQU3cupGoZxBQRO4sC6w.png?scale-down-to=512 512w,https://framerusercontent.com/images/bvwPQrQU3cupGoZxBQRO4sC6w.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/bvwPQrQU3cupGoZxBQRO4sC6w.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/bvwPQrQU3cupGoZxBQRO4sC6w.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Zero Trust Network Access (\",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"ZTNA\"})}),\") is a modern approach to access control that makes an organization\u2019s protected resources more secure from cyberattacks. One of ZTNA\u2019s core principles \u2014 assume breach \u2014 recognizes that a 0-day flaw or stolen password can compromise a network at any time. Hackers exploit these footholds by using lateral movement techniques. ZTNA\u2019s strength is its ability to prevent lateral movement and minimize an attack\u2019s blast radius.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Let\u2019s look at the ways hackers move through networks, how traditional security approaches try \u2014 and fail \u2014 to block them, and how Zero Trust solutions use \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"software-defined perimeters\"})}),\" (SDPs) to prevent lateral movement.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Understanding Lateral Movement Attacks and Techniques\"}),/*#__PURE__*/t(\"p\",{children:[\"Attackers use lateral movement techniques to penetrate deeper into a compromised network, map sensitive resources, and escalate their access. In most cases, this lateral movement goes undetected for a long time. Recently, CrowdStrike reported that the \",/*#__PURE__*/e(s,{href:\"https://www.crowdstrike.com/press-releases/survey-shows-growing-crisis-of-trust-with-microsoft-and-legacy-it-vendors\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"average attack moves across a compromised network within 92 minutes\"})}),\". Security professionals, on the other hand, take 146 hours to detect the attack \u2014 and another day to investigate, contain, and mitigate the breach. This imbalance is one reason the \",/*#__PURE__*/e(s,{href:\"https://www.fastcompany.com/90715622/cyberattacks-ransomware-data-breach-new-record-2021\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"security breaches increased by more than 68% in 2021\"})}),\".\"]}),/*#__PURE__*/e(\"p\",{children:\"Lateral movement goes undetected for so long because cybercriminals use live-off-the-land techniques. Importing malware through their limited foothold would risk detection. Instead, the hackers use tools they find on the network itself to conduct their surveillance and collect privileged credentials. MITRE\u2019s ATT&CK framework identifies several lateral movement techniques including:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Accessing network tools such as PowerShell or SSH.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Using compromised accounts to launch internal spear phishing attacks.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Collect authentication artifacts such as cookies and hashes.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Inserting malicious code in shared files.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"These techniques are effective due to fundamental weaknesses in the way organizations secure information resources. For decades, the concept of the secure perimeter was used to design network architectures. Like the moat and walls surrounding a castle, the secure perimeter prevented anything outside the network from getting in. This approach implicitly trusts any person or device on the protected network. Once hackers establish their initial beachhead, they leverage the implicit trust built into the network to move around and plan their next move.\"}),/*#__PURE__*/e(\"p\",{children:\"Another weakness of the secure perimeter paradigm is its focus on protecting access to networks. Typical secure perimeter architectures do not provide granular, resource-level control of permissions. As a result, anyone with access to a network can use any of the network\u2019s resources, services, or protocols. All hackers need is a way to get through the secure perimeter.\"}),/*#__PURE__*/e(\"h1\",{children:\"Why VPNs and DMZs Open the Door to Lateral Movement Attacks\"}),/*#__PURE__*/t(\"p\",{children:[\"In the castle-and-moat analogy, \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/what-is-a-vpn-alternative\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"virtual private networks\"})}),\" (VPNs) and \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/dmz-network\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"demilitarized zones\"})}),\" (DMZs) are equivalents of gatehouses and drawbridges. They let data pass through the network defenses while, in theory, preventing unauthorized access.\"]}),/*#__PURE__*/e(\"p\",{children:\"VPNs are the gatehouses that let remote traffic pass in and out of the protected network. Just like a gatehouse, VPN security begins and ends at the perimeter. A VPN gateway lets users access anything behind the protective wall. Hackers get access to anything behind the wall when a VPN gateway\u2019s vulnerabilities go unpatched.\"}),/*#__PURE__*/e(\"p\",{children:\"DMZs provide a middle ground between the dangerous outside world and the protected interior. Unpatched firewalls, inadequate access control rules, exposed ports, and other security weaknesses can give hackers a path into the network.\"}),/*#__PURE__*/e(\"p\",{children:\"Besides being vulnerable to attack, VPNs and DMZs only control access to the protected network. They are part of the network architecture and cannot provide granular access control unless the network itself is built to protect specific resources.\"}),/*#__PURE__*/e(\"h1\",{children:\"Using Micro-segmentation to Prevent Lateral Movement\"}),/*#__PURE__*/e(\"p\",{children:\"Organizations could architect their networks to protect groups of resources. Each protected group gets assigned to a dedicated network segment. Micro-segmentation creates a granular network structure that enhances security by:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Hiding each microsegment\u2019s structure from other microsegments.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Limiting the number of resources exposed on a compromised microsegment.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Limiting users to the microsegments they are allowed to access.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"In the event of a breach, micro-segmentation constrains an attack\u2019s ability to move laterally. Hackers can only see the resource or resources on the compromised microsegment. Breaching a firewall to enter another microsegment is more likely to be detected. However, this approach still implicitly trusts anything on the microsegment. Eliminating the risk of lateral movement requires building a microsegment around each resource.\"}),/*#__PURE__*/e(\"p\",{children:\"In practice, micro-segmented network architectures become complex, expensive to build, and difficult to maintain. The inevitable compromise between security and resources makes highly granular access control difficult to achieve.\"}),/*#__PURE__*/e(\"h1\",{children:\"Using Software Defined Perimeters (SDP) to Prevent Lateral Movement\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Software-defined perimeters\"})}),\" make micro-segmentation more practical. These technologies replace network-based connections between user devices and resources with virtual, session-based tunnels. Proxies are deployed in front of each protected resource register with an SDP controller. A proxy on a user\u2019s device contacts the SDP controller to request access to the resource. After authentication and authorization, the controller facilitates the creation of a direct tunnel between the device and resource that lasts for the duration of the session.\"]}),/*#__PURE__*/e(\"p\",{children:\"In effect, an SDP system can redraw the secure perimeter around each resource rather than each network \u2014 turning each resource into its own microsegment. Resources disappear from the network, hidden by proxies that deny all incoming connections except those from the SDP controller. Companies no longer need vulnerable VPN gateways or DMZs, reducing the opportunities to breach a network. Should a breach occur, lateral movement becomes less productive since hackers cannot surveil the compromised network.\"}),/*#__PURE__*/e(\"p\",{children:\"Implementing ZTNA solutions based on software-defined perimeters can reduce the attack surface even further. Many successful breaches start with compromised user credentials rather than compromised network infrastructure. Authorization rules based on Zero Trust principles of least privilege limit users\u2019 access to the specific resources they need to do their jobs. Should a user fall for a social engineering attack, the hackers would only have access to the user\u2019s authorized resources. The hackers\u2019 ability to move laterally to other resources would be severely constrained.\"}),/*#__PURE__*/e(\"h1\",{children:\"How device posture and controls prevent lateral movement\"}),/*#__PURE__*/e(\"p\",{children:\"Identity is not the only factor ZTNA solutions use to define least-privileged access rules. The context of the user\u2019s connection request is just as important. ZTNA solutions can evaluate the posture of a user\u2019s device based on the operating system and the status of:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Firewall and antivirus.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Device lock screen and encryption.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Biometric security.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"ZTNA solutions can evaluate these basic posture checks when a user first logs in, when they request access to a resource, and throughout their session. If the check fails for any reason, the basis of trust disappears, and the user loses access. More advanced policies are made possible with certificate-based attestations as well as integrations with endpoint detection and response (EDR) or mobile device management (MDM) solutions.\"}),/*#__PURE__*/e(\"h1\",{children:\"Prevent Lateral Movement with Twingate Zero Trust Network Access\"}),/*#__PURE__*/e(\"p\",{children:\"Traditional secure perimeter architectures are security liabilities. Vulnerable infrastructure, social engineering, and implicit trust make cyberattacks too easy. Cybercriminals can use lateral movement techniques to sweep across a network within an hour and a half of a successful breach \u2014 and avoid detection for nearly one hundred times as long. Lateral movement lets attackers surveil networks, escalate privileges, and plan the attack\u2019s next phase. Network micro-segmentation could reduce the threat \u2014 at a great price \u2014 without solving the underlying problem.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate\u2019s Zero Trust Network Access solution\"})}),\" uses software-defined perimeters to decouple access control from the physical network. Hiding resources behind proxies makes them invisible from compromised networks. Administrators can remove vulnerable VPN technologies from their networks. Role-based, least-privilege access policies limit the damage of compromised user credentials. And context-sensitive policies based on device posture make credential breaches easier to discover.\"]}),/*#__PURE__*/t(\"p\",{children:[\"You can see how Zero Trust works for yourself with a \",/*#__PURE__*/e(s,{href:\"https://auth.twingate.com/signup?utm_source=blog&utm_medium=blog&utm_campaign=ztna-prevents-lateral-movement-after-breach\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"free individual subscription\"})}),\". Or \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=ztna-prevents-lateral-movement-after-breach\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"contact us\"})}),\" to find out how Twingate\u2019s ZTNA solution takes lateral movement out of the cybercriminal toolkit.\"]})]})},{index:41,id:\"NlMV7jW7Q\",[h]:!0,[d]:!1,[p]:\"SASE vs. Zero Trust Explained\",[u]:\"SASE vs. Zero Trust Explained\",[m]:\"sase-vs-zero-trust\",[g]:\"\",[w]:\"Paul Andre de Vera\",[f]:\"2022-09-02T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/yfLKqP9JsnnXwnO0ZPf5irD1Y.png\",srcSet:\"https://framerusercontent.com/images/yfLKqP9JsnnXwnO0ZPf5irD1Y.png?scale-down-to=512 512w,https://framerusercontent.com/images/yfLKqP9JsnnXwnO0ZPf5irD1Y.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/yfLKqP9JsnnXwnO0ZPf5irD1Y.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/yfLKqP9JsnnXwnO0ZPf5irD1Y.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/yfLKqP9JsnnXwnO0ZPf5irD1Y.png\",srcSet:\"https://framerusercontent.com/images/yfLKqP9JsnnXwnO0ZPf5irD1Y.png?scale-down-to=512 512w,https://framerusercontent.com/images/yfLKqP9JsnnXwnO0ZPf5irD1Y.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/yfLKqP9JsnnXwnO0ZPf5irD1Y.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/yfLKqP9JsnnXwnO0ZPf5irD1Y.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Organizations at every scale are looking for alternatives to the expensive, brittle, and unsecure network architectures of the past. Secure perimeters and other legacy paradigms cannot handle today\u2019s distributed world. Two leading alternatives, \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust Network Access (ZTNA)\"})}),\" and \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/sase-meaning\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Secure Access Service Edge (SASE)\"})}),\" promise to keep both users and resources secure regardless of location.\"]}),/*#__PURE__*/t(\"p\",{children:[\"ZTNA has been in development for decades but was first popularized by \",/*#__PURE__*/e(s,{href:\"https://www.virtualstarmedia.com/downloads/Forrester_zero_trust_DNA.pdf\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Forrester Research in 2010\"})}),\". More of a philosophy than a technology, ZTNA is based upon three principles:\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Assume breach\"}),\" - Since cyberattacks can happen at any time, no user, device, or network can ever be trusted. Every connection request must be challenged.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Verify explicitly\"}),\" - Going beyond user identity, ZTNA evaluates the risk of each request, from device posture to source network, to inform the degree of authorization.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Least privilege\"}),\" - The degree of access to resources users receive is based on their immediate needs. These ephemeral permissions are revoked when sessions end, after defined windows expire, or when any aspect of trust changes.\"]})})]}),/*#__PURE__*/t(\"p\",{children:[\"First defined by \",/*#__PURE__*/e(s,{href:\"https://blogs.gartner.com/andrew-lerner/2019/12/23/say-hello-sase-secure-access-service-edge\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Gartner\"})}),\", SASE is a technology framework that guides enterprises through the converging trends in secure networking. SASE replaces secure perimeters with a cloud-native service that enforces policies at the network\u2019s edge. Gartner\u2019s SASE future identified five converging technologies:\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Software-Defined Wide Area Networking (SD-WAN)\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Firewall-as-a-Service (FWaaS)\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Secure Web Gateway (SWG)\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Cloud Security Broker (CASB)\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Zero-Trust Network Access (ZTNA)\"})})]}),/*#__PURE__*/e(\"p\",{children:\"That last bullet point is a sign that the ZTNA-vs-SASE question may be misguided. We will clear things up by discussing ZTNA and SASE in more detail, highlighting their similarities and differences. Whether or not companies adopt SASE, ZTNA will become part of their network security architectures. We will help you understand when SASE is appropriate and when companies like yours should consider a robust Zero Trust solution.\"}),/*#__PURE__*/e(\"h1\",{children:\"What are Zero Trust and SASE?\"}),/*#__PURE__*/e(\"h2\",{children:\"What is Zero Trust?\"}),/*#__PURE__*/e(\"p\",{children:\"The three principles of Zero Trust transcend specific technologies. Adopting Zero Trust requires a change in the way organizations think about trust. Traditional network architectures implicitly trusts employees using managed computers on the office LAN. That trust also extended to employees receiving access through a VPN gateway.\"}),/*#__PURE__*/e(\"p\",{children:\"Cloud computing, mobile technologies, and remote or distributed workforces make trust a risky proposition \u2014 especially given the sophistication of cybercriminals. User devices and network infrastructure could be compromised at any time. Implicit trust opens the door to hackers.\"}),/*#__PURE__*/e(\"p\",{children:\"Adopting Zero Trust principles of assume breach, verify explicitly, and least privilege changes the security equation from trust-by-default to deny-by-default. ZTNA challenges every connection request. User permissions are limited to specific resources and not entire networks. With ZTNA, breached networks or compromised user credentials deny hackers easy access to company data and make breaches easier to discover.\"}),/*#__PURE__*/e(\"h2\",{children:\"What is SASE?\"}),/*#__PURE__*/e(\"p\",{children:\"Unlike ZTNA, Gartner\u2019s SASE is technology-specific. The consultancy identified five technologies shaping modern, cloud-oriented networking and extrapolated them to a logical end state. SASE represents the convergence of these five technologies:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Software-Defined Wide Area Networking\"}),\" - SASE vendors will operate globe-spanning points-of-presence (PoP) networks that will connect their customers\u2019 users and resources. Dedicated network backbones will deliver performant connections through secure, encrypted tunnels.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Firewall-as-a-Service\"}),\" - SASE vendors will push security enforcement to the network edge by using FWaaS to manage inbound and outbound traffic.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Secure Web Gateway\"}),\" - SASE vendors will let companies control users\u2019 access to other sites or block access to known botnet command-and-control servers.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Cloud Security Broker\"}),\" - SASE vendors will develop integrations with cloud service providers so companies can control access to every resource within a single system.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Zero-Trust Network Access\"}),\" - SASE vendors will use the previous technologies to implement Zero Trust\u2019s core principles, improving their customers\u2019 security postures.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"Another defining element of SASE is its focus on the future. Although many vendors offer some of these technologies, few offer a complete solution today. And none offer truly cloud-native solutions.\"}),/*#__PURE__*/t(\"p\",{children:[\"When \",/*#__PURE__*/e(s,{href:\"https://www.gartner.com/en/documents/3953690/market-trends-how-to-win-as-wan-edge-and-security-conver\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"unveiling SASE in 2019\"})}),\", Gartner\u2019s analysts cited inconsistencies, manageability issues, and high latency as reasons to avoid long-term contracts. This uncertainty explains why \",/*#__PURE__*/e(s,{href:\"https://blogs.gartner.com/andrew-lerner/2021/03/26/checking-in-on-sase\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"only 10% of large enterprises\"})}),\" have started implementing SASE.\"]}),/*#__PURE__*/e(\"h1\",{children:\"What principles do Zero Trust and SASE share?\"}),/*#__PURE__*/e(\"p\",{children:\"Whether your company adopts SASE or not, Zero Trust is a compelling way to address today\u2019s network challenges:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Cybercriminals easily compromise user credentials and penetrate networks.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Remote work and BYOD policies are now standard practice.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"More contractors and other third parties need access to company resources.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"VPN and other secure-perimeter technologies are more difficult to maintain, scale, and secure.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Replacing the secure perimeter paradigm with Zero Trust, regardless of the implementation, is the only way to protect company assets in today\u2019s environment.\"}),/*#__PURE__*/e(\"h1\",{children:\"How are they different?\"}),/*#__PURE__*/e(\"p\",{children:\"ZTNA provides a technology-agnostic paradigm that gives companies a better way to think about secure access in today\u2019s distributed networks. With a long history of development, Zero Trust solutions already support teams and large enterprises.\"}),/*#__PURE__*/e(\"p\",{children:\"On the other hand, SASE is a particular implementation of Zero Trust using the other four technologies Gartner identified. More importantly, Gartner revealed its SASE vision defined only three years ago. SASE does not fully exist today, but large enterprises see the potential in unifying access in a global, cloud-native solution.\"}),/*#__PURE__*/e(\"h1\",{children:\"How to pick the right model for your organization\"}),/*#__PURE__*/e(\"p\",{children:\"Gartner recommends that enterprises begin with implementing Zero Trust. Replacing your brittle, unsecure architecture with a Zero Trust solution will create dramatic near-term benefits:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Networks and resources become invisible to hackers, reducing the risk of attack.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Hackers\u2019 movements are constrained and easier to spot, limiting the blast radius of security breaches.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Over-provisioning and other examples of poor security hygiene go away as least privilege policies limit user credentials.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Unified Zero Trust solutions apply to all users to reduce administrative overhead.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Unified Zero Trust solutions protect all resources to further reduce administrative overhead.\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"You may also face outside pressures to adopt Zero Trust sooner rather than later. In 2021, the Biden Administration \",/*#__PURE__*/e(s,{href:\"https://www.whitehouse.gov/briefing-room/presidential-actions/2021/05/12/executive-order-on-improving-the-nations-cybersecurity\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"directed all federal agencies to adopt Zero Trust\"})}),\". Once underway, federal agencies will expect their suppliers to have compatible Zero Trust architectures.\"]}),/*#__PURE__*/e(\"p\",{children:\"Whether SASE is part of your company\u2019s future is another question. Since SASE is still a work in progress, adopting this emerging network architecture will require internal expertise and investments. Large enterprises have those resources as well as partners like Gartner to help stitch SASE\u2019s separate components together.\"}),/*#__PURE__*/e(\"p\",{children:\"If SASE aligns with your company\u2019s IT strategies and you have the long-term resources, then SASE may be the best Zero Trust implementation. If SASE is overkill for your business today, consider alternative Zero Trust solutions.\"}),/*#__PURE__*/e(\"h1\",{children:\"How Twingate can help\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate uses software-defined perimeters to implement Zero Trust as a fully distributed network architecture. When you deploy Twingate\u2019s deny-by-default proxies to protected resources, the resources disappear. Transparent client apps evaluate device posture, network status, and other factors to enforce security policies before any connection request. Although connections are coordinated by Twingate\u2019s cloud-native control servers, the encrypted tunnels flow directly between users and resources.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate\u2019s distributed network architecture essentially turns each user device into a secure PoP that uses the most performant network to deliver access. Twingate\u2019s approach avoids many of the constraints companies face when adopting SASE:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Fragmentation\"}),\" - Different vendors offer different SASE components, but none have developed ground-up solutions that fully implement Gartner\u2019s vision of the future.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Expertise\"}),\" - Companies may have experience with some aspects of SASE, but few have deep expertise with all five components \u2014 much less managing them as a unified system.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Priorities\"}),\" - Global pandemics, supply chain disruption, and geopolitical turmoil make less than ideal time to seek executive buy-in on major architecture changes.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"Twingate delivers a focused Zero Trust solution that addresses today\u2019s challenges and produces the kind of results that get executive attention:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Phased deployments let you protect the most important resources first.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Twingate co-exists with traditional networks, so no infrastructure investments are needed.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Integrations with your established identity providers and CI/CD pipelines let you deploy Twingate quickly without affecting existing infrastructure.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Simple interfaces reduce administrative overhead while enabling policies based on user roles and the principle of least privilege.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Networks become more performant and easier to manage as user traffic routes directly to cloud resources.\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"Meet today\u2019s challenges today with Zero Trust from Twingate\"}),/*#__PURE__*/e(\"p\",{children:\"20th Century ways of thinking about network access are obsolete. People connect from too many places with too many devices. The resources they access are no longer contained to a company\u2019s data center, residing instead on many different cloud platforms. Both Zero Trust and SASE offer better ways to meet the performance, management, and security challenges that legacy architectures create.\"}),/*#__PURE__*/e(\"p\",{children:\"Although SASE is a compelling vision of our converged future, implementing SASE requires the long-term commitment, expertise, and resources of a large enterprise. You can deploy Twingate\u2019s Zero Trust solution in as little as a week and start reaping the benefits of more secure assets, more performant networks, and better experiences for users and administrators alike.\"}),/*#__PURE__*/t(\"p\",{children:[\"Our \",/*#__PURE__*/e(s,{href:\"https://auth.twingate.com/signup?utm_source=blog&utm_medium=blog&utm_campaign=sase-vs-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"free starter tier\"})}),\" lets you see how Twingate works for individuals or small teams. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=sase-vs-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact us to learn more\"})}),\" about starting your company\u2019s journey to Zero Trust.\"]})]})},{index:42,id:\"FQ4etWt5N\",[h]:!0,[d]:!1,[p]:\"How Zero Trust Network Access Reduces Network Latency\",[u]:\"How ZTNA Reduces Network Latency\",[m]:\"ztna-reduces-network-latency\",[g]:\"\",[w]:\"Paul Andre de Vera\",[f]:\"2022-08-26T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/l3V124tI0BlRvhBHAoQRn6VcXU4.png\",srcSet:\"https://framerusercontent.com/images/l3V124tI0BlRvhBHAoQRn6VcXU4.png?scale-down-to=512 512w,https://framerusercontent.com/images/l3V124tI0BlRvhBHAoQRn6VcXU4.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/l3V124tI0BlRvhBHAoQRn6VcXU4.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/l3V124tI0BlRvhBHAoQRn6VcXU4.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/l3V124tI0BlRvhBHAoQRn6VcXU4.png\",srcSet:\"https://framerusercontent.com/images/l3V124tI0BlRvhBHAoQRn6VcXU4.png?scale-down-to=512 512w,https://framerusercontent.com/images/l3V124tI0BlRvhBHAoQRn6VcXU4.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/l3V124tI0BlRvhBHAoQRn6VcXU4.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/l3V124tI0BlRvhBHAoQRn6VcXU4.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"With so many people still working from home, VPN latency has gone from a niche concern to a mission-critical performance metric. \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/remote-access-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Remote access\"})}),\" is no longer limited to a few users. Everyone needs remote access \u2014 and they want the same experience they had at the office.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Slow-responding network connections directly impact user productivity and undermine business performance. We\u2019ll explore how traditional network architectures drive latency issues and contribute to security risk. A modern approach to network design called \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust Network Access (ZTNA)\"})}),\" offers a better alternative. We\u2019ll explain what ZTNA is and how ZTNA produces performant, low-latency network connections.\"]}),/*#__PURE__*/e(\"h1\",{children:\"How network latency impacts user performance\"}),/*#__PURE__*/e(\"p\",{children:\"From the user\u2019s perspective, latency is the time it takes to see the results of their actions. Everything between the user\u2019s keyboard and the resource they are accessing remotely can delay this travel time. With high latency connections, the user experience suffers as:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Web pages take longer to load.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"File uploads and downloads take forever.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Video streams drop frames and shift to lower resolutions.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Audio streams sound robotic and cut out.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Latency can be a particular problem for DevOps teams that work remotely. Sluggish response times undermine productivity \u2014 especially when developers are transferring large files.\"}),/*#__PURE__*/e(\"p\",{children:\"Latency can also become a security problem. When users, especially privileged users, experience high-latency connections on a regular basis, they may sacrifice security hygiene to get their jobs done. For example, remote workers often solve poorly-performing VPN connections by logging off and working over the public internet.\"}),/*#__PURE__*/e(\"h1\",{children:\"How security and traditional remote access solutions impact user performance\"}),/*#__PURE__*/e(\"p\",{children:\"A secure perimeter paradigm drives the design of traditional network architectures. On-premises workers access services and resources on a central network. Security technologies protect that network from external threats. Additional technologies let remote workers pass through these network defenses but often impact user performance.\"}),/*#__PURE__*/e(\"h2\",{children:\"VPN\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/what-is-a-vpn-alternative\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Virtual private network (VPN)\"})}),\" gateways concentrate traffic between remote users and the protected network. They also decrypt and encrypt packets flowing in and out of the secure VPN tunnels.\"]}),/*#__PURE__*/e(\"p\",{children:\"Whether running on an appliance or a virtual server, the number of concurrent users a VPN gateway can handle is limited. Latency and throughput suffer when many remote workers try to use the VPN gateway at the same time.\"}),/*#__PURE__*/e(\"p\",{children:\"Geography also impacts VPN latency. The farther remote workers are from their company\u2019s central network, the longer it takes for data to reach the VPN gateway and return.\"}),/*#__PURE__*/e(\"p\",{children:\"Network topology is another issue when remote users access cloud resources through their company\u2019s VPN. The traffic must pass from the user to the VPN gateway, pass through the company network to the internet, and terminate at the cloud service provider. Data flow along the return path to reach the user. This round trip, also called backhaul or the trombone effect, can increase latency significantly.\"}),/*#__PURE__*/e(\"p\",{children:\"VPN technologies have weaknesses besides their performance limits. Since they are designed to grant access to networks, VPN solutions cannot provide granular control over access to specific resources. Should a VPN gateway or a user\u2019s credentials be compromised, attackers get free access to the protected network.\"}),/*#__PURE__*/e(\"h2\",{children:\"SD-WAN\"}),/*#__PURE__*/e(\"p\",{children:\"Although based on new technologies, software-defined wide-area networks (SD-WANs) are still shaped by the secure perimeter paradigm and suffer similar weaknesses. Like VPNs, geography and hardware limitations can impact latency. But the biggest impact is the internet\u2019s \u201Cmiddle-mile\u201A. Internet routing and transport protocols are not optimized for user performance. As packets bounce from network to network, they do not follow the most performant route. Latency can suffer as a result.\"}),/*#__PURE__*/e(\"h2\",{children:\"RDP\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/what-is-rdp\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Remote desktop protocol (RDP)\"})}),\" needs low-latency connections in order to deliver an office desktop experience to remote workers. Network setups at both ends of the connection, the distance between users and the protected network, and the configuration of RDP protocols contribute to latency.\"]}),/*#__PURE__*/e(\"p\",{children:\"In most cases, companies will consolidate traffic through an RDP gateway in order to more efficiently support their remote workers. These gateways become bottlenecks as the number of concurrent users rises. Backhaul is also an issue. RDP lets users access a desktop environment as if they were in the office. When they use that virtual desktop to access cloud resources, their traffic must go through the same round trip through the private network.\"}),/*#__PURE__*/e(\"p\",{children:\"RDP also shares VPN\u2019s security limitations. Like a VPN gateway, for example, RDP gateways broadcast their presence to the public internet, making them discoverable by cybercriminals and common vectors for attacks.\"}),/*#__PURE__*/e(\"h2\",{children:\"Bypassing security\"}),/*#__PURE__*/e(\"p\",{children:\"Remote workers have jobs to do. They will find a workaround if their company\u2019s secure access solution interferes with their work. Consider Zoom, Teams, and similar business communications platforms. For better or worse, these apps have become standard parts of remote workers\u2019 lives. People leave them running all day to stay in touch with co-workers and attend virtual meetings.\"}),/*#__PURE__*/e(\"p\",{children:\"However, these bandwidth-intensive and latency-sensitive apps can become unusable over poorly-performing VPN connections. So, people turn their VPNs off. Real-time video conferencing gets better, but now messages and attachments are no longer passing through the VPN\u2019s encrypted tunnel.\"}),/*#__PURE__*/e(\"h1\",{children:\"How Zero Trust Network Access Improves Performance\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/how-zero-trust-network-works\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust Network Access\"})}),\" is a modern framework that replaces the old secure perimeter paradigm. ZTNA makes connecting today\u2019s distributed workforces with increasingly decentralized, cloud-based resources simpler and more secure. Based on an assumption that security breaches can happen at any time, ZTNA requires verification of every connection attempt with no exceptions. Private network or public hotspot, managed device or BYOD, executive or contractor \u2014 every request triggers authentication. Once verified, policies based on the principle of least privilege only grant access to the specific resources users need at the time.\"]}),/*#__PURE__*/e(\"p\",{children:\"ZTNA eliminates many of the performance issues associated with VPN and other secure perimeter technologies:\"}),/*#__PURE__*/e(\"h2\",{children:\"Point-to-point topologies\"}),/*#__PURE__*/e(\"p\",{children:\"Rather than concentrating traffic through a gateway, ZTNA establishes direct connections between remote workers and the resources they access. This eliminates the congestion and backhaul associated with a VPN gateway. When a user accesses a cloud-based resource, the ZTNA system creates a direct encrypted tunnel between the two. Intelligent routing ensures the tunnel follows the most performant path.\"}),/*#__PURE__*/e(\"p\",{children:\"Performance on the private network improves as ZTNA diverts user-to-cloud traffic to the internet. As a result, users get faster, more responsive to on-premises resources.\"}),/*#__PURE__*/e(\"h2\",{children:\"Split tunneling\"}),/*#__PURE__*/e(\"p\",{children:\"ZTNA solutions can enable split tunneling to further improve performance. A ZTNA client on the user\u2019s device will exclude certain apps or protocols and route them unencrypted over the public internet. Most video conferencing platforms, for example, have solid security practices so additional security is unnecessary. The ZTNA client can let real-time communications protocols pass over the internet. At the same time, all traffic to protected resources only passes through encrypted tunnels.\"}),/*#__PURE__*/e(\"h2\",{children:\"Granular access controls for improved security\"}),/*#__PURE__*/e(\"p\",{children:\"While ZTNA improves the user experience, this modern framework\u2019s true strength lies in the way it secures sensitive resources. Proxies hide the resources from any public or private network. ZTNA clients on user devices cannot see the resource \u2014 until the ZTNA system facilitates the point-to-point connection.\"}),/*#__PURE__*/e(\"p\",{children:\"This distributed network architecture lets companies apply granular access control policies. Besides the user\u2019s identity, ZTNA will use the context of each request to decide:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Whether to grant a user access.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Which resources a user may access.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"How limited that user\u2019s access will be.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Context can be the source network. Employees with on-premises connections, for example, may access more sensitive information than workers using airport hotspots. ZTNA can also deny access based on firewall status, antivirus status, and other aspects of a user device\u2019s security posture.\"}),/*#__PURE__*/e(\"h1\",{children:\"Twingate Improves Network Performance and User Experience\"}),/*#__PURE__*/e(\"p\",{children:\"Traditional network architectures have inherent weaknesses that increase network latency and create poor user experiences. Hub-and-spoke topologies concentrate user traffic to cause congestion at gateways and on the private network. With cloud-based resources more common, using VPN for remote access causes backhaul that further degrades the user experience. Even modern implementations of the secure perimeter paradigm, such as SD-WAN, cannot avoid their built-in performance issues.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate\u2019s Zero Trust Network Access solution\"})}),\" is a modern approach to secure access that reduces a company\u2019s attack surface significantly. At the same time, Twingate clears the bottlenecks from traditional networks.\"]}),/*#__PURE__*/e(\"p\",{children:\"Using a point-to-point topology, Twingate creates direct, encrypted tunnels between each user and the resources they access. Intelligent routing over public and private networks ensures users get performant, low-latency connections.\"}),/*#__PURE__*/e(\"p\",{children:\"By controlling access to both on-premises and cloud resources for all users, Twingate relieves private networks from backhaul and unnecessary traffic. Bandwidth, throughput, and latency on the private network improve as Twingate securely routes everyone\u2019s cloud traffic directly over the internet.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate\u2019s split tunneling feature is active by default. Handled by a Twingate client app on the user\u2019s device, split tunneling routes traffic to protected resources through secure tunnels while letting other traffic pass over the public internet.\"}),/*#__PURE__*/t(\"p\",{children:[\"You can see the performance impact yourself by \",/*#__PURE__*/e(s,{href:\"https://auth.twingate.com/signup?utm_source=blog&utm_medium=blog&utm_campaign=ztna-reduces-network-latency\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"joining our free Standard tier\"})}),\" for individuals and small teams. Or \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=ztna-reduces-network-latency\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"contact Twingate to learn more\"})}),\" about improving your users\u2019 experience and boosting network performance with Zero Trust Network Access.\"]})]})},{index:43,id:\"fGwb944D1\",[h]:!0,[d]:!1,[p]:\"How Do You Integrate Your DNS Filtering Service With Twingate?\",[u]:\"DNS Filtering Service With Twingate?\",[m]:\"integrate-your-dns-filtering-service\",[g]:\"\",[w]:\"Alex Marshall\",[f]:\"2022-08-19T00:00:00.000Z\",[y]:\"nwIUHELao\",[b]:T({src:\"https://framerusercontent.com/images/wN872W5vJjLTitl8raLkuiEqEU.png\",srcSet:\"https://framerusercontent.com/images/wN872W5vJjLTitl8raLkuiEqEU.png?scale-down-to=512 512w,https://framerusercontent.com/images/wN872W5vJjLTitl8raLkuiEqEU.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/wN872W5vJjLTitl8raLkuiEqEU.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/wN872W5vJjLTitl8raLkuiEqEU.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/wN872W5vJjLTitl8raLkuiEqEU.png\",srcSet:\"https://framerusercontent.com/images/wN872W5vJjLTitl8raLkuiEqEU.png?scale-down-to=512 512w,https://framerusercontent.com/images/wN872W5vJjLTitl8raLkuiEqEU.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/wN872W5vJjLTitl8raLkuiEqEU.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/wN872W5vJjLTitl8raLkuiEqEU.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"DNS filtering adds an extra layer of security to your employees\u2019 internet use. Here\u2019s everything you need to know about integrating your DNS filtering service into the Twingate Zero Trust Network Access solution.\"}),/*#__PURE__*/e(\"h1\",{children:\"What is a DNS filter?\"}),/*#__PURE__*/e(\"p\",{children:\"How users access the web can affect network security and reduce productivity. DNS filtering gives you control over the websites that users access, intentionally or unintentionally. A DNS filter acts before a browser or other web-aware application ever connects to malicious or unauthorized sites.\"}),/*#__PURE__*/e(\"h2\",{children:\"How does DNS work?\"}),/*#__PURE__*/t(\"p\",{children:[\"URLs are written so people can easily understand them. Computers, on the other hand, need to know a website\u2019s numerical IP address. The \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/introduction-to-dns-how-dns-works-with-twingate\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Domain Name System\"})}),\" is the global network that translates web domains into IP addresses.\"]}),/*#__PURE__*/e(\"p\",{children:\"When a user clicks a link, the browser contacts a DNS resolver which queries other servers in the DNS until it gets the website\u2019s IP address. Users can only access the destination website after the DNS resolver hands the IP address to the browser.\"}),/*#__PURE__*/e(\"p\",{children:\"DNS filters are features offered by some resolvers that refuse specific requests, thus preventing the browser from ever connecting to unsafe or inappropriate websites.\"}),/*#__PURE__*/e(\"h2\",{children:\"What are blocklists and allowlists?\"}),/*#__PURE__*/t(\"p\",{children:[\"DNS filters work by using \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/whitelisting\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"blocklists\"})}),\". DNS service providers maintain lists of malicious domains and IP addresses. When the DNS filter receives a query for one of these prohibited internet destinations, it blocks the request. This approach depends on how quickly DNS service providers spot emerging security threats. Any delay in updating a DNS filter\u2019s blocklist leaves a window of opportunity for security breaches.\"]}),/*#__PURE__*/e(\"p\",{children:\"Another approach is to use an allowlist. A DNS filter will reject any domain or IP address not explicitly included in this list. Although allowlists guarantee that users only access explicitly authorized destinations, this security comes at the expense of usability. Security teams must keep their allowlists synchronized with any network changes and deal with user exception requests.\"}),/*#__PURE__*/e(\"h1\",{children:\"Why is DNS filtering important?\"}),/*#__PURE__*/e(\"p\",{children:\"The most important benefit of DNS filtering is preventing user devices from becoming attack vectors. Phishing attacks, malicious websites, and weaponized banner ads can expose your network with a single mouse click. DNS filtering blocks these attacks \u2014 if the attacks link to known domains. DNS filtering can also mitigate security breaches by preventing malware from contacting known command-and-control servers.\"}),/*#__PURE__*/e(\"p\",{children:\"Companies also use DNS filters to improve productivity by keeping employees from using company systems to shop online or access social media. Similarly, DNS filtering can improve network performance by preventing access to bandwidth-hogging sites such as streaming services.\"}),/*#__PURE__*/e(\"h1\",{children:\"How do I enable DNS filtering services to secure public internet traffic outside of the Twingate network?\"}),/*#__PURE__*/t(\"p\",{children:[\"We recently announced Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/announcing-secure-dns\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Secure DNS\"})}),\", which lets you use DNS over HTTPS (DoH) for traffic outside the Twingate network, making DNS requests harder to intercept and modify. Secure DNS lets you specify the DoH resolver, whether provided by a third party or hosted on your network. If that resolver offers DNS filtering, it will screen every DNS request generated on user devices based upon specific configuration settings. Secure DNS expands our internet security vision, and integrated DNS filtering capabilities are coming soon.\"]}),/*#__PURE__*/e(\"p\",{children:\"Here are the steps for enabling DNS filtering services for traffic outside of the Twingate network.\"}),/*#__PURE__*/e(\"h2\",{children:\"1. Enable DoH for your Twingate account\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Navigate to Settings > Secure DNS\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Toggle the switch to enable DNS over HTTPS (DoH)\"})})]}),/*#__PURE__*/e(\"img\",{alt:\"secure dns admin ui\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,huGyNfnto6Gw1uoJ7KCqGamhGU4.png?originalFilename=secure-dns-admin-ui.png\",src:\"https://framerusercontent.com/images/huGyNfnto6Gw1uoJ7KCqGamhGU4.png\",srcSet:\"https://framerusercontent.com/images/huGyNfnto6Gw1uoJ7KCqGamhGU4.png?scale-down-to=512 512w,https://framerusercontent.com/images/huGyNfnto6Gw1uoJ7KCqGamhGU4.png 800w\"}),/*#__PURE__*/e(\"h2\",{children:\"2. Specify the DoH resolver\"}),/*#__PURE__*/e(\"ul\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Change the DoH Resolver to Custom and add the URL for your DNS filtering service (note: ensure that your DNS filtering provider supports DoH and what configuration is needed)\"})})}),/*#__PURE__*/e(\"p\",{children:\"If you\u2019re only interested in DoH capabilities, you can select one of our supported DoH resolvers: Cloudflare, Google, or OpenDNS.\"}),/*#__PURE__*/e(\"h2\",{children:\"3. Choose a Fallback Method\"}),/*#__PURE__*/e(\"p\",{children:\"Should the DoH resolver fail, Twingate\u2019s Client app can either fall back to the device\u2019s default DNS resolver or deny all DNS requests.\"}),/*#__PURE__*/e(\"ul\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Select the Fallback Method\"})})}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Automatic - use default system DNS if resolvers are failing\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Strict - keep DoH requirement, which will likely mean that all DNS resolution will fail\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"4. Manage exceptions\"}),/*#__PURE__*/e(\"p\",{children:\"You can exempt select user groups from the DNS filter. If you created an Administrator group in Twingate, for example, placing that group on the exception list lets group members visit any domain or IP address.\"}),/*#__PURE__*/e(\"p\",{children:\"Add any groups that should be exceptions and not require DoH\"}),/*#__PURE__*/t(\"p\",{children:[\"See how your DNS filter works with Twingate Secure DNS by joining our \",/*#__PURE__*/e(s,{href:\"https://auth.twingate.com/signup?utm_source=blog&utm_medium=blog&utm_campaign=what-is-a-dns-filter\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"free Starter plan\"})}),\". Or contact us to learn more about our modern Zero Trust Network Access solution.\"]})]})},{index:44,id:\"jK_nVLIi3\",[h]:!0,[d]:!1,[p]:\"Connecting Twingate to Render\",[u]:\"Connecting Twingate to Render\",[m]:\"connecting-twingate-to-render\",[g]:\"\",[w]:\"Sree Akkineni\",[f]:\"2022-08-16T00:00:00.000Z\",[y]:\"nwIUHELao\",[b]:T({src:\"https://framerusercontent.com/images/DFLwHUUbJQrIFZXJkFI00aDzZk.png\",srcSet:\"https://framerusercontent.com/images/DFLwHUUbJQrIFZXJkFI00aDzZk.png?scale-down-to=512 512w,https://framerusercontent.com/images/DFLwHUUbJQrIFZXJkFI00aDzZk.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/DFLwHUUbJQrIFZXJkFI00aDzZk.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/DFLwHUUbJQrIFZXJkFI00aDzZk.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/DFLwHUUbJQrIFZXJkFI00aDzZk.png\",srcSet:\"https://framerusercontent.com/images/DFLwHUUbJQrIFZXJkFI00aDzZk.png?scale-down-to=512 512w,https://framerusercontent.com/images/DFLwHUUbJQrIFZXJkFI00aDzZk.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/DFLwHUUbJQrIFZXJkFI00aDzZk.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/DFLwHUUbJQrIFZXJkFI00aDzZk.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"We\u2019re excited to announce our integration with Render, a unified cloud to build and run all your apps and websites. Render is one of the companies that is fulfilling the promise of invisible infrastructure on top of public cloud. It provides a platform that automates the operational role and enables developers to focus on building code rather than the often-repetitive tasks of setting up cloud infrastructure i.e. via providing free TLS certificates, a global CDN, DDoS protection, private networks, and auto deploys from Git.\"}),/*#__PURE__*/e(\"p\",{children:\"Render allows you to quickly and automatically deploy your applications to its cloud platform; that means you can have all your web services, databases, and background workers in managed infrastructure so you don\u2019t need to think about the difficult realities of scaling and provisioning infrastructure.\"}),/*#__PURE__*/e(\"p\",{children:\"In case you\u2019re not familiar with Twingate, Twingate is a zero trust networking platform that allows you to securely access all your internal networks without using VPNs, whether they\u2019re in the cloud, on-prem, or at home.\"}),/*#__PURE__*/e(\"p\",{children:\"Below is a step by step guide to deploying Twingate connectors to access various resources you may be hosting on Render.\"}),/*#__PURE__*/e(\"h1\",{children:\"How to connect Twingate to Render\"}),/*#__PURE__*/e(\"h2\",{children:\"Step 1 - Connect GitHub account to Render\"}),/*#__PURE__*/e(\"p\",{children:\"Make sure your Render account is connected to a GitHub or GitLab repository. For this example we\u2019ll use GitHub. You can do this when you launch your first service on Render or access linking your GitHub profile in your Account Settings panel under the profile sections. By linking your Render to your GitHub.com you can authorize Render to access your repositories.\"}),/*#__PURE__*/e(\"h2\",{children:\"Step 2 - Create a Remote Network\"}),/*#__PURE__*/e(\"p\",{children:\"After creating a Twingate account, from the main \u201CNetwork\u201A page, add a new Remote Network and give it a name. This represents the network we\u2019re going to connect to \u2014 in this case, that would be Render.\"}),/*#__PURE__*/t(\"p\",{children:[\"\\xf0\u0178\u017D\\xa5 Video tutorial: \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=Rb-ugV-msPc\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to create a Remote Network\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"If you don\u2019t have a Twingate account already, please click \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=connecting-twingate-to-render\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\" to sign up.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Step 3 - Add a Connector\"}),/*#__PURE__*/t(\"p\",{children:[\"The next step is to deploy a Twingate Connector, which is a piece of software that allows for secure access to your remote network and the services running on it. In addition to Render, it can also be deployed to cloud instances (\",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/aws\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"AWS\"})}),\", \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/gcp\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"GCP\"})}),\", \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/azure\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Azure\"})}),\", etc.) as well as your home devices, including \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/synology-nas\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Synology NAS\"})}),\" and \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/raspberry-pi-home-assistant\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Raspberry Pi\"})}),\".\"]}),/*#__PURE__*/e(\"h3\",{children:\"Generate Connector tokens\"}),/*#__PURE__*/e(\"p\",{children:\"In this case, we\u2019ll set it up on Render. Click on one of the automatically generated Connectors (the names are random) and complete the following steps:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Click on Docker as the deployment method\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Generate tokens. You\u2019ll be prompted to sign in again, after which you should see two new tokens.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Copy the automatically generated shell command. You will soon run this command on your Render instance to install the Connector there.\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"Step 4 - Deploy\"}),/*#__PURE__*/t(\"p\",{children:[\"Next, we are going to head to the \",/*#__PURE__*/e(s,{href:\"https://github.com/Twingate-Labs/tg-render\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate Labs GitHub page\"})}),\" to start the process of deploying our connectors to Render by clicking the \u201CDeploy to Render\u201A button\"]}),/*#__PURE__*/e(\"img\",{alt:\"twingate render git launch\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,immxYt474S6CENJvlBnerneshk.png?originalFilename=twingate-render-git-launch.png\",src:\"https://framerusercontent.com/images/immxYt474S6CENJvlBnerneshk.png\",srcSet:\"https://framerusercontent.com/images/immxYt474S6CENJvlBnerneshk.png?scale-down-to=512 512w,https://framerusercontent.com/images/immxYt474S6CENJvlBnerneshk.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"This will then take us to our Render service page where we will first input in a Service Group Name - we will use \u201Ctg-connector\u201A\"}),/*#__PURE__*/e(\"p\",{children:\"Next we will need to paste in some metadata variables:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"TENANT_URL:\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"ACCESS_TOKEN:\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"REFRESH_TOKEN:\"})})]}),/*#__PURE__*/e(\"p\",{children:\"The TENANT_URL is your Twingate account name which you can get from your Twingate admin console. Mine in this example is sreetesting.twingate.com\"}),/*#__PURE__*/e(\"img\",{alt:\"sree testing admin\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,3GkaEdrFtfa1G4v0b6KkplvUMRM.png?originalFilename=sree-testing-admin.png\",src:\"https://framerusercontent.com/images/3GkaEdrFtfa1G4v0b6KkplvUMRM.png\",srcSet:\"https://framerusercontent.com/images/3GkaEdrFtfa1G4v0b6KkplvUMRM.png?scale-down-to=512 512w,https://framerusercontent.com/images/3GkaEdrFtfa1G4v0b6KkplvUMRM.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"The ACCESS_TOKEN and REFRESH_TOKEN are both available in your Twingate admin console as well; you will just click the copy button on each one respectively then paste them into Render\"}),/*#__PURE__*/e(\"img\",{alt:\"connector token pasting\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,7JNwbdwgmAIPkLbqZ2aQHLSMWA.png?originalFilename=connector-token-pasting.png\",src:\"https://framerusercontent.com/images/7JNwbdwgmAIPkLbqZ2aQHLSMWA.png\",srcSet:\"https://framerusercontent.com/images/7JNwbdwgmAIPkLbqZ2aQHLSMWA.png?scale-down-to=512 512w,https://framerusercontent.com/images/7JNwbdwgmAIPkLbqZ2aQHLSMWA.png 800w\"}),/*#__PURE__*/e(\"img\",{alt:\"access tokens\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,V94DH5bsVk4C22DneAhULSJBg.png?originalFilename=access-tokens.png\",src:\"https://framerusercontent.com/images/V94DH5bsVk4C22DneAhULSJBg.png\",srcSet:\"https://framerusercontent.com/images/V94DH5bsVk4C22DneAhULSJBg.png?scale-down-to=512 512w,https://framerusercontent.com/images/V94DH5bsVk4C22DneAhULSJBg.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Once you have pasted in the relevant fields hit the Apply button and Render will begin to start to pull the information from the Git Repository about the Docker instance we want to create and actually run it on their cloud. That Docker container is actually running the Twingate connector software and once that connector software starts up it will connect back to our cloud.\"}),/*#__PURE__*/e(\"p\",{children:\"We should get a green check mark next to Create background worker line if the connector has successfully connected to Render.\"}),/*#__PURE__*/e(\"img\",{alt:\"create background worker\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,cOTTy6kLe3jwwb0b3I72uTqfVk.png?originalFilename=create-background-worker.png\",src:\"https://framerusercontent.com/images/cOTTy6kLe3jwwb0b3I72uTqfVk.png\",srcSet:\"https://framerusercontent.com/images/cOTTy6kLe3jwwb0b3I72uTqfVk.png?scale-down-to=512 512w,https://framerusercontent.com/images/cOTTy6kLe3jwwb0b3I72uTqfVk.png 800w\"}),/*#__PURE__*/t(\"p\",{children:[\"** \",/*#__PURE__*/e(\"strong\",{children:\"Important Note\"}),\" **\"]}),/*#__PURE__*/e(\"p\",{children:\"Any updates Twingate makes to our GitHub repo will automatically cause the connectors to update. If you don\u2019t want this behavior then please clone our repository first before deploying the connectors.\"})]})},{index:45,id:\"xqN5M66LY\",[h]:!0,[d]:!1,[p]:\"What is Transport Layer Security?\",[u]:\"What is Transport Layer Security?\",[m]:\"what-is-transport-layer-security-tls\",[g]:\"\",[w]:\"Paul Andre de Vera\",[f]:\"2022-08-12T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/gUXSAET2TfIfrgZhengipcLR9Kk.png\",srcSet:\"https://framerusercontent.com/images/gUXSAET2TfIfrgZhengipcLR9Kk.png?scale-down-to=512 512w,https://framerusercontent.com/images/gUXSAET2TfIfrgZhengipcLR9Kk.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/gUXSAET2TfIfrgZhengipcLR9Kk.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/gUXSAET2TfIfrgZhengipcLR9Kk.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/gUXSAET2TfIfrgZhengipcLR9Kk.png\",srcSet:\"https://framerusercontent.com/images/gUXSAET2TfIfrgZhengipcLR9Kk.png?scale-down-to=512 512w,https://framerusercontent.com/images/gUXSAET2TfIfrgZhengipcLR9Kk.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/gUXSAET2TfIfrgZhengipcLR9Kk.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/gUXSAET2TfIfrgZhengipcLR9Kk.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Transport Layer Security protects data passing over the public internet. Its most recognizable use is securing web traffic. Many other internet and network applications \u2014 from video conferencing to remote access \u2014 use TLS to enhance security and privacy. This article will explain the origins of TLS, how it works, and how it can be part of a modern secure access solution.\"}),/*#__PURE__*/e(\"h1\",{children:\"What is the Transport Layer Security protocol?\"}),/*#__PURE__*/t(\"p\",{children:[\"Transport Layer Security is a cryptographic protocol that creates secure, private network connections. Anyone browsing the web uses TLS whenever they visit an HTTPS-enabled website. Besides the web, TLS protects other forms of internet communications from email to messaging to video conferencing. Some virtual private network (\",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/what-is-a-vpn-alternative\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN\"})}),\") services use TLS to secure traffic between their servers and users\u2019 browsers. You can also see TLS in action in more modern Zero Trust secure access solutions.\"]}),/*#__PURE__*/e(\"h2\",{children:\"SSL, TLS, and HTTPS - What\u2019s the difference?\"}),/*#__PURE__*/e(\"p\",{children:\"Although TLS and SSL get used interchangeably, they are not quite the same thing. SSL, or Secure Sockets Layer, was the first widely-adopted security protocol for web browsers. Scientists created the World Wide Web to share documentation and other reference material. Protecting passwords and credit card numbers was not top of mind.\"}),/*#__PURE__*/e(\"p\",{children:\"HTTPS, which stands for Hypertext Transfer Protocol Secure, is a version of the web communication protocol enhanced with cryptographic security. SSL was the original cryptography protocol in HTTPS. As with SSL, Netscape developed HTTPS in the mid-90s before being taken over by the IETF. The IETF migrated HTTPS to TLS in 2000.\"}),/*#__PURE__*/e(\"p\",{children:\"Any time you see \u201CSSL\u201A describing an application or service, you can count on it using one of the latest versions of TLS.\"}),/*#__PURE__*/e(\"p\",{children:\"HTTPS, which stands for Hypertext Transfer Protocol Secure, is a version of the web communication protocol enhanced with cryptographic security. As with SSL, Netscape developed HTTPS in the mid-90s before being taken over by the IETF. SSL was the original cryptography protocol in HTTPS. The IETF migrated HTTPS to TLS in 2000.\"}),/*#__PURE__*/e(\"h1\",{children:\"Why is Transport Layer Security needed?\"}),/*#__PURE__*/e(\"p\",{children:\"Neither the internet nor the web was designed for privacy and security. Without something like TLS, anyone could intercept your web traffic and see passwords, credit card numbers, and other personal data. Fake versions of popular websites could harvest personal data from thousands of people. Criminals could hijack your connection to hack into a company network. Transport Layer Security addresses these security risks with three core features:\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Authentication\"}),\": Servers must prove they are legitimate by supplying a certificate before making the TLS connection. In some cases, the client must also provide a certificate.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Data privacy\"}),\": Encryption algorithms secure the data transported between a client and server.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Data integrity\"}),\": TLS inspects each record it receives to confirm its data has not been modified in transit.Combining these three features helps secure internet communications against rogue websites, internet eavesdroppers, and other dangers on the public internet.\"]}),/*#__PURE__*/e(\"h1\",{children:\"How does TLS work?\"}),/*#__PURE__*/e(\"p\",{children:\"Transport layer security works in two stages: setting up a secure connection between a client and a server and then using cryptography to protect the exchanged records. A quick recap of TLS concepts will set the table for an explanation of how transport layer security works.\"}),/*#__PURE__*/e(\"h2\",{children:\"Asymmetric and symmetric keys\"}),/*#__PURE__*/e(\"p\",{children:\"TLS uses two types of cryptographic algorithms. In asymmetric, or public-key, cryptography, the server generates a private key that stays on the server and a public key that goes to the client. Anyone with the server public key can encrypt a message but decrypting the message requires the private key, which only the server has.\"}),/*#__PURE__*/e(\"p\",{children:\"Symmetric, or secret-key, cryptography uses a shared key that lets both sides encrypt and decrypt data. This approach is more efficient than asymmetric cryptography but could be compromised if a third party got hold of the shared key.\"}),/*#__PURE__*/e(\"p\",{children:\"Asymmetric algorithms let TLS secure the initial exchange of symmetric keys. Encrypting the shared key ensures nobody can intercept it. Once the exchange is complete, symmetric cryptography protects all data flowing between the client and the server.\"}),/*#__PURE__*/e(\"h2\",{children:\"Certificates and Certificate Authorities\"}),/*#__PURE__*/e(\"p\",{children:\"TLS uses digital certificates to confirm the server\u2019s and sometimes the client\u2019s identities. A web server\u2019s owner receives this digital certificate from a third party, such as IdenTrust or DigiCert. Browser makers recognize these Certificate Authorities (CAs) as trusted sources. Receiving a CA-issued certificate indicates that the web server is legitimate.\"}),/*#__PURE__*/e(\"h2\",{children:\"What does TLS mean by layers?\"}),/*#__PURE__*/t(\"p\",{children:[\"Internet Protocol groups its communication methods into layers. An application layer sits at the top, followed by the transport, internet, and link layers. As you descend through the stack, you get closer to the network\u2019s physical hardware. TLS is an application-layer protocol. Sitting between higher-level application protocols such as HTTPS and transport protocols such as \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/tcp-vs-udp\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"TCP\"})}),\", it intercepts data passing between the two layers.\"]}),/*#__PURE__*/e(\"p\",{children:\"Inside TLS are two more layers. The handshake protocol handles the initial contact between a client and server. It authenticates the two sides, sets up the protocols they will use, and creates the secure TLS tunnel. The record protocol divides traffic into records, encrypts each one with the symmetric key, validates and decrypts incoming records, and reassembles these records into messages for the application layer.\"}),/*#__PURE__*/e(\"h2\",{children:\"TLS handshake protocol\"}),/*#__PURE__*/e(\"p\",{children:\"When you point your web browser to an HTTPS-enabled website, it triggers a series of exchanges between your system (the client) and the web server. The exact steps will vary depending on which cryptography algorithms and certification processes the client-server relationship requires. A simplified process would look something like this:\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Client\"}),\": Sends the TLS versions, hash functions, and cryptography algorithms it supports.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Server\"}),\": Replies with the TLS version, hash function, and cryptography algorithm the session will use along with its digital certificate and public key.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Client\"}),\": Verifies the certificate with the Certificate Authority and sends a symmetric key encrypted with the server\u2019s public key.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Client\"}),\": Sends a \u201Cfinished\u201A message encrypted with the shared symmetric key.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Server\"}),\": Sends a \u201Cfinished\u201A message encrypted with the shared symmetric key.\"]}),/*#__PURE__*/e(\"p\",{children:\"The successful exchange of finished messages completes the handshake, and the secure session begins.\"}),/*#__PURE__*/e(\"h2\",{children:\"TLS record protocol\"}),/*#__PURE__*/e(\"p\",{children:\"The TLS record layer takes data from the system application layer and chunks it into records, passing them to the system transport layer for routing to the network. When the transport layer hands over incoming records, the TLS record layer decrypts the records and assembles them into a message for the system application layer.\"}),/*#__PURE__*/e(\"p\",{children:\"Another service the record layer provides is verifying the integrity of incoming records. How the integrity check works depends on which TLS protocol the session uses. In TLS 1.2, the handshake protocol agrees on a shared hash function the client and server will use to verify data integrity.\"}),/*#__PURE__*/e(\"p\",{children:\"Once connected, the record protocol verifies each record\u2019s integrity. The sending endpoint\u2019s TLS record protocol:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Receives message from the client application layer.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Divides message into records.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Encrypts record.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Hashes encrypted record to generate message authentication code (\",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/access-control-models\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"MAC\"})}),\").\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Signs encrypted record with MAC.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Hands signed encrypted record to the transport layer for distribution.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Once the record arrives at the receiving endpoint, its TLS record protocol:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Hashes the encrypted record.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Compares the result to the encrypted record\u2019s MAC.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"If the MAC and the hash do not match, then TLS 1.2 terminates the connection because something tampered with the data in transit. Otherwise, the record is secure and safe for decryption.\"}),/*#__PURE__*/e(\"p\",{children:\"TLS 1.3 does away with hash functions and message authentication codes. This version only uses Authenticated Encryption with Associated Data (AEAD) cryptography algorithms which have built-in integrity checks. If the decryption fails, something is wrong, and TLS 1.3 terminates the session.\"}),/*#__PURE__*/e(\"h2\",{children:\"How is TLS used?\"}),/*#__PURE__*/e(\"p\",{children:\"We have used web browsing to discuss TLS in action because it\u2019s how most people protect their browsing experience. When people see the closed padlock in the address bar, they know their data is protected. Google\u2019s Chrome browser takes this a step further by flagging HTTP-only websites as not secure. These nudges in consumer behavior forced most websites to implement HTTPS and, by extension, TLS.\"}),/*#__PURE__*/e(\"p\",{children:\"Other internet applications use TLS. Even though Zoom and other video apps do not use the same transport layer protocols as web browsers \u2014 UDP rather than TCP \u2014 they encrypt their data with TLS.\"}),/*#__PURE__*/e(\"h2\",{children:\"SSL VPNs using TLS\"}),/*#__PURE__*/t(\"p\",{children:[\"Browser-based \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/ssl-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"virtual private networks use TLS\"})}),\" to create secure tunnels between their servers and a browser. These services are easy to use since they do not need a dedicated app.However, the TLS protection only applies to the connection between the browser and the VPN server. Other apps cannot use the VPN connection. Some SSL VPN providers solve that issue by offering plug-ins or client apps that extend the VPN beyond the browser.\"]}),/*#__PURE__*/e(\"p\",{children:\"This limitation may not matter when businesses use an SSL VPN as a remote access solution \u2014 as long as their business apps use web technologies. With an SSL VPN, users get encrypted access through the company\u2019s VPN gateway to internally-hosted or cloud-hosted web apps. This approach offers several advantages over VPNs using IPsec or OpenVPN:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Users only need a browser to access company resources.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Less configuration and support are needed.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Simpler to implement with contractor-owned or personal devices.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"User access is easier to limit to specific applications.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"However, traditional VPN protocols may be more appropriate when users need to access legacy systems or when administrators need features that are only available in more capable VPN protocols.\"}),/*#__PURE__*/e(\"h2\",{children:\"Are any VPNs secure?\"}),/*#__PURE__*/e(\"p\",{children:\"SSL VPNs may be more convenient and easier to manage than traditional VPN protocols, but they still suffer the weaknesses inherent to VPN technologies.\"}),/*#__PURE__*/e(\"p\",{children:\"Consolidating all remote traffic through VPN gateways creates bottlenecks in protected networks that negatively affect bandwidth and latency. Network performance suffers even more when remote users\u2019 access to cloud resources must round trip through the private network.VPN technologies, no matter what protocol you use, will expand your company\u2019s attack surface. Gateways broadcast their presence on the public internet, making it easy for hackers to discover and exploit any unpatched vulnerabilities. Once compromised, the VPN gateway gives hackers full access to the network it was supposed to protect.\"}),/*#__PURE__*/e(\"h1\",{children:\"Twingate Zero Trust solutions and TLS\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate uses TLS to encrypt data exchanged by your users and protected resources within a complete Zero Trust Network Access (\",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"ZTNA\"})}),\") solution. Zero Trust is a modern secure access framework that significantly reduces attack surfaces while simplifying granular access control policies.\"]}),/*#__PURE__*/e(\"p\",{children:\"Based on the assumption that any network, resource, or device can be compromised at any time. Zero Trust shifts the focus of information security from defending network perimeters to protecting resources. Any attempt to access a resource is rejected unless explicitly verified by user identity and device posture. Policies based on the principle of least privilege limit user access to only the resources they need for their work. Zero Trust constrains hackers\u2019 ability to leverage a breach and prevents them from moving laterally through a network.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate\u2019s Zero Trust solution creates direct, encrypted TLS connections between users and their authorized resources. The users could be in the office or at home. The resources could be on-premises or hosted in the cloud. Twingate creates a unified system that manages access across your organization.\"}),/*#__PURE__*/t(\"p\",{children:[\"TLS 1.2 protects connections from browsers and other applications that use the TCP transport protocol. Twingate can also deliver \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/network-connectivity-for-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"fast, low-latency connections using the QUIC transport layer protocol\"})}),\". Built upon UDP, QUIC\u2019s multiplexed streams improve connection performance and handle network changes better than TCP. QUIC uses TLS 1.3 to keep data secure and private.\"]}),/*#__PURE__*/e(\"p\",{children:\"In both cases, these TLS tunnels are certificate-pinned to the protected resource\u2019s Twingate proxy app, called the Controller.\"}),/*#__PURE__*/t(\"p\",{children:[\"Experience Twingate\u2019s performance, simplicity, and security by joining our free Standard plan for individuals and small teams. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=what-is-tls\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact Twingate today\"})}),\" to learn how easy migrating to Zero Trust Network Access can be.\"]})]})},{index:46,id:\"MmFp8aWK_\",[h]:!0,[d]:!1,[p]:\"Should businesses consider WireGuard?\",[u]:\"WireGuard VPN\",[m]:\"what-is-wireguard-vpn\",[g]:\"\",[w]:\"Paul Andre de Vera\",[f]:\"2022-08-05T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/3FYR1aJKVccUIr8m069SUDbbKrg.png\",srcSet:\"https://framerusercontent.com/images/3FYR1aJKVccUIr8m069SUDbbKrg.png?scale-down-to=512 512w,https://framerusercontent.com/images/3FYR1aJKVccUIr8m069SUDbbKrg.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/3FYR1aJKVccUIr8m069SUDbbKrg.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/3FYR1aJKVccUIr8m069SUDbbKrg.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/3FYR1aJKVccUIr8m069SUDbbKrg.png\",srcSet:\"https://framerusercontent.com/images/3FYR1aJKVccUIr8m069SUDbbKrg.png?scale-down-to=512 512w,https://framerusercontent.com/images/3FYR1aJKVccUIr8m069SUDbbKrg.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/3FYR1aJKVccUIr8m069SUDbbKrg.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/3FYR1aJKVccUIr8m069SUDbbKrg.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Kernel-level support for WireGuard, the next-generation protocol for \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/what-is-a-vpn-alternative\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"virtual private networks\"})}),\" (VPNs), expanded to Windows last year. This news raises the question of whether WireGuard VPN is ready to replace \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/ipsec\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"IPsec\"})}),\" and \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/what-is-openvpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"OpenVPN\"})}),\". Naturally, it depends. We will introduce WireGuard VPN, discuss its advantages, and explain where certain businesses can benefit from using WireGuard VPN to secure their remote traffic.\"]}),/*#__PURE__*/e(\"h1\",{children:\"What is WireGuard VPN?\"}),/*#__PURE__*/e(\"p\",{children:\"WireGuard is a modern VPN protocol that avoids the compromises of established protocols like OpenVPN and IPsec. As a general-purpose VPN, WireGuard\u2019s code is light enough to run on embedded systems and performant enough for supercomputing applications. The WireGuard project aimed to deliver these core benefits:\"}),/*#__PURE__*/e(\"h2\",{children:\"Performance\"}),/*#__PURE__*/e(\"p\",{children:\"WireGuard can outperform other protocols across several metrics. Its cryptography protocols are highly efficient, which lets WireGuard process packets faster than other protocols.\"}),/*#__PURE__*/e(\"p\",{children:\"Kernel-level support for WireGuard eliminates context switching, further improving performance. OpenVPN, on the other hand, runs in userspace, requiring extra hand-offs between it and the operating system.\"}),/*#__PURE__*/e(\"p\",{children:\"The user experience improves since WireGuard can roam across IP addresses. When a device switches from a mobile network to a WiFi network, WireGuard\u2019s VPN tunnel remains in place for a seamless transition.\"}),/*#__PURE__*/e(\"h2\",{children:\"Strong encryption\"}),/*#__PURE__*/e(\"p\",{children:\"VPN protocols like OpenVPN and IPsec appeared decades ago. Cryptography has advanced considerably since then. WireGuard takes advantage of state-of-the-art developments to offer more powerful encryption capabilities such as:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Noise protocol framework\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Curve25519\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"ChaCha20\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Poly1305\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"BLAKE2\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"SipHash24\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"HKDF\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"Secure code base\"}),/*#__PURE__*/e(\"p\",{children:\"Legacy VPN protocols like OpenVPN and IPsec have evolved to meet many use cases. IPsec, in particular, is very flexible. Developers and network administrators can configure the protocol for their unique requirements. That flexibility, however, creates problems. One misconfigured setting in a complex implementation can create vulnerabilities that hackers can exploit.\"}),/*#__PURE__*/e(\"p\",{children:\"In addition, these older protocols have massive codebases. IPsec and OpenVPN implementations extend to several hundred thousand lines of code. The more code, the more opportunities for error. The Internet Engineering Task Force (IETF) IPsec development while OpenVPN is an open-source project. Although they have their strengths, neither model can thoroughly vet enormous and complex protocols\"}),/*#__PURE__*/e(\"p\",{children:\"WireGuard, on the other hand, runs on a mere 4,000 lines of code \u2014 all of it open source. Security experts can easily inspect this code to find and address vulnerabilities. Developers can spend less time and effort when reviewing their WireGuard implementations. This small footprint is another reason for WireGuard\u2019s performance advantages and ability to run on embedded systems.\"}),/*#__PURE__*/e(\"h2\",{children:\"Advanced features for\"}),/*#__PURE__*/e(\"p\",{children:\"WireGuard has business-friendly capabilities as well. Network administrators can make WireGuard the only network interface in their Docker containers, ensuring that any data entering and leaving the container is fully encrypted.\"}),/*#__PURE__*/e(\"p\",{children:\"WireGuard does not require complex firewall extensions because of the way it encrypts and authenticates every IP packet. The protocol\u2019s cryptokey routing tables let you quickly confirm whether packets are secure and authentic, simplifying network access control.\"}),/*#__PURE__*/e(\"h1\",{children:\"What supports WireGuard?\"}),/*#__PURE__*/t(\"p\",{children:[\"WireGuard\u2019s creator, Jason Donenfeld, had grown frustrated with Linux\u2019s bloated, inefficient VPN capabilities. He felt a modern protocol would significantly enhance the open-source operating system. Although he met initial resistance from the community, he eventually won over Linus Torvalds, who \",/*#__PURE__*/e(s,{href:\"https://lwn.net/ml/linux-kernel/CA+55aFz5EWE9OTbzDoMfsY2ez04Qv9eg0KQhwKfyJY0vFvoD3g@mail.gmail.com\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"said in 2018\"})}),\":\"]}),/*#__PURE__*/e(\"p\",{children:\"\u201CMaybe the code isn\u2019t perfect, but I\u2019ve skimmed it, and compared to the horrors that are OpenVPN and IPSec, it\u2019s a work of art.\u201A\"}),/*#__PURE__*/e(\"p\",{children:\"After being an experimental option for several years, WireGuard was formally included as a stable feature in 2020.\"}),/*#__PURE__*/e(\"p\",{children:\"Through much of its development, WireGuard was available as a userspace option for Windows. In late 2021, WireGuard released a device driver for Windows 7 through 11. Driver support has been extended to Windows Server 2008R2 and later. This WireGuardNT driver is still an experimental feature, however, with more testing and development ahead of it.\"}),/*#__PURE__*/e(\"p\",{children:\"Even without kernel-level support, you can run WireGuard in userspace on every major desktop and mobile platform.\"}),/*#__PURE__*/e(\"h2\",{children:\"WireGuard integration in VPN services\"}),/*#__PURE__*/e(\"p\",{children:\"As WireGuard development was underway, personal VPN services let consumers replace OpenVPN and IPsec with the new protocol. NordVPN, Mullvard, Surfshark, and others were early adopters of WireGuard VPN. The protocol is gradually expanding its presence with other third-party VPN providers. However, you are less likely to find WireGuard in enterprise VPN solutions.\"}),/*#__PURE__*/e(\"h1\",{children:\"Should businesses consider WireGuard?\"}),/*#__PURE__*/e(\"p\",{children:\"For many business use cases, WireGuard\u2019s implementation has unacceptable tradeoffs. Government agencies, as well as some regulated industries, simply cannot use WireGuard. Yet, many businesses may find WireGuard\u2019s performance and simplicity worth considering.\"}),/*#__PURE__*/e(\"h2\",{children:\"Privacy concerns about WireGuard\"}),/*#__PURE__*/e(\"p\",{children:\"WireGuard does not assign IP addresses dynamically. Instead, it stores IP addresses on the VPN server. Each WireGuard VPN implementation must either accept this or add code to flush old IP addresses from the system.\"}),/*#__PURE__*/e(\"p\",{children:\"Another privacy concern arises when users travel to countries that regulate internet access. WireGuard\u2019s reliance on UDP makes it much easier for national firewalls to spot and block VPN traffic.\"}),/*#__PURE__*/e(\"h2\",{children:\"WireGuard encryption protocols are not federally approved\"}),/*#__PURE__*/e(\"p\",{children:\"U.S. government agencies, their contractors, and certain regulated industries must follow specific guidelines for using VPNs. WireGuard\u2019s encryption algorithms are not authorized by the National Institute of Standards and Technology or the Committee on National Security Systems. That makes it off-limits for federal agencies and many enterprises.\"}),/*#__PURE__*/e(\"h2\",{children:\"WireGuard \u201Csupport\u201A is risky\"}),/*#__PURE__*/e(\"p\",{children:\"As mentioned earlier, Windows kernel-level support for WireGuard requires installing an experimental driver. But most organizations will be reluctant to deploy WireGuard into production. Instead, now may be a good time to experiment with WireGuard to understand how it may help network performance and security.\"}),/*#__PURE__*/e(\"p\",{children:\"Although WireGuard has kernel-level support in Linux, the decision may not be any easier. Linux distributions treat WireGuard differently. For example, Red Hat Linux Enterprise 9 includes WireGuard as a \u201Ctechnology preview\u201A and does not recommend the protocol for production use. In addition, companies that use Red Hat must disable the operating system\u2019s Federal Information Processing Standard (FIPS) mode since WireGuard does not use NIST-approved encryption algorithms.\"}),/*#__PURE__*/e(\"h2\",{children:\"Simplicity shifts complexity to developers\"}),/*#__PURE__*/e(\"p\",{children:\"Legacy VPN protocols, especially IPsec, are widely used by enterprises because they are feature rich. They give developers room to customize VPN implementations. The WireGuard project\u2019s decision to make simplicity a core philosophy offers many benefits, but makes particular implementations more complex. Capabilities that involve IPsec configuration changes require additional development work with WireGuard.\"}),/*#__PURE__*/e(\"h2\",{children:\"When could businesses use WireGuard VPN?\"}),/*#__PURE__*/e(\"p\",{children:\"Small or mid-sized organizations that use consumer and commercial VPN providers can use WireGuard today. These businesses have already decided the benefits these services offer outweigh the loss of control. The provider handles any issues with implementation and privacy. Switching their VPN protocols to WireGuard gives these businesses a more seamless, performant experience.\"}),/*#__PURE__*/e(\"p\",{children:\"Larger organizations with specific use cases may consider using WireGuard when they can balance the development effort with the performance benefits. As mentioned earlier, WireGuard\u2019s lightweight codebase and container compatibility make it an option for secure communications in cloud environments. However, any decision to implement WireGuard requires a careful evaluation of the risks and capabilities relative to IPsec or OpenVPN.\"}),/*#__PURE__*/e(\"h2\",{children:\"WireGuard is still VPN\"}),/*#__PURE__*/e(\"p\",{children:\"Another question many organizations are asking is whether they should keep using VPN at all, regardless of the protocols powering it. VPN is a legacy technology designed for an age when most information resources, networks, and users sat within a secure perimeter. Things look quite different today:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Resources are scattered across the cloud.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Many applications are provided by X-as-a-Service third parties.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Most users work remotely.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Many more users are not company employees.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Outsourcing and bring-your-own-device policies multiply device populations.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Cybercriminals are increasingly sophisticated.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"As a result of these changes, VPN has made managing network access expensive and difficult. VPN gateways concentrate traffic, reducing bandwidth and increasing latency. And vulnerabilities inherent to VPN\u2019s architecture make the technology a common vector for security breaches. WireGuard does little to mitigate VPN\u2019s weaknesses.\"}),/*#__PURE__*/e(\"h1\",{children:\"Twingate is a secure WireGuard alternative\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate offers a more secure and performant alternative to WireGuard VPN. Based on a \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/zero-trust-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust framework\"})}),\", Twingate shifts the focus of secure access away from networks to protect encrypted, direct connections between each user and the resources they access.\"]}),/*#__PURE__*/e(\"p\",{children:\"Replacing VPN\u2019s hub-and-spoke topology and routing user/resource traffic directly improves network performance and the user experience. Private networks no longer backhaul traffic between users and cloud resources. Low-latency connections give users more responsive access to their work.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate is simple to deploy, simple to manage, and easy to use. DevSecOps teams can deploy our lightweight proxy apps through their existing CI/CD pipelines. Administrator consoles can onboard and off-board users at the click of a button. Users no longer need to switch gateways to access the resources they need.\"}),/*#__PURE__*/t(\"p\",{children:[\"Companies worldwide rely on Twingate to provide their users with a seamless, secure access experience. Try Twingate yourself by signing up for our \",/*#__PURE__*/e(s,{href:\"https://auth.twingate.com/signup?utm_source=blog&utm_medium=blog&utm_campaign=what-is-wireguard-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"free Starter plan\"})}),\". Or \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=what-is-wireguard-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"contact us\"})}),\" to learn how Twingate can solve your secure access challenges today.\"]})]})},{index:47,id:\"yzlv_V6QE\",[h]:!0,[d]:!1,[p]:\"Announcing Secure DNS with Twingate\",[u]:\"Announcing Secure DNS\",[m]:\"announcing-secure-dns\",[g]:\"\",[w]:\"Alex Marshall\",[f]:\"2022-08-02T00:00:00.000Z\",[y]:\"KI2UGBfh7\",[b]:T({src:\"https://framerusercontent.com/images/KS8McPG4AaAE1CxvV4WEDhRoF4.png\",srcSet:\"https://framerusercontent.com/images/KS8McPG4AaAE1CxvV4WEDhRoF4.png?scale-down-to=512 512w,https://framerusercontent.com/images/KS8McPG4AaAE1CxvV4WEDhRoF4.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/KS8McPG4AaAE1CxvV4WEDhRoF4.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/KS8McPG4AaAE1CxvV4WEDhRoF4.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/KS8McPG4AaAE1CxvV4WEDhRoF4.png\",srcSet:\"https://framerusercontent.com/images/KS8McPG4AaAE1CxvV4WEDhRoF4.png?scale-down-to=512 512w,https://framerusercontent.com/images/KS8McPG4AaAE1CxvV4WEDhRoF4.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/KS8McPG4AaAE1CxvV4WEDhRoF4.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/KS8McPG4AaAE1CxvV4WEDhRoF4.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Businesses around the world are in the midst of a tectonic shift to support a work-from-anywhere workforce without sacrificing company security. Our customers tell us their IT and security teams are grappling with how to provide employees with the same ease of use they experienced when working inside a heavily protected office network. Achieving a balance of security and usability when employees are accessing both public and private resources from hundreds of individual networks all over the world is a major challenge.\"}),/*#__PURE__*/e(\"p\",{children:\"A critical component of a modern security strategy is protecting internet traffic. We\u2019re excited to announce Twingate\u2019s very first capability to protect and encrypt not just users\u2019 private traffic, but also the most common unencrypted traffic that flows over networks today: DNS.\"}),/*#__PURE__*/e(\"h1\",{children:\"The history of the Domain Name System\"}),/*#__PURE__*/t(\"p\",{children:[\"The \",/*#__PURE__*/e(s,{href:\"https://framer.com/projects/what-is-private-dns?utm_source=blog&utm_medium=blog&utm_campaign=DNS\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Domain Name System\"})}),\" was established in 1983 and traces its roots back to the proto-Internet, ARPANET. DNS is the global name translation system for the internet that converts human-readable network addresses such as \",/*#__PURE__*/e(s,{href:\"http://www.google.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"www.google.com\"})}),\" into machine-readable IP addresses such as \u201C172.253.124.147\u201A or \u201C2607:f8b0:4004:c06::67\u201A that networks use to route traffic from source to destination.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"span\",{children:\"                              \"}),/*#__PURE__*/e(\"em\",{children:\"The DNS system converts human-readable addresses into network addresses through a distributed, hierarchical system.\"})]}),/*#__PURE__*/e(\"p\",{children:\"Although there have been some security improvements recently, such as DNSSEC, the vast majority of DNS requests are still unencrypted and hence vulnerable to a range of exploits from data collection to perpetrating phishing attacks.\"}),/*#__PURE__*/e(\"p\",{children:\"DNS-over-HTTPS (DoH) encapsulates standard DNS requests into encrypted HTTPS requests, hiding the contents of the requests from third parties. DoH requests are sent to a trusted DoH resolver endpoint, and DNS resolution is sent back to the client via the same encrypted channel. A significant benefit of DoH is its simplicity. DoH is applied without requiring any changes to the originating client application. DoH works on any network that allows Internet traffic and does not require any special configuration.\"}),/*#__PURE__*/e(\"h1\",{children:\"The importance of encrypting DNS traffic\"}),/*#__PURE__*/t(\"p\",{children:[\"The DNS system was designed with scalability in mind from the beginning through a hierarchical architecture that relies on caching name lookups at different levels of the system. This distributed system has the benefit of affording a global level of scalability, but because the system exchanges information unencrypted, this also leaves it open to attack. The ease of readability allows for eavesdropping and manipulation of the contents of these questions, making DNS a prime \",/*#__PURE__*/e(s,{href:\"https://cybernews.com/resources/what-is-a-dns-attack\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"target for attackers\"})}),\".\"]}),/*#__PURE__*/e(\"p\",{children:\"In addition to its plaintext nature, the caching inherent to the DNS hierarchy also leaves it vulnerable to a specific type of attack known as DNS poisoning. With just the right timing\u2014made possible by watching the unencrypted exchange of requests\u2014an attacker can respond with a network address that they control when a user looks up a legitimate domain name. The attacker can then fake a legitimate site, collecting private information without the user\u2019s knowledge until it\u2019s too late.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"span\",{children:\"                              \"}),/*#__PURE__*/e(\"em\",{children:\"Caption: Bad actors may spoof network addresses for legitimate names in the DNS system through an attack known as DNS poisoning.\"})]}),/*#__PURE__*/e(\"p\",{children:\"To protect against this and many other types of DNS-based attacks, DNS queries can instead be sent through HTTPS rather than over plaintext, unvalidated UDP. This is the role that DNS over HTTPS (DoH) plays by encrypting DNS queries through encapsulation in an HTTPS request and sending them to a trusted DoH resolver. Hiding DNS queries from view is like taking a postcard, inserting it inside an envelope, and sealing it shut. DNS traffic is also hidden among other HTTPS traffic to websites and web apps, so packets can\u2019t be as easily identified.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"span\",{children:\"                              \"}),/*#__PURE__*/e(\"em\",{children:\"DNS-over-HTTPS (DoH) hides DNS traffic from view, preventing most types of DNS-based attacks.\"})]}),/*#__PURE__*/e(\"h1\",{children:\"Introducing device-wide DNS encryption with Twingate\"}),/*#__PURE__*/t(\"p\",{children:[\"Most modern browsers offer automatic DoH protection to trusted DoH resolvers, but DNS requests on devices are not isolated to browsers. This leaves a gap in DNS protection that Twingate is uniquely positioned to fill. The Twingate client provides configuration-less private DNS resolution, making it possible to offer automatic DoH protection for all DNS traffic on a device (for details, see \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/how-dns-works-with-twingate\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"how DNS works with Twingate\"})}),\"). Not only browser-originated DNS requests are automatically encrypted\u2014any DNS request on a user\u2019s device, regardless of the application, gets encrypted.\"]}),/*#__PURE__*/e(\"p\",{children:\"The benefits of encrypting DNS traffic by default are clear, and rather than relying on application-specific configurations for DoH, such as browser-based DoH, Twingate now provides blanket DNS encryption for all DNS traffic on a device.\"}),/*#__PURE__*/e(\"img\",{alt:\"secure dns admin ui\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,huGyNfnto6Gw1uoJ7KCqGamhGU4.png?originalFilename=secure-dns-admin-ui.png\",src:\"https://framerusercontent.com/images/huGyNfnto6Gw1uoJ7KCqGamhGU4.png\",srcSet:\"https://framerusercontent.com/images/huGyNfnto6Gw1uoJ7KCqGamhGU4.png?scale-down-to=512 512w,https://framerusercontent.com/images/huGyNfnto6Gw1uoJ7KCqGamhGU4.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Secure DNS is enforced on any user running the Twingate Client. Twingate admins can select the DoH resolver of their choice, such as Cloudflare, Google, OpenDNS, or custom. DoH policy can be set where all DNS traffic must be encrypted for always-on protection, or as an automatic failover mode where Twingate uses regular DNS if we can\u2019t contact the DoH resolver.\"}),/*#__PURE__*/t(\"p\",{children:[\"DoH applied universally across all systems and resources enforces a comprehensive defense-in-depth strategy for today\u2019s cybersecurity threats. This system-wide DoH capability opens up new possibilities for DNS security by using the Twingate client to route DNS requests to common DNS security tools like NextDNS, \",/*#__PURE__*/e(s,{href:\"https://framer.com/projects/cloudflare-vpn?utm_source=blog&utm_medium=blog&utm_campaign=DNS\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Cloudflare\"})}),\" Gateway, and others. There\u2019s no need to install a separate, dedicated DNS security agent on the device.\"]}),/*#__PURE__*/e(\"p\",{children:\"This means a single Twingate client can be configured to provide private access to resources as well as secure public internet traffic, so you can leverage existing DNS filtering products to:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Apply DNS-level threat filtering against known malware and phishing sites often initiated by unsuspecting employees\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Block employee access to undesirable or inappropriate content\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Provide visibility into the applications employees are using to uncover potential shadow IT\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Improve employee experience by blocking ads and trackers on websites\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Ensure home ISPs or public wifis can\u2019t view visited sites\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"Read more about this new functionality in our \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/dns-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"docs\"})}),\" and watch a short demo of \",/*#__PURE__*/e(s,{href:\"https://youtu.be/clJv_WIFeSM\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate Secure DNS in action\"})}),\" on YouTube.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://auth.twingate.com/signup?utm_source=blog&utm_medium=blog&utm_campaign=announcing-secure-dns\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Try it for free\"})}),\" today!\"]})]})},{index:48,id:\"z_QOskIf2\",[h]:!0,[d]:!1,[p]:\"What is a VPN alternative\",[u]:\"What is a VPN alternative\",[m]:\"what-is-a-vpn-alternative\",[g]:\"\",[w]:\"Paul Andre de Vera\",[f]:\"2022-07-22T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/A6BtmOr2NHFs024ln0OzXqjwJis.png\",srcSet:\"https://framerusercontent.com/images/A6BtmOr2NHFs024ln0OzXqjwJis.png?scale-down-to=512 512w,https://framerusercontent.com/images/A6BtmOr2NHFs024ln0OzXqjwJis.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/A6BtmOr2NHFs024ln0OzXqjwJis.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/A6BtmOr2NHFs024ln0OzXqjwJis.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/A6BtmOr2NHFs024ln0OzXqjwJis.png\",srcSet:\"https://framerusercontent.com/images/A6BtmOr2NHFs024ln0OzXqjwJis.png?scale-down-to=512 512w,https://framerusercontent.com/images/A6BtmOr2NHFs024ln0OzXqjwJis.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/A6BtmOr2NHFs024ln0OzXqjwJis.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/A6BtmOr2NHFs024ln0OzXqjwJis.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"With remote work and cloud architectures becoming the norm, companies large and small are looking for an alternative to virtual private networks (VPNs). Brittle, underperforming, and unsecure this remote access technology has outlived its purpose. You have several VPN alternatives to choose from, but many hide similar weaknesses beneath modern technologies. We will help you understand VPN\u2019s security and performance challenges and some VPN alternatives to consider. We will also explain why \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust?utm_source=blog&utm_medium=blog&utm_campaign=what-is-vpn-alternative\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust Network Access\"})}),\" is the best way to replace your VPN system.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Virtual Private Networks: A growing threat to network security\"}),/*#__PURE__*/e(\"p\",{children:\"As computers entered mainstream business use, security frameworks aligned with physical infrastructure. Central computing resources were big, static, and company-owned. Only employees could access those resources through managed desktop computers attached to the office network. Like a castle\u2019s walls, a secure perimeter kept threats outside the network while letting trusted employees work freely. Over time, portable computers gave employees the ability to work while traveling. But that required a way through the defensive walls.\"}),/*#__PURE__*/e(\"p\",{children:\"Virtual private network technologies originally linked remote offices to corporate data centers over the internet. VPN became a secure remote access solution by adapting that model to let remote users through the secure perimeter. Connecting and authenticating with a VPN gateway makes user devices extensions of the protected network.\"}),/*#__PURE__*/e(\"h2\",{children:\"VPN was designed for another age\"}),/*#__PURE__*/e(\"p\",{children:\"Things have changed over the past 30 years. A company\u2019s resources are not confined to a central, on-premises data center. Business applications are hosted in the cloud or sourced from X-as-a-Service providers. Companies now rely on a mix of employees, contractors, and other third parties. As a result, resources are being accessed from a more diverse population of devices that are not under a company\u2019s direct control.\"}),/*#__PURE__*/e(\"p\",{children:\"These changes were well underway when the pandemic turned network traffic inside out. Before, most traffic originated on the company network and only a few employees needed remote access. Suddenly, everyone was working remotely \u2014 often from their personal devices. Suddenly, everyone was working remotely \u2014 often from their personal devices \u2014 and hitting the VPN gateway.\"}),/*#__PURE__*/e(\"p\",{children:\"People have known about VPN\u2019s weaknesses for a long time, but most organizations thought they could take their time migrating to something else. Now, everyone recognizes VPN\u2019s growing limitations.\"}),/*#__PURE__*/e(\"h2\",{children:\"VPN undermines network security\"}),/*#__PURE__*/e(\"p\",{children:\"To let remote users connect, VPN gateways publish their presence on the internet. This makes every corporate gateway visible to anyone running simple scanning applications. Hackers can discover information about the VPN gateway just as easily. One unpatched VPN appliance is enough to expose the network.\"}),/*#__PURE__*/e(\"p\",{children:\"Designed to link managed networks, VPN trusts any authenticated connection. An exploit or stolen credential lets hackers access the protected network as if they were trusted users. Once through the VPN gateway, they can use the network\u2019s own tools to move laterally, escalate privileges, and expand their foothold.\"}),/*#__PURE__*/e(\"h2\",{children:\"VPNs and privileged access management\"}),/*#__PURE__*/e(\"p\",{children:\"VPN\u2019s challenges are acutely felt with privileged users. Their credentials are the \u201Ckeys to the kingdom\u201A for cyber criminals. A compromised privileged account gives them the power to make system-level changes, grant escalated privileges, and worse. VPN only provides remote network access and does nothing else to keep privileged accounts secure.\"}),/*#__PURE__*/e(\"h2\",{children:\"VPN degrades network performance\"}),/*#__PURE__*/e(\"p\",{children:\"Increasingly, the hub-and-spoke topology of VPN systems adds to network performance issues. VPN gateways concentrate all remote traffic through the private network even when the final destination is a cloud service. Data returning to the user also passes through the gateway.\"}),/*#__PURE__*/e(\"p\",{children:\"Adding to the problem, VPN clients default to an all-or-nothing setting that routes all user traffic through the gateway. Video conferencing and other applications that could securely pass over the internet instead stream back and forth across the private network.\"}),/*#__PURE__*/e(\"p\",{children:\"Finally, VPN gateways become chokepoints when accessed by too many remote users. They can only support a certain number of concurrent VPN connections before rationing bandwidth.\"}),/*#__PURE__*/e(\"p\",{children:\"These issues were manageable when a fraction of the workforce needed remote access. Now, bandwidth pressures and rising latency worsen the user experience, both on-premises and remote.\"}),/*#__PURE__*/e(\"h2\",{children:\"VPN architectures are brittle and difficult to manage\"}),/*#__PURE__*/t(\"p\",{children:[\"VPN forces organizations to manage a fragmented access control infrastructure. An \",/*#__PURE__*/e(s,{href:\"https://framer.com/projects/enterprise-vpn?utm_source=blog&utm_medium=blog&utm_campaign=what-is-vpn-alternative\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"enterprise VPN\"})}),\" solution only grants access to a company\u2019s private network. Each cloud platform and third-party service has its own VPN solution. Managing consistent security and access policies across multiple systems is challenging. Any misconfiguration could open a vulnerability that hackers could exploit.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Enterprise VPN Alternatives\"}),/*#__PURE__*/e(\"p\",{children:\"Several solutions compete as remote access alternatives to VPN. Most of them, however, use modern technologies to create the same challenges.\"}),/*#__PURE__*/e(\"h2\",{children:\"Remote Desktop Protocol and virtual desktop\"}),/*#__PURE__*/t(\"p\",{children:[\"Microsoft\u2019s \",/*#__PURE__*/e(s,{href:\"https://framer.com/projects/what-is-rdp?utm_source=blog&utm_medium=blog&utm_campaign=what-is-vpn-alternative\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Remote Desktop Protocol (RDP)\"})}),\" and other virtual desktop technologies give users the in-office experience while working from home. These solutions act like streaming services, sending the desktop operating system\u2019s monitor output to the user\u2019s device. A client app sends the user\u2019s keyboard and mouse inputs back to the RDP server. This approach ensures that sensitive data never leaves the company.\"]}),/*#__PURE__*/e(\"p\",{children:\"However, RDP and similar technologies share VPN\u2019s weaknesses. Users connect through publicly-visible gateways that are as vulnerable to exploits as VPN gateways. One leg of the round trip may have been eliminated, but traffic from cloud resources still burdens the private network.\"}),/*#__PURE__*/e(\"h2\",{children:\"Software-defined wide-area networks\"}),/*#__PURE__*/e(\"p\",{children:\"Software-defined wide-area networks (SD-WAN) are an evolution of VPN\u2019s original purpose. These cloud-native solutions rely on software-defined networking to link an organization\u2019s various locations together. SD-WAN vendors offer two options for extending their solutions to manage remote access. The first is simply a VPN service with all the associated weaknesses.\"}),/*#__PURE__*/e(\"p\",{children:\"The other approach requires deploying an SD-WAN appliance to the remote user\u2019s location. The appliance offers better security on home networks and can provide better redundancy with LTE wireless connections. This approach, however, can be expensive and only works in a fixed location.\"}),/*#__PURE__*/e(\"h2\",{children:\"Secure access service edge\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://framer.com/projects/sase-meaning?utm_source=blog&utm_medium=blog&utm_campaign=what-is-vpn-alternative\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Secure access service edge (SASE)\"})}),\" is a Gartner-developed framework for enterprise networking. SASE is a way to develop decentralized, cloud-based architectures. Remote access will be part of that design, but SASE encompasses much more. SASE is a work in progress as many of the component technologies are still being developed. The complexity and scope of such a large shift in architecture often limit SASE solutions to large enterprises with significant resources. Fortunately, the access control component of SASE \u2014 Zero Trust Network Access (ZTNA) \u2014 is fully accessible to companies at any scale.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Replace virtual private networks with Zero Trust Network Access\"}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust Network Access is a modern security framework that eliminates the weaknesses of legacy secure perimeter approaches like VPN. ZTNA unifies access control for all users and all resources no matter their location by building a framework based on three concepts.\"}),/*#__PURE__*/e(\"p\",{children:\"First, assume that security breaches are always present. Attack surfaces have grown dramatically since the days of the secure perimeter. Social engineering attacks, stolen credentials, and exploits can give hackers instant access to a protected network. ZTNA assumes that any network, device, credential, user, or resource could already be compromised.\"}),/*#__PURE__*/e(\"p\",{children:\"Second, explicitly verify every attempt to access a protected resource. As its name implies, Zero Trust does not assume anything can be trusted. Instead, trust must be earned through identity verification and a careful evaluation of device posture, connection source, and other contextual factors.\"}),/*#__PURE__*/e(\"p\",{children:\"Third, only grant the degree of access users need in each session. This principle of least privilege requires granular, role-based access rules. Unlike the permissive access of a VPN gateway, ZTNA grants users enough access to get the job done and no more.\"}),/*#__PURE__*/e(\"h2\",{children:\"Zero Trust versus VPN\"}),/*#__PURE__*/e(\"p\",{children:\"Combined, these three principles drive a new approach to securing access to an organization\u2019s assets. Unlike VPN which allows access to any resources on the network, Zero Trust only grants access to specific resources based on a user\u2019s role. Granular access controls based on principles of least privilege prevents hackers from moving laterally through a compromised network.\"}),/*#__PURE__*/e(\"p\",{children:\"Explicit verification further mitigates cyber attacks. Hackers may compromise a user\u2019s account, but identity is only one of the criteria ZTNA systems use during authentication. Device posture checks, for example, can recognize a compromised user device and block access.\"}),/*#__PURE__*/e(\"p\",{children:\"Cloud-native ZTNA solutions avoid the performance bottlenecks that VPN technologies create. Direct connections between users and the resources relieve the bandwidth pressure on private networks. The user experience also improves with more performant routing.\"}),/*#__PURE__*/e(\"h1\",{children:\"Twingate\u2019s Zero Trust remote access solution\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate\u2019s implementation of Zero Trust adds more security and performance benefits over legacy VPN technologies. Our solution creates software-defined perimeters around protected assets. Administrators can create micro-segmented network architectures that protect on-premises and cloud resources within the same system.\"}),/*#__PURE__*/e(\"p\",{children:\"Granular access control rules are enforced on user devices before making any connections. Access to protected resources happens only when all identity verification, device posture, and other checks are complete.\"}),/*#__PURE__*/e(\"p\",{children:\"Connections between user devices and protected resources pass through direct, encrypted tunnels along the most performant routes. Proxy apps on user devices and in front of resources allow traffic to pass back and forth securely. All connections are ephemeral. Once a session ends, all information about the connection disappears.\"}),/*#__PURE__*/e(\"h2\",{children:\"Improve security and performance with Twingate Zero Trust\"}),/*#__PURE__*/e(\"p\",{children:\"Unlike VPN gateways, Twingate\u2019s solution does not broadcast its presence. On-premises resources disappear from the private network and cloud resources disappear from the public internet. The scanning tools hackers use to target VPN vulnerabilities have nothing to see so your attack surface shrinks dramatically.\"}),/*#__PURE__*/e(\"p\",{children:\"By replacing VPN\u2019s hub-and-spoke topology with direct tunnels, Twingate makes private networks more performant. User traffic destined for cloud resources never hits the private network. Data no longer round trips on the company infrastructure. There is no more gateway-driven congestion. Replacing VPN with a Twingate remote access solution alleviates bandwidth pressure on managed networks.\"}),/*#__PURE__*/t(\"p\",{children:[\"Direct tunnels between devices and resources also improve the user experience. Eliminating the round trip imposed by VPN gateways reduces latency. Twingate\u2019s client app also uses \",/*#__PURE__*/e(s,{href:\"https://framer.com/projects/vpn-split-tunneling?utm_source=blog&utm_medium=blog&utm_campaign=what-is-vpn-alternative\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"split tunneling\"})}),\" by default. Video conferences, web browsing, and other use cases that do not need extra encryption simply pass over the public internet to give users a better experience.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Granular access control makes \",/*#__PURE__*/e(s,{href:\"https://framer.com/projects/privileged-access-management?utm_source=blog&utm_medium=blog&utm_campaign=what-is-vpn-alternative\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"privileged access management\"})}),\" easier. Twingate\u2019s access rules apply for both on-premises and remote network access. Unlike VPN\u2019s all-or-nothing approach, you can limit privileged accounts to specific resources. Twingate also adds MFA and other security features to SSH and other tools to keep them out of the wrong hands.\"]}),/*#__PURE__*/e(\"p\",{children:\"Managing secure access is much easier with Twingate than with legacy VPN systems. Our software solution works with your CI/CD pipelines so you can deploy, maintain, and release Twingate proxies programmatically. You no longer need to juggle separate VPN policies for the private network and each cloud platform. Instead, deploying Twingate in front of every on-premises and cloud resource lets you manage access within a single system. Administrative consoles simplify on-boarding, off-boarding, and changing user permissions.\"}),/*#__PURE__*/e(\"p\",{children:\"Migrating from your existing VPN system to Twingate\u2019s ZTNA solution is not an all-or-nothing proposition. Twingate co-exists with your existing network infrastructure. Starting with the teams that benefit the most, you can implement Zero Trust in phases. Rolling out Twingate over time lets you build upon earlier successes without disrupting business operations.\"}),/*#__PURE__*/e(\"h1\",{children:\"Twingate\u2019s accessible VPN alternative\"}),/*#__PURE__*/e(\"p\",{children:\"VPN technologies were developed when the idea of a secure perimeter meant something. They create a portal through a private network\u2019s defenses so a few remote users can access centralized information resources. That framework no longer works in today\u2019s decentralized, cloud-enabled ecosystem.\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Resources and users can be anywhere.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Access can be through public or private networks.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"More people use personal devices to access company resources.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Users may not be employees, yet they still need access.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Increasingly, VPN makes remote access expensive and difficult to manage. It creates bottlenecks that make networks less performant and interfere with user productivity.\"}),/*#__PURE__*/e(\"p\",{children:\"Most importantly, VPN itself has become a significant attack vector for today\u2019s sophisticated cybercriminals. Other technologies, from virtual desktops to secure access service edge, try to replace VPN. These alternatives, however, either suffer weaknesses similar to VPN or require expensive changes to an enterprise\u2019s network infrastructure.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate implements Zero Trust Network Access to create a modern approach to security and access control. Software-defined perimeters and least-privilege access policies will shrink your attack surface dramatically. At the same time, encrypted tunnels passing directly between user devices and protected resources improve performance dramatically. Phased deployments, compatibility with your CI/CD pipelines and security stack, as well as simple administrative tools take the risk out of replacing your VPN system with a more secure, performant Twingate solution.\"}),/*#__PURE__*/t(\"p\",{children:[\"Use our \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=what-is-a-vpn-alternative\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"free Starter plan\"})}),\" to get Twingate remote access working for yourself or a small team. Then contact us to learn how easy replacing your VPN system can be.\"]})]})},{index:49,id:\"IlbafK19u\",[h]:!0,[d]:!1,[p]:\"Q&A with CEO of Opal: Scaling least privilege, the Zero Trust ecosystem, and the future of secure access management\",[u]:\"Q&A with CEO of Opal\",[m]:\"q-a-with-ceo-of-opal\",[g]:\"\",[w]:\"Peter Ahn\",[f]:\"2022-07-12T00:00:00.000Z\",[y]:\"KI2UGBfh7\",[b]:T({src:\"https://framerusercontent.com/images/L9xVeb3MJ9TuHTTQ28r7Ec9K6Jc.png\",srcSet:\"https://framerusercontent.com/images/L9xVeb3MJ9TuHTTQ28r7Ec9K6Jc.png?scale-down-to=512 512w,https://framerusercontent.com/images/L9xVeb3MJ9TuHTTQ28r7Ec9K6Jc.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/L9xVeb3MJ9TuHTTQ28r7Ec9K6Jc.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/L9xVeb3MJ9TuHTTQ28r7Ec9K6Jc.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/L9xVeb3MJ9TuHTTQ28r7Ec9K6Jc.png\",srcSet:\"https://framerusercontent.com/images/L9xVeb3MJ9TuHTTQ28r7Ec9K6Jc.png?scale-down-to=512 512w,https://framerusercontent.com/images/L9xVeb3MJ9TuHTTQ28r7Ec9K6Jc.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/L9xVeb3MJ9TuHTTQ28r7Ec9K6Jc.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/L9xVeb3MJ9TuHTTQ28r7Ec9K6Jc.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"At Twingate, we believe the ability to create dynamic least privilege access management workflows is important to maintaining a flexible zero trust framework.\"}),/*#__PURE__*/t(\"p\",{children:[\"Within our customer community, one company that\u2019s mentioned as a catalyst for helping organizations adopt dynamic, least privileged models is \",/*#__PURE__*/e(s,{href:\"https://opal.dev/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Opal\"})}),\". Opal is an access management platform that helps enterprise companies scale least privilege with unified visualizations across the organization, productivity workflows, and accelerated user access reviews. With a desire to help organizations remain secure by default, Opal is the chosen access management platform for teams at Databricks, Blend, and Marqeta.\"]}),/*#__PURE__*/t(\"p\",{children:[\"We sat down with the CEO and founder of Opal, \",/*#__PURE__*/e(s,{href:\"https://www.linkedin.com/in/scobbe\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Stephen Cobbe\"})}),\", to understand his vision for the platform he\u2019s built while, also discussing how to best create a culture of least privilege in a world where giving too much access is the norm.\"]}),/*#__PURE__*/e(\"h1\",{children:\"What advice do you have for organizations that are looking to adopt least-privileged access management but are put off by the amount of change that is needed to get there?\"}),/*#__PURE__*/e(\"p\",{children:\"Fortunately, least-privileged access management can be implemented incrementally.\"}),/*#__PURE__*/t(\"p\",{children:[\"Start by identifying the most sensitive resources that your organization needs to regularly access, whether it\u2019s databases, cloud provider roles, or identity provider groups. Where possible, substitute longstanding access with workflows for ephemeral and just-in-time access. \",/*#__PURE__*/e(s,{href:\"https://opal.dev/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Opal\"})}),\" supports a variety of options for short-lived access including session, ticket, and schedule based workflows.\"]}),/*#__PURE__*/e(\"p\",{children:\"Next, conduct an access review of sensitive systems so that superfluous access is removed. Ideally, this is done periodically, such as once per quarter. Opal can help enforce review hygiene with automatic campaign scheduling and notifications.\"}),/*#__PURE__*/e(\"p\",{children:\"Finally, audit your role definitions to see where unused permissions can be removed. Some systems such as AWS offer native support for usage-based role pruning but mostly this is a matter of trial and error.\"}),/*#__PURE__*/e(\"h1\",{children:\"Can you describe the most creative use of a tool like Opal that you\u2019ve come across from your customers?\"}),/*#__PURE__*/t(\"p\",{children:[\"The most creative use-cases we\u2019ve seen relate to how our customers have integrated \",/*#__PURE__*/e(s,{href:\"https://opal.dev/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Opal\"})}),\" with their internal tooling.\"]}),/*#__PURE__*/e(\"p\",{children:\"Internal tools grant wide ranging access to sensitive assets such as user metadata. Granularly managing access to these assets is challenging to do at scale. By integrating with Opal\u2019s API directly or via webhooks, our customers can expose their internal tool\u2019s authorization model in Opal\u2019s browsable catalog of access and leverage its powerful workflows.\"}),/*#__PURE__*/e(\"p\",{children:\"Unlike identity providers which deal only in groups, Opal\u2019s resource-based abstractions allow for more granular management. This allows our customers to implement policies such as requiring user metadata access be scoped to a particular user and tied to a support ticket that references the user by name.\"}),/*#__PURE__*/e(\"h1\",{children:\"How does Opal fit into the Zero Trust ecosystem?\"}),/*#__PURE__*/e(\"p\",{children:\"As a least-privileged access management product, Opal helps organizations implement the defense-in-depth tenet of zero trust. In the event an account is compromised, the less access it has, the less damage is done.In the world of least privilege, all users are viewed as unvetted, and are granted only the access that is absolutely necessary. Opal supports setting policies at the resource and group level that require requests to be MFA gated, contain a support ticket, or receive manager approval.\"}),/*#__PURE__*/e(\"p\",{children:\"The net result is users have only the access they need, and nothing more, which lessens an organization\u2019s attack surface and compliance burden.\"}),/*#__PURE__*/e(\"h1\",{children:\"Why is it important for tools and platforms within the Zero Trust space to integrate with each other?\"}),/*#__PURE__*/e(\"p\",{children:\"By introducing additional safeguards, a Zero Trust posture inherently adds friction to day-to-day operations, which hurts adoption. It\u2019s important that different products within the Zero Trust space integrate with one another to offer a more seamless experience.\"}),/*#__PURE__*/t(\"p\",{children:[\"For instance, if I receive temporary access to a Kubernetes cluster via a workflow in \",/*#__PURE__*/e(s,{href:\"https://opal.dev/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Opal\"})}),\", it\u2019s unwieldy to have a separate workflow for network access to the cluster. With a direct integration between Opal and Twingate, for instance, the two workflows can be streamlined.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Before adopting Opal, what have you seen organizations do to implement real-time access controls across their corporate resources?\"}),/*#__PURE__*/e(\"p\",{children:\"Longstanding access still predominates, so the most common configuration we see is simply no real-time access controls.\"}),/*#__PURE__*/e(\"p\",{children:\"However, the culture around access control is changing. There is a growing awareness of the need to limit access footprint, and real-time access controls are one of the most effective means of doing that. For those organizations that have implemented just-in-time controls, the most common solution is custom internal tooling, which is usually backed by Active Directory or Okta Groups. Internal tooling may be well customized to organization\u2019s use-cases but it is difficult and expensive to maintain over time.\"}),/*#__PURE__*/e(\"h1\",{children:\"As companies get smarter and start to adopt both zero trust access tools as well as implement ephemeral access, how do you think cyber attackers will start to evolve to combat this?\"}),/*#__PURE__*/e(\"p\",{children:\"For organizations that leverage zero trust tools and ephemeral access, attackers will have their work cut out for them. By tying access to a particular device, zero trust tools will require attackers to compromise devices in addition to account credentials. With ephemeral access controls, attackers will also need to compromise a larger number of accounts than before in order to offset the smaller access footprint of each account. The net result is attackers will have to lean more heavily into their preferred mode of attack: social engineering.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Want to see \"}),/*#__PURE__*/e(s,{href:\"https://opal.dev/?utm_medium=partner&utm_source=twingate_blog&utm_campaign=highlight\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:/*#__PURE__*/e(\"strong\",{children:\"Opal\"})})}),/*#__PURE__*/e(\"strong\",{children:\" for yourself?\"}),\" \",/*#__PURE__*/e(\"em\",{children:\"Contact \"}),/*#__PURE__*/e(s,{href:\"mailto:hello@opal.dev\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:/*#__PURE__*/e(\"em\",{children:\"hello@opal.dev\"})})}),/*#__PURE__*/e(\"em\",{children:\" or \"}),/*#__PURE__*/e(s,{href:\"https://opal.dev/get-a-demo?utm_medium=partner&utm_source=twingate_blog&utm_campaign=highlight\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:/*#__PURE__*/e(\"em\",{children:\"book a meeting\"})})}),/*#__PURE__*/e(\"em\",{children:\" for a personalized demo.\"})]})]})},{index:50,id:\"f4telw5y6\",[h]:!0,[d]:!1,[p]:\"What is Cloud Infrastructure Security?\",[u]:\"What is Cloud Infrastructure Security?\",[m]:\"what-is-cloud-infrastructure-security\",[g]:\"\",[w]:\"Paul Andre de Vera\",[f]:\"2022-07-08T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/TI3taUTQM5gDr4YxkiYbS2o3G6Y.png\",srcSet:\"https://framerusercontent.com/images/TI3taUTQM5gDr4YxkiYbS2o3G6Y.png?scale-down-to=512 512w,https://framerusercontent.com/images/TI3taUTQM5gDr4YxkiYbS2o3G6Y.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/TI3taUTQM5gDr4YxkiYbS2o3G6Y.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/TI3taUTQM5gDr4YxkiYbS2o3G6Y.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/TI3taUTQM5gDr4YxkiYbS2o3G6Y.png\",srcSet:\"https://framerusercontent.com/images/TI3taUTQM5gDr4YxkiYbS2o3G6Y.png?scale-down-to=512 512w,https://framerusercontent.com/images/TI3taUTQM5gDr4YxkiYbS2o3G6Y.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/TI3taUTQM5gDr4YxkiYbS2o3G6Y.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/TI3taUTQM5gDr4YxkiYbS2o3G6Y.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Cloud infrastructure security frameworks make it easier to protect your cloud assets from modern cybersecurity threats. These systems can address many of the challenges the cloud creates from inconsistent security policies to regulatory compliance. However, using traditional perspectives on network security may leave gaps that cybercriminals can exploit.\"}),/*#__PURE__*/t(\"p\",{children:[\"To help you avoid repeating the mistakes of old secure perimeter frameworks, we will help you understand what cloud infrastructure security is, its benefits and challenges, and how \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" solutions like Twingate can reduce your attack surface and make cloud security more efficient.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Cloud infrastructure security defined\"}),/*#__PURE__*/e(\"p\",{children:\"As organizations moved more of their infrastructure to the cloud, their traditional on-premises security frameworks could not adapt to distributed architectures. A different approach was needed to address security in this new environment.\"}),/*#__PURE__*/e(\"p\",{children:\"Cloud infrastructure security is a framework that combines policies, best practices, and technologies to ensure cloud resources \u2014 including computing environments, applications, and databases \u2014 remain secure against internal and external cloud security threats.\"}),/*#__PURE__*/e(\"p\",{children:\"This shouldn\u2019t be confused with cloud security services that offer various network security services through a Software-as-a-Service business model.\"}),/*#__PURE__*/e(\"p\",{children:\"Many aspects of this framework will already be familiar to network security professionals:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Governance and regulatory compliance.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Business continuity and disaster recovery.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Data retention and loss prevention.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Role-based access control.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Identity and access management (IAM).\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Threat intelligence, prevention, detection, and mitigation.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Security information and event management (SIEM).\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"In addition, several cloud security solutions address unique aspects of cloud infrastructure. Gartner coined the term \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/security-stack-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"cloud security posture management (CSPM)\"})}),\" to describe solutions that scan for misconfigurations and compliance issues across multiple cloud infrastructures. Cloud access security brokers (CASB), part of the broader \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/sase-meaning\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"SASE\"})}),\" framework, address the problem of access control when organizations source cloud solutions from multiple providers.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Cloud computing environments and service models\"}),/*#__PURE__*/e(\"p\",{children:\"The history of IT over the past two decades has been one of increasing abstraction and decentralization. Applications and databases ran on dedicated systems. Now, those applications run on cloud computing platforms or are outsourced completely to cloud service providers. Abstraction has also transformed the network itself as hardware appliances were replaced by software. Networks also migrated to the cloud as organizations made the internet part of their network architecture.\"}),/*#__PURE__*/e(\"p\",{children:\"Cloud services offered many financial benefits that accelerated this trend. Organizations could reduce their capital expenses significantly. Service providers took responsibility for building the physical computing and storage resources, reducing their customers\u2019 capital expenses. Subscription models shifted many IT costs from capital expenses to operational expenses.\"}),/*#__PURE__*/e(\"p\",{children:\"Shifting to a cloud infrastructure also made sense for the organization\u2019s security. Cloud service providers spread the costs of advanced security technologies and expertise across their customer base. As a result, they can maintain a stronger security posture with less risk of a breach than the largest enterprises.\"}),/*#__PURE__*/e(\"p\",{children:\"Operationally, adopting a cloud infrastructure lets organizations achieve efficiencies they could not with on-premises resources. Employees have better, more performant access no matter where they work. DevOps practices rely on virtual systems to automate processes at a scale that could never be done manually.\"}),/*#__PURE__*/t(\"p\",{children:[\"As we will see later in this article, however, these benefits come with tradeoffs that add complexity to \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/google-beyondcorp\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"enterprise security\"})}),\". You can see this complexity by viewing cloud computing through two perspectives \u2014 cloud computing service models and cloud computing environments.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Cloud computing service models\"}),/*#__PURE__*/e(\"p\",{children:\"This first category is based on how different cloud service providers approach the market. Each of these as-a-Service business models gives its customers varying degrees of control \u2014 and with that, varying degrees of security responsibilities.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Software-as-a-Service (SaaS)\"}),\" - Rather than running applications in-house, organizations can subscribe to a SaaS provider\u2019s services. In this model, customers have little control over the SaaS application or the security infrastructure supporting it. That is almost entirely the SaaS provider\u2019s responsibility. Cloud security for SaaS focuses on access control policies.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Platform-as-a-Service (PaaS)\"}),\" - Enterprises can use a PaaS provider\u2019s environment to develop and run their own cloud applications with scalability they could never afford on their own. PaaS providers ensure that their infrastructure is protected and offer security tools, such as virtual VPN gateways, for their customers to use. However, organizations are responsible for the security of their PaaS development and production environments.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Infrastructure-as-a-Service (IaaS)\"}),\" - These services let companies build virtual computing, storage, and network infrastructures. Providers take responsibility for the security of their physical infrastructure. Protecting the virtual machines, maintaining operating systems, managing network security and other tasks are the customer\u2019s responsibility.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Cloud computing environments\"}),/*#__PURE__*/e(\"p\",{children:\"The second way of looking at cloud infrastructure is from the organization\u2019s perspective. Companies can move to the cloud in many different ways, but most cloud environments fall into the following categories:\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Public cloud\"}),\" - A third-party provider offers a service running on a shared infrastructure that is allocated to customers on-demand and then rebalanced to other customers. Providers have systems to isolate customers from each other. Depending on the service type, organizations may apply additional layers to isolate themselves from their neighbors.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Private cloud\"}),\" - Shared environments may be unacceptable to some organizations. A third-party provider\u2019s private cloud assigns the organization\u2019s services to a dedicated infrastructure. The division of responsibilities remains the same as a public cloud, but there is no need to add another isolation layer.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Hybrid-cloud\"}),\" - Organizations can combine a service provider\u2019s public cloud and private cloud offerings. This lets organizations run sensitive applications privately while running less-sensitive applications on the public cloud. An organization can manage the balance on its own or in partnership with the service provider.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Multi-cloud\"}),\" - Few cloud service providers can be all things to all customers. As a result, most organizations have multi-cloud infrastructures that combine services from several cloud service providers. In this environment, an organization\u2019s security teams must stitch together a consistent security strategy that covers separate cloud services.\"]}),/*#__PURE__*/e(\"p\",{children:\"Some organizations can take a cloud-centric approach to infrastructure security. Many others still depend on legacy systems. Ideally, on-premises resources should be protected by the same security framework as the cloud infrastructure.\"}),/*#__PURE__*/e(\"h1\",{children:\"Why is cloud security strategy important?\"}),/*#__PURE__*/e(\"p\",{children:\"In today\u2019s cloud computing environment, organizations have less control over their infrastructure and its security than they had in the past. Cloud service providers control their physical infrastructure as well as its security. Organizations get little visibility, much less control, over many aspects of SaaS security.\"}),/*#__PURE__*/e(\"p\",{children:\"Traditional security frameworks simply do not work anymore. Secure perimeter technologies and practices assume a physical network can be isolated from external threats. In today\u2019s decentralized, virtualized cloud environments, the perimeter is meaningless.\"}),/*#__PURE__*/e(\"p\",{children:\"Cloud infrastructures face threats from all directions. To protect the organization, cloud security strategy must address four core objectives:\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Provide and control access\"}),\" - Anywhere, anytime access is a benefit of the cloud, but it becomes a weakness when \u201Canyone\u201A gets access. Cloud security strategies need policies and technologies that allow authorized users to access the resources they need for their work while preventing unauthorized access.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Protect data\"}),\" - With the right data policies, cloud storage should be more secure than on-premises data centers, making organizations more resilient to natural disasters and other disruptions. Data retention policies minimize the amount of data at risk. Backup and data recovery policies minimize the duration and impact of disruptions.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Prevent and mitigate attacks\"}),\" - Security requires constant vigilance, especially when company resources live in the cloud. Organizations must monitor the threat landscape continuously. Given the persistence and sophistication of modern cybercriminals, focusing on prevention is not enough. Organizations must monitor their infrastructure around the clock to identify and mitigate security breaches quickly.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Compliance\"}),\" - Regulations such as GDPR and standards such as SOC 2 require organizations to have effective IT controls for managing and protecting customer data. Demonstrating compliance requires systems that monitor conformity to security, process integrity, privacy, and other standards.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Cloud security architecture threats, risks, and challenges\"}),/*#__PURE__*/e(\"p\",{children:\"In some respects, cloud security risks are nothing new. Many of the risks and challenges organizations face when securing their on-premises infrastructure are also present in the cloud. However, the amorphous nature of cloud computing security adds unique challenges:\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Visibility\"}),\" - Security teams have less visibility into many aspects of a cloud service provider\u2019s infrastructure. SaaS providers may be completely opaque while IaaS providers typically offer security monitoring tools.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Dynamic workloads\"}),\" - In the cloud, virtual instances are spun up and down as needed making security technologies based on ports and IP addresses less effective.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Shared security roles\"}),\" - Responsibilities for security vary from one cloud service provider to another. Any misunderstanding in an organization\u2019s responsibilities can result in misconfigurations and other security gaps\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Complexity of multi and hybrid cloud security\"}),\" - Each cloud service has its own security systems that may not play well with others. Security teams must find ways to bring every aspect of their on-premises and cloud infrastructure within the same security framework.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Shadow IT\"}),\" - Many cloud services are not adopted through an organization\u2019s IT planning process. Instead, services pitch themselves to end-users in hopes they will find the service too valuable to do without. This creates a risk that sensitive data will migrate outside the organization\u2019s established controls\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Governance and compliance\"}),\" - All of these security issues hinder governance and could compromise the organization\u2019s compliance efforts. Shadow IT could leak customer information. Poorly understood security roles and poor visibility make controls less effective.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Benefits of cloud security models\"}),/*#__PURE__*/e(\"p\",{children:\"Despite these challenges, implementing a cloud infrastructure security plan can improve your business. Security is easier to manage, your company\u2019s data is better protected, and business performance improves.\"}),/*#__PURE__*/e(\"h2\",{children:\"Centralized cloud security\"}),/*#__PURE__*/e(\"p\",{children:\"Unifying security across your cloud infrastructure simplifies the setting and enforcement of security policies. You no longer have to set provider-specific policies. In their place, a single policy can apply to every cloud service provider\"}),/*#__PURE__*/e(\"p\",{children:\"Cloud security systems also give you more visibility across your infrastructure. You can see employees\u2019 attempts to add shadow IT. Automated monitoring systems identify configuration problems and suspicious activity, quickly escalating issues that cannot be mitigated automatically.\"}),/*#__PURE__*/e(\"h2\",{children:\"Risk minimization\"}),/*#__PURE__*/e(\"p\",{children:\"A unified approach to cloud security will reduce your attack surface and minimize cyber risks. Replacing provider-specific access controls with a central IAM system lets you apply granular, role-based access control rules. Data loss prevention, backup practices, and data recovery systems reduce the risk of lost data and limit the impact of ransomware. Better visibility and monitoring also help ensure you remain in compliance with data privacy regulations and AICPA controls standards.\"}),/*#__PURE__*/e(\"h2\",{children:\"Operational and financial performance\"}),/*#__PURE__*/e(\"p\",{children:\"Secure perimeter technologies have become rigid and fragile in the face of modern IT trends. Designed for the cloud, this new security framework offers the scalability and availability of the services it protects. In addition, cloud security technologies can integrate with CI/CD pipelines to become responsive elements of DevSecOps practices.\"}),/*#__PURE__*/e(\"p\",{children:\"Cloud infrastructure security also offers financial benefits. Capital expenses decline since fewer infrastructure investments are needed. At the same time, cloud security\u2019s automated systems reduce administrative overhead and let companies reallocate operational budgets to more productive goals.\"}),/*#__PURE__*/e(\"h1\",{children:\"Zero Trust in cloud security\"}),/*#__PURE__*/e(\"p\",{children:\"Too often, companies view cloud security through the same lens they always used \u2014 the secure perimeter. This results in architectures that protect cloud networks behind virtual VPN gateways. They may have a more unified cloud security system, but that system has the same vulnerabilities their on-premises networks suffer. Implementing cloud security with Zero Trust Network Access (ZTNA) eliminates these vulnerabilities and makes cloud infrastructures more accessible, secure, and efficient.\"}),/*#__PURE__*/e(\"h2\",{children:\"Zero Trust fundamentals\"}),/*#__PURE__*/e(\"p\",{children:\"You can find detailed explanations of Zero Trust on our blog. What\u2019s important here are the three core principles of ZTNA:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Assume breach.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Verify explicitly.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Least-privileged access.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Modern cyber threats are so pervasive that an attack could succeed at any time. Assuming that hackers are already in your system forces you to approach security differently. Network access control gives hackers free access to the network\u2019s resources. Instead, Zero Trust controls access to resources and denies access by default.\"}),/*#__PURE__*/e(\"p\",{children:\"Every attempt to access a resource should be verified explicitly. This goes beyond authenticating user identities. The networks and devices they use contribute just as much to the security context. Only when that context meets a threshold level should the user be allowed access.\"}),/*#__PURE__*/e(\"p\",{children:\"Even then, access can\u2019t be granted with a broad brush. Over-privileged accounts are a significant risk. Applying the user\u2019s role and security context, least-privileged access policies let users access the resources they need to complete their current tasks \u2014 and no more.\"}),/*#__PURE__*/e(\"h1\",{children:\"Securing the cloud with Twingate Zero Trust solutions\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate\u2019s secure access solutions make it easier to implement Zero Trust in cloud infrastructure security. Our software solution lets you automate the deployment and management of ZTNA protections to any resource, whether on-premises or in the cloud. This can take network segmentation to its ultimate conclusion \u2014 a segment for each resource. Unlike VPN, there\u2019s no need for a heavy gateway application. Proxies in front of the resource and in the Twingate Client app support direct, encrypted connections between the resource and authorized users.\"}),/*#__PURE__*/e(\"p\",{children:\"Role-based, least-privilege access controls are easy to manage through Twingate\u2019s console or integrations with your existing Identity Provider (IdP). Device posture checks provide additional context for authentication decisions, ensuring the right users get the access they need to your cloud infrastructure.\"}),/*#__PURE__*/e(\"p\",{children:\"As a cloud-native platform, Twingate is ready for dynamic cloud computing environments. Terraform and Pulumi providers, CircleCI compatibility, and other automation tools let you incorporate Twingate Zero Trust into your DevSecOps processes. Logging APIs let you feed connection events in real-time to your SIEM solution, so you always know the who, what, when, and where of cloud access.\"}),/*#__PURE__*/e(\"h1\",{children:\"Discover Twingate cloud security solutions\"}),/*#__PURE__*/e(\"p\",{children:\"Cloud computing offers many benefits but confronts IT teams with just as many challenges. The mix of public, private, hybrid, and multi-cloud environments \u2014 combined with cloud services\u2019 shared security models \u2014 make securing cloud infrastructure difficult. An organization\u2019s security team must understand how to secure each service and how to apply security policies uniformly across service providers. Cloud infrastructure security provides a path to bringing every cloud service under the same security umbrella.\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate secure access solutions enhance cloud security through the principles of Zero Trust Network Access. You can apply Zero Trust\u2019s tough authentication practices and least-privileged access policies for granular control over each cloud resource. Automation tools and simple administrative consoles unify your cloud infrastructure within common \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/zero-trust-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust security\"})}),\" policies.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=get-demo&utm_content=what-is-cloud-infrastructure-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact us\"})}),\" to learn how Twingate can make your cloud infrastructure more secure, more performant, and easier to manage.\"]})]})},{index:51,id:\"vG0PAmVpD\",[h]:!0,[d]:!1,[p]:\"What is Zero Trust Automation?\",[u]:\"What is Zero Trust Automation?\",[m]:\"what-is-zero-trust-automation\",[g]:\"\",[w]:\"Paul Andre de Vera\",[f]:\"2022-06-27T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/l1Ss5hJbYSS0rt35W4e9haLgFjo.png\",srcSet:\"https://framerusercontent.com/images/l1Ss5hJbYSS0rt35W4e9haLgFjo.png?scale-down-to=512 512w,https://framerusercontent.com/images/l1Ss5hJbYSS0rt35W4e9haLgFjo.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/l1Ss5hJbYSS0rt35W4e9haLgFjo.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/l1Ss5hJbYSS0rt35W4e9haLgFjo.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/l1Ss5hJbYSS0rt35W4e9haLgFjo.png\",srcSet:\"https://framerusercontent.com/images/l1Ss5hJbYSS0rt35W4e9haLgFjo.png?scale-down-to=512 512w,https://framerusercontent.com/images/l1Ss5hJbYSS0rt35W4e9haLgFjo.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/l1Ss5hJbYSS0rt35W4e9haLgFjo.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/l1Ss5hJbYSS0rt35W4e9haLgFjo.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Legacy network security solutions have become brittle, expensive, and increasingly vulnerable to attack. Zero Trust Network Access (ZTNA) promises a more consistent, responsive, and secure approach to access control. Despite these benefits, deploying and managing \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/zero-trust-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust security\"})}),\" architectures introduces new complexities. We will explain why secure perimeters are failing, how Zero Trust fits with modern network architectures, and how Zero Trust automation can speed your \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" deployments.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Security and access in a complex world\"}),/*#__PURE__*/e(\"p\",{children:\"Conventional secure perimeter approaches to access control are built upon an assumption that an outer layer of defenses is enough to protect a private network \u2014 and by extension, the network\u2019s connected devices and resources. Secure perimeter technologies also assume that remote users\u2019 credentials and devices, once authenticated, are always trustworthy.\"}),/*#__PURE__*/e(\"h2\",{children:\"Dynamic and decentralized IT ecosystem\"}),/*#__PURE__*/e(\"p\",{children:\"As evidenced by constant reports of security breaches, the secure perimeter no longer works. Networks, resources, users, and devices are not confined within the business\u2019 walls or under administrators\u2019 direct control. Today\u2019s networking ecosystem is decentralized and much more dynamic.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Distributed workforces\"}),\" - With today\u2019s hybrid workforces many, if not most, employees are working from home. Blended workforces comprising employees, freelancers, and outside contractors are increasingly common. Managing this constantly-shifting user base requires access policies that apply to every combination of user and work location.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Device proliferation\"}),\" - Device management has become just as complicated. Bring-your-own-device (BYOD) policies have replaced managed devices and fractured administrators\u2019 control over the device landscape. Access policies must support multiple form factors, manufacturers, and operating systems.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Decentralized networks\"}),\" - Thanks to cloud computing, many mission-critical systems have broken free of the secure perimeter. Any number of resources could be hosted on cloud platforms or outsourced to X-as-a-Service (XaaS) providers. As a result, the internet is as much a part of the \u201Ccompany network\u201A as an on-premises LAN.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Failing secure perimeter architectures\"}),/*#__PURE__*/e(\"p\",{children:\"Traditional secure perimeter frameworks cannot cope with today\u2019s diverse, dynamic networking ecosystem for several reasons:\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Over-reliance on trust\"}),\" - Once a VPN or other secure perimeter technology grants users access to a protected network, the users can see anything on that network. Hackers who compromise a user\u2019s device or credentials get the same access and are free to move laterally, expanding their beachhead and escalating their credentials.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Fragmented infrastructure\"}),\" - Every cloud platform and XaaS provider has its own access control system. Administrators must somehow enforce consistent policies across a fragmented infrastructure without leaving gaps that hackers could exploit.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Administrative overhead\"}),\" - Traditional technologies embed access control into the physical network. Changes to access policies require changes to network hardware and vice versa. As a result, secure perimeters are brittle, unresponsive to new business requirements, and expensive to maintain.\"]}),/*#__PURE__*/e(\"p\",{children:\"Weaknesses in secure perimeters have become increasingly apparent. Solar Winds and other high-profile security breaches have forced IT leaders to face facts. Secure perimeters are not, and never will be, secure.\"}),/*#__PURE__*/e(\"h2\",{children:\"DevSecOps deployment challenges\"}),/*#__PURE__*/e(\"p\",{children:\"Administrative overhead combined with brittle and fragmented infrastructures poses particular challenges for DevSecOps. Automation is essential to streamline the development, deployment, and management of IT infrastructures. However, integrating granular access control policies into these tools requires constant care and feeding. As a result, over-permissioned CI/CD tools and under-protected development and production environments expand the organization\u2019s attack surface, putting sensitive data at risk.\"}),/*#__PURE__*/e(\"h1\",{children:\"Zero Trust security and access control\"}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust Network Access offers a better framework for providing secure access in today\u2019s decentralized network ecosystem. Every federal agency has been told to develop a Zero Trust architecture strategy. In the private sector, businesses small and large see Zero Trust as the way to shrink their attack surface without hindering their business.\"}),/*#__PURE__*/e(\"h2\",{children:\"What is Zero Trust Network Access?\"}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust removes the secure perimeter\u2019s inherent trust in networks, resources, devices, and users. Zero Trust security models are based on three core principles:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Assume breach\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Verify explicitly\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Least privileged access\"})})]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Assume breach\"}),\" reflects the reality of modern cybersecurity. Under persistent threat, any user, credential, device, resource, or network could be compromised at any time. ZTNA solutions deny all access requests by default until trust can be established.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Verify explicitly\"}),\" requires every user, no matter how high or low in the organization, to authenticate with every access request. Identity verification is not enough. The user\u2019s network, their device\u2019s security posture, and other context factors inform a ZTNA solution\u2019s decision of whether to grant access.\"]}),/*#__PURE__*/e(\"p\",{children:\"Least privilege access policies provide granular control over which resources users may access and under which contexts. Zero Trust security policies limit users\u2019 access to the specific resources they need for their work.\"}),/*#__PURE__*/e(\"h1\",{children:\"Zero Trust deployment guide\"}),/*#__PURE__*/e(\"p\",{children:\"Initially, organizations struggled to justify the move to Zero Trust. Few had the resources to duplicate Google\u2019s pioneering Zero Trust security model. Modern Zero Trust security practices using solutions such as Twingate\u2019s make deploying Zero Trust much easier. However, this modern access framework is not without its challenges. IT infrastructure is split across network siloes. Configuring and deploying granular Zero Trust controls to provide both on-premises and cloud security is orders of magnitude more complex. Even for mid-sized organizations, automation is the only way to meet Zero Trust deployment objectives\"}),/*#__PURE__*/e(\"h2\",{children:\"Top Zero Trust deployment objectives\"}),/*#__PURE__*/e(\"p\",{children:\"First, businesses need to know that a Zero Trust solution can control access to their cloud platforms in addition to on-premises resources. Unifying access control within a single system allows for simpler and more consistent policy enforcement across the business\u2019 decentralized network architecture.\"}),/*#__PURE__*/e(\"h2\",{children:\"Additional deployment objectives\"}),/*#__PURE__*/e(\"p\",{children:\"At the same time, businesses need ZTNA solutions that comply with good DevSecOps practices. Brittle network access controls often give automation tools too much access. As a result, systems with access to the most sensitive resources become security vulnerabilities. Zero Trust automation must be part of the systems development lifecycle, protecting the development process itself in addition to production resources.\"}),/*#__PURE__*/e(\"h1\",{children:\"Zero Trust Automation with Twingate\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate\u2019s secure access solution was designed from the start to deliver enterprise-class Zero Trust Network Access with consumer-grade usability. Thanks to our software-based approach and automation capabilities, Twingate customers have deployed ZTNA globally in as little as fifteen minutes.\"}),/*#__PURE__*/e(\"h2\",{children:\"Unifying decentralized architectures\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate lets you deploy Zero Trust to any resource whether it runs on-premises or lives in the cloud. With a single docker command, you can deploy a Twingate Connector to AWS, Azure, and Google Cloud Compute to protect virtual machines, databases, and web apps. You can also use Twingate in the management of Kubernetes clusters or to securely access a service within an unexposed cluster.\"}),/*#__PURE__*/e(\"h2\",{children:\"Deployment automation\"}),/*#__PURE__*/t(\"p\",{children:[\"Although you can deploy Twingate\u2019s components manually while learning how our solution works, you can use our solution with your existing Internet as Code (IAC) automation tools. Our \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/changelog/terraform-provider\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Terraform\"})}),\" and \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/pulumi-twingate-partnership\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Pulumi\"})}),\" providers, for example, let you script Connector deployments, definitions of Twingate-protected resources, and access provisioning for those resources. We also offer a GraphQL-based \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/api-overview\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Admin API\"})}),\" to automate your Twingate configuration as well as to provision Connectors and new tokens in code.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Least-privilege access in continuous integration\"}),/*#__PURE__*/t(\"p\",{children:[\"To test code that accesses protected resources, Continuous Integration (CI) tools such as Jenkins or Circle CI must have access to the same resources. In the past, that may have required constant maintenance of complex VPN configurations. Automatically \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/example-cicd-configurations\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"deploying a Twingate Client into your CI tools\"})}),\" lets them access the right protected resources while the code is being tested. Once the testing is complete, the permissions can be revoked programmatically.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Protecting source code, prod, and non-prod assets\"}),/*#__PURE__*/t(\"p\",{children:[\"If you use GitLab, GitHub, or other public repositories for version control, your source code could be at risk. Twingate lets you \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/aws-gitlab\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"control access to these public repositories\"})}),\" by requiring explicit verification and applying device posture tests to prevent unauthorized access.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Automation and orchestration\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s APIs also support your Zero Trust automation and orchestration workflows. Our \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/exporting-network-traffic\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Real-Time Analytics\"})}),\" tool outputs connection logs from every Twingate Connector as single-line JSON objects. Security information and event management (SIEM) platforms such as Splunk or AWS CloudWatch can easily ingest these logs to automate the monitoring of your Zero Trust infrastructure.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Begin your Twingate Zero Trust journey\"}),/*#__PURE__*/e(\"p\",{children:\"As legacy secure perimeter technologies continue to break under the pressures of today\u2019s diverse, decentralized network ecosystem, Zero Trust Network Access promises to shrink attack surfaces dramatically while eliminating the brittle, expensive approaches of the past. Zero Trust deployments, however, introduce a new kind of complexity that could undermine DevSecOps productivity. Twingate\u2019s Zero Trust solution integrates with your existing IAC strategies and CI/CD pipelines, letting you automate deployments and make development more secure.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=zero-trust-automation\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact Twingate today\"})}),\" to learn how easy Zero Trust automation can be.\"]})]})},{index:52,id:\"ifA9kys1S\",[h]:!0,[d]:!1,[p]:\"Securing Kubernetes API with Twingate\",[u]:\"Securing Kubernetes API with Twingate\",[m]:\"kubernetes-api-security\",[g]:\"\",[w]:\"Keith Hubner\",[f]:\"2022-06-15T00:00:00.000Z\",[y]:\"nwIUHELao\",[b]:T({src:\"https://framerusercontent.com/images/rwDxjlyxtsTaTD3bxWC1KeuyE8s.png\",srcSet:\"https://framerusercontent.com/images/rwDxjlyxtsTaTD3bxWC1KeuyE8s.png?scale-down-to=512 512w,https://framerusercontent.com/images/rwDxjlyxtsTaTD3bxWC1KeuyE8s.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/rwDxjlyxtsTaTD3bxWC1KeuyE8s.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/rwDxjlyxtsTaTD3bxWC1KeuyE8s.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/rwDxjlyxtsTaTD3bxWC1KeuyE8s.png\",srcSet:\"https://framerusercontent.com/images/rwDxjlyxtsTaTD3bxWC1KeuyE8s.png?scale-down-to=512 512w,https://framerusercontent.com/images/rwDxjlyxtsTaTD3bxWC1KeuyE8s.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/rwDxjlyxtsTaTD3bxWC1KeuyE8s.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/rwDxjlyxtsTaTD3bxWC1KeuyE8s.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"h1\",{children:\"Introduction\"}),/*#__PURE__*/e(\"p\",{children:\"Kubernetes goes a long way to solve many traditional application and architecture issues, but security must always be a consideration when dealing with public facing services. All too often the path of least resistance is taken to avoid the slow and painful network setup needed to secure services like the k8s API. Twingate looks to take away this pain by providing simple and secure access to your Kubernetes API and services running within your cluster.\"}),/*#__PURE__*/e(\"h1\",{children:\"Private clusters\"}),/*#__PURE__*/e(\"p\",{children:\"Private clusters give you the option of limiting both inbound and outbound communications to and from your Kubernetes cluster by removing the exposure of the public API to the internet. It can be argued that there are other security measures that can be taken to safely expose the API, for example IP restrictions and also Kubernetes own RBAC security model. This is true, however the API is still public facing and still vulnerable to both accidental and malicious exposure. Removing the Kubernetes public API endpoint closes that link to the outside world completely.\"}),/*#__PURE__*/t(\"p\",{children:[\"This guide assumes you have a requirement to deploy Twingate outside of the Kubernetes cluster. Deploying Twingate inside Kubernetes is also an option you may want to consider and more information on how to do this via a helm chart can be found \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/kubernetes-and-twingate\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\".\"]}),/*#__PURE__*/e(\"h1\",{children:\"Getting started\"}),/*#__PURE__*/e(\"p\",{children:\"This guide assumes you have the following setup:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"You have a current Twingate Account (the free tier of Twingate is perfectly suitable for this guide)\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"You have a current AKS / EKS / GKE private cluster setup and accessible via an alternative private connection\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"You have \",/*#__PURE__*/e(s,{href:\"https://docs.microsoft.com/en-us/cli/azure\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Azure CLI\"})}),\" / \",/*#__PURE__*/e(s,{href:\"https://aws.amazon.com/cli\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"AWS CLI\"})}),\" / \",/*#__PURE__*/e(s,{href:\"https://cloud.google.com/sdk/gcloud\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Google CLI\"})}),\" installed\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"You have \",/*#__PURE__*/e(s,{href:\"https://kubernetes.io/docs/tasks/tools\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Kubectl\"})}),\" installed\"]})})]}),/*#__PURE__*/t(\"p\",{children:[\"This guide doesn\u2019t utilize advanced deployment techniques, for example via Terraform or Pulumi. If you are interested in deploying Twingate via Terraform please see the official \",/*#__PURE__*/e(s,{href:\"https://registry.terraform.io/providers/Twingate/twingate/latest/docs\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Terraform provider guide here\"})}),\" or for Pulumi please see the \",/*#__PURE__*/e(s,{href:\"https://www.pulumi.com/registry/packages/twingate\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Pulumi Registry\"})}),\".\"]}),/*#__PURE__*/t(\"p\",{children:[\"Firstly you must have a Twingate account, so head over \",/*#__PURE__*/e(s,{href:\"https://auth.twingate.com/signup?utm_source=blog&utm_medium=blog&utm_campaign=kubernetes-api-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\" to sign up if you do not have one. You will also need to install the Twingate client from \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/download?utm_source=blog&utm_medium=blog&utm_campaign=kubernetes-api-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\".\"]}),/*#__PURE__*/e(\"h1\",{children:\"Setting up your network\"}),/*#__PURE__*/e(\"p\",{children:\"Login to your Twingate admin portal and click \u201CAdd\u201A on the remote networks section:\"}),/*#__PURE__*/e(\"img\",{alt:\"twingate add network\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,z2tgd0JrAt8IWwMKWsFLeGW9Vec.png?originalFilename=twingate-add-network.png\",src:\"https://framerusercontent.com/images/z2tgd0JrAt8IWwMKWsFLeGW9Vec.png\"}),/*#__PURE__*/e(\"p\",{children:\"Then select the location of AWS/Azure/Google Cloud, give it a name, and continue to relevant section below.\"}),/*#__PURE__*/e(\"img\",{alt:\"select remote network\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,LmbKRopwvPmgw14hqIprolnzPs.png?originalFilename=select-remote-network.png\",src:\"https://framerusercontent.com/images/LmbKRopwvPmgw14hqIprolnzPs.png\"}),/*#__PURE__*/e(\"p\",{children:\"Once you have setup your network(s), please follow the relevant guide below:\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/private-aks-access\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Deploying to Azure for Private AKS Access\"})})}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/private-gke-access\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Deploying to GCP for Private GKE Access\"})})}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/private-eks-access\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Deploying to AWS for Private EKS Access\"})})})]})},{index:53,id:\"pIdEjlExu\",[h]:!0,[d]:!1,[p]:\"What is Device Posture\u2019s Role in Zero Trust?\",[u]:\"What is Device Posture\u2019s Role in Zero Trust?\",[m]:\"what-is-device-posture-zero-trust\",[g]:\"\",[w]:\"Paul Andre de Vera\",[f]:\"2022-06-13T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/pzhMb4yvnLTPqbZrVhx7V5vI4.png\",srcSet:\"https://framerusercontent.com/images/pzhMb4yvnLTPqbZrVhx7V5vI4.png?scale-down-to=512 512w,https://framerusercontent.com/images/pzhMb4yvnLTPqbZrVhx7V5vI4.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/pzhMb4yvnLTPqbZrVhx7V5vI4.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/pzhMb4yvnLTPqbZrVhx7V5vI4.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/pzhMb4yvnLTPqbZrVhx7V5vI4.png\",srcSet:\"https://framerusercontent.com/images/pzhMb4yvnLTPqbZrVhx7V5vI4.png?scale-down-to=512 512w,https://framerusercontent.com/images/pzhMb4yvnLTPqbZrVhx7V5vI4.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/pzhMb4yvnLTPqbZrVhx7V5vI4.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/pzhMb4yvnLTPqbZrVhx7V5vI4.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"h1\",{children:\"What is Device Posture\u2019s Role in Zero Trust?\"}),/*#__PURE__*/t(\"p\",{children:[\"While a lot of attention has focused on identity in Zero Trust Network Architectures (ZTNA), not as much has been placed on device posture\u2019s role in \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\". The state of a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/device-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"device\u2019s security\"})}),\" features provides critical context for any least-privileged authorization decision. Performing device posture checks must be part of every access request \u2014 especially when more devices accessing protected resources are owned by users, contractors, and other third parties.\"]}),/*#__PURE__*/e(\"p\",{children:\"As we roll out our Twingate Device Security capabilities, it\u2019s worth looking at why device posture checks have become so important as well as device posture\u2019s role in Zero Trust solutions.\"}),/*#__PURE__*/e(\"h1\",{children:\"Device ecosystems: from monoculture to security diversity\"}),/*#__PURE__*/e(\"p\",{children:\"Traditional network access control techniques evolved at a time when workforces and the technologies they used were more centralized and homogenous. All users were employees. The few that did not use managed desktops \u2014 executives, salespeople, field engineers \u2014 carried managed laptops while traveling. Everyone accessed resources on central networks protected by secure perimeter technologies.\"}),/*#__PURE__*/e(\"p\",{children:\"Things couldn\u2019t be more different today. A company\u2019s user base is a dynamic mix of employees, freelancers, contractors, third-party companies, and guests. Some may use company-owned devices A growing number, however, use personal devices or devices owned by outside firms. They connect to a nebulous company network that extends beyond the company LAN into the cloud.\"}),/*#__PURE__*/e(\"p\",{children:\"This distributed network architecture makes traditional approaches to secure access less and less effective. Long past are the days of one user, one device. Now, users switch from device to device throughout the day as their context changes. They may even access company resources through several managed and personal devices at the same time. As administrators\u2019 control over these devices becomes more tenuous, device security is a growing concern.\"}),/*#__PURE__*/e(\"h2\",{children:\"Modern threats from user devices\"}),/*#__PURE__*/t(\"p\",{children:[\"In this environment, devices have become significant vectors for cyber-attacks. A survey released in early 2020 found that 68% of respondents had \",/*#__PURE__*/e(s,{href:\"https://www.prweb.com/releases/ponemon_institute_reveals_68_of_organizations_were_victims_of_successful_endpoint_attacks_in_2019/prweb16870225.htm\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"experienced security breaches that originated on user devices\"})}),\".\"]}),/*#__PURE__*/t(\"p\",{children:[\"In the months following that survey, pandemic-driven shifts in the workplace only made user devices more enticing to cybercriminals. Users became responsible for security and maintenance thanks to work-from-home and bring-your-own-device policies. The chances of unpatched vulnerabilities increased. As a result, lightly managed or unmanaged endpoints created new opportunities for security breaches. A 2021 report found nearly 80% of organizations have seen an \",/*#__PURE__*/e(s,{href:\"https://venturebeat.com/2021/10/28/report-79-of-it-teams-have-seen-increase-in-endpoint-security-breaches\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"increase in compromised endpoints\"})}),\".\"]}),/*#__PURE__*/e(\"h2\",{children:\"Establishing trust in devices versus identities\"}),/*#__PURE__*/t(\"p\",{children:[\"Much attention over the past few years has focused on finding better ways to verify user identity. As Twingate\u2019s Chief Product Officer, Alex Marshall, discussed last year, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/device-trust-in-a-zero-trust-world\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"device trust is more difficult to pin down\"})}),\":\"]}),/*#__PURE__*/e(\"p\",{children:\"\u201CUnlike identity\u2014which is inherently a portable concept and has spawned a wide range of technologies to evaluate identity across systems from LDAP to OAuth\u2014device trust is a more fluid concept that requires a different approach.\u201A\"}),/*#__PURE__*/e(\"p\",{children:\"Identity is relatively static. Once authenticated, your CEO, network administrators, and other users can be trusted to access the resources for which they are authorized.\"}),/*#__PURE__*/e(\"p\",{children:\"Device trust, on the other hand, is more dynamic and subject to interpretation. IP-based network access controls struggle because the context of device connections \u2014 does it access the office LAN or an airport hotspot \u2014 changes constantly. Likewise, device posture \u2014 security features such as firewall status or OS version \u2014 could change at any time to create vulnerabilities that hackers could exploit.\"}),/*#__PURE__*/e(\"h1\",{children:\"Secure perimeters and current device posture security\"}),/*#__PURE__*/e(\"p\",{children:\"As user traffic expanded beyond the company\u2019s campus network, administrators extended their traditional device management approaches to this new distributed network. Various tools let administrators control device posture \u2014 to a degree.\"}),/*#__PURE__*/e(\"h2\",{children:\"Mobile device management\"}),/*#__PURE__*/e(\"p\",{children:\"Mobile device management (MDM) solutions give administrators the kind of control over remote devices that they previously had over desktop systems on the network. Originally developed to manage enterprise application access for the smartphones employees began bringing to work, MDM security solutions now support every kind of user device.\"}),/*#__PURE__*/e(\"p\",{children:\"MDM software running on the user device isolates company applications and data from the user\u2019s personal data. At the same time, the client app lets administrators remotely manage the device. Updates can be deployed without user intervention. When someone leaves the company, administrators can use the MDM client to erase company data remotely.\"}),/*#__PURE__*/e(\"h2\",{children:\"Endpoint detection and response\"}),/*#__PURE__*/e(\"p\",{children:\"Endpoint detection and response (EDR) solutions provide the continuous security that is missing from VPN-based access control. Once the user is authenticated and access to the network has been granted, the VPN system\u2019s role is complete. Should the device be compromised, hackers can go wherever they want on the network.\"}),/*#__PURE__*/e(\"p\",{children:\"EDR clients constantly monitor and enforce antivirus, firewall, and other device posture policies. If the EDR client detects suspicious activity or if the device falls out of compliance, the client blocks access to company resources until the user or administrators address the security issue.\"}),/*#__PURE__*/e(\"h2\",{children:\"Certificates\"}),/*#__PURE__*/e(\"p\",{children:\"Digital certificates give devices a verifiable \u201Cidentity\u201A that adds a layer of security. Especially when issued by independent Certificate Authorities, device certificates cannot be duplicated. Network access control systems use that implicit trust to ensure that only authenticated devices are connecting to protected networks.\"}),/*#__PURE__*/e(\"h2\",{children:\"Challenges of traditional device security approaches\"}),/*#__PURE__*/e(\"p\",{children:\"Like other aspects of the secure perimeter framework, device management evolved in response to changing conditions. Companies adopted some systems to control access from smartphones, other systems for managed devices, and more systems for the growing population of unmanaged devices. Administrators now deal with a patchwork of platform-specific security applications that do not integrate easily with each other or with identity and access management systems.\"}),/*#__PURE__*/e(\"p\",{children:\"Moreover, EDR and MDM solutions work best with company-owned devices. Forcing employees to install these apps on their personal devices creates privacy concerns. EDR and MDM may not be possible with freelancers, contractors, and other third parties.\"}),/*#__PURE__*/e(\"h1\",{children:\"Using device posture in Zero Trust Network Access\"}),/*#__PURE__*/e(\"p\",{children:\"Organizations of every size are turning to Zero Trust Network Access to simplify access control and enhance resource security. ZTNA recognizes that, thanks to the internet and the cloud, secure perimeters no longer exist. Protecting networks is not enough. Zero Trust solutions depend on both identity and device posture to determine in real-time whether to authorize any user\u2019s access.\"}),/*#__PURE__*/e(\"h2\",{children:\"Authentication context with device posture information\"}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust\u2019s core principle of \u201Cassume breach\u201A reflects the state of today\u2019s threat landscape. An unpatched system or a malicious email is all hackers need to compromise a device and penetrate a network\u2019s defenses. Given this reality, the only way to protect resources is to challenge every request.\"}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust requires explicit verification whenever a user tries to access a resource. User identity is a big part of that step. Device posture is just as important. Unlike VPN\u2019s all-or-nothing approach, ZTNA solutions apply grades of access based on both identity and context. The device posture information that a ZTNA solution uses to evaluate that context can include:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"OS version\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Anti-malware version and status\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Screen lock status\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Firewall status\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Storage encryption\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Biometrics\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Certificates\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"Base resource access on current device posture\"}),/*#__PURE__*/e(\"p\",{children:\"A Zero Trust solution uses the current device posture at the time of the request to calculate a trust score. When using these scores, security policies can apply granular criteria based on the principle of least privilege. In some scenarios, accessing a low-risk resource may be acceptable despite a less-than-perfect device posture. Highly sensitive resources, on the other hand, would require perfect device posture checks to allow access.\"}),/*#__PURE__*/e(\"p\",{children:\"Network administrators, for example, can access more systems when working on a managed desktop connected to the company LAN than when using their phones. Least-privileged access policies based on device posture make it easier to contain potential breaches while letting users access the resources they need.\"}),/*#__PURE__*/e(\"h1\",{children:\"Twingate unifies device posture in ZTNA\"}),/*#__PURE__*/e(\"p\",{children:\"When Alex introduced Twingate\u2019s device posture philosophy last year, he explained how our Zero Trust solution is uniquely positioned to make device posture a consistent and easily-managed part of your secure access policies.\"}),/*#__PURE__*/e(\"p\",{children:\"\u201COur status as a neutral collection point for this information will not only allow Twingate to provide you with the most complete picture of your environment across any device in any location, but also allow you to create custom policies for your environment that take this dynamic information into account.\u201A\"}),/*#__PURE__*/e(\"p\",{children:\"Two elements of Twingate\u2019s software solution, the Controller and the Client, contribute to device posture enforcement. Among its responsibilities, the Controller:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Stores and distributes access policies.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Delegates user authentication to your Identity Provider.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Facilitates connections between user devices and protected resources.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Twingate\u2019s approach to decentralized network architectures pushes decision-making and access policy enforcement to the edge. Our Client app runs seamlessly in the background on all major platforms, performing functions that include:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Redirecting users to their device\u2019s identity authority.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Deciding whether users are allowed to access the requested resource.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Locally resolving DNS lookups for protected resources.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Initiating connections via Twingate to authorized resources.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Establishing direct, encrypted tunnels between the device and the resource.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Transparently proxying TCP and UDP traffic to protected resources.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Device posture checks in Twingate connection flows\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"Twingate device posture checks\"}),/*#__PURE__*/e(\"p\",{children:\"Your administrators can set device security policies for each resource Twingate protects. These policies can be based on Twingate\u2019s native device posture checks and, soon, third-party trust methods such as an MDM or certificate.\"}),/*#__PURE__*/e(\"p\",{children:\"Using Twingate\u2019s native capabilities, your security administrators define Trusted Profiles for each device platform that may connect to a resource. The base policy level, the Minimum OS Requirement, lets you grant or deny access by the operating system. You can limit access to Windows devices only or block all Android smartphones.\"}),/*#__PURE__*/e(\"p\",{children:\"Depending on the platform, the device posture information Twingate collects may include:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Antivirus status.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Biometric configuration.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Firewall status.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"HD encryption status.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Screen lock status.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"The Controller distributes each resource\u2019s access policies only to the Clients authorized to access that resource. When a user tries to access a resource, the Client will compare the current device posture to the resource\u2019s Trusted Profiles. Devices out of compliance are blocked. Since the Client is not connected to the resource when Twingate enforces device security policies, your attack surface shrinks.\"}),/*#__PURE__*/t(\"p\",{children:[\"You can find documents describing our device posture features in more detail on the \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate support site\"})}),\".\"]}),/*#__PURE__*/e(\"h2\",{children:\"Towards more granular device posture policies\"}),/*#__PURE__*/t(\"p\",{children:[\"In May, we described \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/device-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"our device posture development roadmap\"})}),\", where we are and where we\u2019re heading. Our Business and Enterprise customers now have access to the baseline capabilities we just discussed. Your admins can enforce native device posture checks by defining access policies for each resource.\"]}),/*#__PURE__*/e(\"p\",{children:\"Throughout the year, we will roll out enhanced device security features that include integrations with common EDR and MDM solutions as well as support for device certificates.\"}),/*#__PURE__*/e(\"h1\",{children:\"Enhance Zero Trust Network Access with Twingate Device Security\"}),/*#__PURE__*/e(\"p\",{children:\"As network perimeters have faded away, so have definitions of devices, users, and resources. Devices became a particular source of frustration and security risk. BYOD policies and a changing workforce limit administrators\u2019 control over what accesses protected resources. Technologies such as EDR and MDM address some of these challenges. At the same time, they create a fragmented architecture that is more difficult to manage.\"}),/*#__PURE__*/e(\"p\",{children:\"With the move towards Zero Trust Network Access, device posture becomes even more important. ZTNA\u2019s principle of least privilege requires more than identity verification. The device itself provides context that must affect users\u2019 access to resources.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate\u2019s Zero Trust solution is ideally positioned to unify device posture checks within a single, easily-managed system. Our Client software collects device posture information and enforces access policies during the authorization process. As a result, compromised devices never gain access to a protected resource.\"}),/*#__PURE__*/e(\"p\",{children:\"Whether using our native capabilities or integrating Twingate with your current MDM system, Twingate Device Security gives you a straightforward way to create and enforce granular least-privilege-access policies on every user device.\"}),/*#__PURE__*/e(\"p\",{children:\"Contact Twingate to learn more about using device posture checks in the Zero Trust context.\"})]})},{index:54,id:\"eDp6Ci_NH\",[h]:!0,[d]:!1,[p]:\"Deploying Twingate to GKE\",[u]:\"Deploying Twingate to GKE\",[m]:\"private-gke-access\",[g]:\"\",[w]:\"Keith Hubner\",[f]:\"2022-06-12T00:00:00.000Z\",[y]:\"nwIUHELao\",[b]:T({src:\"https://framerusercontent.com/images/lmgScEZ3els0N5lHKcV5Tyqm2U.png\",srcSet:\"https://framerusercontent.com/images/lmgScEZ3els0N5lHKcV5Tyqm2U.png?scale-down-to=512 512w,https://framerusercontent.com/images/lmgScEZ3els0N5lHKcV5Tyqm2U.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/lmgScEZ3els0N5lHKcV5Tyqm2U.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/lmgScEZ3els0N5lHKcV5Tyqm2U.png 2401w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/lmgScEZ3els0N5lHKcV5Tyqm2U.png\",srcSet:\"https://framerusercontent.com/images/lmgScEZ3els0N5lHKcV5Tyqm2U.png?scale-down-to=512 512w,https://framerusercontent.com/images/lmgScEZ3els0N5lHKcV5Tyqm2U.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/lmgScEZ3els0N5lHKcV5Tyqm2U.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/lmgScEZ3els0N5lHKcV5Tyqm2U.png 2401w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Please note, this guide includes creating resources which will bring additional cost to your GCP subscription.\"}),/*#__PURE__*/t(\"p\",{children:[\"This guide assumes you have already deployed a private GKE cluster. For more information on setting this up please visit the \",/*#__PURE__*/e(s,{href:\"https://cloud.google.com/kubernetes-engine/docs/how-to/private-clusters\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"official Google Cloud Documentation\"})}),\".\"]}),/*#__PURE__*/e(\"h2\",{children:\"Setting up the Twingate subnet\"}),/*#__PURE__*/e(\"p\",{children:\"The following command will create the network for the Twingate connector container. For the purpose of this guide I have deployed the connector in the same VPC network as the GKE cluster but within a management subnet.\"}),/*#__PURE__*/e(\"p\",{children:\"Note you will need to replace project, range, network and region with those relevent to your environment. For the purpose of this guide I have named the new subnet \u201Cmanagement\u201A.\"}),/*#__PURE__*/t(\"p\",{children:[\" \",/*#__PURE__*/e(\"code\",{children:\"gcloud compute networks subnets create management --project=twingate-347715 --range=10.0.0.0/24 --network=gke-private-demo --region=europe-north1 --enable-private-ip-google-access\"})]}),/*#__PURE__*/e(\"p\",{children:\"After a few moments the management subnet should have been created:\"}),/*#__PURE__*/t(\"p\",{children:[\" \",/*#__PURE__*/e(\"code\",{children:\"NAME        REGION         NETWORK           RANGE        STACK_TYPE  IPV6_ACCESS_TYPE  IPV6_CIDR_RANGE  EXTERNAL_IPV6_CIDR_RANGEmanagement  europe-north1  gke-private-demo  10.0.0.0/24  IPV4_ONLY\"})]}),/*#__PURE__*/t(\"p\",{children:[\"To enable the creation of the container and communicate with Twingate services, your management subnet will need access to the internet. How you do this may vary but for the purpose of this guide I have deployed a \",/*#__PURE__*/e(s,{href:\"https://cloud.google.com/nat/docs/set-up-manage-network-address-translation\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Cloud NAT gateway\"})}),\" for the management subnet to use.\"]}),/*#__PURE__*/e(\"p\",{children:\"Once the networking is in place, we can deploy the connector into this new management subnet.\"}),/*#__PURE__*/e(\"h1\",{children:\"Deploying the connector\"}),/*#__PURE__*/e(\"p\",{children:\"Back on the Twingate admin portal, within the new network, click \u201Cdeploy connector\u201A on an existing connector:\"}),/*#__PURE__*/e(\"img\",{alt:\"deploy connector\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,VP3FODGKITsNble1L6q5vPI.png?originalFilename=deploy-connector.png\",src:\"https://framerusercontent.com/images/VP3FODGKITsNble1L6q5vPI.png\"}),/*#__PURE__*/e(\"p\",{children:\"You can then click the generate tokens button, and copy the two values given:\"}),/*#__PURE__*/e(\"img\",{alt:\"generate tokens\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,bQbFDT1BC7KEB7bbpzag57Rs8kk.png?originalFilename=generate-tokens.png\",src:\"https://framerusercontent.com/images/bQbFDT1BC7KEB7bbpzag57Rs8kk.png\",srcSet:\"https://framerusercontent.com/images/bQbFDT1BC7KEB7bbpzag57Rs8kk.png?scale-down-to=512 512w,https://framerusercontent.com/images/bQbFDT1BC7KEB7bbpzag57Rs8kk.png 744w\"}),/*#__PURE__*/e(\"p\",{children:\"Make a note of these values as we will need them to create the container instance.\"}),/*#__PURE__*/e(\"h1\",{children:\"Creating the container instance\"}),/*#__PURE__*/t(\"p\",{children:[\"We will be deploying our container using Google Cloud Compute. This can be done either by following the \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/gcp\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate guide\"})}),\" or adapting the gcloud command below.\"]}),/*#__PURE__*/e(\"p\",{children:\"Remember to replace the values below with your own, most noteably the TENANT_URL, ACCESS_TOKEN and REFRESH_TOKEN. It is recommended to name the container the same as the connector name in Twingate.\"}),/*#__PURE__*/t(\"p\",{children:[\" \",/*#__PURE__*/e(\"code\",{children:\"gcloud compute instances create-with-container black-wallaby --zone=europe-north1-a --machine-type=e2-small --network-interface=subnet=management,no-address --image=projects/cos-cloud/global/images/cos-stable-97-16919-29-16 --boot-disk-size=10GB --boot-disk-type=pd-balanced --boot-disk-device-name=tactful-lobster --container-image=twingate/connector:1 --container-restart-policy=always --container-env=TENANT_URL=https://mynet.twingate.com,ACCESS_TOKEN=123456ABCB,REFRESH_TOKEN=1239876YGTH\"})]}),/*#__PURE__*/e(\"p\",{children:\"Once the container is running you should see your connection status updated:\"}),/*#__PURE__*/e(\"img\",{alt:\"connection status\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,sAo9Qv1cf1UXv9OC5kA4hD71tis.png?originalFilename=connection-status.png\",src:\"https://framerusercontent.com/images/sAo9Qv1cf1UXv9OC5kA4hD71tis.png\"}),/*#__PURE__*/e(\"h1\",{children:\"Setting up the Twingate resource\"}),/*#__PURE__*/e(\"p\",{children:\"Now the connector is established and communicating with Twingate. We can use this to connect to the Kubernetes private endpoint.\"}),/*#__PURE__*/e(\"p\",{children:\"You can view the IP address of the private endpoint via the cluster information page in the GCP web console:\"}),/*#__PURE__*/e(\"img\",{alt:\"cluster private ip\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,ZIOigfAQBdlEMvstlHrBK6AcG4.png?originalFilename=cluster-private-ip.png\",src:\"https://framerusercontent.com/images/ZIOigfAQBdlEMvstlHrBK6AcG4.png\",srcSet:\"https://framerusercontent.com/images/ZIOigfAQBdlEMvstlHrBK6AcG4.png?scale-down-to=512 512w,https://framerusercontent.com/images/ZIOigfAQBdlEMvstlHrBK6AcG4.png 686w\"}),/*#__PURE__*/e(\"p\",{children:\"Once we have this endpoint we can add this as a resource to Twingate:\"}),/*#__PURE__*/e(\"img\",{alt:\"add twingate resource\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,RgWetpnHMqyFoHztkZg5zcIzRMo.png?originalFilename=add-twingate-resource.png\",src:\"https://framerusercontent.com/images/RgWetpnHMqyFoHztkZg5zcIzRMo.png\",srcSet:\"https://framerusercontent.com/images/RgWetpnHMqyFoHztkZg5zcIzRMo.png 462w\"}),/*#__PURE__*/e(\"p\",{children:\"Once this has been added you should see the resource turn green, showing the connector can communicate with it:\"}),/*#__PURE__*/e(\"img\",{alt:\"resource status\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,QYsqKeMgIlUo4AzFOD6DRhyc.png?originalFilename=resource-status.png\",src:\"https://framerusercontent.com/images/QYsqKeMgIlUo4AzFOD6DRhyc.png\"}),/*#__PURE__*/e(\"h1\",{children:\"Testing your connection\"}),/*#__PURE__*/e(\"p\",{children:\"First let\u2019s check we can\u2019t get to the cluster at the moment. Ensure your Twingate client is closed and any other VPN or private route you may be using is disabled. If you don\u2019t have the cluster config already, you can run the following command to add the cluster config to your local KUBECONFIG file:\"}),/*#__PURE__*/e(\"p\",{children:\"Again these values are based on the ones used in this guide and may vary depending on your setup.\"}),/*#__PURE__*/t(\"p\",{children:[\" \",/*#__PURE__*/e(\"code\",{children:\"gcloud container clusters get-credentials CLUSTER_NAME\"})]}),/*#__PURE__*/e(\"p\",{children:\"Now test the connection:\"}),/*#__PURE__*/t(\"p\",{children:[\" \",/*#__PURE__*/e(\"code\",{children:\"kubectl get nodes\"})]}),/*#__PURE__*/t(\"p\",{children:[\" \",/*#__PURE__*/e(\"code\",{children:\"Unable to connect to the server: dial tcp 172.16.0.2:443: connect: network is unreachable\"})]}),/*#__PURE__*/t(\"p\",{children:[\"Now open your Twingate client. You should also see that there is an additional authentication required, more information on this can be found in the \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate documentation\"})}),\".\"]}),/*#__PURE__*/e(\"img\",{alt:\"additional authentication\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,L6avlIOyTXq1AY0aRNGlwjSQPk.png?originalFilename=additional-authentication-required.png\",src:\"https://framerusercontent.com/images/L6avlIOyTXq1AY0aRNGlwjSQPk.png\"}),/*#__PURE__*/e(\"p\",{children:\"Follow through the authentication steps then run the same command to test the connection:\"}),/*#__PURE__*/t(\"p\",{children:[\" \",/*#__PURE__*/e(\"code\",{children:\"kubectl get nodes\"})]}),/*#__PURE__*/e(\"p\",{children:\"You should now get a response from the Kubernetes API:\"}),/*#__PURE__*/t(\"p\",{children:[\" \",/*#__PURE__*/e(\"code\",{children:\"NAME                                     STATUS   ROLES    AGE    VERSIONgke-gketest-default-pool-2bd94f93-7hl1   Ready    <none>   118m   v1.21.10-gke.2000\"})]}),/*#__PURE__*/e(\"p\",{children:\"If you have trouble connecting, make sure your management network which contains your Twingate connector is allowed access to the control plane:\"}),/*#__PURE__*/e(\"img\",{alt:\"control plane access\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,yvJH94vDwC27TjBiDz2haxSLGx4.png?originalFilename=control-plane-access.png\",src:\"https://framerusercontent.com/images/yvJH94vDwC27TjBiDz2haxSLGx4.png\",srcSet:\"https://framerusercontent.com/images/yvJH94vDwC27TjBiDz2haxSLGx4.png?scale-down-to=512 512w,https://framerusercontent.com/images/yvJH94vDwC27TjBiDz2haxSLGx4.png 699w\"}),/*#__PURE__*/e(\"p\",{children:\"You now have secure access to your private Kubernetes API.\"})]})},{index:55,id:\"qkJumitqX\",[h]:!0,[d]:!1,[p]:\"Deploying Twingate to AWS EKS\",[u]:\"Deploying Twingate to AWS EKS\",[m]:\"private-eks-access\",[g]:\"\",[w]:\"Keith Hubner\",[f]:\"2022-06-12T00:00:00.000Z\",[y]:\"nwIUHELao\",[b]:T({src:\"https://framerusercontent.com/images/wSlRv3NGsV2EWt3jAssZglyy0.png\",srcSet:\"https://framerusercontent.com/images/wSlRv3NGsV2EWt3jAssZglyy0.png?scale-down-to=512 512w,https://framerusercontent.com/images/wSlRv3NGsV2EWt3jAssZglyy0.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/wSlRv3NGsV2EWt3jAssZglyy0.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/wSlRv3NGsV2EWt3jAssZglyy0.png 2401w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/wSlRv3NGsV2EWt3jAssZglyy0.png\",srcSet:\"https://framerusercontent.com/images/wSlRv3NGsV2EWt3jAssZglyy0.png?scale-down-to=512 512w,https://framerusercontent.com/images/wSlRv3NGsV2EWt3jAssZglyy0.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/wSlRv3NGsV2EWt3jAssZglyy0.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/wSlRv3NGsV2EWt3jAssZglyy0.png 2401w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Please note, this guide includes creating resources which will bring additional cost to your AWS subscription.\"}),/*#__PURE__*/t(\"p\",{children:[\"This guide assumes you have already deployed a private EKS cluster. For more information on setting this up please visit the \",/*#__PURE__*/e(s,{href:\"https://docs.aws.amazon.com/eks/latest/userguide/private-clusters.html\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"official AWS Documentation\"})}),\".\"]}),/*#__PURE__*/e(\"h2\",{children:\"Creating the connector\"}),/*#__PURE__*/e(\"p\",{children:\"Click \u201CDeploy Connector\u201A on one of the existing connectors, or you can setup a new one by clicking the add button. Then select Manual from the deployment method:\"}),/*#__PURE__*/e(\"img\",{alt:\"deploy connector\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,DHUN1XMIGbSaCrgMhPslsR6g0.png?originalFilename=connector-image-1.png\",src:\"https://framerusercontent.com/images/DHUN1XMIGbSaCrgMhPslsR6g0.png\",srcSet:\"https://framerusercontent.com/images/DHUN1XMIGbSaCrgMhPslsR6g0.png?scale-down-to=512 512w,https://framerusercontent.com/images/DHUN1XMIGbSaCrgMhPslsR6g0.png 790w\"}),/*#__PURE__*/e(\"img\",{alt:\"deployment method\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,RGewjO2S6mLEsSQN6MMHrafMrJk.png?originalFilename=deployment-method.png\",src:\"https://framerusercontent.com/images/RGewjO2S6mLEsSQN6MMHrafMrJk.png\",srcSet:\"https://framerusercontent.com/images/RGewjO2S6mLEsSQN6MMHrafMrJk.png?scale-down-to=512 512w,https://framerusercontent.com/images/RGewjO2S6mLEsSQN6MMHrafMrJk.png 771w\"}),/*#__PURE__*/e(\"p\",{children:\"Scroll down and click \u201CGenerate Tokens\u201A, this will require you to re-authenticate.\"}),/*#__PURE__*/e(\"img\",{alt:\"generate tokens\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,1GmJVqZbNiC9EfDuHjlH2nV6A.png?originalFilename=generate-tokens.png\",src:\"https://framerusercontent.com/images/1GmJVqZbNiC9EfDuHjlH2nV6A.png\",srcSet:\"https://framerusercontent.com/images/1GmJVqZbNiC9EfDuHjlH2nV6A.png?scale-down-to=512 512w,https://framerusercontent.com/images/1GmJVqZbNiC9EfDuHjlH2nV6A.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"You should copy the tokens and keep them in a safe place, we will need to enter these values later.\"}),/*#__PURE__*/e(\"h1\",{children:\"Deploying the connector to AWS\"}),/*#__PURE__*/e(\"p\",{children:\"The location of the connector is very important, you need to ensure it has both outbound internet access to communicate with the Twingate service and also access to the EKS control plane. In this guide, I will be using one of the subnets in the VPC which was created as part of the EKS cluster creation process.\"}),/*#__PURE__*/t(\"p\",{children:[\"We will be deploying the Twingate connector as a container on AWS ECS (Fargate). If you don\u2019t already have one, you will need to create an ECS cluster by following \",/*#__PURE__*/e(s,{href:\"https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create_cluster.html\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"these steps\"})}),\".\"]}),/*#__PURE__*/t(\"p\",{children:[\"The instructions below are taken and modified from the \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/aws\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate documentation\"})}),\".\"]}),/*#__PURE__*/t(\"p\",{children:[\"First we need to create the task definition file. The easiest way to do this is either using the \",/*#__PURE__*/e(s,{href:\"https://aws.amazon.com/cli\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"AWS CLI\"})}),\" on your local desktop or via the \",/*#__PURE__*/e(s,{href:\"https://aws.amazon.com/cloudshell\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"AWS CloudShell\"})}),\".\"]}),/*#__PURE__*/e(\"p\",{children:\"You will need to replace the following:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Your \",/*#__PURE__*/e(\"code\",{children:\"TENANT_URL\"}),\" e.g. \",/*#__PURE__*/e(\"code\",{children:\"https://my.twingate.com\"}),\" (this is the URL used to access Twingate)\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"The \",/*#__PURE__*/e(\"code\",{children:\"ACCESS_TOKEN\"}),\" and \",/*#__PURE__*/e(\"code\",{children:\"REFRESH_TOKEN\"}),\" values\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"The \",/*#__PURE__*/e(\"code\",{children:\"NAME\"}),\" you want to give the connector, for visibility it\u2019s recommended that this matches your connector name in Twingate\"]})})]}),/*#__PURE__*/t(\"p\",{children:[\" \",/*#__PURE__*/e(\"code\",{children:'cat > taskdef.json << EOF{  \"requiresCompatibilities\": [    \"FARGATE\"  ],  \"containerDefinitions\": [    {      \"name\": \"NAME\",      \"image\": \"twingate/connector:1\",      \"memory\": 2048,      \"cpu\": 1024,      \"environment\" : [        { \"name\" : \"TENANT_URL\", \"value\" : \"https://<YOUR TWINGATE SUBDOMAIN>.twingate.com\"},        { \"name\" : \"ACCESS_TOKEN\", \"value\" : \"eyJ0eXAiOiJEQVQiLCJh...\"},        { \"name\" : \"REFRESH_TOKEN\", \"value\" : \"suoodqhy0niwjzpY_ki8...\"}      ]    }  ],  \"volumes\": [],  \"networkMode\": \"awsvpc\",  \"placementConstraints\": [],  \"family\": \"twingate-connector-<NAME>\",  \"memory\": \"2048\",  \"cpu\": \"1024\"}EOF'})]}),/*#__PURE__*/e(\"p\",{children:\"Then we can use this file to create the task definition:\"}),/*#__PURE__*/e(\"p\",{children:\"Remember to replace the region with your own value.\"}),/*#__PURE__*/t(\"p\",{children:[\" \",/*#__PURE__*/e(\"code\",{children:\"aws ecs register-task-definition --region [REGION] --cli-input-json file://taskdef.json --output json\"})]}),/*#__PURE__*/e(\"p\",{children:\"Next we can use the task definition to launch the Connector as a Fargate service. Again, you will need to replace the following values:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The name of the service within your cluster where we have used twingate-connector, below.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"The name of the task definition you created above where we have used \",/*#__PURE__*/e(\"code\",{children:\"twingate-connector-<NAME>\"}),\" below.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The subnet ID within your VPC where you would like to launch the service.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The security group ID you would like to apply to the connector.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The name of the ECS cluster you are launching the service within.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The region that the ECS cluster and task definition exist within.\"})})]}),/*#__PURE__*/t(\"p\",{children:[\" \",/*#__PURE__*/e(\"code\",{children:'aws ecs create-service --service-name twingate-connector --desired-count 1 --launch-type \"FARGATE\" --task-definition twingate-connector-<NAME> --network-configuration \"awsvpcConfiguration={subnets=[subnet-mysubnet],securityGroups=[sg-mysg]}\" --cluster twingate-ecs --region <REGION>'})]}),/*#__PURE__*/e(\"p\",{children:\"You will need to ensure the subnet you deploy this service into has outbound internet access.\"}),/*#__PURE__*/e(\"p\",{children:\"When you run this command, you should see that the service has been created and after a few moments, the container is in a running state:\"}),/*#__PURE__*/e(\"img\",{alt:\"container state\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,F3Hovtf3A6CRPuzA5kQGQzYFU.png?originalFilename=container-state.png\",src:\"https://framerusercontent.com/images/F3Hovtf3A6CRPuzA5kQGQzYFU.png\"}),/*#__PURE__*/e(\"p\",{children:\"All being well, you should now also see that the connector in the Twingate admin portal is showing as connected:\"}),/*#__PURE__*/e(\"img\",{alt:\"connector state\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,xL2TD6Tik1Lw7UdEDdurUKezbQ.png?originalFilename=connector-state.png\",src:\"https://framerusercontent.com/images/xL2TD6Tik1Lw7UdEDdurUKezbQ.png\"}),/*#__PURE__*/e(\"h1\",{children:\"Adding the EKS resource\"}),/*#__PURE__*/e(\"p\",{children:\"Now we have a connection from our connector in AWS and our Twingate service, we can go ahead and add the resource to Twingate.\"}),/*#__PURE__*/e(\"p\",{children:\"From the network page, click the \u201CAdd Resource\u201A button:\"}),/*#__PURE__*/e(\"img\",{alt:\"add resource\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,3TiDxHxNajMfrsKHhCoWplrHB70.png?originalFilename=add-resource.png\",src:\"https://framerusercontent.com/images/3TiDxHxNajMfrsKHhCoWplrHB70.png\"}),/*#__PURE__*/e(\"p\",{children:\"Then we can add a label and the name of the DNS endpoint for the cluster:\"}),/*#__PURE__*/e(\"p\",{children:\"You can find the DNS endpoint for your cluster from the cluster information page.\"}),/*#__PURE__*/e(\"img\",{alt:\"dns endpoint\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,HpR4TJ7eNtWYLwjc1I5unktu8.png?originalFilename=dns-endpoint.png\",src:\"https://framerusercontent.com/images/HpR4TJ7eNtWYLwjc1I5unktu8.png\",srcSet:\"https://framerusercontent.com/images/HpR4TJ7eNtWYLwjc1I5unktu8.png 457w\"}),/*#__PURE__*/e(\"p\",{children:\"Then select which groups you would like to access the resource:\"}),/*#__PURE__*/e(\"img\",{alt:\"select groups\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,urOLwD6oxMgLXi8tum8Em9TWM54.png?originalFilename=select-groups.png\",src:\"https://framerusercontent.com/images/urOLwD6oxMgLXi8tum8Em9TWM54.png\"}),/*#__PURE__*/e(\"h1\",{children:\"Testing access\"}),/*#__PURE__*/e(\"p\",{children:\"Once you have added the resource, you can now test access. To verify we don\u2019t have access outside of the Twingate connection, you can run the following command:\"}),/*#__PURE__*/e(\"p\",{children:\"Ensure Twingate is currently logged out and closed.\"}),/*#__PURE__*/t(\"p\",{children:[\" \",/*#__PURE__*/e(\"code\",{children:\"kubectl get pods -A\"})]}),/*#__PURE__*/e(\"p\",{children:\"You should see that you are unable to connect to your private cluster:\"}),/*#__PURE__*/t(\"p\",{children:[\" \",/*#__PURE__*/e(\"code\",{children:\"Unable to connect to the server: dial tcp 10.0.24.228:443: connect: network is unreachable\"})]}),/*#__PURE__*/e(\"p\",{children:\"Then open up your Twingate client and login. Run the same command again and all being well you should get information back from the cluster:\"}),/*#__PURE__*/t(\"p\",{children:[\" \",/*#__PURE__*/e(\"code\",{children:\"NAME                                STATUS   ROLES   AGE   VERSIONeks-nodepool1                       Ready    agent   38m   v1.22.6\"})]}),/*#__PURE__*/e(\"p\",{children:\"You now have secure access to your Kubernetes API without requiring any public access.\"})]})},{index:56,id:\"OFQFvjbVO\",[h]:!0,[d]:!1,[p]:\"How does Zero Trust Network Access Work?\",[u]:\"How does Zero Trust Network Access Work?\",[m]:\"how-zero-trust-network-works\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2022-05-25T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/No9egfJG4o1h6Ryzrt94ZVLI4.png\",srcSet:\"https://framerusercontent.com/images/No9egfJG4o1h6Ryzrt94ZVLI4.png?scale-down-to=512 512w,https://framerusercontent.com/images/No9egfJG4o1h6Ryzrt94ZVLI4.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/No9egfJG4o1h6Ryzrt94ZVLI4.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/No9egfJG4o1h6Ryzrt94ZVLI4.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/No9egfJG4o1h6Ryzrt94ZVLI4.png\",srcSet:\"https://framerusercontent.com/images/No9egfJG4o1h6Ryzrt94ZVLI4.png?scale-down-to=512 512w,https://framerusercontent.com/images/No9egfJG4o1h6Ryzrt94ZVLI4.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/No9egfJG4o1h6Ryzrt94ZVLI4.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/No9egfJG4o1h6Ryzrt94ZVLI4.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Security professionals and executives alike recognize that \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust Network Access (ZTNA)\"})}),\" is the future of network security. The challenge comes when trying to answer questions like:\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Why do we need to \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"replace our VPN\"})}),\" with ZTNA?\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"What would using ZTNA look like?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"What could go wrong if we switch?\"})})]}),/*#__PURE__*/e(\"p\",{children:\"We will help you answer these questions and more. After reviewing the business, operations, and security advantages of ZTNA, we will explain two common ways users engage with a ZTNA system. We\u2019ll finish with a discussion of the challenges and risks that ZTNA migration projects typically face.\"}),/*#__PURE__*/e(\"h1\",{children:\"How Zero Trust Network Access is replacing VPNs\"}),/*#__PURE__*/e(\"p\",{children:\"Legacy security technologies are based on a secure perimeter paradigm that implicitly trusts the resources, devices, and people connected to a protected network. Appropriate to network architectures of the 1980s, the secure perimeter has become a liability in today\u2019s decentralized, cloud-based, work-from-home world. Consider some of VPN\u2019s weaknesses:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Performance impact\"}),\" - VPN gateways concentrate traffic, reduce bandwidth, and increase latency\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Management complexity\"}),\" - Multiple \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control systems\"})}),\" complicate security administration\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Visible attack vector\"}),\" - VPN gateways are discoverable and exploitable by hackers.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Over-permissive access\"}),\" - VPNs grant full access to the protected network\u2019s resources, services, and protocols\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"Designed for today\u2019s decentralized networks and workforces, ZTNA is based on three core principles:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Assume breach\"}),\" - Any network, device, credential, or user could be compromised at any time. Never assume trust for any of them\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Verify explicitly\"}),\" - \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Authenticate\"})}),\" user identity, confirm \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/device-trust-in-a-zero-trust-world\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"device posture\"})}),\", and evaluate the context of every request\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Least privilege\"}),\" - Only authorize \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/principle-of-least-privilege\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access to specific resources\"})}),\" the user needs for their work\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"ZTNA is network-agnostic, creating direct connections between users wherever they are located and a company\u2019s resources whether on-premises or in the cloud. Some of the benefits of ZTNA include:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Unified access control\"}),\" - ZTNA lets companies manage access for remote and on-premises workforces within a single system\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Securing development environments\"}),\" - ZTNA improves the security of a company\u2019s most sensitive resources while improving developers\u2019 access\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Universal multi-factor authentication\"}),\" - Twingate\u2019s ZTNA solution lets you extend \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/two-factor-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"MFA\"})}),\" to every resource \u2014 even to services such as SSH\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Improved security\"}),\" - ZTNA lets you apply granular, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/role-based-access-control\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"role-based access controls\"})}),\" based on the principle of least privilege\"]})})]}),/*#__PURE__*/e(\"h1\",{children:\"Agentless and service-based Zero Trust Network Access\"}),/*#__PURE__*/e(\"p\",{children:\"Users interact with a ZTNA system in one of two ways. The first is an agentless, service-based approach. The user opens a browser or browser-based app to access the company\u2019s ZTNA portal. This browser session collects data on the device\u2019s security posture and the context of the network connection. Integrated with an Identity Provider (IdP), the browser verifies the user\u2019s identity with a login password, single sign-on, or multi-factor authentication.\"}),/*#__PURE__*/e(\"p\",{children:\"With the user\u2019s identity authenticated, the browser session redirects to whatever web-based resources the user is authorized to access.\"}),/*#__PURE__*/e(\"h1\",{children:\"Agent-based Zero Trust Network Access\"}),/*#__PURE__*/e(\"p\",{children:\"The second approach requires an agent running on the user\u2019s device. This agent collects the identity, security posture, and context evaluation before sending the information to the ZTNA system. Once the user is authenticated, ZTNA solutions such as Twingate use proxies to create direct, encrypted tunnels between an authorized resource and the user\u2019s device.\"}),/*#__PURE__*/e(\"h1\",{children:\"Agentless versus agent-based ZTNA\"}),/*#__PURE__*/e(\"p\",{children:\"Which approach you choose will depend on several factors unique to your organization. These three scenarios highlight some of the trade-offs:\"}),/*#__PURE__*/e(\"p\",{children:\"Installing an agent on a managed device is straightforward. Logistic and privacy concerns, however, make agents difficult to install on employees\u2019 personal devices or a third-party\u2019s devices. An agentless approach would be better in this scenario.\"}),/*#__PURE__*/e(\"p\",{children:\"Agentless ZTNA only works with applications that users can access through their browser. Users will need to install a ZTNA agent to access legacy applications that do not support web interfaces.\"}),/*#__PURE__*/e(\"p\",{children:\"Agent-based ZTNA can simplify the migration to a new security architecture. The ZTNA agent will seem very familiar to anyone already used to VPN clients. In addition, users won\u2019t have to learn a new browser-based system. Agents let them access resources as they always have.\"}),/*#__PURE__*/e(\"h1\",{children:\"Challenges for adopting Zero Trust Network Access\"}),/*#__PURE__*/t(\"p\",{children:[\"A recent \",/*#__PURE__*/e(s,{href:\"https://query.prod.cms.rt.microsoft.com/cms/api/am/binary/RWGWha\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Microsoft survey\"})}),\" found that 96% of enterprise security professionals consider Zero Trust to be mission-critical. At the same time, 94% were concerned about the transition from architectures based on secure perimeters to ones based on Zero Trust. Such a fundamental change is not easy. Here are a few of the challenges you may face in your company\u2019s Zero Trust journey:\"]}),/*#__PURE__*/e(\"h2\",{children:\"Building the case for ZTNA\"}),/*#__PURE__*/e(\"p\",{children:\"The top challenge security professionals face when implementing ZTNA is having the budget and resources to get the job done right. Ultimately, this comes down to sustained C-level support. Stakeholder buy-in is almost as important. Everyone needs to be convinced that moving to ZTNA will improve the business and make their lives easier.\"}),/*#__PURE__*/e(\"h2\",{children:\"Learning to manage identities\"}),/*#__PURE__*/t(\"p\",{children:[\"Maintaining a database of usernames and passwords for your VPN system is not the same as identity management. One of the first steps in successful ZTNA deployments is an audit of \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/introducing-identity-first-networking\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"identity\"})}),\" and access policies. Although role-based, least-privileged access is the ultimate objective, you need time to get there. Rolling out Zero Trust to privileged users can be a good place to start since it improves their access while making network systems more secure.\"]}),/*#__PURE__*/e(\"h2\",{children:\"ZTNA and business workflows\"}),/*#__PURE__*/e(\"p\",{children:\"ZTNA takes network segmentation to its logical conclusion. But resource-by-resource access control does not need to happen all at once. Stakeholders will push back when a ZTNA project disrupts established workflows. Early phases should target resources that require few changes to networks, applications, and security systems. As mentioned above, an agent-based approach may be easier for users to accept.\"}),/*#__PURE__*/e(\"h1\",{children:\"Risks associated with adopting Zero Trust Network Access\"}),/*#__PURE__*/e(\"p\",{children:\"Although ZTNA makes modern IT architectures more secure, it does not eliminate every risk. You will need to anticipate and mitigate these risks as you plan your ZTNA implementation project.\"}),/*#__PURE__*/e(\"h2\",{children:\"Single point of failure\"}),/*#__PURE__*/t(\"p\",{children:[\"ZTNA hides all resources from any network, public or private. The only way users can access a resource is through a connection brokered by the ZTNA service. If anything goes wrong with the service, your employees can\u2019t do their jobs. Choose a ZTNA provider that has a large, geographically \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/network-connectivity-for-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"dispersed point-of-presence (PoP) network\"})}),\". If one PoP goes down, your ZTNA system will still work.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Implementation gaps\"}),/*#__PURE__*/t(\"p\",{children:[\"One of the benefits of ZTNA is the consolidation of \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control\"})}),\" into a single system. These efficiency gains go away if your ZTNA system cannot protect your entire infrastructure. Make sure your ZTNA provider uses protocols that work with your legacy on-premises applications. Enhanced features such as extending MFA to SSH can close other implementation gaps.\"]}),/*#__PURE__*/e(\"h2\",{children:\"ZTNA security risks\"}),/*#__PURE__*/t(\"p\",{children:[\"Zero Trust mitigates successful security breaches by forcing hackers to spend more time on reconnaissance and by constraining their \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/lateral-movement\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"lateral movement\"})}),\". But that does not mean ZTNA security is flawless. Breaches of ZTNA servers, stolen user devices, and compromised privileged credentials can still lead to damaging attacks. With the right ZTNA implementation, however, security administrators have more time to focus on the remaining risks.\"]}),/*#__PURE__*/e(\"h1\",{children:\"See how Zero Trust Network Access can work for your organization\"}),/*#__PURE__*/t(\"p\",{children:[\"Transitioning from the secure perimeter paradigm to one based on \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" does not happen overnight. It is a new way of thinking about secure access and requires new security processes. At the same time, ZTNA cannot disrupt business operations if you want to keep executive and stakeholder support. Careful planning must account for the potential challenges and risks. Take a phased approach that starts with a proof-of-concept project before gradually rolling it out to the rest of the organization. This is where having the right ZTNA vendor makes a difference.\"]}),/*#__PURE__*/t(\"p\",{children:[\"We designed the Twingate \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"secure access solution\"})}),\" to make migrating to Zero Trust seamless. You do not have to change your network infrastructure since Twingate works across firewalls, subnets, and cloud services. Twingate is compatible with your existing security stack, including your current \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/business-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN system\"})}),\", as well as with your DevOps team\u2019s CI/CD pipeline. Twingate customers have deployed our Zero Trust solution within minutes.\"]}),/*#__PURE__*/e(\"p\",{children:\"Using your new ZTNA system is just as easy. Administrator consoles let your staff update access permissions quickly. Easy-to-use apps run quietly in the background. Even the most demanding users love it because Twingate just works.\"}),/*#__PURE__*/t(\"p\",{children:[\"See how easy Zero Trust can be by trying our \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=zero-trust-network\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"free Starter plan\"})}),\" for individuals. Or \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=zero-trust-network\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"contact us\"})}),\" to learn how Twingate ZTNA solutions can work for your team.\"]})]})},{index:57,id:\"iz3cPdBMn\",[h]:!0,[d]:!1,[p]:\"Establishing device trust in a Zero Trust architecture\",[u]:\"Device trust in a Zero Trust architecture\",[m]:\"device-security\",[g]:\"\",[w]:\"Anna Liu\",[f]:\"2022-05-19T00:00:00.000Z\",[y]:\"KI2UGBfh7\",[b]:T({src:\"https://framerusercontent.com/images/voDCUpjbNHwab1DWHQMSaxMRz4.png\",srcSet:\"https://framerusercontent.com/images/voDCUpjbNHwab1DWHQMSaxMRz4.png?scale-down-to=512 512w,https://framerusercontent.com/images/voDCUpjbNHwab1DWHQMSaxMRz4.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/voDCUpjbNHwab1DWHQMSaxMRz4.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/voDCUpjbNHwab1DWHQMSaxMRz4.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/voDCUpjbNHwab1DWHQMSaxMRz4.png\",srcSet:\"https://framerusercontent.com/images/voDCUpjbNHwab1DWHQMSaxMRz4.png?scale-down-to=512 512w,https://framerusercontent.com/images/voDCUpjbNHwab1DWHQMSaxMRz4.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/voDCUpjbNHwab1DWHQMSaxMRz4.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/voDCUpjbNHwab1DWHQMSaxMRz4.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Although Zero Trust has been around for decades, it\u2019s still a frequently misunderstood concept. At Twingate, we\u2019ve had thousands of customer conversations about Zero Trust, and we\u2019ve developed a simple, easy-to-understand definition of that framework. In practice, Zero Trust boils down to a simple question that\u2019s asked on every access attempt:\"}),/*#__PURE__*/e(\"img\",{alt:\"accessFramework\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,yX0oAc47zM4j1vOqnxp4s45e6mA.png?originalFilename=accessFramework.png\",src:\"https://framerusercontent.com/images/yX0oAc47zM4j1vOqnxp4s45e6mA.png\",srcSet:\"https://framerusercontent.com/images/yX0oAc47zM4j1vOqnxp4s45e6mA.png?scale-down-to=512 512w,https://framerusercontent.com/images/yX0oAc47zM4j1vOqnxp4s45e6mA.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"While the question is straightforward, answering it accurately and consistently is tricky. First, how do you judge if a user or device is legitimate? And second, how do you apply consistent access requirements across multiple platforms, tools, and systems?\"}),/*#__PURE__*/t(\"p\",{children:[\"We\u2019re excited to announce new Device Security capabilities that make it easy to consistently and securely establish \u201Cdevice trust\u201A as part of a \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/network-connectivity-for-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust framework\"})}),\". This feature set will allow companies to define what constitutes a trusted device and incorporate these definitions into access policies. This way, admins can be sure that only users on secure devices are accessing your most protected resources.\"]}),/*#__PURE__*/e(\"p\",{children:\"To explain our approach and vision, we\u2019ll start with a review of the categories of devices out in the wild today and the complicated ecosystem required to define a trusted device. We\u2019ll end with our take on solving device security and how this vision shapes our future roadmap.\"}),/*#__PURE__*/e(\"h1\",{children:\"Devices in the workplace\"}),/*#__PURE__*/e(\"p\",{children:\"While every organization\u2019s environment is different, one pattern we\u2019ve consistently heard from our customers is that their organizations have three categories of devices:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Company-managed devices used by employees\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Personal devices used by employees\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Non-managed devices used by third parties (e.g. contractors, auditors)\"})})]}),/*#__PURE__*/e(\"p\",{children:\"There are different sets of identifying characteristics and challenges to determining the security posture for each device type.\"}),/*#__PURE__*/e(\"p\",{children:\"Not surprisingly, company-managed devices tend to be the most controlled. Their serial numbers are typically recorded and tracked, they may have device management or endpoint detection software installed, and their security settings are often locked and reviewed continuously. From an IT security perspective, these devices are in great shape - they\u2019re locked down, controlled as needed, and admins can take action if something suspicious arises.\"}),/*#__PURE__*/e(\"p\",{children:\"For personal devices used by employees, there\u2019s much less control. Even if organizations want to guide employees away from using their personal devices, the reality is that it\u2019s practically unavoidable in today\u2019s mobile, distributed work environment. While some organizations will require their end users to install software in order to access company resources, most take the approach of trusting their employees to do the right thing. Instead of imposing stringent requirements on installed security software, employees are given leeway and taught best practices on how to keep corporate information safe.\"}),/*#__PURE__*/e(\"p\",{children:\"And finally, devices used by third parties are often the wild card. Organizations typically don\u2019t have visibility into these devices and have little control over what these third parties are doing. Out of necessity, there\u2019s a fair amount of implicit trust in these third parties, and admins are left with relying primarily on identity authorization to determine access.\"}),/*#__PURE__*/e(\"h1\",{children:\"Defining device trust\"}),/*#__PURE__*/e(\"p\",{children:\"What it means to be a \u201Csecure\u201A and \u201Ctrusted\u201A device for these different categories of devices will vary. The highest level of security and trust can be achieved with company-managed devices, as companies can utilize software, certificates, or other mechanisms to ensure trust. But personal and third-party devices are trickier.\"}),/*#__PURE__*/e(\"p\",{children:\"For company-managed devices, the tools available to assess device trust generally fall under one of the following categories:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/defense-in-depth-webinar\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Endpoint detection and response\"})}),\" (EDR) software: ensures compliance with set device standards and requirements\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Mobile device management (MDM) software: enables IT to easily manage end user devices, including applications and configurations, policies and certificates, etc.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Certificates: verifies the device identity and are managed by IT\"})})]}),/*#__PURE__*/e(\"p\",{children:\"However, there are significant challenges when attempting to use these tools to establish a consistent view of device trust.\"}),/*#__PURE__*/e(\"p\",{children:\"The first problem is that these tools aren\u2019t consistent across platforms. Some tools cover desktop but not mobile devices, tools may only support a single platform, and certificates need to be individually managed and pushed across each device type. While this allows a high level of customization, it also means a higher level of complexity for IT to manage.\"}),/*#__PURE__*/e(\"p\",{children:\"The other issue is that these tools exist outside of user identity systems, making it challenging to connect device context with user identity for access control policies. The tools can pull significant amounts of data from the devices themselves, but substantial additional work is required to connect all that data to the end user\u2019s identity. As such, tracking which trusted device belongs to which user means having to manage another system altogether.\"}),/*#__PURE__*/e(\"p\",{children:\"And for personal or third-party devices, these tools can\u2019t be implemented as the organization doesn\u2019t own the devices. MDM strategies work when all devices are company-issued, but that\u2019s not feasible given today\u2019s mobile and ephemeral workforce. Instead, many organizations turn to device posture checks to provide some coverage.\"}),/*#__PURE__*/e(\"p\",{children:\"The unfortunate result is that device posture requirements are hard to standardize and manage for most environments, given the diversity of devices and resources. It\u2019s difficult to track the nuances between the various approaches that platforms take to security, including OS version updates and password settings. Additionally, when device posture is used as the primary method of validating devices, it frequently has to be configured per resource or application. This makes it even harder to manage across various services, inevitably opening up more avenues for errors and issues to arise.\"}),/*#__PURE__*/e(\"h1\",{children:\"Twingate\u2019s approach to device trust\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate is well-positioned to manage device security as a component of broader IT security by acting as a single platform that bridges all resources and the network. The information we ingest and process enables us to apply device security requirements comprehensively, consistently, and granularly.\"}),/*#__PURE__*/e(\"img\",{alt:\"deviceTrustFramework\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,ErQBRXkXBETe0WAI55tyBLvc.png?originalFilename=deviceTrustFramework.png\",src:\"https://framerusercontent.com/images/ErQBRXkXBETe0WAI55tyBLvc.png\",srcSet:\"https://framerusercontent.com/images/ErQBRXkXBETe0WAI55tyBLvc.png?scale-down-to=512 512w,https://framerusercontent.com/images/ErQBRXkXBETe0WAI55tyBLvc.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"\u201CComprehensively\u201A means that organizations can take into account a wide variety of inputs - user, device, resource, and network - to determine when access should be allowed (or blocked). Additionally, because we control the actual connection to the resource, we can complete these checks repeatedly both at the start of and throughout a session.\"}),/*#__PURE__*/e(\"p\",{children:\"\u201CConsistently\u201A means bringing together different tools, systems, and device posture checks across platforms. By pulling in various device details as well as integrating with trusted device assessment methods (e.g., EDR, MDM, certificates), Twingate can offer a single place where admins can define what it means to be trusted across their organization\u2019s different device types. A second component of consistency again builds on the fact that Twingate serves as the layer that determines whether network traffic is allowed to hit protected resources: this allows Twingate to apply controls and checks regardless of the application or where it is.\"}),/*#__PURE__*/e(\"p\",{children:\"\u201CGranularly\u201A means that our models are flexible enough to support the various use cases in organizations today, from different levels of protected resources to various employee groups to unique device categories. Twingate enables policies to be configured and applied that are specific to users, devices, and resources, ensuring that we\u2019re continually taking each into consideration and adhering to Zero Trust principles.\"}),/*#__PURE__*/e(\"h1\",{children:\"Introducing Device Security\"}),/*#__PURE__*/e(\"p\",{children:\"Our belief is that admins should be able to define trusted devices however they want for all the cases they need, and that these definitions should be easily incorporated into security policies. To make this vision possible, we\u2019re excited to announce Device Security, which we\u2019ll be rolling out over the next few weeks. This enables our customers to define what it means to be a trusted device and then incorporate these definitions into security policies across their environment.\"}),/*#__PURE__*/e(\"img\",{alt:\"deviceSecurity\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,7eRGPJd9khPGWbGUWwjKuop7w0s.png?originalFilename=deviceSecurity.png\",src:\"https://framerusercontent.com/images/7eRGPJd9khPGWbGUWwjKuop7w0s.png\",srcSet:\"https://framerusercontent.com/images/7eRGPJd9khPGWbGUWwjKuop7w0s.png?scale-down-to=512 512w,https://framerusercontent.com/images/7eRGPJd9khPGWbGUWwjKuop7w0s.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"The base-level configuration allows admins to identify the minimum device requirements to access Twingate. These checks, using native device posture details from Twingate\u2019s desktop and mobile applications, can require hard drive encryption, screen lock passwords, etc. Only devices that meet these per-platform requirements will be able to access Twingate and associated protected resources.\"}),/*#__PURE__*/e(\"p\",{children:\"On top of these initial foundational requirements, admins can configure specific Trusted Profiles that grant access when more security is required. For these, admins can select to layer on additional native device posture checks and require a Trust Method. The Trust Method identifies devices that meet a more stringent device verification method beyond the native device posture checks. Today, we support devices manually or programmatically marked as Trusted to meet this requirement.\"}),/*#__PURE__*/e(\"img\",{alt:\"policyModal\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,a2AHqVkYXLpour41BZ8DAYA3ksU.png?originalFilename=policyModal.png\",src:\"https://framerusercontent.com/images/a2AHqVkYXLpour41BZ8DAYA3ksU.png\",srcSet:\"https://framerusercontent.com/images/a2AHqVkYXLpour41BZ8DAYA3ksU.png?scale-down-to=512 512w,https://framerusercontent.com/images/a2AHqVkYXLpour41BZ8DAYA3ksU.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Over the course of the year, we\u2019ll continue to expand on our Trust Methods, enabling customers to define trust however they see fit. This means that we\u2019ll be rolling out further integrations with EDR and MDM software, adding to our native device posture checks, and incorporating certificates to verify devices.\"}),/*#__PURE__*/e(\"img\",{alt:\"ecosystem\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,AHmdByPTZHvouiyM9eozPBlXfSg.png?originalFilename=ecosystem.png\",src:\"https://framerusercontent.com/images/AHmdByPTZHvouiyM9eozPBlXfSg.png\",srcSet:\"https://framerusercontent.com/images/AHmdByPTZHvouiyM9eozPBlXfSg.png?scale-down-to=512 512w,https://framerusercontent.com/images/AHmdByPTZHvouiyM9eozPBlXfSg.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"In addition to creating Trusted Profiles, Twingate Device Security allows these profiles to be associated with Resource Policies to ensure that only the right, trusted devices can be used to access more sensitive resources. This makes it easy for admins to get specific regarding which resources need higher levels of protection and verification.\"}),/*#__PURE__*/e(\"p\",{children:\"We\u2019re excited to make consistent, straightforward device security a reality for our customers, a crucial part of our mission to make it easy to adopt Zero Trust principles.\"})]})},{index:58,id:\"LnOf9f4r4\",[h]:!0,[d]:!1,[p]:\"What is an Identity Provider?\",[u]:\"What is an Identity Provider?\",[m]:\"what-is-idp\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2022-05-16T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/lEVDEy3Qe3SSSJbo9meRJxJ2Tr4.png\",srcSet:\"https://framerusercontent.com/images/lEVDEy3Qe3SSSJbo9meRJxJ2Tr4.png?scale-down-to=512 512w,https://framerusercontent.com/images/lEVDEy3Qe3SSSJbo9meRJxJ2Tr4.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/lEVDEy3Qe3SSSJbo9meRJxJ2Tr4.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/lEVDEy3Qe3SSSJbo9meRJxJ2Tr4.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/lEVDEy3Qe3SSSJbo9meRJxJ2Tr4.png\",srcSet:\"https://framerusercontent.com/images/lEVDEy3Qe3SSSJbo9meRJxJ2Tr4.png?scale-down-to=512 512w,https://framerusercontent.com/images/lEVDEy3Qe3SSSJbo9meRJxJ2Tr4.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/lEVDEy3Qe3SSSJbo9meRJxJ2Tr4.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/lEVDEy3Qe3SSSJbo9meRJxJ2Tr4.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"An identity provider (IdP) is a service that manages a single identity across many networks, services, and applications. The days when office walls defined a company\u2019s network perimeter are long gone. Resources are distributed across the internet and in the cloud. Requiring unique credentials to access each one is impractical. Identity Providers simplify \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control\"})}),\" by giving users seamless access across multiple resources with one login credential.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Yet, for all its importance, identity is only part of the access control equation \u2014 a distinction that gets lost in the hype. Twingate\u2019s latest white paper, \",/*#__PURE__*/e(s,{href:\"https://twingate.com/resources/2022-idp-zero-trust-adoption-white-paper\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Identity Providers (IdPs) Critical Role in Zero Trust Adoption\"})}),\" dives deep into identity and its importance to the future of secure access. Here, we want to focus on answering the question of what is an Identity Provider \u2014 and what it isn\u2019t.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Understanding Identity and Access Management\"}),/*#__PURE__*/e(\"p\",{children:\"Identity is one element in the much broader system of Identity and Access Management (IAM). An IAM system determines two things: are the people, devices, or services using company resources who they claim to be, and may they use the resources they want to access.\"}),/*#__PURE__*/e(\"p\",{children:\"We will start with that second part \u2014 deciding who or what should access which resources. Then we will shift to the first part, which is where IdPs help.\"}),/*#__PURE__*/e(\"h2\",{children:\"What is authorization?\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Authorization\"})}),\" is the set of policies and rules an organization sets to manage access to its information resources. Administrators can define rules that answer questions such as:\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Which people or devices may access which resources?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Under what circumstances do they get access?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"What level of access are they allowed to have?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"How long will that access last?\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"IAM best practices use the principle of least privilege to answer these questions. Users get as little access as possible while letting them get their work done. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/principle-of-least-privilege\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Least privileged access\"})}),\" is context-sensitive. For example, financial analysts can access more sensitive resources at the office than at an airport.\"]}),/*#__PURE__*/t(\"p\",{children:[\"To reduce the complexity of managing access policies for hundreds or thousands of users, companies apply another best practice called \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/role-based-access-control\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"role-based access control\"})}),\". Administrators define least-privileged access permissions for the various roles people play in the organization. Users are then assigned to the role or roles appropriate for their work. When users\u2019 roles change due to transfers or promotions, a simple settings change removes old permissions and grants new ones.\"]}),/*#__PURE__*/e(\"p\",{children:\"Least-privilege, role-based authorization limits access to resources, but it cannot fully protect those resources. These systems by themselves can\u2019t tell when cybercriminals have stolen a user\u2019s password, letting hackers access protected resources. Solving that problem is the job of an IAM system\u2019s authentication system.\"}),/*#__PURE__*/e(\"h2\",{children:\"What is authentication?\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Authentication\"})}),\" verifies that people trying to access a resource are who they say they are. By validating one or more authentication factors, these systems confirm the user\u2019s identity so the authorization system can grant them access. Authentication factors fall into one of three categories:\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"What You Know\"}),\" - Users memorize \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/passwordless-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"passwords\"})}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"What You Have\"}),\" - Users carry USB security keys.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Who You Are\"}),\" - Users register fingerprints.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"Each factor has security strengths and weaknesses, which get evened out the more factors an authentication system uses.\"}),/*#__PURE__*/e(\"h1\",{children:\"Why are Identity Providers Needed for Authentication?\"}),/*#__PURE__*/e(\"p\",{children:\"When networks were confined to company facilities in the old days, authentication was relatively easy to manage with user passwords and identity badges. Now, resources are distributed across many locations, hosted on cloud platforms, and outsourced to third-party cloud services. Users would need multiple accounts and passwords to access these resources, which creates several problems:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Unsecure passwords\"}),\" - People have to manage dozens of \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/passwordless-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"passwords\"})}),\" in their work and personal lives. To deal with everything, they choose and reuse simple passwords that are easy for hackers to crack.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Privacy risks\"}),\" - Authentication systems require users\u2019 personal information to confirm their identity. The more identities a company manages, the more personal information it must protect.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"More attack vectors\"}),\" - The more user credentials a company manages, the more opportunities hackers have to penetrate network defenses.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"Identity Providers solve these problems by letting people use a single identity across multiple resources. Your Google account, for example, does more than allowing you access to Google-owned services. Media, e-commerce, and other websites treat your Google account as a login credential. This makes it easier for you to access their services. At the same time, they don\u2019t need to store and protect your identity information.\"}),/*#__PURE__*/t(\"p\",{children:[\"In the enterprise setting, Identity Providers unify access to a company\u2019s on-premises, cloud-hosted, and X-as-a-Service resources. Users do not need to remember multiple account passwords as they jump between e-mail, ERP, video conferencing, and other systems. The company\u2019s IdP validates a user\u2019s identity for seamless \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authorization\"})}),\".\"]}),/*#__PURE__*/e(\"h1\",{children:\"Identity is Necessary \u2014 But Not Sufficient\"}),/*#__PURE__*/e(\"p\",{children:\"Protecting resources while letting users get work done requires both sides of the IAM equation. An Identity Provider simplifies authentication across distributed resources while reducing privacy and security risks. But validating a user\u2019s identity is only the first step in giving users secure access to sensitive resources.\"}),/*#__PURE__*/t(\"p\",{children:[\"A shift is underway in IAM as organizations of all sizes replace obsolete security architectures with new systems based on the principles of \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\". Identity is a critical element of this modern approach to secure access. Learn more by reading the latest Twingate white paper: \u201C\",/*#__PURE__*/e(s,{href:\"https://twingate.com/resources/2022-idp-zero-trust-adoption-white-paper\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Identity Providers (IdPs) Critical Role in Zero Trust Adoption\"})}),\".\u201A\"]})]})},{index:59,id:\"FvJOCovNO\",[h]:!0,[d]:!1,[p]:\"Inbal explains how to build a SAML service provider using PySAML2\",[u]:\"SAML service provider using PySAML2\",[m]:\"saml-service-provider-using-pysaml2\",[g]:\"\",[w]:\"Inbal Zeligner\",[f]:\"2022-05-02T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/PoJOPixg5SFJ1yyogkWCDz81mE.png\",srcSet:\"https://framerusercontent.com/images/PoJOPixg5SFJ1yyogkWCDz81mE.png?scale-down-to=512 512w,https://framerusercontent.com/images/PoJOPixg5SFJ1yyogkWCDz81mE.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/PoJOPixg5SFJ1yyogkWCDz81mE.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/PoJOPixg5SFJ1yyogkWCDz81mE.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/PoJOPixg5SFJ1yyogkWCDz81mE.png\",srcSet:\"https://framerusercontent.com/images/PoJOPixg5SFJ1yyogkWCDz81mE.png?scale-down-to=512 512w,https://framerusercontent.com/images/PoJOPixg5SFJ1yyogkWCDz81mE.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/PoJOPixg5SFJ1yyogkWCDz81mE.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/PoJOPixg5SFJ1yyogkWCDz81mE.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Today we\u2019re spotlighting Inbal Zelinger, Software Engineer at Twingate. Inbal joined Twingate last year after starting her career at Nice Ltd. She supports Twingate\u2019s JumpCloud integration, and worked with her fellow #Gaters to build support for SAML SSO. At Twingate, we are obsessed with simplifying security and believe sharing our insights with teammates and leaving room for intellectual debate is the key to accomplishing this goal. In the guide below, Inbal shares useful findings that she and the team uncovered while working on the SAML SSO project.\"}),/*#__PURE__*/e(\"h1\",{children:\"Introduction\"}),/*#__PURE__*/t(\"p\",{children:[\"The Security Assertion Markup Language (SAML) is an open standard for exchanging \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authentication and authorization\"})}),\" data between parties. It is primarily used to enable single sign-on (SSO). SSO is pretty essential for businesses these days. In a world where each organization works with a wide range of different applications, the SSO concept simplifies the organization\u2019s account management by allowing them to manage only one identity per user. From the user\u2019s point of view it saves precious time and the need to keep up with many different accounts and passwords.\"]}),/*#__PURE__*/t(\"p\",{children:[\"In this article, I will give a primer on how SAML integration between a service provider (SP) and an identity provider (IdP) works. I will then dive into how to build the integration for a multi-tenant service provider using Django and \",/*#__PURE__*/e(s,{href:\"https://pysaml2.readthedocs.io/en/latest\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"PySAML2\"})}),\". I will share some inner workings of PySAML2 that their documentation doesn\u2019t cover: how to define a metadata loader and use it to set up a \",/*#__PURE__*/e(\"code\",{children:\"Saml2Client\"}),\".\"]}),/*#__PURE__*/e(\"h2\",{children:\"Terminologies\"}),/*#__PURE__*/e(\"p\",{children:\"Before I get into how SAML integration works, let\u2019s go over some common terminologies.\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"SAML 2.0\"}),\" is an XML based standard that uses security tokens containing assertions to pass information about a subject (usually the user) between an Identity Provider (SAML authority) and a Service Provider (SAML consumer). SAML won\u2019t send passwords over the web for every login; it uses the tokens instead. An important use case that SAML addresses is web-browser single sign-on (SSO).\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Single Sign-On (SSO)\"}),\" is an authentication system that allows users to federate the authentication between single authority (usually an Identity provider) and several apps. For example, you can log into JumpCloud and then access Twingate without authenticating again. There are a several open standard for SSO such as OpenID Connect and SAML.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Identity Provider (IdP)\"}),\" is the entity that creates and maintains identity of users. It also provides authentication service.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Service Provider (SP)\"}),\" provides some specific functionalities to end users. For example, Twingate as a service provider provides \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero-trust\"})}),\" access to private resources. An SP often relies on an IdP for user authentication.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Trust relationship -\"}),\" In SAML SSO, the IdP and the SP communicates via an intermediary, often a browser. As such, the IdP and the SP must set up a trust relationship initially. The SP trusts the IdP to authenticate the user. The IdP trusts the SP and sends it the subject (user) details. A trust relationship between SP and IdP can be achieved by exchanging a SAML metadata document with one another. Another way to achieve the trust relationship is via manual setup, which is common in practice. An SSO app is configured in the IdP. The IdP generates a SAML metadata file that can then be uploaded to the SP.\"]})})]}),/*#__PURE__*/e(\"h1\",{children:\"SAML SSO integration as a Service Provider\"}),/*#__PURE__*/e(\"h2\",{children:\"User flow\"}),/*#__PURE__*/e(\"p\",{children:\"SAML defines 2 possible SSO integration: SP-initiated and IdP-initiated. Here is the user flow for SP-initiated flow.\"}),/*#__PURE__*/e(\"img\",{alt:\"Logging into an application using SP-initiated SAML authentication\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,ngQS9TGl2H7GCjBpo8hucvQ3A8.svg?originalFilename=SAML.svg\",src:\"https://framerusercontent.com/images/ngQS9TGl2H7GCjBpo8hucvQ3A8.svg\",srcSet:\"https://framerusercontent.com/images/ngQS9TGl2H7GCjBpo8hucvQ3A8.svg 820w\"}),/*#__PURE__*/e(\"h2\",{children:\"Configuration\"}),/*#__PURE__*/e(\"p\",{children:\"In order to configure SAML app there are several configurations that we need to consider:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/e(\"p\",{children:\"Identity Provider\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"IdP entity ID\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Single Sign-On Service URL (see \",/*#__PURE__*/e(s,{href:\"https://docs.oasis-open.org/security/saml/v2.0/saml-profiles-2.0-os.pdf\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"[SMALProf] section 4.1.3\"})}),\"). This endpoint is where the user is redirected to on the IdP to do the authentication e.g. in JumpCloud, \",/*#__PURE__*/e(\"code\",{children:\"https://sso.jumpcloud.com/saml2/saml2\"})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"IdP X509 public certificate - Used by the SP to verify the signature of the SAML assertions and/or response.\"})})]})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/e(\"p\",{children:\"Service Provider\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"SP entity ID\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"ACS endpoint - Assertion Consumer Service URL (see \",/*#__PURE__*/e(s,{href:\"https://docs.oasis-open.org/security/saml/v2.0/saml-profiles-2.0-os.pdf\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"[SMALProf] section 4.1.3\"})}),\"). This endpoint on the SP is where the IdP redirects the user back to after authentication with the assertions.\"]})})]})]})]}),/*#__PURE__*/e(\"p\",{children:\"There are other settings when configuring a SAML app; however, these can vary across different IdPs and we do not need to store this information on the service provider. Some settings are:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Whether the IdP should sign the response.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Attributes that the IdP should include in the response (so we can create new user).\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"Service provider app implementation\"}),/*#__PURE__*/t(\"p\",{children:[\"In this demo we will build a service provider app (\",/*#__PURE__*/e(\"strong\",{children:\"Sample_SP_app\"}),\") using PySAML2, that will fit to a multi-tenant environment in which each tenant has a different SSO app setting. If you wish to jump directly to the code, you can find it \",/*#__PURE__*/e(s,{href:\"https://github.com/Twingate-Labs/saml_service_provider\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\".\"]}),/*#__PURE__*/t(\"p\",{children:[\"Our service provider is a fictional service, \",/*#__PURE__*/e(\"strong\",{children:\"Sample_SP_app.\"})]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://github.com/IdentityPython/pysaml2\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"PySAML2\"})}),\" is a python implementation of SAML 2.0 standard. It contains all necessary pieces for building a SAML service provider. It supports parsing IdP metadata file and can be used as an IdP or SP. However, it does not have a simple way to load multiple IdP and SP metadata. After digging in, we figure out how to extend its implementation.\"]}),/*#__PURE__*/t(\"p\",{children:[\"In order to setup a SAML integration, we need to provide our SP app the IdP metadata and create a trust relationship. PySAML2 describes a few ways to do this in the documentations e.g: local directory, a remote URL, etc\u2019 (see \",/*#__PURE__*/e(s,{href:\"https://pysaml2.readthedocs.io/en/latest/howto/config.html#metadata\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"docs\"})}),\"). Unfortunately, these options are not good enough for us because we are working in a multi-tenant environment where each tenant has its own SAML integration and its own SSO app on the IdP. Each app has a different IdP entity ID, SSO URL and IdP\u2019s X509 public certificate.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Create custom metadata loader\"}),/*#__PURE__*/t(\"p\",{children:[\"By looking into the PySAML2 internals, we were able to learn that it has an extensible metadata loading mechanism. Each loader is a subclass of \",/*#__PURE__*/e(s,{href:\"https://github.com/IdentityPython/pysaml2/blob/bf0a4e67b9cc4f1d9ecbe5f8bd74a2aa22bbc5a2/src/saml2/mdstore.py#L525\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"InMemoryMetaData\"})}),\". We need to implement the \",/*#__PURE__*/e(\"code\",{children:\"load()\"}),\" method and create an \",/*#__PURE__*/e(\"code\",{children:\"EntityDescriptor\"}),\" instance. You might wonder what an \",/*#__PURE__*/e(\"code\",{children:\"EntityDescriptor\"}),\" is. As it turns out, the root element of a SAML metadata document is an \",/*#__PURE__*/e(\"code\",{children:\"<EntityDescriptor>\"}),\" (as defined in \",/*#__PURE__*/e(s,{href:\"https://docs.oasis-open.org/security/saml/v2.0/saml-metadata-2.0-os.pdf\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"the SAML Metadata specification\"})}),\"). Hence, in PySAML2 a metadata is represented by an \",/*#__PURE__*/e(\"code\",{children:\"EntityDescriptor\"}),\" instance. The built-in \",/*#__PURE__*/e(\"code\",{children:\"MetaDataFile\"}),\", for example, loads the metadata file content and convert it to an \",/*#__PURE__*/e(\"code\",{children:\"EntityDescriptor\"}),\". In our custom loader, we would build the \",/*#__PURE__*/e(\"code\",{children:\"EntityDescriptor\"}),\" from the information we saved in the database (each tenant has its own record). For simplicity of the demo, we assume this information is available in memory.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://github.com/Twingate-Labs/saml_service_provider/blob/master/sample_sp/views.py#:~:text=class-,MetaDataIdP,-(InMemoryMetaData)%3A\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How a metadata is represented in PySAML2\"})}),\".\"]}),/*#__PURE__*/t(\"h2\",{children:[\"Configure the \",/*#__PURE__*/e(\"code\",{children:\"metadata\"}),\" representation in the \",/*#__PURE__*/e(\"code\",{children:\"saml2.config.Config\"})]}),/*#__PURE__*/e(\"p\",{children:\"Here is how we tell PySAML2 to use our custom metadata in the settings dictionary.\"}),/*#__PURE__*/e(a.div,{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/VRQHcjrUbz44BGN94kVX/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:'from dataclasses import dataclass\\n\\nfrom saml2.client import Saml2Client\\nfrom saml2.config import Config\\n\\n@dataclass\\nclass IdPConfig:\\n    entity_id: str\\n    single_sign_on_url: str\\n    x509_cert: str\\n\\n    def __hash__(self):\\n        return hash(self.entity_id)\\n\\n\\ndef saml_client():\\n    saml_settings = {\\n        #...\\n        \"metadata\": [\\n            {\\n                \"class\": \"sample_sp.views.MetaDataIdP\",\\n                \"metadata\": [\\n                    (\\n                        IdPConfig(\\n                            entity_id=\"jumpcloud/twingate/sample-sp\",\\n                            single_sign_on_url=\"https://sso.jumpcloud.com/saml2/saml2\",\\n                            x509_cert=\"<change_it>\"\\n                        ),\\n                    )\\n                ],\\n            }\\n        ],\\n        #...\\n    }\\n\\n    config = Config()\\n    config.load(saml_settings)\\n\\n    return Saml2Client(config=config)',language:\"JSX\"})})}),/*#__PURE__*/e(\"h2\",{children:\"Django views for SAML endpoints\"}),/*#__PURE__*/e(\"p\",{children:\"The service provider must implement 2 views:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Login view - user first calls this endpoint to initiate the SSO flow. The SP return a redirect response to the IdP with a \",/*#__PURE__*/e(\"code\",{children:\"AuthNRequest\"}),\" payload\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Assertion consumer service (ACS) view - After the user completes the authentication with the IdP, the IdP will redirect the user to this endpoint using POST binding. In simple terms, POST binding is a mechanism to do the redirection using HTML form and HTTP POST request. This allows the IdP to redirect the user back to the SP with the assertions payload, which is usually too big to fit in a typical HTTP redirect.\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"The implementation of these 2 views in Django are straightforward. We just need to use the \",/*#__PURE__*/e(\"code\",{children:\"Saml2Client\"}),\" created from the previous step:\"]}),/*#__PURE__*/e(a.div,{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/VRQHcjrUbz44BGN94kVX/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:'from django.http import JsonResponse\\nfrom django.shortcuts import redirect\\nfrom django.views.decorators.csrf import csrf_exempt\\nfrom saml2 import BINDING_HTTP_POST, md, xmldsig, BINDING_HTTP_REDIRECT, samlp\\nfrom saml2.mdstore import InMemoryMetaData\\n\\nfrom apps.service_provider.saml import saml_client, IdPConfig\\n\\n\\ndef login(request):\\n    client = saml_client()\\n    request_id, info = client.prepare_for_authenticate()\\n    redirect_url = dict(info[\"headers\"])[\"Location\"]\\n\\n    return redirect(redirect_url)\\n\\n\\n@csrf_exempt\\ndef assertion_consumer_service(request):\\n    client = saml_client()\\n    authn_response = client.parse_authn_request_response(\\n        request.POST[\"SAMLResponse\"], BINDING_HTTP_POST\\n    )\\n    session_info = authn_response.session_info()\\n    session_info[\"name_id\"] = str(session_info[\"name_id\"])\\n\\n    return JsonResponse(session_info)',language:\"JSX\"})})}),/*#__PURE__*/e(\"p\",{children:\"At this point, we are ready to create our own SAML app in an IdP and integrate it with our Django server. You can take a look at the README in the demo repo for step-by-step instructions of how to do that with JumpCloud as the IdP.\"})]})},{index:60,id:\"Xn3H93h47\",[h]:!0,[d]:!1,[p]:\"Solving the usability problem to unlock Zero Trust adoption\",[u]:\"Series B Announcement\",[m]:\"series-b-announcement\",[g]:\"\",[w]:\"Tony Huie\",[f]:\"2022-04-14T00:00:00.000Z\",[y]:\"KI2UGBfh7\",[b]:T({src:\"https://framerusercontent.com/images/iajC4oG05vysug4t1gM9eQ29s.png\",srcSet:\"https://framerusercontent.com/images/iajC4oG05vysug4t1gM9eQ29s.png?scale-down-to=512 512w,https://framerusercontent.com/images/iajC4oG05vysug4t1gM9eQ29s.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/iajC4oG05vysug4t1gM9eQ29s.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/iajC4oG05vysug4t1gM9eQ29s.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/iajC4oG05vysug4t1gM9eQ29s.png\",srcSet:\"https://framerusercontent.com/images/iajC4oG05vysug4t1gM9eQ29s.png?scale-down-to=512 512w,https://framerusercontent.com/images/iajC4oG05vysug4t1gM9eQ29s.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/iajC4oG05vysug4t1gM9eQ29s.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/iajC4oG05vysug4t1gM9eQ29s.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Security has a usability problem.\"}),/*#__PURE__*/e(\"p\",{children:\"When given a choice between security and convenience, people almost always choose the latter. As a result, security products that add too much friction, complexity, and frustration end up ineffective. This observation might sound obvious, but user-centric design is a rarity in the security space.\"}),/*#__PURE__*/t(\"p\",{children:[\"When we started Twingate a few years ago, we noticed that nowhere does security have a bigger usability problem than \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control\"})}),\". On the surface, access appears to be a simple problem. But look at any company and you\u2019ll see that access control is a complex orchestration of \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/passwordless-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"passwords\"})}),\", \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/business-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPNs\"})}),\", \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/network-access-control\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"NACs\"})}),\", etc. that is suboptimal for everyone involved.\"]}),/*#__PURE__*/e(\"p\",{children:\"So with usability as a focus, we set off to tackle this problem by focusing initially on designing a network access product that could be a simple yet powerful alternative to VPNs.\"}),/*#__PURE__*/e(\"p\",{children:\"As it turns out, people really do care about good design. Since our launch 18 months ago, we\u2019ve been humbled by the reception we\u2019ve received from organizations and users all over the world.\"}),/*#__PURE__*/t(\"p\",{children:[\"Today, we\u2019re excited to share that we\u2019ve raised \",/*#__PURE__*/e(s,{href:\"https://www.forbes.com/sites/kenrickcai/2022/04/14/twingate-series-b-400-million-taking-down-vpn/amp\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"$42 million in Series B funding led by BOND\"})}),\", with significant participation from our existing investors WndrCo, 8VC, and SignalFire. We\u2019re excited to welcome \",/*#__PURE__*/e(s,{href:\"https://www.linkedin.com/in/jaysimons\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Jay Simons\"})}),\" from BOND to a seasoned investor group that has built and backed some of the most successful software companies in the world. Jay joined Atlassian when it was the size of Twingate today, and built a pioneering product-driven model that enabled Atlassian to become one of the most widely used software platforms in the world. We couldn\u2019t imagine a better partner to guide us as we build Twingate.\"]}),/*#__PURE__*/e(\"p\",{children:\"With this new round of funding, we\u2019ll be investing aggressively to scale our team to meet the demands of our rapidly growing global customer base. In addition, we\u2019re excited to announce two new programs:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"The \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/partners?utm_source=blog&utm_medium=blog&utm_campaign=series-b-announcement\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:/*#__PURE__*/e(\"strong\",{children:\"Twingate Partner Alliance\"})})}),\", which will enable us to work even more closely with MSPs, resellers, and ISVs. We already work with many partners around the world, and we\u2019re excited to invest even more heavily in our partner community.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"The \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=series-b-announcement\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:/*#__PURE__*/e(\"strong\",{children:\"Twingate Starter Plan\"})})}),\", a new, fully-free tier for any individual or organization to get started with Twingate, regardless of budget. Whether you\u2019re a startup, hobbyist, or a Fortune 500 company, we want to make Twingate the most accessible platform for securing access to your private resources.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"We\u2019re just getting started and also wanted to take the opportunity to share what we\u2019re building towards in the coming years.\"}),/*#__PURE__*/e(\"h1\",{children:\"Access Control is the Cybersecurity Imperative of the Next Decade\"}),/*#__PURE__*/e(\"p\",{children:\"If you talk to buyers, vendors, and analysts in the IT and security industry, you\u2019ll find no shortage of products for today\u2019s security challenges. That in itself poses a challenge for companies. With security breaches growing in frequency and severity, security and IT teams are forced to string together an alphabet soup of complex tools that aren\u2019t designed to work well together.\"}),/*#__PURE__*/e(\"p\",{children:\"As a result, users often end up with the burden of making the difficult choice between security and convenience (and are then chastised when they inevitably opt for convenience).\"}),/*#__PURE__*/e(\"p\",{children:\"At the root of this problem is a brittle access control model that was designed in the 1990s and has not evolved to meet the demands of modern work. Even for their most important resources, companies typically manage access through some combination of:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Static usernames and passwords;\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Private, protected networks tied to physical locations (aka offices); and\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Strictly managed devices (often coupled with VPN access for remote access into those networks).\"})})]}),/*#__PURE__*/e(\"img\",{alt:\"VPN Traditional Remote Access Model\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,ng9TNtflFBKcvqrzrYZVKeRwFBI.png?originalFilename=legacyAccess.png\",src:\"https://framerusercontent.com/images/ng9TNtflFBKcvqrzrYZVKeRwFBI.png\",srcSet:\"https://framerusercontent.com/images/ng9TNtflFBKcvqrzrYZVKeRwFBI.png?scale-down-to=512 512w,https://framerusercontent.com/images/ng9TNtflFBKcvqrzrYZVKeRwFBI.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"VPN Traditional Remote Access Model\"}),/*#__PURE__*/e(\"p\",{children:\"However, all of today\u2019s user behaviors illustrate the shortcomings of this model:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Two-thirds of users admit to \",/*#__PURE__*/e(s,{href:\"https://services.google.com/fh/files/blogs/google_security_infographic.pdf\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"reusing passwords\"})}),\" (and that\u2019s just those who admit it!), which results in password compromises being one of the most common ways companies are breached.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Users can no longer be assumed to work from protected, company-controlled networks. People now work from everywhere, accessing corporate resources through all types of networks (home, coffee shops, airports, etc).\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"People use multiple devices for work (including \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/byod\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"BYOD\"})}),\"/personal devices) and access cloud-based/SaaS services that can be accessed from anywhere, without a VPN.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"Moreover, the tools and practices used to enforce this model create friction and frustration for users. Clunky VPNs slow down network traffic, frequent password resets drive users crazy, manual IP address allow-listing is brittle and cumbersome, and device management products are too invasive for personal devices.\"}),/*#__PURE__*/e(\"p\",{children:\"The unfortunate result is that users actively look to circumvent these security measures, IT & security teams are overstretched trying to mitigate these resulting behaviors, and ultimately companies aren\u2019t protected.\"}),/*#__PURE__*/t(\"p\",{children:[\"At Twingate, we believe there\u2019s a better way. There is a superior access control model that solves these challenges, and we see every company shifting to this model over the next decade: \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\".\"]}),/*#__PURE__*/e(\"h1\",{children:\"The Usability Problem Holding Back Zero Trust\"}),/*#__PURE__*/t(\"p\",{children:[\"If you speak to enough security and IT leaders about how to solve today\u2019s security challenges, the conversation will invariably turn to Zero Trust. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/google-beyondcorp\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Popularized by companies like Google\"})}),\", this security framework has its roots in the earliest days of the internet and has been heralded by analysts for over a decade. Even the U.S. federal government has made \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/omb-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust an imperative\"})}),\" across all its departments and agencies. So, you may wonder, given this history, why hasn\u2019t Zero Trust been adopted more widely?\"]}),/*#__PURE__*/e(\"p\",{children:\"The challenge is that while Zero Trust has emerged as the consensus security model of the future, IT and security leaders will tell you it is extremely challenging to put into practice. It requires too much change management, too much manual orchestration of disparate tools, too many resources, and too much patience (given what\u2019s expected to be a multi-year process).\"}),/*#__PURE__*/e(\"p\",{children:\"Our mission at Twingate is to change that dynamic by dramatically simplifying the journey towards Zero Trust.\"}),/*#__PURE__*/t(\"p\",{children:[\"Another challenge is that \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" is frequently misused in today\u2019s noisy security market. So, let\u2019s start with a clear definition of what Zero Trust means to us.\"]}),/*#__PURE__*/e(\"p\",{children:\"At its core, Zero Trust is about answering one very simple question for every access attempt:\"}),/*#__PURE__*/e(\"img\",{alt:\"Zero Trust Access Framework\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,g9ZuMzmyMpKMel5hpiSVjiCIKFY.png?originalFilename=accessFramework.png\",src:\"https://framerusercontent.com/images/g9ZuMzmyMpKMel5hpiSVjiCIKFY.png\",srcSet:\"https://framerusercontent.com/images/g9ZuMzmyMpKMel5hpiSVjiCIKFY.png?scale-down-to=512 512w,https://framerusercontent.com/images/g9ZuMzmyMpKMel5hpiSVjiCIKFY.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust Access Framework\"}),/*#__PURE__*/t(\"p\",{children:[\"However, this question is \",/*#__PURE__*/e(\"em\",{children:\"deceptively\"}),\" simple, because when you play it out in any typical organization, it becomes very complex, very fast. Is the user a full time employee, a contractor, or an automated service? Is the device a company device, personal device, or a server? Can you tell if a user and device pair is working in an office, at home, or in a public cloud environment? Do we allow access via SSO, MFA, or VPN?\"]}),/*#__PURE__*/e(\"p\",{children:\"And even when you have all of this information, how do you determine whether access should be granted immediately, routed for approval, or denied? How long should access be allowed? The permutations get unwieldy very quickly.\"}),/*#__PURE__*/e(\"p\",{children:\"Moreover, when you need to string together 4-5 (or more) different tools to answer this question, you can begin to see how complicated this access control model can become in practice. User information is locked in an SSO or identity provider, device information is housed in a separate MDM or EDR system, and contextual information is spread out across multiple siloed products or cloistered in a SIEM.\"}),/*#__PURE__*/t(\"p\",{children:[\"Additionally, granting access often means orchestrating connections between those tools and network-based products like \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/business-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPNs\"})}),\" or \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/network-access-control\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"NACs\"})}),\".\"]}),/*#__PURE__*/e(\"p\",{children:\"Unfortunately, none of these tools are designed to work together. The result is a mess of increasing complexity for admins and constant friction that gets in the way of user productivity.\"}),/*#__PURE__*/e(\"img\",{alt:\"Zero Trust Access Framework with Integrations\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,yPZH0dRn9nSYI4a1yClR5IdD2JA.png?originalFilename=accessFrameworkWithIntegrations.png\",src:\"https://framerusercontent.com/images/yPZH0dRn9nSYI4a1yClR5IdD2JA.png\",srcSet:\"https://framerusercontent.com/images/yPZH0dRn9nSYI4a1yClR5IdD2JA.png?scale-down-to=512 512w,https://framerusercontent.com/images/yPZH0dRn9nSYI4a1yClR5IdD2JA.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust Access Framework with Integrations\"}),/*#__PURE__*/e(\"p\",{children:\"This challenge is imposing enough for larger organizations with dedicated IT teams. It is basically impossible for leanly resourced small- and medium-sized businesses.\"}),/*#__PURE__*/t(\"p\",{children:[\"Because of this, our belief is that \",/*#__PURE__*/e(\"strong\",{children:\"poor usability\"}),\" is the fundamental problem preventing widespread adoption of Zero Trust.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Simplifying the On-Ramp to Zero Trust\"}),/*#__PURE__*/e(\"p\",{children:\"In our view, the core capabilities required to implement Zero Trust access controls are:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Support for \",/*#__PURE__*/e(\"strong\",{children:\"secure connectivity\"}),\" to resources across public and private networks\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/device-trust-in-a-zero-trust-world\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:/*#__PURE__*/e(\"strong\",{children:\"Device awareness\"})})}),\" for any device type, whether virtual or physical, and whether mobile, desktop, or server\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Stronger multi-factor \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/introducing-identity-first-networking\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:/*#__PURE__*/e(\"strong\",{children:\"identity authentication\"})})}),\" that ideally eliminates the need for passwords\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Contextual awareness\"}),\" of location, usage patterns, and more\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Workflow automation, visibility\"}),\" over network activity, and a \",/*#__PURE__*/e(\"strong\",{children:\"policy engine\"}),\" to tie this all together\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"Today, these capabilities are distributed across multiple systems that are often challenging to procure, integrate, and orchestrate.\"}),/*#__PURE__*/t(\"p\",{children:[\"So how do we get started? In our conversations with hundreds of companies, one common pain point quickly emerged: \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"can you help us eliminate our VPN?\"})})]}),/*#__PURE__*/e(\"p\",{children:\"With that insight, we launched Twingate with a clear and immediate value proposition to start: replace your VPN with a more secure, usable, and performant solution that your workforce will love.\"}),/*#__PURE__*/e(\"p\",{children:\"As a VPN replacement, we offered customers:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"A dramatically simpler deployment process, with an extensive API and automation capabilities for technical teams (who often bear the brunt of wrangling with VPNs)\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Powerful security controls to provide granular access permissions and mitigate the risk of broad-based network access\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"More flexibility by decoupling access controls from network architectures\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"High performance, low latency connectivity for users through a combination of smart routing, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/vpn-split-tunneling\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"split tunneling\"})}),\", direct peer-to-peer connections, and leveraging well-vetted transport protocols like \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/network-connectivity-for-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"QUIC\"})})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"A seamless, set and forget experience for end users\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"In addition, we built deep integrations with your \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/identity-providers\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"existing technology stack\"})}),\" to make it easy to get started. These integrations in turn allowed our network connectivity layer to function as a simple orchestration engine across identities, devices, and context, regardless of where that information resides.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Very quickly, we saw customers using Twingate for much more than just a VPN replacement. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/customers\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Customers\"})}),\" started using Twingate to implement ephemeral access controls, enforce device restrictions on SaaS apps, extend MFA to technical infrastructure, secure automated DevOps and \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ztna-infra-automation\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Infrastructure-as-Code processes\"})}),\", and much more.\"]}),/*#__PURE__*/e(\"p\",{children:\"While early conversations about Twingate started with replacing VPNs, they very quickly evolved into how we actually presented an easy on-ramp to Zero Trust.\"}),/*#__PURE__*/e(\"h1\",{children:\"Embraced by Innovators\"}),/*#__PURE__*/e(\"p\",{children:\"We\u2019ve been humbled by the reception of Twingate since our launch 18 months ago. Companies of all sizes, from all over the world, have retired legacy network technologies like VPNs and NACs and started their Zero Trust journey with Twingate.\"}),/*#__PURE__*/e(\"img\",{alt:\"quotes\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,MKzlfn85LGpQM0AYRuFhUnf9uA.png?originalFilename=quotes.png\",src:\"https://framerusercontent.com/images/MKzlfn85LGpQM0AYRuFhUnf9uA.png\",srcSet:\"https://framerusercontent.com/images/MKzlfn85LGpQM0AYRuFhUnf9uA.png?scale-down-to=2048 618w,https://framerusercontent.com/images/MKzlfn85LGpQM0AYRuFhUnf9uA.png 800w\"}),/*#__PURE__*/t(\"p\",{children:[\"Today, Twingate is one of the highest-rated Zero Trust solutions on leading review sites like \",/*#__PURE__*/e(s,{href:\"https://www.g2.com/products/twingate/reviews\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"G2\"})}),\", and the winner of over 50 awards:\"]}),/*#__PURE__*/e(\"img\",{alt:\"G2 Awards\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,rSFWmomTkKDNeVKuZiTZT1ikk0.png?originalFilename=g2.png\",src:\"https://framerusercontent.com/images/rSFWmomTkKDNeVKuZiTZT1ikk0.png\",srcSet:\"https://framerusercontent.com/images/rSFWmomTkKDNeVKuZiTZT1ikk0.png?scale-down-to=512 512w,https://framerusercontent.com/images/rSFWmomTkKDNeVKuZiTZT1ikk0.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"G2 Awards\"}),/*#__PURE__*/e(\"p\",{children:\"To our customer community: we\u2019re incredibly thankful for your tremendous support and inspiration. We\u2019re excited to invest even more to deliver on the trust you\u2019ve placed in us.\"}),/*#__PURE__*/e(\"h1\",{children:\"What\u2019s Next\"}),/*#__PURE__*/e(\"p\",{children:\"Looking ahead, our goal is to accelerate the adoption of Zero Trust by organizations around the world.\"}),/*#__PURE__*/t(\"p\",{children:[\"We plan to continue working to make Twingate simple enough for small businesses, yet powerful enough for the largest global enterprises, with accessible \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=series-b-announcement\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"pricing plans\"})}),\" to fit any budget (or no budget at all).\"]}),/*#__PURE__*/e(\"p\",{children:\"Here\u2019s what you\u2019ll see us investing in over the next year:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Doubling down on our \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/network-connectivity-for-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"distributed networking platform\"})}),\" to provide the fastest, lowest latency connectivity experience for users in any network environment.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Extending the capabilities of our device agents to introduce device awareness and enable better \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access and authorization\"})}),\" decisions based on rich, contextual device information.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Leveraging that device awareness to reimagine the authentication experience so we can reduce the reliance on passwords, improving security and reducing friction for users.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Providing extensive workflow automation, visibility, and seamless integrations with existing security solutions to unburden IT and Security teams.\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"If our mission is exciting to you, join us! \",/*#__PURE__*/e(s,{href:\"https://jobs.lever.co/twingate\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"We\u2019re hiring\"})}),\" across the company.\"]}),/*#__PURE__*/t(\"p\",{children:[\"If you\u2019re exploring Zero Trust for your company, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=series-b-announcement\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"try Twingate for free\"})}),\" today.\"]}),/*#__PURE__*/t(\"p\",{children:[\"If you\u2019re a channel partner or MSP, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/partners?utm_source=blog&utm_medium=blog&utm_campaign=series-b-announcement\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"join the Twingate Partner Alliance\"})}),\".\"]}),/*#__PURE__*/e(\"p\",{children:\"We\u2019re excited to get to work. Let\u2019s go!\"})]})},{index:61,id:\"kiWFKcddX\",[h]:!0,[d]:!1,[p]:\"What is the NIST Zero Trust Architecture?\",[u]:\"What is the NIST Zero Trust Architecture?\",[m]:\"nist-zero-trust-architecture\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2022-03-31T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/TKzP5AJtbbeFy9n7fVB1BDkbsns.png\",srcSet:\"https://framerusercontent.com/images/TKzP5AJtbbeFy9n7fVB1BDkbsns.png?scale-down-to=512 512w,https://framerusercontent.com/images/TKzP5AJtbbeFy9n7fVB1BDkbsns.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/TKzP5AJtbbeFy9n7fVB1BDkbsns.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/TKzP5AJtbbeFy9n7fVB1BDkbsns.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/TKzP5AJtbbeFy9n7fVB1BDkbsns.png\",srcSet:\"https://framerusercontent.com/images/TKzP5AJtbbeFy9n7fVB1BDkbsns.png?scale-down-to=512 512w,https://framerusercontent.com/images/TKzP5AJtbbeFy9n7fVB1BDkbsns.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/TKzP5AJtbbeFy9n7fVB1BDkbsns.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/TKzP5AJtbbeFy9n7fVB1BDkbsns.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Two years ago, the National Institute of Standards and Technologies (NIST) issued a report defining a new paradigm for secure network access. The NIST Zero Trust Architecture outlines how organizations can improve security by replacing legacy technologies such as virtual private networks (VPN). This 59-page document comprehensively explores the principles and implications of \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\", but it is easy to get lost in all the details.\"]}),/*#__PURE__*/e(\"p\",{children:\"This article will touch on why the traditional model of a network perimeter is failing, what Zero Trust looks like from the NIST\u2019s perspective, and how the US government is migrating to this new security paradigm.\"}),/*#__PURE__*/e(\"h1\",{children:\"Why is Zero Trust necessary?\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" is a modern approach to secure network access that avoids the security weaknesses and inefficiencies of legacy technologies such as virtual private networks or remote desktop protocol (RDP). Designed for today\u2019s distributed network architectures, Zero Trust solutions let organizations manage all users, devices, and resources within a single system. Zero Trust delivers seamless access to users no matter where they are while keeping resources secure amid the growing sophistication of today\u2019s cybercriminals.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Legacy technologies are unsecure\"}),/*#__PURE__*/e(\"p\",{children:\"For decades, organizations have used a \u201Csecure perimeter\u201A framework to protect sensitive networked resources. Security administrators focused on locking down private networks to prevent access from outside the organization\u2019s walls. Employees used managed desktops on this private network to access the resources they needed.\"}),/*#__PURE__*/e(\"p\",{children:\"VPN, RDP, and other specialized technologies let a few employees access the network remotely. Gateway devices positioned outside the network provided a portal through the firewall so these users could access the network.\"}),/*#__PURE__*/e(\"p\",{children:\"What worked decades ago no longer works today. Secure perimeter technologies have become vectors for cyberattacks. Gateways publish their presence to the public internet. By constantly scanning every gateway, cybercriminals can spot an unpatched device before administrators know an update is available. In addition, users\u2019 devices and credentials are vulnerable to malware and social engineering attacks. Since VPN gateways provide access to networks rather than to specific resources, these vulnerabilities create significant risks to an organization\u2019s security.\"}),/*#__PURE__*/e(\"h2\",{children:\"Legacy technologies are inefficient\"}),/*#__PURE__*/e(\"p\",{children:\"Legacy approaches also make an organization\u2019s networks inefficient. As work-from-home policies during the pandemic made clear, gateways are bandwidth chokepoints for all remote traffic. In addition, the private network must handle traffic flowing between remote users and cloud-based resources. Besides degrading the private network\u2019s bandwidth, this backhaul adds latency to users\u2019 connections.\"}),/*#__PURE__*/e(\"p\",{children:\"In addition to the performance impact, legacy technologies such as VPN are more difficult and expensive to manage. Changes to access policies can require changes in the infrastructure and vice versa. Upgrading or replacing a VPN gateway can disrupt the organization.\"}),/*#__PURE__*/e(\"h1\",{children:\"What are the NIST Zero Trust definitions?\"}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust was introduced as an academic concept in the 1990s. National security planners have worked with similar concepts for decades. A few years after Forrester analysts popularized Zero Trust in 2010, Google began developing its in-house Zero Trust network architecture.\"}),/*#__PURE__*/t(\"p\",{children:[\"In 2020, the \",/*#__PURE__*/e(s,{href:\"https://csrc.nist.gov/publications/detail/sp/800-207/final\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"NIST Zero Trust Architecture\"})}),\" was published to provide a common reference for government agencies hoping to improve their organization\u2019s security posture. This is how the authors defined the new security paradigm:\"]}),/*#__PURE__*/e(\"p\",{children:\"Zero trust (ZT) provides a collection of concepts and ideas designed to minimize uncertainty in enforcing accurate, least privilege per-request access decisions in information systems and services in the face of a network viewed as compromised.\"}),/*#__PURE__*/e(\"p\",{children:\"They further defined seven technology-agnostic \u201Ctenets\u201A upon which to base a Zero Trust Architecture:\"}),/*#__PURE__*/e(\"h2\",{children:\"Consider all data sources and computing services as resources\"}),/*#__PURE__*/e(\"p\",{children:\"Any software or hardware that touches an organization\u2019s data is a resource. This includes routers, printers, managed desktops, and anything else connected to the private network. Zero Trust Architecture also includes an organization\u2019s internet-hosted applications and services.\"}),/*#__PURE__*/e(\"h2\",{children:\"Secure all communications regardless of network location\"}),/*#__PURE__*/e(\"p\",{children:\"Unlike the secure perimeter paradigm, Zero Trust does not assume that a private network is any more secure than the public internet. No matter what network an access request comes from, Zero Trust denies it by default and only grants access to authenticated and authorized users.\"}),/*#__PURE__*/e(\"h2\",{children:\"Only grant per-session access to individual resources\"}),/*#__PURE__*/e(\"p\",{children:\"Authentication and authorization should not give a user more than the requested access. Applying least-privilege principles restricts permissions to a single resource and does not transfer to others.\"}),/*#__PURE__*/e(\"h2\",{children:\"Grant access dynamically based on context\"}),/*#__PURE__*/e(\"p\",{children:\"User identity, location, and many other factors can affect the risk profile of an access request. These factors can change at any time \u2014 even during a session. Zero Trust systems evaluate each access request based on this context and grant just-in-time access.\"}),/*#__PURE__*/e(\"h2\",{children:\"Constantly evaluate device and resource security postures\"}),/*#__PURE__*/e(\"p\",{children:\"Every network and device is always vulnerable to attack. The only safe assumption is that they have already been compromised. Organizations must have \u201Ca robust monitoring and reporting system\u201A to identify security weaknesses.\"}),/*#__PURE__*/e(\"h2\",{children:\"Strictly and dynamically enforce policies before granting access\"}),/*#__PURE__*/e(\"p\",{children:\"Too many legacy technologies grant access before completing authentication or authorization. Zero Trust systems deny access by default. Only once a request has been found in compliance with all security policies is access granted.\"}),/*#__PURE__*/e(\"h2\",{children:\"Monitor all network activity and act on learnings\"}),/*#__PURE__*/e(\"p\",{children:\"Detailed activity logs, and the systems to use them, are needed to understand infrastructure state and traffic patterns. Those learnings should inform improvements to security policies and enforcement practices.\"}),/*#__PURE__*/e(\"h1\",{children:\"Is there a simpler way to think about Zero Trust?\"}),/*#__PURE__*/e(\"p\",{children:\"The NIST\u2019s technical definitions, while detailed, can be difficult to grasp. However, Zero Trust principles are easy to understand as they\u2019ve been distilled to three basic concepts:\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Assume breach\"}),\" - Any network, resource, device, or user credential can be compromised at any time. The only safe approach is to assume everything has already been breached and every access request is a potential attack.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Verify explicitly\"}),\" - Before creating any connection to a resource, the Zero Trust system must authenticate the user and evaluate the request\u2019s risk profile based on context. However, authentication is not enough to permit access.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Least privilege\"}),\" - \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/role-based-access-control\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Role-based policies\"})}),\" give users the least amount of access needed to do their work within the context of the access request. These permissions are ephemeral, disappearing when the session ends, times out, or when any trust factor changes.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Why are organizations interested in Zero Trust?\"}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust does not have the security and efficiency weaknesses of traditional secure perimeter technologies. In an increasingly distributed networking and cybersecurity environment, Zero Trust makes organizations more secure while improving productivity and network performance.\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Shrinking the attack surface \"}),\"- Replacing publicly-visible gateways with invisible Zero Trust proxies hides distributed networks from attackers.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Preventing \"}),/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/lateral-movement\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:/*#__PURE__*/e(\"strong\",{children:\"lateral movement\"})})}),\" - Zero Trust\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/principle-of-least-privilege\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"least privilege\"})}),\" access policies stop hackers from roaming through networks. Administrators can identify and mitigate attacks faster, reducing the blast radius of successful attacks.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Simplifying granular control\"}),\" - Zero Trust lets organizations control access for each resource, each role, and each context through simple administrative tools.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Unifying all users and resources\"}),\" - Administrators can apply common security policies for all users and resources, including third-party resources.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Reducing network costs\"}),\" - Decoupling \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control\"})}),\" from the physical network reduces infrastructure investments and overhead.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Improving network performance\"}),\" - Without the need for centralized gateways, Zero Trust improves the latency of user connections while relieving private networks of backhaul traffic.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Improving the user experience\"}),\" - Users get the same experience at home as they do in the office. Zero Trust clients enforce security policies transparently while delivering performant, low-latency connections.\"]})})]}),/*#__PURE__*/e(\"h1\",{children:\"Why is the US government adopting Zero Trust?\"}),/*#__PURE__*/t(\"p\",{children:[\"Recognizing the weakness of secure perimeter paradigms, the defense and national security sectors have been planning a switch to Zero Trust Architectures. On May 15, 2021, the Biden Administration \",/*#__PURE__*/e(s,{href:\"https://www.whitehouse.gov/briefing-room/presidential-actions/2021/05/12/executive-order-on-improving-the-nations-cybersecurity\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"directed all federal agencies\"})}),\" to adopt Zero Trust. Within 60 days, every agency had to\"]}),/*#__PURE__*/e(\"p\",{children:\"\u2026 develop a plan to implement Zero Trust Architecture, which shall incorporate, as appropriate, the migration steps that the National Institute of Standards and Technology (NIST) within the Department of Commerce has outlined in standards and guidance, describe any such steps that have already been completed, identify activities that will have the most immediate security impact, and include a schedule to implement them.\"}),/*#__PURE__*/e(\"p\",{children:\"To help agencies implement these plans by Fiscal 2024, the Executive Order directed the Department of Homeland Security\u2019s Cybersecurity and Infrastructure Security Agency (CISA) to:\"}),/*#__PURE__*/e(\"p\",{children:\"\u2026modernize its current cybersecurity programs, services, and capabilities to be fully functional with cloud-computing environments with Zero Trust Architecture [and] develop security principles governing Cloud Service Providers (CSPs) for incorporation into agency modernization efforts.\"}),/*#__PURE__*/e(\"p\",{children:\"One month later, CISA published a draft version of its Zero Trust Maturity Model. This roadmap is meant to guide federal agencies as they migrate their networks to Zero Trust.\"}),/*#__PURE__*/e(\"h1\",{children:\"Twingate\u2019s vision for the future of Zero Trust\"}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust is becoming part of every organization\u2019s security roadmap, from an academic thesis to a solution for modern cyber threats. Twingate has helped large and small organizations begin their Zero Trust journeys. Our scalable, software-based solutions run parallel with legacy architectures, letting security administrators implement Zero Trust where it is most impactful while phasing in our secure access solution over time.\"}),/*#__PURE__*/t(\"p\",{children:[\"In our 2022 Zero Trust Outlook Report, we take a by-the-numbers approach to documenting the current state of Zero Trust. We explain why organizations in every sector are turning to this modern security model to support today\u2019s distributed networks. \",/*#__PURE__*/e(s,{href:\"https://twingate.com/resources/twingate-security-whitepaper\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Download a copy now\"})}),\".\"]}),/*#__PURE__*/t(\"p\",{children:[\"To see how Zero Trust works, sign up for our \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=nist-zero-trust-architecture_\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"free Starter plan\"})}),\" for individuals and small teams.\"]})]})},{index:62,id:\"Z9cbygDtg\",[h]:!0,[d]:!1,[p]:\"What is a Secure Web Gateway?\",[u]:\"What is a Secure Web Gateway?\",[m]:\"secure-web-gateway\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2022-03-28T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/QUpdXi92gpDSvdqiLKm93QDOvVE.png\",srcSet:\"https://framerusercontent.com/images/QUpdXi92gpDSvdqiLKm93QDOvVE.png?scale-down-to=512 512w,https://framerusercontent.com/images/QUpdXi92gpDSvdqiLKm93QDOvVE.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/QUpdXi92gpDSvdqiLKm93QDOvVE.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/QUpdXi92gpDSvdqiLKm93QDOvVE.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/QUpdXi92gpDSvdqiLKm93QDOvVE.png\",srcSet:\"https://framerusercontent.com/images/QUpdXi92gpDSvdqiLKm93QDOvVE.png?scale-down-to=512 512w,https://framerusercontent.com/images/QUpdXi92gpDSvdqiLKm93QDOvVE.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/QUpdXi92gpDSvdqiLKm93QDOvVE.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/QUpdXi92gpDSvdqiLKm93QDOvVE.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Organizations can enhance their defense-in-depth strategies by using secure web gateways (SWGs) to protect their users\u2019 internet traffic. SWGs can block malware and malicious websites, prevent data exfiltration, and prevent access to unauthorized sites or web apps. \",/*#__PURE__*/e(s,{href:\"https://www.gartner.com/en/information-technology/glossary/secure-web-gateway\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Gartner defines an SWG\"})}),\" as \u201Ca solution that filters unwanted software/malware from user-initiated Web/Internet traffic and enforces corporate and regulatory policy compliance.\u201A\"]}),/*#__PURE__*/t(\"p\",{children:[\"This article will explain why organizations use SWGs, how they work, and how a secure web gateway can support your \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust Network Access\"})}),\" strategies.\"]}),/*#__PURE__*/e(\"h1\",{children:\"What are the benefits of a Secure Web Gateway?\"}),/*#__PURE__*/t(\"p\",{children:[\"Most organizations have used some combination of content filters, network \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access controls\"})}),\", and other technologies to block malware and prevent users from accessing unauthorized websites. Ever since Gartner gathered many of these features together by coining the term secure web gateway, vendors have marketed their filtering technologies under the SWG banner. More than a buzzword, however, SWGs deliver tangible benefits:\"]}),/*#__PURE__*/e(\"h2\",{children:\"Enhanced threat detection\"}),/*#__PURE__*/e(\"p\",{children:\"SWGs scan all inbound and outbound internet traffic, blocking outgoing access to unsecure websites and comparing incoming traffic against deny lists of known malware and malicious websites. When users access secure websites, the SWG will decrypt, evaluate, and re-encrypt HTTPS to inspect all traffic.\"}),/*#__PURE__*/e(\"p\",{children:\"Of course, unknown threats are the most dangerous. Advanced SWGs incorporate artificial intelligence, machine learning, and other heuristics to detect patterns from emerging threats.\"}),/*#__PURE__*/e(\"h2\",{children:\"Reduced attack surface\"}),/*#__PURE__*/e(\"p\",{children:\"Protecting traffic entering or leaving a private network is not enough. The rise of work-from-home and bring-your-own-device policies has stretched attack surfaces far beyond the network perimeter. A remote worker\u2019s internet traffic could expose the protected network to malicious software. Requiring all users, internal or remote, to access the internet through an SWG reduces these risks significantly.\"}),/*#__PURE__*/e(\"h2\",{children:\"Greater network visibility\"}),/*#__PURE__*/e(\"p\",{children:\"Detailed activity logs give network administrators more visibility into their organization\u2019s internet activity. Unusual, risky, or unauthorized internet use becomes easier to identify and address. After a successful breach, SWG logs give forensic investigations more data to discover the source and impact of the attack.\"}),/*#__PURE__*/e(\"h2\",{children:\"Improved compliance\"}),/*#__PURE__*/e(\"p\",{children:\"Whether set by the company or defined by regulation, internet access policies must be enforced. Company policies may prevent access to popular web apps such as Facebook or TikTok. In highly regulated industries, policies may block access to any website not on a pre-defined allowlist. Channeling all users\u2019 internet activity through the company SWG proactively enforces policies and improves the organization\u2019s compliance efforts.\"}),/*#__PURE__*/e(\"h2\",{children:\"Prevention of data loss\"}),/*#__PURE__*/e(\"p\",{children:\"All SWG products scan incoming traffic for malicious activity. Advanced products also scan outgoing traffic for signs of data exfiltration. The SWG\u2019s ability to scan encrypted HTTPS traffic stops more sophisticated hacking attempts.\"}),/*#__PURE__*/e(\"h2\",{children:\"Implementing SASE\"}),/*#__PURE__*/t(\"p\",{children:[\"Gartner\u2019s vision of the \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sase-meaning\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Secure Access Service Edge (SASE)\"})}),\" foresees the convergence of several networking technologies, including secure web gateways. SASE is a cloud-native architecture in which policy enforcement occurs at the network\u2019s edge. As a result, SWGs have become part of many enterprises\u2019 long-term network strategies.\"]}),/*#__PURE__*/e(\"h1\",{children:\"How do Secure Web Gateways work?\"}),/*#__PURE__*/e(\"p\",{children:\"Secure web gateways are proxies inserted between end-users and the internet. They can be implemented in traditional network architecture as appliances or proxy servers. This centralized approach, however, has drawbacks. Like VPN gateways, secure web gateways concentrate user traffic. Bandwidth bottlenecks and increased latency can be an issue \u2014 especially with geographically dispersed workforces.\"}),/*#__PURE__*/e(\"p\",{children:\"Cloud-based SWG providers use software-as-a-service business models and large point-of-presence (PoP) networks to address these performance issues. A company\u2019s facilities and remote users connect to the provider\u2019s nearest PoP rather than a central hub.\"}),/*#__PURE__*/e(\"h2\",{children:\"Secure Web Gateway vs. IPsec VPN\"}),/*#__PURE__*/t(\"p\",{children:[\"Secure web gateways are distinct from \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ipsec-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"IPsec virtual private network (VPN)\"})}),\" gateways. VPN technology controls remote access into a protected network. Although it may have security features that apply to remote users\u2019 outbound traffic, the VPN gateway only addresses part of the company\u2019s user base. In contrast, an SWG inspects internet traffic generated by all users, remote or on-premises.\"]}),/*#__PURE__*/e(\"h2\",{children:\"How a secure gateway works\"}),/*#__PURE__*/e(\"p\",{children:\"Whatever implementation a company chooses, how the secure web gateway works is the same. A user\u2019s outbound traffic first passes through the SWG before continuing to the internet. Likewise, the return traffic must go through the SWG before arriving on the user\u2019s device. Every outbound and inbound packet gets inspected and evaluated in the context of company policy. These policies can include:\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"URL filtering\"}),\"- A deny list defines the websites and web apps that users may not access. This list may be limited to known malicious sites such as malware control servers. Companies can also add specifically unauthorized websites to the deny list.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Malware scanning and blocking\"}),\" - SWG providers maintain and regularly update malware lists. The gateway inspects packets for signs of these known threats. If the SWG supports the feature, it will search for signs of unlisted, emerging threats. In addition, gateways can use sandboxes to run incoming code in a protected environment to detect malware.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Application control\"}),\" - Companies can block access to Facebook, YouTube, and other web apps to improve productivity and network performance. Organizations in highly-regulated industries such as finance or healthcare may use application controls to limit users\u2019 internet activities.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Content inspection and filtering\"}),\" - As secure web gateways inspect inbound user traffic, they can filter video and other content that the company does not want on their private networks. Advanced SWGs will also inspect outbound traffic for signs of data exfiltration by rogue users or cybercriminals.\"]}),/*#__PURE__*/e(\"h1\",{children:\"How does SWG relate to Zero Trust?\"}),/*#__PURE__*/e(\"p\",{children:\"Secure web gateways are built on similar paradigms to VPN and other legacy technologies. Deep down, they assume that certain kinds of traffic are inherently trustworthy. URL filters, for example, assume that any web addresses not included on the deny list are safe for users to visit. When a user reaches a compromised website, the SWG relies on packet inspection and other defense layers to block the threat it lets enter the HTTPS tunnel.\"}),/*#__PURE__*/e(\"p\",{children:\"Even though secure web gateways are not inherently Zero Trust technologies, they can complement Zero Trust network architectures. Zero Trust is a network access technology that creates secure connections to company resources from authenticated and authorized users. SWGs provide granular control over sources, destinations, content, and other aspects of users\u2019 internet activity. With this additional context, the Zero Trust system can better evaluate whether to allow a user\u2019s connection request \u2014 and how much access to authorize.\"}),/*#__PURE__*/e(\"h1\",{children:\"How Twingate can help\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" solutions are based on a much different paradigm from legacy network access technologies. Zero Trust assumes that trust must be earned and continuously justified rather than assuming that certain users, devices, or networks are safe. This is the only way to operate in today\u2019s threat environment. Any network, device, or user credential can be compromised \u2014 and at least one probably already has.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Zero Trust systems deny access by default. All incoming requests, whether remote or on-premises, must be authenticated. Zero Trust systems apply the principle of \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/principle-of-least-privilege\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"least privileged access\"})}),\" as they evaluate the context of each authenticated request. Unlike VPNs that grant unlimited access to the protected network, Zero Trust limits access to the resources.\"]}),/*#__PURE__*/e(\"p\",{children:\"Twingate\u2019s Zero Trust solution creates secure, direct connections between a company\u2019s users and its protected resources. Split tunneling is active by default which lets administrators route users\u2019 internet traffic through their secure web gateways. Traffic between users and resources gets low-latency routes and is not impacted by SWG performance.\"}),/*#__PURE__*/t(\"p\",{children:[\"Companies rely on Twingate to simplify the migration to Zero Trust. A Twingate solution coexists with legacy systems, allowing companies to implement Zero Trust in stages. They can start with DevOps and other teams that need easy, secure access to the most sensitive resources. Later, they can migrate other teams to Zero Trust. Twingate\u2019s software solution works with companies\u2019 existing \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/example-cicd-configurations\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"CI/CD pipelines\"})}),\", making it easy to deploy and scale over time.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Begin the journey to Zero Trust with Twingate\"}),/*#__PURE__*/e(\"p\",{children:\"For all its benefits, the internet is a dangerous place. Secure web gateways protect organizations from internet threats and prevent unauthorized internet use by employees. Besides reducing a company\u2019s attack surface, SWGs improve administrators\u2019 visibility into the company\u2019s internet activity \u2014 an essential step towards regulatory compliance.\"}),/*#__PURE__*/e(\"p\",{children:\"Even though secure web gateways are not Zero Trust technologies, they can complement Zero Trust solutions such as Twingate. Split-tunneling lets companies route users\u2019 internet traffic through their SWG while giving users direct, performant connections to protected resources.\"}),/*#__PURE__*/t(\"p\",{children:[\"You can try Twingate\u2019s Zero Trust solution yourself with our \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing?utm_source=twitter&utm_medium=blog&utm_campaign=secure-web-gateway\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"free starter tier\"})}),\" for individuals and small teams. Or contact us to learn more about using Twingate Zero Trust to protect your most sensitive resources.\"]})]})},{index:63,id:\"R57voRh6F\",[h]:!0,[d]:!1,[p]:\"SSL VPN Explained\",[u]:\"SSL VPN Explained\",[m]:\"ssl-vpn\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2022-03-22T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/NvD8DxqqR1GDQXVUKlpADhVfJ8.png\",srcSet:\"https://framerusercontent.com/images/NvD8DxqqR1GDQXVUKlpADhVfJ8.png?scale-down-to=512 512w,https://framerusercontent.com/images/NvD8DxqqR1GDQXVUKlpADhVfJ8.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/NvD8DxqqR1GDQXVUKlpADhVfJ8.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/NvD8DxqqR1GDQXVUKlpADhVfJ8.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/NvD8DxqqR1GDQXVUKlpADhVfJ8.png\",srcSet:\"https://framerusercontent.com/images/NvD8DxqqR1GDQXVUKlpADhVfJ8.png?scale-down-to=512 512w,https://framerusercontent.com/images/NvD8DxqqR1GDQXVUKlpADhVfJ8.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/NvD8DxqqR1GDQXVUKlpADhVfJ8.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/NvD8DxqqR1GDQXVUKlpADhVfJ8.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"SSL VPNs use browser-based protocols to create secure tunnels between a user\u2019s device and an SSL VPN gateway. This end-to-end-encrypted (E2EE) tunnel gives remote users easy access to protected resources. SSL VPNs are relatively simple to deploy, easy to use, and work with access policies based on \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/principle-of-least-privilege\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"least privilege\"})}),\".\"]}),/*#__PURE__*/e(\"p\",{children:\"Although they kept the name of their original Secure Sockets Layer (SSL) protocol, today\u2019s SSL VPNs use the more secure Transport Layer Security (TLS) protocol. Even then, administrators must address a few security issues with SSL VPNs.\"}),/*#__PURE__*/t(\"p\",{children:[\"We will explain how SSL VPNs work and the two ways companies implement these remote access solutions. A quick comparison with IPSec VPNs will explain the tradeoffs security administrators have to make. Finally, we will discuss how a secure access solution based on \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" principles offers a better alternative.\"]}),/*#__PURE__*/e(\"h1\",{children:\"How does SSL VPN work?\"}),/*#__PURE__*/e(\"p\",{children:\"One of the main reasons companies adopt an SSL VPN is because anyone who has surfed the web already knows how to use it. The secure HTTPS websites we use daily rely on TLS protocols built into every modern browser. Behind the scenes, a remote user\u2019s SSL VPN connection starts the same way:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Initial handshake:\"}),\" The user points their browser at their company\u2019s SSL VPN gateway server to begin a quick handshake process.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Server authentication:\"}),\" The server sends a certificate that the browser authenticates with a trusted certificate authority.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Negotiate encryption:\"}),\" Once authenticated, the server and browser negotiate the encryption algorithm they will use.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Key exchange:\"}),\" the server and browser exchange either a shared secret or public keys to establish the encrypted tunnel.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"Once a secure, encrypted tunnel connects the user\u2019s browser to the SSL VPN gateway server, things run a little differently from public websites. The gateway server presents the user with a login page that is integrated with the company\u2019s authentication and authorization systems. Successfully logged in, the remote user has access to protected company resources, and the data has full E2EE protection.\"}),/*#__PURE__*/e(\"h1\",{children:\"Types of SSL VPN\"}),/*#__PURE__*/e(\"p\",{children:\"What kinds of resources users can access will depend on how the company implements its SSL VPN: a simple SSL Portal VPN or a more capable SSL Tunnel VPN.\"}),/*#__PURE__*/e(\"h2\",{children:\"SSL Portal VPN\"}),/*#__PURE__*/e(\"p\",{children:\"An SSL portal VPN works like any HTTPS-secured website. The gateway presents authenticated users with a portal web page with links to resources on the company network. Administrators can define least privilege access rules that only present links to the resources users require.\"}),/*#__PURE__*/e(\"p\",{children:\"However, SSL portal VPNs have a few limitations. They only support one secure connection at a time. A bigger issue for some companies is that SSL portal VPNs only work with browser-friendly resources. Running legacy applications and network services through SSL portals requires additional development.\"}),/*#__PURE__*/e(\"h2\",{children:\"SSL Tunnel VPN\"}),/*#__PURE__*/e(\"p\",{children:\"SSL tunnel VPNs let companies extend access to more resources. When the user connects to the SSL VPN gateway, the browser downloads an SSL tunnel VPN app. Each vendor\u2019s app delivers active content using technologies like JavaScript or Flash, which could be an issue when a browser stops supporting that technology.\"}),/*#__PURE__*/e(\"p\",{children:\"User traffic gets passed through secure tunnels to different protected resources at the gateway. The combination of secure tunneling and a client-side app gives users simultaneous connections to network services, on-premise resources, or cloud-based resources.\"}),/*#__PURE__*/e(\"h2\",{children:\"Benefits of SSL VPNs\"}),/*#__PURE__*/e(\"p\",{children:\"An SSL VPN provides a more straightforward user experience and better security than traditional VPNs while reducing administrative overhead and expenses.\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Easy to deploy\"}),\" - Since every modern browser, both mobile and desktop, supports the latest TLS protocol, SSL VPN will work with almost any user device. Administrators do not need to modify user devices or deploy client apps. Everything happens just in time as the user connects to the gateway.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Easy to use \"}),\"- With an experience like everyday web browsing, remote workers automatically understand how the SSL VPN works with every device they use.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Easy to support\"}),\" - A simple user experience combined with near-universal browser and device compatibility makes life easier for administrators and help desks.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Support least-privilege access\"}),\" - SSL VPNs let administrators control access through policies based on principles of least privilege. Hackers can still exploit compromised devices or credentials, but they get limited access to the private network.\"]})})]}),/*#__PURE__*/e(\"h1\",{children:\"SSL VPN vs. IPsec VPN\"}),/*#__PURE__*/e(\"p\",{children:\"Most traditional VPNs use the IPsec protocol to create encrypted tunnels between a remote user\u2019s device and the company\u2019s VPN gateways. IPsec is a more capable protocol than TLS. With the right configuration, IPsec VPNs can connect users to any protected resource, whether browser-aware or not. That capability, however, comes at a figurative and literal price.\"}),/*#__PURE__*/t(\"p\",{children:[\"This complex protocol requires changes to the operating system and security software on every user\u2019s device. Each device must run an IPsec VPN client app and may require a security key or other hardware to work. Unlike an SSL VPN, administrators must correctly configure \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ipsec-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"IPsec VPN\"})}),\" gateways because they give users full access to a protected network. Thus, administrators can easily create security holes by misconfiguring the deeply complex protocol.\"]}),/*#__PURE__*/e(\"p\",{children:\"On top of the extra workload they impose, IPsec VPNs can get quite expensive due to license fees, user hardware, and network upgrades.\"}),/*#__PURE__*/e(\"h2\",{children:\"When IPsec VPNs are overkill, choose SSL VPNs\"}),/*#__PURE__*/e(\"p\",{children:\"The simplicity of SSL VPNs makes them more appropriate for most remote users. Whether on-premise, cloud-hosted, or offered by a SaaS provider, modern enterprise apps have browser interfaces. In addition to the benefits we reviewed earlier, an SSL VPN provides all the access most remote users will need without the overhead and expense of an IPsec VPN.\"}),/*#__PURE__*/e(\"p\",{children:\"Still, an SSL VPN is not a perfect solution. Getting it to work with resources and services that are not browser-aware adds overhead and complexity. Man-in-the-middle attacks, phishing, and other security threats can compromise protected resources.\"}),/*#__PURE__*/e(\"p\",{children:\"The biggest downside to an SSL VPN is that it is a VPN. It suffers from that legacy technology\u2019s weaknesses. By concentrating user traffic onto the private network, SSL VPNs increase congestion, reduce bandwidth, and add latency. Split tunneling can help, but the user experience and overall network performance will still suffer.\"}),/*#__PURE__*/e(\"p\",{children:\"SSL VPNs can also increase an attack surface due to their very public presence. The SSL VPN gateway broadcasts its presence on the public internet to be discoverable by remote users. Simple tools let hackers discover and monitor these gateways for any vulnerabilities. If over-burdened administrators take too long to deploy their VPN vendor\u2019s security patches, they give hackers a window to penetrate the network.\"}),/*#__PURE__*/e(\"h1\",{children:\"How Twingate can help\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate offers a software-based access solution with the low cost and simplicity of an SSL VPN but with the security benefits of \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust Network Access (ZTNA)\"})}),\". This modern approach to \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control\"})}),\" recognizes the distributed nature of how computing works today.\"]}),/*#__PURE__*/e(\"h2\",{children:\"From secure perimeters to distributed networks\"}),/*#__PURE__*/e(\"p\",{children:\"Legacy VPN technologies appeared when a company\u2019s resources sat on private, on-premise networks. However, networking and security paradigms have evolved to meet the needs of modern, distributed teams. Today, companies must create perimeters not around a network but around every resource an employee may need to access from anywhere in the world. Often these resources are no longer hosted on-premises either; they are often hosted in the cloud. Thus, today the internet is as much part of the network infrastructure as a private LAN.\"}),/*#__PURE__*/e(\"p\",{children:\"Additionally, fewer users are employees as companies have a dynamic mix of contractors and other third parties interacting daily with company resources.Companies have evolved from the old secure perimeter, hub-and-spoke paradigm to today\u2019s distributed network architecture. Providing access while keeping sensitive data secure requires a solution optimized for this new way of working.\"}),/*#__PURE__*/e(\"h1\",{children:\"Twingate and Zero Trust Network Access\"}),/*#__PURE__*/e(\"p\",{children:\"Rather than protecting networks, Twingate uses software-defined perimeters to make individual resources invisible from any network. Users connect directly to the resources through encrypted tunnels.\"}),/*#__PURE__*/e(\"p\",{children:\"Directly connecting users with resources eliminates VPN\u2019s network performance issues. Private networks only carry traffic destined for on-premise resources. Traffic to cloud-based resources passes along the most performant routes.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/role-based-access-control\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Role-based\"})}),\" policies combine with rules for device posture to give administrators granular control over the resources users may access. Detailed activity logs indexed by user and device make spotting unusual behavior easier and let security administrators respond to attacks faster.\"]}),/*#__PURE__*/e(\"p\",{children:\"Twingate gives companies a scalable path to modern ZTNA secure access. Compatible with existing security stacks, Twingate works with companies\u2019 current identity providers, single-sign-on, and multi-factor authentication systems. Twingate deployments can happen in phases, first protecting the most important users and resources while leaving legacy VPN solutions in place for everyone else. As more users migrate to Zero Trust access, administrative overhead falls and user productivity improves.\"}),/*#__PURE__*/e(\"h1\",{children:\"Twingate and Zero Trust are better alternatives to VPN\"}),/*#__PURE__*/e(\"p\",{children:\"SSL VPNs provide a simpler alternative to IPsec VPN that is more appropriate to the browser-compatible nature of modern enterprise applications. But an SSL VPN is still a VPN and subject to all the weaknesses this legacy technology brings.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate offers a more secure, performant, and convenient approach to secure access based on modern principles of Zero Trust Network Access. Designed for a world when users and resources can be anywhere, Twingate connects the two sides directly while keeping sensitive company data secure.\"}),/*#__PURE__*/t(\"p\",{children:[\"Find out how to deploy Twingate within minutes to protect the most critical resources while improving users\u2019 experience. Or sign up with our \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=ssl-vpn_\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"free Starter plan\"})}),\" for individuals and small teams to see Zero Trust Network Access in action.\"]})]})},{index:64,id:\"ia5UIs967\",[h]:!0,[d]:!1,[p]:\"Role-based access control (RBAC) Explained\",[u]:\"Role-based access control (RBAC) Explained\",[m]:\"role-based-access-control\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2022-03-17T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/I0eGnSvx4sBUsH2XWtTWLN24WM.png\",srcSet:\"https://framerusercontent.com/images/I0eGnSvx4sBUsH2XWtTWLN24WM.png?scale-down-to=512 512w,https://framerusercontent.com/images/I0eGnSvx4sBUsH2XWtTWLN24WM.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/I0eGnSvx4sBUsH2XWtTWLN24WM.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/I0eGnSvx4sBUsH2XWtTWLN24WM.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/I0eGnSvx4sBUsH2XWtTWLN24WM.png\",srcSet:\"https://framerusercontent.com/images/I0eGnSvx4sBUsH2XWtTWLN24WM.png?scale-down-to=512 512w,https://framerusercontent.com/images/I0eGnSvx4sBUsH2XWtTWLN24WM.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/I0eGnSvx4sBUsH2XWtTWLN24WM.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/I0eGnSvx4sBUsH2XWtTWLN24WM.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Role-based access control (RBAC) simplifies access management and makes a company\u2019s distributed resources more secure. Identity-based policies are challenging to manage and make the theft of over-permissioned credentials more damaging. By comparison, assigning users and permissions to well-defined roles makes access policies more flexible and easier to manage.\"}),/*#__PURE__*/t(\"p\",{children:[\"This article will introduce role-based access control and how it works. While RBAC has disadvantages, the productivity, security, and financial benefits far outweigh the risks. Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" access control solution can take role-based access to the next level \u2014 and we will show you how.\"]}),/*#__PURE__*/e(\"h1\",{children:\"What is RBAC?\"}),/*#__PURE__*/t(\"p\",{children:[\"In the past, organizations commonly aligned access policies with their organizational structures or assigned permissions individually on an ad hoc basis. These approaches over-permission users, giving them access to more network resources than they need. Should \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/lateral-movement\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"hackers compromise\"})}),\" over-credentialed accounts, they can penetrate deeper into the network and access more sensitive data.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-models\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Role-based access control\"})}),\" lets organizations implement least privilege access principles to minimize these risks. Rather than defining policies by workgroup or individual need, RBAC defines policies for users\u2019 various roles within the organization. This approach lets users access the network resources they need to do their job while minimizing the risks of over-permissioned accounts.\"]}),/*#__PURE__*/e(\"p\",{children:\"The various types of RBAC share three common elements:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Users\"}),\" - RBAC models consider users to be any person or system that needs access to protected resources.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Roles\"}),\" - Very few of the functions users across the organization perform are - unique to an individual. Roles group common functions so permissions can be applied to many users.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Permissions\"}),\" - These are the rules defining how a particular resource may be accessed. A resource\u2019s permissions can vary from role to role.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"When companies develop an RBAC system, they first identify types of users, roles, and the permissions needed for secure access. Each role is assigned a set of permissions that define what that role is allowed to do. Finally, users are assigned one or more roles depending on their job responsibilities.\"}),/*#__PURE__*/e(\"p\",{children:\"RBAC policies can be broad, while other network resources may be much narrower:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"All users may access email from the company WiFi network.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"HR administrators have read/write access to HR management systems.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Accounts payable administrators may generate payments.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Accounts payable supervisors may approve payments.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Note that these policies give users specific types of access to specific resources. A user must be assigned a new role to receive different permissions.\"}),/*#__PURE__*/e(\"h1\",{children:\"What are the benefits of RBAC?\"}),/*#__PURE__*/t(\"p\",{children:[\"Assigning users to roles with specific permissions makes \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control\"})}),\" more flexible and responsive while reducing administrative costs and security risks. Some benefits of RBAC include:\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Flexibility\"}),\" - RBAC models optimize access policies to match an organization\u2019s unique requirements. Levels of responsibility, separation of duties, and other business rules can be built into the role and permission definitions.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Ease of maintenance\"}),\" - RBAC lets companies automate permission assignment and reduce administrative burdens. Administrators can onboard new users quickly through simple interfaces. Changes to roles or permissions automatically apply to all users with those roles.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Consistency and compliance\"}),\" - Enterprises can apply consistent access policies across their organizations. Auditing tools can identify policy conflicts and document compliance with regulations or industry best practices.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Lower risk exposure\"}),\" - RBAC implements least privilege principles to shrink an organization\u2019s attack surface. When hackers compromise a user account, RBAC constrains the number of resources they may access.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"Implementing RBAC also has a financial benefit. A decade after defining RBAC standards, the National Institute of Standards and Technology (NIST) evaluated RBAC\u2019s economic impact. The report estimated that companies were saving $1.8 billion per year through process efficiencies alone.\"}),/*#__PURE__*/e(\"h1\",{children:\"Four RBAC models\"}),/*#__PURE__*/e(\"p\",{children:\"Government agencies, enterprises, and IT vendors were already implementing elements of role-based access when the NIST introduced the RBAC model in 1992. A lack of consistency, however, made adoption difficult. The NIST shepherded RBAC through the standards-setting process until its official adoption in 2004 as ANSI/INCITS 359-2004, Role Based Access Control. This standard defined four RBAC models with progressively greater capabilities:\"}),/*#__PURE__*/e(\"h2\",{children:\"Flat RBAC\"}),/*#__PURE__*/e(\"p\",{children:\"Flat BRAC consists of the users, roles, and permissions discussed earlier. Permissions are assigned to a role, and users assigned to a role acquire those permissions. Many-to-many assignments let users have many roles. Likewise, permissions may be assigned to many roles.\"}),/*#__PURE__*/e(\"p\",{children:\"Flat RBAC systems must let administrators see each user\u2019s assigned roles for auditing purposes. Additionally, administrators must have visibility of all the users assigned to each role.\"}),/*#__PURE__*/e(\"h2\",{children:\"Hierarchical RBAC\"}),/*#__PURE__*/e(\"p\",{children:\"Building upon Flat RBAC, Hierarchical RBAC systems let organizations define role hierarchies. These hierarchies can be general or restricted to structures such as organizational trees.\"}),/*#__PURE__*/e(\"p\",{children:\"Hierarchical RBAC systems can simplify role-based access control by reducing the number of unique roles an organization must manage. However, inheritance creates a risk of senior users acquiring more permissions than they truly need. Access to production servers, for example, should not roll up to the CEO.\"}),/*#__PURE__*/e(\"p\",{children:\"Hierarchical RBAC systems let companies structure hierarchies and roles to limit inheritance.\"}),/*#__PURE__*/e(\"h2\",{children:\"Constrained RBAC\"}),/*#__PURE__*/e(\"p\",{children:\"Constrained RBAC adds separation of duties (SOD) features to Hierarchical RBAC. For centuries, organizations have used SOD to control quality, limit fraud, and prevent conflicts of interest.\"}),/*#__PURE__*/e(\"p\",{children:\"Constraints may be set statically to prevent users from having two conflicting roles. The accounts payable roles mentioned earlier are examples of static constraints. Letting the same user generate and approve payments creates opportunities for fraud. Constraints prevent this conflict of interest.\"}),/*#__PURE__*/e(\"p\",{children:\"Constraints may also apply dynamically to prevent the permissions of certain roles from being used at the same time. For example, an employee role lets users submit expense reports that a manager can approve. Dynamic constraints ensure that managers cannot approve their expense reports.\"}),/*#__PURE__*/e(\"h2\",{children:\"Symmetric RBAC\"}),/*#__PURE__*/e(\"p\",{children:\"The fourth level, Symmetric RBAC, addresses the needs of large enterprises. Different administrators can assign users, roles, and permissions in different workgroups. Symmetric RBAC adds auditing functions that allow the review of permissions by user and by role. The system can show every permission a user receives directly from their assigned roles and indirectly from their inherited roles.\"}),/*#__PURE__*/e(\"h1\",{children:\"Disadvantages of RBAC\"}),/*#__PURE__*/e(\"p\",{children:\"Although role-based access control offers clear benefits, organizations often run into roadblocks that make fully implementing RBAC difficult.\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Complex deployment\"}),\" - Developing a comprehensive definition of users, roles and permissions is not trivial. Even large companies rarely have the expertise to define role-based policies. Instead, enterprises must bring in specialized role engineers to help them through the process.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Balancing security with simplicity\"}),\" - The more narrowly an organization defines its roles to improve security, the more administrative burdens it creates. In addition, there are always certain combinations of users and resources that do not fit neatly into the RBAC model. Extra security policies must address the resulting exceptions.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Layered roles and permissions\"}),\" - Over-permissioning is still possible within an RBAC system when users are assigned or inherit too many roles. Security administrators must constantly audit the assignment of roles and permissions to ensure least privilege principles are consistently applied.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"One of the largest obstacles organizations confront when implementing RBAC is the perceived cost of the deployment process. The NIST economic analysis found that American businesses spent $5 billion implementing RBAC. Ultimately, these up-front costs were offset by $11 billion in operational savings.\"}),/*#__PURE__*/e(\"h1\",{children:\"How Twingate can help\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate offers a simple solution for companies migrating to Zero Trust, role-based access control. Twingate\u2019s all-software solution requires no changes to \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/network-architecture\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"network infrastructure\"})}),\" or resource settings. This light touch means you can implement Zero Trust access control in phases. Prioritize the teams and resources most at risk before expanding to the rest of the company.\"]}),/*#__PURE__*/e(\"p\",{children:\"Twingate allows admins to set policies and contextual permissions based on device posture, geolocation and other security risks. These policies are enforced at the resource and the client before the two endpoints connect.\"}),/*#__PURE__*/e(\"h1\",{children:\"Role-based access control with Twingate\"}),/*#__PURE__*/e(\"p\",{children:\"Role-based access control is an essential element in modern network security and access. Given the distributed way business works today, VPN and other legacy technologies impose too many performance, productivity, and security penalties. Setting RBAC policies within a Zero Trust secure access solution such as Twingate makes access easy to manage and networks more secure.\"}),/*#__PURE__*/t(\"p\",{children:[\"Our \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=role-based-access-control\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"free starter tier\"})}),\" lets you try Zero Trust Network access at home or with small teams. Or contact us to learn how Twingate can make role-based access control simpler, more scalable, and more secure.\"]})]})},{index:65,id:\"isb10BGW4\",[h]:!0,[d]:!1,[p]:\"VPN Split Tunneling with Twingate\",[u]:\"VPN Split Tunneling with Twingate\",[m]:\"vpn-split-tunneling\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2022-03-10T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/tis4xmNSiXtuXdgdhqVZOZJQ7U.png\",srcSet:\"https://framerusercontent.com/images/tis4xmNSiXtuXdgdhqVZOZJQ7U.png?scale-down-to=512 512w,https://framerusercontent.com/images/tis4xmNSiXtuXdgdhqVZOZJQ7U.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/tis4xmNSiXtuXdgdhqVZOZJQ7U.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/tis4xmNSiXtuXdgdhqVZOZJQ7U.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/tis4xmNSiXtuXdgdhqVZOZJQ7U.png\",srcSet:\"https://framerusercontent.com/images/tis4xmNSiXtuXdgdhqVZOZJQ7U.png?scale-down-to=512 512w,https://framerusercontent.com/images/tis4xmNSiXtuXdgdhqVZOZJQ7U.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/tis4xmNSiXtuXdgdhqVZOZJQ7U.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/tis4xmNSiXtuXdgdhqVZOZJQ7U.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"VPN split tunneling is a partial solution to the performance and usability issues VPN technologies create. By concentrating all remote traffic through gateways, VPN systems burden \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/network-architecture\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"network infrastructure\"})}),\" and degrade the user experience. Split tunneling can fix some of these issues. However, setting up split tunneling the wrong way can create holes in a company\u2019s secure perimeter.\"]}),/*#__PURE__*/t(\"p\",{children:[\"In this article, we will explain the intention behind VPN split tunneling, the benefits it offers, as well as the risks it creates. We will also explain why split tunneling is another reason companies are switching from VPN systems to modern access control solutions based on \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\".\"]}),/*#__PURE__*/e(\"h1\",{children:\"What is VPN Split Tunneling\"}),/*#__PURE__*/e(\"p\",{children:\"VPN split tunneling routes protect traffic through a company\u2019s VPN gateway while sending less sensitive traffic through the user\u2019s local network and the public internet. Split tunneling solves several problems inherent to VPN\u2019s design.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"VPN gateway performance\"}),\" - By default, VPN systems encrypt and route all user traffic through a VPN gateway. The encryption applies to user emails, video conference streams, and Facebook scrolling. The VPN gateway must decrypt all this traffic and then encrypt everything going back to the user. With fixed processing capacity, gateway appliances struggle with sudden surges in remote activity.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Network performance\"}),\" - VPN imposes a burden on the private network by concentrating all remote traffic. The private network must route all traffic, whether or not it is work-related. Networks that were not designed for high volume remote traffic will need expensive upgrades to restore bandwidth to optimal levels.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Endpoint performance\"}),\" - Congested VPN gateways and bandwidth-constrained private networks directly impact the user experience. In addition, user traffic must also travel through the private network to cloud resources and back. This backhaul can significantly increase latency, further undermining productivity.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Access to local resources\"}),\" - The all-or-nothing nature of VPN default settings can block access to local resources. A remote user sitting in a co-working space, for example, will not be able to access local networked printers while their corporate VPN is engaged.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Access to multiple resources\"}),\" - Companies improve network security by segmenting their networks and assigning each subnet its own VPN gateway. Users can only connect to one gateway \u2014 and one set of resources \u2014 at a time. They must disconnect and reconnect as they switch between resources.\"]}),/*#__PURE__*/e(\"h1\",{children:\"What are the benefits of VPN Split Tunneling?\"}),/*#__PURE__*/e(\"p\",{children:\"VPN split tunneling routes essential, protected traffic and non-essential, personal traffic differently. The protected traffic travels through an encrypted tunnel to the company\u2019s VPN gateway. The remote user\u2019s local network connection handles the non-essential traffic. Splitting traffic like this addresses the issues VPN creates.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"VPN gateway performance\"}),\" - With less traffic arriving at the VPN gateway, the appliance\u2019s overall workload is reduced, and congestion eases. Split tunneling lets a company\u2019s existing gateways handle more remote users, which could postpone the need for expensive upgrades.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Network performance\"}),\" - As \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN gateway traffic declines\"})}),\", so does network traffic. Administrators can further improve performance by splitting video conferencing and other bandwidth-intensive activities from the VPN tunnel. However, traffic destined for cloud resources will still get backhauled through the company network.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Endpoint performance\"}),\" - The gateway and network performance improvement will bring the remote user experience closer to the in-office experience. Shifting video conferencing apps to the user\u2019s internet connection may improve video and audio quality.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Access to local resources\"}),\" - VPN split tunneling applies to all network traffic on users\u2019 devices, not just their internet traffic. As a result, users regain access to printers and other resources on their local networks.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Access to multiple resources\"}),\" - Companies can configure VPN split tunneling so users can have multiple active VPN sessions. This configuration eliminates the need for users to switch between gateways and improves productivity.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Different types of split tunneling\"}),/*#__PURE__*/e(\"p\",{children:\"When companies want to take advantage of VPN split tunneling\u2019s benefits, they can combine one or more of the following approaches:\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Split-include\"}),\" - An \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-list\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control list (ACL)\"})}),\" defines which IP addresses or apps must be included in the VPN\u2019s encrypted tunnel. All other traffic routes through the user\u2019s local network or onto the public internet. This may be useful in bring-your-own-device scenarios. Administrators can define the company-related traffic to include in the secure VPN tunnel while leaving users\u2019 personal activity alone.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Split-exclude\"}),\" - Also referred to as inverse split tunneling, this approach defines which IP addresses or apps to exclude from the encrypted tunnel. All other user traffic passes through the VPN gateway. Administrators can use split-exclude tunneling to shift bandwidth-intensive traffic off the private network.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Dynamic\"}),\" - When resources rely on pools of IP addresses or pass through NAT firewalls, the destination IP address will change from session to session. Rather than creating complex static ACL rules, dynamic split tunneling applies to exclude or include rules when a DNS server resolves domains.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Dual-stack networking\"}),\" - In many cases, the ACL rules that a VPN system applies to IPv4 traffic will not automatically apply to IPv6 traffic. Administrators can take advantage of this to apply separate rules for any applications that use IPv6. Otherwise, administrators should ensure that their VPN systems apply consistent rules to both stacks.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Are there any risks with split tunneling?\"}),/*#__PURE__*/e(\"p\",{children:\"VPN split tunneling alleviates the performance and usability issues associated with VPN\u2019s hub-and-spoke topology. However, those benefits come at a cost. The traffic that does not pass through a VPN gateway does not pass through the company\u2019s security stack.\"}),/*#__PURE__*/e(\"p\",{children:\"A split-include implementation may be particularly risky. Letting much of a user\u2019s traffic bypass these systems create opportunities for hackers to compromise the user\u2019s device and penetrate the company network.\"}),/*#__PURE__*/e(\"p\",{children:\"Exclusion rules, whether static or dynamic, can be more secure. Administrators define the specific apps, IP addresses, or domains that can safely bypass the security stack. For example, a video conferencing service\u2019s internal security may justify excluding its traffic from the company\u2019s security measures.\"}),/*#__PURE__*/e(\"p\",{children:\"Another risk associated with VPN split tunneling is the impact on network visibility. Certain types of user traffic will not be monitored, making it harder to identify malware or hackers moving through the network. Split tunneling can also impact security compliance as inappropriate user activity may go unmonitored.\"}),/*#__PURE__*/e(\"p\",{children:\"The complexity of VPN split tunneling configurations also creates risk. Conflicting or inconsistent rules could open pathways into the network. In addition, administrators need to look closely at the applications they exclude from VPN tunnels. For example, how should the company handle a video conferencing app with file-sharing capabilities?\"}),/*#__PURE__*/e(\"h1\",{children:\"How Twingate can help\"}),/*#__PURE__*/e(\"p\",{children:\"In today\u2019s distributed network environment, the concentration of traffic imposed by VPN technologies does not work. Companies have many resources stored in the cloud, and work-from-home policies have become common. VPN split tunneling is a partial solution that creates problems of its own.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate\u2019s modern approach to secure access creates a distributed network architecture designed for the way companies work today. All encrypted connections between user devices and protected resources are routed along the most performant direct path:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Traffic between a user and an on-premise resource travels over the company network.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Traffic between a user and cloud-hosted resources travels over the public internet.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Non-essential traffic never enters secure tunnels.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Twingate\u2019s architecture enables split tunneling by default. The user\u2019s local network and internet connection handle all non-essential traffic. All traffic destined for protected resources passes through dedicated encrypted tunnels. Only traffic for on-premise resources reaches the private network \u2014 traffic between the user and protected cloud resources tunnels across the public internet.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate\u2019s approach eliminates the issues that VPN technologies create. Networks become more performant and simpler to manage without legacy VPN technologies. The user experience also improves as they access multiple resources through low-latency connections.\"}),/*#__PURE__*/e(\"h1\",{children:\"Twingate simplifies access control\"}),/*#__PURE__*/e(\"p\",{children:\"VPN split tunneling is a partial fix to the issues created by VPN\u2019s aging technology. Even when a company does everything right, maintaining these systems pile more responsibilities onto network administrators. But VPN split tunneling is easy to do wrong. And that opens holes in the secure perimeter that hackers could breach at any time.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate lets companies create distributed network architectures. Users and resources connect directly, freeing private networks from unnecessary traffic and maximizing the user experience. And Twingate\u2019s split-tunneling-by-default policies remove non-essential traffic from the company\u2019s private network.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=vpn-split-tunneling_\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact us\"})}),\" to learn more about Twingate\u2019s distributed network architecture. Or try it yourself by joining our free plan for individuals and small teams.\"]})]})},{index:66,id:\"v8w_q5eWb\",[h]:!0,[d]:!1,[p]:\"What is Tailscale?\",[u]:\"What is Tailscale?\",[m]:\"tailscale-peer-to-peer\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2022-03-08T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/UvC4YJgLu0BSdiE4kdnshbItWk.png\",srcSet:\"https://framerusercontent.com/images/UvC4YJgLu0BSdiE4kdnshbItWk.png?scale-down-to=512 512w,https://framerusercontent.com/images/UvC4YJgLu0BSdiE4kdnshbItWk.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/UvC4YJgLu0BSdiE4kdnshbItWk.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/UvC4YJgLu0BSdiE4kdnshbItWk.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/UvC4YJgLu0BSdiE4kdnshbItWk.png\",srcSet:\"https://framerusercontent.com/images/UvC4YJgLu0BSdiE4kdnshbItWk.png?scale-down-to=512 512w,https://framerusercontent.com/images/UvC4YJgLu0BSdiE4kdnshbItWk.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/UvC4YJgLu0BSdiE4kdnshbItWk.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/UvC4YJgLu0BSdiE4kdnshbItWk.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Tailscale is a secure, peer-to-peer VPN alternative. Founded in 2019 by former Google engineers, this Canadian company launched its access control product in early 2020 \u2014 just as work from home went into overdrive. Unlike the hub-and-spoke topology of traditional VPN solutions, Tailscale creates a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/mesh-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"virtual mesh network\"})}),\" between a company\u2019s network nodes. These nodes could be on-premises resources, cloud applications, managed devices, or user-owned devices.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Promising rapid deployments and simpler administration, Tailscale pitches itself as a way for companies to seamlessly migrate to modern, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust network architectures\"})}),\".\"]}),/*#__PURE__*/e(\"h1\",{children:\"Tailscale\"}),/*#__PURE__*/e(\"h2\",{children:\"About Tailscale\"}),/*#__PURE__*/e(\"p\",{children:\"Tailscale uses the open-source WireGuard protocol to create encrypted peer-to-peer connections between nodes on a network. Tailscale eliminates the performance bottlenecks created by VPN gateways and replaces them with a system based on two components:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Client app running on user devices, servers, cloud resources, and other network nodes.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Proprietary coordination server provides authentication, distributes WireGuard public keys, and sets access control policies.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Tailscale\u2019s approach separates the control plane from the data plane. As a result, a company\u2019s data never passes through Tailscale\u2019s server.\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"Applications\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Personal applications for remote access to home networks.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Alternative approach for site-to-site VPN.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Remote access solution for businesses.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Access solution for DevOps and other teams.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Decentralized Zero Trust network architecture\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"Benefits\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"No concentration of traffic through gateway appliances.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Higher throughput and lower latency.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"P2P stabilizes networks by reducing single points of failure.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Software solution requires few changes to networks or resources.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"All price tiers support popular single sign-on and multi-factor authentication providers.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"WireGuard end-to-end encryption is more secure since private keys never - leave the nodes.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Tailscale ACLs limit the nodes users may access.\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"Considerations\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Still in development, business-critical features may not be available.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Okta and Active Directory integrations only support authentication, not user management.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"SAML and OIDC support is only available at the custom price tier.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Tailscale ACLs do not synchronize with existing security systems.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Tailscale ACLs must be written using Tailscale\u2019s JSON format.\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"Twingate\"}),/*#__PURE__*/e(\"h2\",{children:\"About Twingate\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate helps companies migrate to modern \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust Network Access (ZTNA)\"})}),\" architectures without disrupting their daily operations. ZTNA dramatically reduces a company\u2019s attack surface while constraining the blast radius of successful security breaches.\"]}),/*#__PURE__*/e(\"p\",{children:\"Twingate\u2019s approach hides on-premises and cloud-based resources behind software-defined perimeters. Scanning tools can no longer discover the public IP address of outward-facing resources. Hackers who breach a private network can no longer see the attached resources.\"}),/*#__PURE__*/e(\"p\",{children:\"Beyond security, Twingate\u2019s distributed technology improves performance and the user experience by eliminating the need for VPN gateways. Connections between user devices and resources follow the most direct, low-latency routes. Traffic between users and cloud resources no longer passes through private networks, improving overall network performance.\"}),/*#__PURE__*/e(\"h2\",{children:\"Applications\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Controlling access for remote, on-premises, and third-party users.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Controlling access to on-premises and cloud resources.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Migrating to more secure, performant Zero Trust architectures.\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"Benefits\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Eliminate redundant access control systems.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Improve security posture without changing networks, resources, or user devices.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Coexists with existing VPN systems and integrates with security stack.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Simple consoles unify user management and access management.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Deployments take as little as 15 minutes.\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"Considerations\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Monthly cost is based on user count and network count.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Some advanced features are only available in the Enterprise tier.\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"Tailscale Security Capabilities Vs. Twingate and Zero Trust\"}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust is the modern approach to secure network access that companies need to handle today\u2019s security challenges. Sophisticated cybercriminals, distributed workforces, and ever-more decentralized network architectures dramatically weaken companies\u2019 security postures. VPN makes things worse. Easily discoverable on the public internet, VPN gateways are vulnerable to attack. And VPN\u2019s permissive design gives compromised devices full access to protected networks.\"}),/*#__PURE__*/e(\"p\",{children:\"Tailscale and Twingate address these issues by separating the control plane from the data plane. In Tailscale\u2019s case, the open-source WireGuard protocol handles the data plane while the proprietary coordination server handles the control plane. Each node, however, is issued a unique IP address that companies typically publish to a DNS server.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate\u2019s approach hides all resources behind software-defined perimeters, eliminating the need for visible IP addresses entirely. Rather than centralizing policy enforcement, Twingate pushes the execution of access policies to both user devices and protected resources.\"}),/*#__PURE__*/e(\"h1\",{children:\"Tailscale Performance Vs. Twingate\"}),/*#__PURE__*/e(\"p\",{children:\"VPN and other legacy remote access technologies funnel user traffic through gateways. Even when running as virtual instances, these gateways become chokepoints in the network. All user traffic passes through the gateway whether resources are on-premises or in the cloud. A sudden spike in users working from home destroys throughput and increases latency. Fixing these issues requires expensive, time-consuming upgrades.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate and Tailscale directly connect user devices and resources to eliminate these issues entirely. The only remote traffic accessing a company\u2019s private network is going to on-premises resources. Traffic meant for cloud-based resources gets routed across the public internet.\"}),/*#__PURE__*/e(\"h1\",{children:\"Tailscale Ease of Use Vs. Twingate\"}),/*#__PURE__*/t(\"p\",{children:[\"In addition to these impacts, VPN technologies are getting more difficult to manage. Network segmentation slows \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/lateral-movement\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"lateral movement\"})}),\" during security breaches. Since each segment requires its own VPN gateway, however, networks become more complex and brittle. Since these VPN gateways only protect private networks, cloud-based resources require unique access control solutions that are often specific to each cloud service provider.\"]}),/*#__PURE__*/e(\"p\",{children:\"Besides the growing administrative overhead, multiple overlapping VPN systems undermine user productivity. Remote users must connect and disconnect their VPN clients as they switch between resources. And since VPN only applies to remote users, office users must use a different system to access resources from their desks.\"}),/*#__PURE__*/e(\"p\",{children:\"Both Twingate and Tailscale eliminate this fragmentation by providing a single access control system for on-premises and cloud resources. The user experience improves. And access administration becomes much simpler.\"}),/*#__PURE__*/e(\"h1\",{children:\"Tailscale scalability Vs Twingate\"}),/*#__PURE__*/t(\"p\",{children:[\"The sudden shift to \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/remote-workforce-security-fireside\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"remote work\"})}),\" policies exposed the risk of coupling access with architecture. Even with virtualization, VPN is an integral part of a company\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/network-architecture\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"network architecture\"})}),\". Networks designed for large on-premises workforces could not change rapidly or cheaply to the new normal of large remote workforces.\"]}),/*#__PURE__*/e(\"p\",{children:\"As discussed earlier, modern software-based solutions such as those from Tailscale and Twingate decouple access and architecture. Adding users and changing policies does not impact the underlying network.\"}),/*#__PURE__*/e(\"p\",{children:\"Tailscale, however, does not support features many businesses expect. Integration with Okta and Active Directory, for example, is limited to authentication only. Changes made to group or user policies in these third-party solutions do not propagate to the Tailscale server. This may not be an issue for Tailscale\u2019s early adopters. But companies with more demanding networks may prefer Twingate\u2019s more robust feature set.\"}),/*#__PURE__*/e(\"h1\",{children:\"Tailscale Support Vs. Twingate Support\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate and Tailscale provide knowledge bases, community forums, and email support resources. Priority support options are available to customers subscribing to customized service tiers. Unlike Twingate, Tailscale extends email support to customers at its free pricing tiers.\"}),/*#__PURE__*/e(\"h1\",{children:\"Enhancing security with Twingate\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s modern, Zero Trust-based solution offers benefits beyond \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control\"})}),\" with advanced features such as device posture enforcement, deep activity logging, and extending multi-factor authentication to vulnerable services.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Administrators can define access control policies based on the state of each user\u2019s devices. Operating system version, antivirus status, and other device states can determine whether a user may access sensitive resources. As company-managed systems get replaced by \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/byod\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"user-owned devices\"})}),\", the ability to deny access based on device posture further reduces a company\u2019s attack surface.\"]}),/*#__PURE__*/e(\"p\",{children:\"Twingate indexes its extensive logs of network activity by user and device. These logs help identify unusual behavior that may be a sign of a breach in progress. Reducing the time hackers have for lateral movement minimizes the attack\u2019s impact.\"}),/*#__PURE__*/e(\"p\",{children:\"One consequence of lateral movement is hackers\u2019 ability to escalate their access to SSH and other network services. Twingate gives customers more control over privileged access by extending multi-factor authentication (MFA) to these services. Any attempt to use SSH gets challenged and logged, reducing the time it takes to identify inappropriate use.\"}),/*#__PURE__*/e(\"h1\",{children:\"Twingate\u2019s secure Zero Trust solution is ready for business today\"}),/*#__PURE__*/e(\"p\",{children:\"VPN and other legacy access control technologies impede productivity, performance, and security. With resources and users distributed far beyond the office, companies need a modern approach to secure access control.\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s solution replaces the weaknesses and risks of VPN while making Zero Trust Network Access architectures much simpler to adopt. Try it out yourself with Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=tailscale-peer-to-peer\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"free Starter tier\"})}),\" for individuals and small teams. Or contact Twingate to learn how your organization can deploy Zero Trust security in minutes.\"]})]})},{index:67,id:\"ImBco2Stv\",[h]:!0,[d]:!1,[p]:\"Announcing support for Windows Start Before Logon (SBL)\",[u]:\"Windows Start Before Logon\",[m]:\"start-before-logon\",[g]:\"\",[w]:\"Alex Marshall\",[f]:\"2022-03-04T00:00:00.000Z\",[y]:\"KI2UGBfh7\",[b]:T({src:\"https://framerusercontent.com/images/Xhhs47HxYqL1OQzRF5WoK9idrs.png\",srcSet:\"https://framerusercontent.com/images/Xhhs47HxYqL1OQzRF5WoK9idrs.png?scale-down-to=512 512w,https://framerusercontent.com/images/Xhhs47HxYqL1OQzRF5WoK9idrs.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/Xhhs47HxYqL1OQzRF5WoK9idrs.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/Xhhs47HxYqL1OQzRF5WoK9idrs.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/Xhhs47HxYqL1OQzRF5WoK9idrs.png\",srcSet:\"https://framerusercontent.com/images/Xhhs47HxYqL1OQzRF5WoK9idrs.png?scale-down-to=512 512w,https://framerusercontent.com/images/Xhhs47HxYqL1OQzRF5WoK9idrs.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/Xhhs47HxYqL1OQzRF5WoK9idrs.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/Xhhs47HxYqL1OQzRF5WoK9idrs.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Organizations can incur heavy burdens when implementing new security paradigms like \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\". In addition to challenging traditional network perimeter models, Zero Trust models require changes to the way administrators manage both users and their devices, both of which require access to company resources. Windows devices are normally centrally managed by a Domain Controller, which can introduce additional challenges when users work remotely. To that end, we are excited to announce the launch of Twingate support for Windows Start Before Logon (SBL). Twingate SBL overcomes challenges in the on-premise Active Directory model by establishing a secure remote connection before the user logs on, removing headaches for users and admins.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Remain Connected Even Outside the Office\"}),/*#__PURE__*/t(\"p\",{children:[\"With \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/windows-sbl\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Windows Start Before Logon (SBL)\"})}),\", admins can maintain connectivity between devices outside the office, and the resources users need access to, thus reducing friction for admins who struggle to push group policy object (GPO) updates to a hybrid workforce. Users on Windows devices will be able to establish a secure remote connection from anywhere, allowing them to work comfortably from any location. Additionally, users will be able to update the password for their devices while in roaming status without finding themselves locked out of their corporate network because their device password and domain password are out of sync.\"]}),/*#__PURE__*/e(\"p\",{children:\"In the current model, Windows admins who manage on-premise Active Directory set group policies to limit functionality, such as allowing or denying specific startup scripts, access to shared drives, and other features. Still, devices must be connected to the organization\u2019s domain controller to receive these updates. As a result, users who roam or work from other locations may not establish a proper remote connection.\"}),/*#__PURE__*/e(\"p\",{children:\"Without SBL, a user\u2019s password can end up out of sync with their centrally stored password in Active Directory. By connecting users to their corporate network before login, SBL can authenticate their device against the corporate network domain controller, ensuring it can receive updates, including group policy and password changes. By implementing SBL, admins won\u2019t have to perform as many manual password changes and resets for users who do not follow a traditional work model of accessing their corporate network from inside the office.\"}),/*#__PURE__*/e(\"p\",{children:\"SBL is also a critical step in streamlining user and device authentication processes. Twingate enables our customers to move beyond outdated security and networking paradigms, and we are constantly improving how we authenticate access based on device and user information. With SBL, we are talking another step forward to refine our Zero Trust solution and eliminate as many hurdles as possible\"}),/*#__PURE__*/e(\"h1\",{children:\"Zero Trust Made Easy\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate was founded with a mission to make Zero Trust easy for companies of all sizes, and we are thrilled to be able to support our Windows-based clients with a secure solution to authenticate roaming users. The Zero Trust journey involves many different teams: IT, DevOps, end-users, and we\u2019re excited to continue to deliver enterprise-grade services with consumer-grade usability.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=start-before-logon\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact Twingate\"})}),\" to learn how to support your organization\u2019s hybrid workforce, or subscribe to our \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"free Starter tier\"})}),\" to see how individuals and small teams benefit from Zero Trust access.\"]})]})},{index:68,id:\"YLnbbOU2R\",[h]:!0,[d]:!1,[p]:\"Simple & Secure Access to Kibana on AWS\",[u]:\"Kibana on AWS\",[m]:\"aws-kibana\",[g]:\"\",[w]:\"Jimmy Li\",[f]:\"2022-03-04T00:00:00.000Z\",[y]:\"nwIUHELao\",[b]:T({src:\"https://framerusercontent.com/images/AfY3TGvv88aaPOcaQSXjmxdo.png\",srcSet:\"https://framerusercontent.com/images/AfY3TGvv88aaPOcaQSXjmxdo.png?scale-down-to=512 512w,https://framerusercontent.com/images/AfY3TGvv88aaPOcaQSXjmxdo.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/AfY3TGvv88aaPOcaQSXjmxdo.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/AfY3TGvv88aaPOcaQSXjmxdo.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/AfY3TGvv88aaPOcaQSXjmxdo.png\",srcSet:\"https://framerusercontent.com/images/AfY3TGvv88aaPOcaQSXjmxdo.png?scale-down-to=512 512w,https://framerusercontent.com/images/AfY3TGvv88aaPOcaQSXjmxdo.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/AfY3TGvv88aaPOcaQSXjmxdo.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/AfY3TGvv88aaPOcaQSXjmxdo.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"If you use AWS, what\u2019s the best way to securely access your AWS resources like Kibana? One option is to use a VPN like AWS Client VPN, but the setup process can be quite involved and there are \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/aws-vpn-pricing\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"hidden costs\"})}),\". An alternative is a Zero Trust solution like \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=aws-kibana\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate\"})}),\".\"]}),/*#__PURE__*/e(\"p\",{children:\"In this guide, we\u2019ll walk through how in just a few minutes, you can set up secure access to Kibana and all of your other AWS resources with just a single line of code using Twingate. If you run things on GCP or on-prem as well, you can also use Twingate as a single solution to manage your hybrid or multi-cloud architecture.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=gy7feeuoSPM\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to securely access Kibana and other AWS resources using Twingate in 4 minutes\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"Please also join us in our \",/*#__PURE__*/e(s,{href:\"https://forum.twingate.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"community forum\"})}),\" to share and discuss your experience and any other use cases you\u2019ve discovered!\"]}),/*#__PURE__*/e(\"h1\",{children:\"Prerequisites\"}),/*#__PURE__*/e(\"p\",{children:\"If you haven\u2019t already, launch an EC2 instance. This will be where we\u2019ll deploy the Twingate Connector later on. We support all major Linux distributions.\"}),/*#__PURE__*/e(\"p\",{children:\"The Twingate Connector will grant you access to your cloud resources. If you haven\u2019t done so already, the video below shows how to deploy an example resource on AWS. Note that you don\u2019t need Public IP addresses for these resources \u2014 Twingate will be able to connect to them via just their Private IP addresses.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=zm3xpeOSV8I\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to deploy a resource on AWS\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"Sign up for Twingate\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate Starter is a new free plan that is designed for personal use and small teams. If you don\u2019t have an account already, please click \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=aws-kibana\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\" and follow the simple steps to sign up for a Starter account and begin the initial setup. Once you have an account, there are 5 simple steps to get up and running.\"]}),/*#__PURE__*/e(\"h1\",{children:\"1. Create a Remote Network\"}),/*#__PURE__*/e(\"p\",{children:\"After creating a Twingate account, from the main \u201CNetwork\u201A page, add a new Remote Network and give it a name. This represents the network we\u2019re going to connect to \u2014 in this case, that would be AWS.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=Rb-ugV-msPc\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to create a Remote Network\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"2. Add a Connector\"}),/*#__PURE__*/t(\"p\",{children:[\"The next step is to deploy a Twingate Connector, which is a piece of software that allows for secure access to your remote network and the services running on it. In addition to AWS, it can also be deployed to other cloud instances (\",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/gcp-wordpress-staging-environment\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"GCP\"})}),\", Azure, etc.) as well as your home devices, including \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/synology-nas\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Synology NAS\"})}),\" and \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/raspberry-pi-home-assistant\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Raspberry Pi\"})}),\".\"]}),/*#__PURE__*/e(\"h2\",{children:\"Generate Connector tokens\"}),/*#__PURE__*/e(\"p\",{children:\"In this case, we\u2019ll set it up on AWS. Click on one of the automatically generated Connectors (the names are random) and complete the following steps:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Click on Linux as the deployment method\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Generate tokens. You\u2019ll be prompted to sign in again, after which you should see two new tokens.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Copy the automatically generated shell command. You will soon run this command on your EC2 instance to install the Connector there.\"})})]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=GfCgunxkW8M\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to generate Connector tokens\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"Deploy the Connector on the Remote Network\"}),/*#__PURE__*/e(\"p\",{children:\"If you don\u2019t already have one, create a new VM instance on AWS where we\u2019ll deploy the Twingate Connector. We suggest giving the VM instance the same name as the Connector for easy association. After the instance is up and running, connect to it using whichever method you prefer and paste in the command that was automatically generated by your Twingate Connector. After the command completes, you should see that the Connector status has turned green, indicating that it was successfully deployed.\"}),/*#__PURE__*/t(\"p\",{children:[\"\\xf0\u0178\u017D\\xa5 \",/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=LEluAnYNNBQ\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to deploy a Connector on AWS\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"3. Add a Resource\"}),/*#__PURE__*/e(\"p\",{children:\"Now that you\u2019ve deployed a Twingate Connector on AWS, you can get remote access to any other resource running on the same VPC subnet. You can configure your resources not to have a Public IP address, but you will still be able to access them via Twingate.\"}),/*#__PURE__*/e(\"p\",{children:\"Go back to your Remote Network and click on the \u201CAdd Resource\u201A link. In the popup, click on the \u201CCIDR Address\u201A box, choose a Label name for the Resource, enter the private IP address of your resource\u2019s VM instance, and click \u201CAdd Resource\u201A. Congrats! You now have secure, private access to Kibana on AWS. The same steps can be repeated for any other AWS resources you have.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=3mldnJh2bis\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to add a Resource\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"4. Download the Twingate client\"}),/*#__PURE__*/e(\"p\",{children:\"All that\u2019s left to do now is to install Twingate on your device (we support Windows, Mac, Linux and have apps for iOS and Android) to authenticate your account and authorize your access to the instance. As an example, let\u2019s walk through setting up the Twingate client on macOS.\"}),/*#__PURE__*/t(\"p\",{children:[\"First, download and install the macOS app \",/*#__PURE__*/e(s,{href:\"https://api.twingate.com/download/darwin\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\". Type in the Network URL that you chose when you signed up (the \",/*#__PURE__*/e(\"code\",{children:\"[abc]\"}),\" part of \",/*#__PURE__*/e(\"code\",{children:\"[abc].twingate.com\"}),\") and click \u201CJoin Network\u201A. You\u2019ll be asked to log in using the same account you used to sign up. After signing in, you\u2019ll see that Twingate is connected with access to the Resource you created. Click on \u201COpen in Browser\u2026\u201A and you should see your resource is accessible via the Private IP address of your VM instance, even though it has no public IP address.\"]}),/*#__PURE__*/e(\"p\",{children:\"Finally, disconnect from Twingate and try accessing the resource again \u2014 you should see that it\u2019s completely inaccessible.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=_X5WmJtGB5U\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to access your Resource using the Twingate client\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Congrats! You\u2019ve finished setting up Twingate for AWS and used it to get secure access to Kibana. Anything else that you deploy to the same VPC (e.g., a web app, dashboard, database, etc.) can also be added as a Resource, and you would have secure access for those as well using the same Connector.\"}),/*#__PURE__*/e(\"p\",{children:\"If you also run things on GCP or on-prem, you can use Twingate as a single solution to manage your hybrid or multi-cloud architecture. Just follow similar steps to deploy connectors on each network, or use our API to configure everything programmatically. And as the end user, Twingate\u2019s client app is all you need to get secure access to all of your resources.\"}),/*#__PURE__*/t(\"p\",{children:[\"Join us in the \",/*#__PURE__*/e(s,{href:\"https://forum.twingate.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"community forum\"})}),\" to share how things went and what cool use cases you\u2019ve discovered!\"]}),/*#__PURE__*/e(\"h1\",{children:\"5. Sharing is Caring\"}),/*#__PURE__*/e(\"p\",{children:\"Do you want to share access to the resource with a teammate, client, or friend? You can easily do this from the Twingate web UI. Just go to the \u201CTeam\u201A tab and click \u201CInvite User\u201A to send an email invitation. The recipient would simply follow the same steps to download the Twingate client, join your network, and get access to any resource you want!\"}),/*#__PURE__*/e(\"img\",{alt:\"invite client\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,4lFNmzEPQKj6eeB0cAmIYWvrXY.png?originalFilename=invite-client.png\",src:\"https://framerusercontent.com/images/4lFNmzEPQKj6eeB0cAmIYWvrXY.png\",srcSet:\"https://framerusercontent.com/images/4lFNmzEPQKj6eeB0cAmIYWvrXY.png?scale-down-to=512 512w,https://framerusercontent.com/images/4lFNmzEPQKj6eeB0cAmIYWvrXY.png 800w\"})]})},{index:69,id:\"EZrIGVinw\",[h]:!0,[d]:!1,[p]:\"Simple & Secure Access to Jenkins on AWS\",[u]:\"Jenkins on AWS\",[m]:\"aws-jenkins\",[g]:\"\",[w]:\"Jimmy Li\",[f]:\"2022-03-04T00:00:00.000Z\",[y]:\"nwIUHELao\",[b]:T({src:\"https://framerusercontent.com/images/qCieFNUTxWI3bEPxBKM0xTK9U.png\",srcSet:\"https://framerusercontent.com/images/qCieFNUTxWI3bEPxBKM0xTK9U.png?scale-down-to=512 512w,https://framerusercontent.com/images/qCieFNUTxWI3bEPxBKM0xTK9U.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/qCieFNUTxWI3bEPxBKM0xTK9U.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/qCieFNUTxWI3bEPxBKM0xTK9U.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/qCieFNUTxWI3bEPxBKM0xTK9U.png\",srcSet:\"https://framerusercontent.com/images/qCieFNUTxWI3bEPxBKM0xTK9U.png?scale-down-to=512 512w,https://framerusercontent.com/images/qCieFNUTxWI3bEPxBKM0xTK9U.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/qCieFNUTxWI3bEPxBKM0xTK9U.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/qCieFNUTxWI3bEPxBKM0xTK9U.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"If you use AWS, what\u2019s the best way to securely access your AWS resources like Jenkins? One option is to use a VPN like AWS Client VPN, but the setup process can be quite involved and there are \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/aws-vpn-pricing\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"hidden costs\"})}),\". An alternative is a Zero Trust solution like \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=aws-jenkins\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate\"})}),\".\"]}),/*#__PURE__*/e(\"p\",{children:\"In this guide, we\u2019ll walk through how in just a few minutes, you can set up secure access to Jenkins and all of your other AWS resources with just a single line of code using Twingate. If you run things on GCP or on-prem as well, you can also use Twingate as a single solution to manage your hybrid or multi-cloud architecture.\"}),/*#__PURE__*/t(\"p\",{children:[\"\\xf0\u0178\u017D\\xa5 \",/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=gy7feeuoSPM\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to securely access Jenkins and other AWS resources using Twingate in 4 minutes\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"Please also join us in our \",/*#__PURE__*/e(s,{href:\"https://forum.twingate.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"community forum\"})}),\" to share and discuss your experience and any other use cases you\u2019ve discovered!\"]}),/*#__PURE__*/e(\"h1\",{children:\"Prerequisites\"}),/*#__PURE__*/e(\"p\",{children:\"If you haven\u2019t already, launch an EC2 instance. This will be where we\u2019ll deploy the Twingate Connector later on. We support all major Linux distributions.\"}),/*#__PURE__*/e(\"p\",{children:\"The Twingate Connector will grant you access to your cloud resources. If you haven\u2019t done so already, the video below shows how to deploy an example resource on AWS. Note that you don\u2019t need Public IP addresses for these resources \u2014 Twingate will be able to connect to them via just their Private IP addresses.\"}),/*#__PURE__*/t(\"p\",{children:[\"\\xf0\u0178\u017D\\xa5 \",/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=zm3xpeOSV8I\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to deploy a resource on AWS\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"Sign up for Twingate\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate Starter is a new free plan that is designed for personal use and small teams. If you don\u2019t have an account already, please click \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=aws-jenkins\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\" and follow the simple steps to sign up for a Starter account and begin the initial setup. Once you have an account, there are 5 simple steps to get up and running.\"]}),/*#__PURE__*/e(\"h1\",{children:\"1. Create a Remote Network\"}),/*#__PURE__*/e(\"p\",{children:\"After creating a Twingate account, from the main \u201CNetwork\u201A page, add a new Remote Network and give it a name. This represents the network we\u2019re going to connect to \u2014 in this case, that would be AWS.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=Rb-ugV-msPc\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to create a Remote Network\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"2. Add a Connector\"}),/*#__PURE__*/t(\"p\",{children:[\"The next step is to deploy a Twingate Connector, which is a piece of software that allows for secure access to your remote network and the services running on it. In addition to AWS, it can also be deployed to other cloud instances (\",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/gcp-wordpress-staging-environment\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"GCP\"})}),\", Azure, etc.) as well as your home devices, including \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/synology-nas\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Synology NAS\"})}),\" and \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/raspberry-pi-home-assistant\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Raspberry Pi\"})}),\".\"]}),/*#__PURE__*/e(\"h2\",{children:\"Generate Connector tokens\"}),/*#__PURE__*/e(\"p\",{children:\"In this case, we\u2019ll set it up on AWS. Click on one of the automatically generated Connectors (the names are random) and complete the following steps:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Click on Linux as the deployment method\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Generate tokens. You\u2019ll be prompted to sign in again, after which you should see two new tokens.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Copy the automatically generated shell command. You will soon run this command on your EC2 instance to install the Connector there.\"})})]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=GfCgunxkW8M\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to generate Connector tokens\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"Deploy the Connector on the Remote Network\"}),/*#__PURE__*/e(\"p\",{children:\"If you don\u2019t already have one, create a new VM instance on AWS where we\u2019ll deploy the Twingate Connector. We suggest giving the VM instance the same name as the Connector for easy association. After the instance is up and running, connect to it using whichever method you prefer and paste in the command that was automatically generated by your Twingate Connector. After the command completes, you should see that the Connector status has turned green, indicating that it was successfully deployed.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=LEluAnYNNBQ\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to deploy a Connector on AWS\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"3. Add a Resource\"}),/*#__PURE__*/e(\"p\",{children:\"Now that you\u2019ve deployed a Twingate Connector on AWS, you can get remote access to any other resource running on the same VPC subnet. You can configure your resources not to have a Public IP address, but you will still be able to access them via Twingate.\"}),/*#__PURE__*/e(\"p\",{children:\"Go back to your Remote Network and click on the \u201CAdd Resource\u201A link. In the popup, click on the \u201CCIDR Address\u201A box, choose a Label name for the Resource, enter the private IP address of your resource\u2019s VM instance, and click \u201CAdd Resource\u201A. Congrats! You now have secure, private access to Jenkins on AWS. The same steps can be repeated for any other AWS resources you have.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=3mldnJh2bis\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to add a Resource\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"4. Download the Twingate client\"}),/*#__PURE__*/e(\"p\",{children:\"All that\u2019s left to do now is to install Twingate on your device (we support Windows, Mac, Linux and have apps for iOS and Android) to authenticate your account and authorize your access to the instance. As an example, let\u2019s walk through setting up the Twingate client on macOS.\"}),/*#__PURE__*/t(\"p\",{children:[\"First, download and install the macOS app \",/*#__PURE__*/e(s,{href:\"https://api.twingate.com/download/darwin\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\". Type in the Network URL that you chose when you signed up (the \",/*#__PURE__*/e(\"code\",{children:\"[abc]\"}),\" part of \",/*#__PURE__*/e(\"code\",{children:\"[abc].twingate.com\"}),\") and click \u201CJoin Network\u201A. You\u2019ll be asked to log in using the same account you used to sign up. After signing in, you\u2019ll see that Twingate is connected with access to the Resource you created. Click on \u201COpen in Browser\u2026\u201A and you should see your resource is accessible via the Private IP address of your VM instance, even though it has no public IP address.\"]}),/*#__PURE__*/e(\"p\",{children:\"Finally, disconnect from Twingate and try accessing the resource again \u2014 you should see that it\u2019s completely inaccessible.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=_X5WmJtGB5U\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to access your Resource using the Twingate client\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Congrats! You\u2019ve finished setting up Twingate for AWS and used it to get secure access to Jenkins. Anything else that you deploy to the same VPC (e.g., a web app, dashboard, database, etc.) can also be added as a Resource, and you would have secure access for those as well using the same Connector.\"}),/*#__PURE__*/e(\"p\",{children:\"If you also run things on GCP or on-prem, you can use Twingate as a single solution to manage your hybrid or multi-cloud architecture. Just follow similar steps to deploy connectors on each network, or use our API to configure everything programmatically. And as the end user, Twingate\u2019s client app is all you need to get secure access to all of your resources.\"}),/*#__PURE__*/t(\"p\",{children:[\"Join us in the \",/*#__PURE__*/e(s,{href:\"https://forum.twingate.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"community forum\"})}),\" to share how things went and what cool use cases you\u2019ve discovered!\"]}),/*#__PURE__*/e(\"h1\",{children:\"5. Sharing is Caring\"}),/*#__PURE__*/e(\"p\",{children:\"Do you want to share access to the resource with a teammate, client, or friend? You can easily do this from the Twingate web UI. Just go to the \u201CTeam\u201A tab and click \u201CInvite User\u201A to send an email invitation. The recipient would simply follow the same steps to download the Twingate client, join your network, and get access to any resource you want!\"}),/*#__PURE__*/e(\"img\",{alt:\"invite client\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,4lFNmzEPQKj6eeB0cAmIYWvrXY.png?originalFilename=invite-client.png\",src:\"https://framerusercontent.com/images/4lFNmzEPQKj6eeB0cAmIYWvrXY.png\",srcSet:\"https://framerusercontent.com/images/4lFNmzEPQKj6eeB0cAmIYWvrXY.png?scale-down-to=512 512w,https://framerusercontent.com/images/4lFNmzEPQKj6eeB0cAmIYWvrXY.png 800w\"})]})},{index:70,id:\"TrICSaB5N\",[h]:!0,[d]:!1,[p]:\"Simple & Secure Access to Grafana on AWS\",[u]:\"Grafana on AWS\",[m]:\"aws-grafana\",[g]:\"\",[w]:\"Jimmy Li\",[f]:\"2022-03-04T00:00:00.000Z\",[y]:\"nwIUHELao\",[b]:T({src:\"https://framerusercontent.com/images/GUj4fMVeXy6tdwTgczNOEaWXoEo.png\",srcSet:\"https://framerusercontent.com/images/GUj4fMVeXy6tdwTgczNOEaWXoEo.png?scale-down-to=512 512w,https://framerusercontent.com/images/GUj4fMVeXy6tdwTgczNOEaWXoEo.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/GUj4fMVeXy6tdwTgczNOEaWXoEo.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/GUj4fMVeXy6tdwTgczNOEaWXoEo.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/GUj4fMVeXy6tdwTgczNOEaWXoEo.png\",srcSet:\"https://framerusercontent.com/images/GUj4fMVeXy6tdwTgczNOEaWXoEo.png?scale-down-to=512 512w,https://framerusercontent.com/images/GUj4fMVeXy6tdwTgczNOEaWXoEo.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/GUj4fMVeXy6tdwTgczNOEaWXoEo.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/GUj4fMVeXy6tdwTgczNOEaWXoEo.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"If you use AWS, what\u2019s the best way to securely access your AWS resources like Grafana? One option is to use a VPN like AWS Client VPN, but the setup process can be quite involved and there are \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/aws-vpn-pricing\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"hidden costs\"})}),\". An alternative is a Zero Trust solution like \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=aws-grafana\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate\"})}),\".\"]}),/*#__PURE__*/e(\"p\",{children:\"In this guide, we\u2019ll walk through how in just a few minutes, you can set up secure access to Grafana and all of your other AWS resources with just a single line of code using Twingate. If you run things on GCP or on-prem as well, you can also use Twingate as a single solution to manage your hybrid or multi-cloud architecture.\"}),/*#__PURE__*/t(\"p\",{children:[\"\\xf0\u0178\u017D\\xa5 \",/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=gy7feeuoSPM\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to securely access Grafana and other AWS resources using Twingate in 4 minutes\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"Please also join us in our \",/*#__PURE__*/e(s,{href:\"https://forum.twingate.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"community forum\"})}),\" to share and discuss your experience and any other use cases you\u2019ve discovered!\"]}),/*#__PURE__*/e(\"h1\",{children:\"Prerequisites\"}),/*#__PURE__*/e(\"p\",{children:\"If you haven\u2019t already, launch an EC2 instance. This will be where we\u2019ll deploy the Twingate Connector later on. We support all major Linux distributions.\"}),/*#__PURE__*/e(\"p\",{children:\"The Twingate Connector will grant you access to your cloud resources. If you haven\u2019t done so already, the video below shows how to deploy an example resource on AWS. Note that you don\u2019t need Public IP addresses for these resources \u2014 Twingate will be able to connect to them via just their Private IP addresses.\"}),/*#__PURE__*/t(\"p\",{children:[\"\\xf0\u0178\u017D\\xa5 \",/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=zm3xpeOSV8I\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to deploy a resource on AWS\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"Sign up for Twingate\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate Starter is a new free plan that is designed for personal use and small teams. If you don\u2019t have an account already, please click \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=aws-grafana\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\" and follow the simple steps to sign up for a Starter account and begin the initial setup. Once you have an account, there are 5 simple steps to get up and running.\"]}),/*#__PURE__*/e(\"h1\",{children:\"1. Create a Remote Network\"}),/*#__PURE__*/e(\"p\",{children:\"After creating a Twingate account, from the main \u201CNetwork\u201A page, add a new Remote Network and give it a name. This represents the network we\u2019re going to connect to \u2014 in this case, that would be AWS.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=Rb-ugV-msPc\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to create a Remote Network\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"2. Add a Connector\"}),/*#__PURE__*/t(\"p\",{children:[\"The next step is to deploy a Twingate Connector, which is a piece of software that allows for secure access to your remote network and the services running on it. In addition to AWS, it can also be deployed to other cloud instances (\",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/gcp-wordpress-staging-environment\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"GCP\"})}),\", Azure, etc.) as well as your home devices, including \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/synology-nas\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Synology NAS\"})}),\" and \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/raspberry-pi-home-assistant\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Raspberry Pi\"})}),\".\"]}),/*#__PURE__*/e(\"h2\",{children:\"Generate Connector tokens\"}),/*#__PURE__*/e(\"p\",{children:\"In this case, we\u2019ll set it up on AWS. Click on one of the automatically generated Connectors (the names are random) and complete the following steps:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Click on Linux as the deployment method\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Generate tokens. You\u2019ll be prompted to sign in again, after which you should see two new tokens.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Copy the automatically generated shell command. You will soon run this command on your EC2 instance to install the Connector there.\"})})]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=GfCgunxkW8M\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to generate Connector tokens\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"Deploy the Connector on the Remote Network\"}),/*#__PURE__*/e(\"p\",{children:\"If you don\u2019t already have one, create a new VM instance on AWS where we\u2019ll deploy the Twingate Connector. We suggest giving the VM instance the same name as the Connector for easy association. After the instance is up and running, connect to it using whichever method you prefer and paste in the command that was automatically generated by your Twingate Connector. After the command completes, you should see that the Connector status has turned green, indicating that it was successfully deployed.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=LEluAnYNNBQ\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to deploy a Connector on AWS\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"3. Add a Resource\"}),/*#__PURE__*/e(\"p\",{children:\"Now that you\u2019ve deployed a Twingate Connector on AWS, you can get remote access to any other resource running on the same VPC subnet. You can configure your resources not to have a Public IP address, but you will still be able to access them via Twingate.\"}),/*#__PURE__*/e(\"p\",{children:\"Go back to your Remote Network and click on the \u201CAdd Resource\u201A link. In the popup, click on the \u201CCIDR Address\u201A box, choose a Label name for the Resource, enter the private IP address of your resource\u2019s VM instance, and click \u201CAdd Resource\u201A. Congrats! You now have secure, private access to Grafana on AWS. The same steps can be repeated for any other AWS resources you have.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=3mldnJh2bis\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to add a Resource\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"4. Download the Twingate client\"}),/*#__PURE__*/e(\"p\",{children:\"All that\u2019s left to do now is to install Twingate on your device (we support Windows, Mac, Linux and have apps for iOS and Android) to authenticate your account and authorize your access to the instance. As an example, let\u2019s walk through setting up the Twingate client on macOS.\"}),/*#__PURE__*/t(\"p\",{children:[\"First, download and install the macOS app \",/*#__PURE__*/e(s,{href:\"https://api.twingate.com/download/darwin\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\". Type in the Network URL that you chose when you signed up (the \",/*#__PURE__*/e(\"code\",{children:\"[abc]\"}),\" part of \",/*#__PURE__*/e(\"code\",{children:\"[abc].twingate.com\"}),\") and click \u201CJoin Network\u201A. You\u2019ll be asked to log in using the same account you used to sign up. After signing in, you\u2019ll see that Twingate is connected with access to the Resource you created. Click on \u201COpen in Browser\u2026\u201A and you should see your resource is accessible via the Private IP address of your VM instance, even though it has no public IP address.\"]}),/*#__PURE__*/e(\"p\",{children:\"Finally, disconnect from Twingate and try accessing the resource again \u2014 you should see that it\u2019s completely inaccessible.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=_X5WmJtGB5U\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to access your Resource using the Twingate client\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Congrats! You\u2019ve finished setting up Twingate for AWS and used it to get secure access to Grafana. Anything else that you deploy to the same VPC (e.g., a web app, dashboard, database, etc.) can also be added as a Resource, and you would have secure access for those as well using the same Connector.\"}),/*#__PURE__*/e(\"p\",{children:\"If you also run things on GCP or on-prem, you can use Twingate as a single solution to manage your hybrid or multi-cloud architecture. Just follow similar steps to deploy connectors on each network, or use our API to configure everything programmatically. And as the end user, Twingate\u2019s client app is all you need to get secure access to all of your resources.\"}),/*#__PURE__*/t(\"p\",{children:[\"Join us in the \",/*#__PURE__*/e(s,{href:\"https://forum.twingate.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"community forum\"})}),\" to share how things went and what cool use cases you\u2019ve discovered!\"]}),/*#__PURE__*/e(\"h1\",{children:\"5. Sharing is Caring\"}),/*#__PURE__*/e(\"p\",{children:\"Do you want to share access to the resource with a teammate, client, or friend? You can easily do this from the Twingate web UI. Just go to the \u201CTeam\u201A tab and click \u201CInvite User\u201A to send an email invitation. The recipient would simply follow the same steps to download the Twingate client, join your network, and get access to any resource you want!\"}),/*#__PURE__*/e(\"img\",{alt:\"invite client\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,4lFNmzEPQKj6eeB0cAmIYWvrXY.png?originalFilename=invite-client.png\",src:\"https://framerusercontent.com/images/4lFNmzEPQKj6eeB0cAmIYWvrXY.png\",srcSet:\"https://framerusercontent.com/images/4lFNmzEPQKj6eeB0cAmIYWvrXY.png?scale-down-to=512 512w,https://framerusercontent.com/images/4lFNmzEPQKj6eeB0cAmIYWvrXY.png 800w\"})]})},{index:71,id:\"KB4QMQBeT\",[h]:!0,[d]:!1,[p]:\"Simple & Secure Access to GitLab on AWS\",[u]:\"GitLab on AWS\",[m]:\"aws-gitlab\",[g]:\"\",[w]:\"Jimmy Li\",[f]:\"2022-03-04T00:00:00.000Z\",[y]:\"nwIUHELao\",[b]:T({src:\"https://framerusercontent.com/images/cKIIBYBrhUXfoMKJ0NavqNBC4.png\",srcSet:\"https://framerusercontent.com/images/cKIIBYBrhUXfoMKJ0NavqNBC4.png?scale-down-to=512 512w,https://framerusercontent.com/images/cKIIBYBrhUXfoMKJ0NavqNBC4.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/cKIIBYBrhUXfoMKJ0NavqNBC4.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/cKIIBYBrhUXfoMKJ0NavqNBC4.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/cKIIBYBrhUXfoMKJ0NavqNBC4.png\",srcSet:\"https://framerusercontent.com/images/cKIIBYBrhUXfoMKJ0NavqNBC4.png?scale-down-to=512 512w,https://framerusercontent.com/images/cKIIBYBrhUXfoMKJ0NavqNBC4.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/cKIIBYBrhUXfoMKJ0NavqNBC4.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/cKIIBYBrhUXfoMKJ0NavqNBC4.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"If you use AWS, what\u2019s the best way to securely access your AWS resources like GitLab? One option is to use a VPN like AWS Client VPN, but the setup process can be quite involved and there are \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/aws-vpn-pricing\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"hidden costs\"})}),\". An alternative is a Zero Trust solution like \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=aws-gitlab\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate\"})}),\".\"]}),/*#__PURE__*/e(\"p\",{children:\"In this guide, we\u2019ll walk through how in just a few minutes, you can set up secure access to GitLab and all of your other AWS resources with just a single line of code using Twingate. If you run things on GCP or on-prem as well, you can also use Twingate as a single solution to manage your hybrid or multi-cloud architecture.\"}),/*#__PURE__*/t(\"p\",{children:[\"\\xf0\u0178\u017D\\xa5 \",/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=gy7feeuoSPM\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to securely access GitLab and other AWS resources using Twingate in 4 minutes\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"Please also join us in our \",/*#__PURE__*/e(s,{href:\"https://forum.twingate.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"community forum\"})}),\" to share and discuss your experience and any other use cases you\u2019ve discovered!\"]}),/*#__PURE__*/e(\"h1\",{children:\"Prerequisites\"}),/*#__PURE__*/e(\"p\",{children:\"If you haven\u2019t already, launch an EC2 instance. This will be where we\u2019ll deploy the Twingate Connector later on. We support all major Linux distributions.\"}),/*#__PURE__*/e(\"p\",{children:\"The Twingate Connector will grant you access to your cloud resources. If you haven\u2019t done so already, the video below shows how to deploy an example resource on AWS. Note that you don\u2019t need Public IP addresses for these resources \u2014 Twingate will be able to connect to them via just their Private IP addresses.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=zm3xpeOSV8I\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to deploy a resource on AWS\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"Sign up for Twingate\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate Starter is a new free plan that is designed for personal use and small teams. If you don\u2019t have an account already, please click \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=aws-gitlab\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\" and follow the simple steps to sign up for a Starter account and begin the initial setup. Once you have an account, there are 5 simple steps to get up and running.\"]}),/*#__PURE__*/e(\"h1\",{children:\"1. Create a Remote Network\"}),/*#__PURE__*/e(\"p\",{children:\"After creating a Twingate account, from the main \u201CNetwork\u201A page, add a new Remote Network and give it a name. This represents the network we\u2019re going to connect to \u2014 in this case, that would be AWS.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=Rb-ugV-msPc\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to create a Remote Network\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"2. Add a Connector\"}),/*#__PURE__*/t(\"p\",{children:[\"The next step is to deploy a Twingate Connector, which is a piece of software that allows for secure access to your remote network and the services running on it. In addition to AWS, it can also be deployed to other cloud instances (\",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/gcp-wordpress-staging-environment\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"GCP\"})}),\", Azure, etc.) as well as your home devices, including \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/synology-nas\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Synology NAS\"})}),\" and \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/raspberry-pi-home-assistant\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Raspberry Pi\"})}),\".\"]}),/*#__PURE__*/e(\"h2\",{children:\"Generate Connector tokens\"}),/*#__PURE__*/e(\"p\",{children:\"In this case, we\u2019ll set it up on AWS. Click on one of the automatically generated Connectors (the names are random) and complete the following steps:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Click on Linux as the deployment method\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Generate tokens. You\u2019ll be prompted to sign in again, after which you should see two new tokens.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Copy the automatically generated shell command. You will soon run this command on your EC2 instance to install the Connector there.\"})})]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=GfCgunxkW8M\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to generate Connector tokens\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"Deploy the Connector on the Remote Network\"}),/*#__PURE__*/e(\"p\",{children:\"If you don\u2019t already have one, create a new VM instance on AWS where we\u2019ll deploy the Twingate Connector. We suggest giving the VM instance the same name as the Connector for easy association. After the instance is up and running, connect to it using whichever method you prefer and paste in the command that was automatically generated by your Twingate Connector. After the command completes, you should see that the Connector status has turned green, indicating that it was successfully deployed.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=LEluAnYNNBQ\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to deploy a Connector on AWS\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"3. Add a Resource\"}),/*#__PURE__*/e(\"p\",{children:\"Now that you\u2019ve deployed a Twingate Connector on AWS, you can get remote access to any other resource running on the same VPC subnet. You can configure your resources not to have a Public IP address, but you will still be able to access them via Twingate.\"}),/*#__PURE__*/e(\"p\",{children:\"Go back to your Remote Network and click on the \u201CAdd Resource\u201A link. In the popup, click on the \u201CCIDR Address\u201A box, choose a Label name for the Resource, enter the private IP address of your resource\u2019s VM instance, and click \u201CAdd Resource\u201A. Congrats! You now have secure, private access to GitLab on AWS. The same steps can be repeated for any other AWS resources you have.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=3mldnJh2bis\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to add a Resource\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"4. Download the Twingate client\"}),/*#__PURE__*/e(\"p\",{children:\"All that\u2019s left to do now is to install Twingate on your device (we support Windows, Mac, Linux and have apps for iOS and Android) to authenticate your account and authorize your access to the instance. As an example, let\u2019s walk through setting up the Twingate client on macOS.\"}),/*#__PURE__*/t(\"p\",{children:[\"First, download and install the macOS app \",/*#__PURE__*/e(s,{href:\"https://api.twingate.com/download/darwin\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\". Type in the Network URL that you chose when you signed up (the \",/*#__PURE__*/e(\"code\",{children:\"[abc]\"}),\" part of \",/*#__PURE__*/e(\"code\",{children:\"[abc].twingate.com\"}),\") and click \u201CJoin Network\u201A. You\u2019ll be asked to log in using the same account you used to sign up. After signing in, you\u2019ll see that Twingate is connected with access to the Resource you created. Click on \u201COpen in Browser\u2026\u201A and you should see your resource is accessible via the Private IP address of your VM instance, even though it has no public IP address.\"]}),/*#__PURE__*/e(\"p\",{children:\"Finally, disconnect from Twingate and try accessing the resource again \u2014 you should see that it\u2019s completely inaccessible.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=_X5WmJtGB5U\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to access your Resource using the Twingate client\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Congrats! You\u2019ve finished setting up Twingate for AWS and used it to get secure access to GitLab. Anything else that you deploy to the same VPC (e.g., a web app, dashboard, database, etc.) can also be added as a Resource, and you would have secure access for those as well using the same Connector.\"}),/*#__PURE__*/e(\"p\",{children:\"If you also run things on GCP or on-prem, you can use Twingate as a single solution to manage your hybrid or multi-cloud architecture. Just follow similar steps to deploy connectors on each network, or use our API to configure everything programmatically. And as the end user, Twingate\u2019s client app is all you need to get secure access to all of your resources.\"}),/*#__PURE__*/t(\"p\",{children:[\"Join us in the \",/*#__PURE__*/e(s,{href:\"https://forum.twingate.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"community forum\"})}),\" to share how things went and what cool use cases you\u2019ve discovered!\"]}),/*#__PURE__*/e(\"h1\",{children:\"5. Sharing is Caring\"}),/*#__PURE__*/e(\"p\",{children:\"Do you want to share access to the resource with a teammate, client, or friend? You can easily do this from the Twingate web UI. Just go to the \u201CTeam\u201A tab and click \u201CInvite User\u201A to send an email invitation. The recipient would simply follow the same steps to download the Twingate client, join your network, and get access to any resource you want!\"}),/*#__PURE__*/e(\"img\",{alt:\"invite client\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,4lFNmzEPQKj6eeB0cAmIYWvrXY.png?originalFilename=invite-client.png\",src:\"https://framerusercontent.com/images/4lFNmzEPQKj6eeB0cAmIYWvrXY.png\",srcSet:\"https://framerusercontent.com/images/4lFNmzEPQKj6eeB0cAmIYWvrXY.png?scale-down-to=512 512w,https://framerusercontent.com/images/4lFNmzEPQKj6eeB0cAmIYWvrXY.png 800w\"})]})},{index:72,id:\"Kvd8uuGZV\",[h]:!0,[d]:!1,[p]:\"Simple & Secure Access to Airflow on AWS\",[u]:\"Airflow on AWS\",[m]:\"aws-airflow\",[g]:\"\",[w]:\"Jimmy Li\",[f]:\"2022-03-04T00:00:00.000Z\",[y]:\"nwIUHELao\",[b]:T({src:\"https://framerusercontent.com/images/PJNhcrr9kVbJKOxAlxCbrTtBqwQ.png\",srcSet:\"https://framerusercontent.com/images/PJNhcrr9kVbJKOxAlxCbrTtBqwQ.png?scale-down-to=512 512w,https://framerusercontent.com/images/PJNhcrr9kVbJKOxAlxCbrTtBqwQ.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/PJNhcrr9kVbJKOxAlxCbrTtBqwQ.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/PJNhcrr9kVbJKOxAlxCbrTtBqwQ.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/PJNhcrr9kVbJKOxAlxCbrTtBqwQ.png\",srcSet:\"https://framerusercontent.com/images/PJNhcrr9kVbJKOxAlxCbrTtBqwQ.png?scale-down-to=512 512w,https://framerusercontent.com/images/PJNhcrr9kVbJKOxAlxCbrTtBqwQ.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/PJNhcrr9kVbJKOxAlxCbrTtBqwQ.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/PJNhcrr9kVbJKOxAlxCbrTtBqwQ.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"If you use AWS, what\u2019s the best way to securely access your AWS resources like Airflow? One option is to use a VPN like AWS Client VPN, but the setup process can be quite involved and there are \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/aws-vpn-pricing\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"hidden costs\"})}),\". An alternative is a Zero Trust solution like \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=aws-airflow\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate\"})}),\".\"]}),/*#__PURE__*/e(\"p\",{children:\"In this guide, we\u2019ll walk through how in just a few minutes, you can set up secure access to Airflow and all of your other AWS resources with just a single line of code using Twingate. If you run things on GCP or on-prem as well, you can also use Twingate as a single solution to manage your hybrid or multi-cloud architecture.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=gy7feeuoSPM\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to securely access Airflow and other AWS resources using Twingate in 4 minutes\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"Please also join us in our \",/*#__PURE__*/e(s,{href:\"https://forum.twingate.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"community forum\"})}),\" to share and discuss your experience and any other use cases you\u2019ve discovered!\"]}),/*#__PURE__*/e(\"h1\",{children:\"Prerequisites\"}),/*#__PURE__*/e(\"p\",{children:\"If you haven\u2019t already, launch an EC2 instance. This will be where we\u2019ll deploy the Twingate Connector later on. We support all major Linux distributions.\"}),/*#__PURE__*/e(\"p\",{children:\"The Twingate Connector will grant you access to your cloud resources. If you haven\u2019t done so already, the video below shows how to deploy an example resource on AWS. Note that you don\u2019t need Public IP addresses for these resources \u2014 Twingate will be able to connect to them via just their Private IP addresses.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=zm3xpeOSV8I\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to deploy a resource on AWS\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"Sign up for Twingate\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate Starter is a new free plan that is designed for personal use and small teams. If you don\u2019t have an account already, please click \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=aws-airflow\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\" and follow the simple steps to sign up for a Starter account and begin the initial setup. Once you have an account, there are 5 simple steps to get up and running.\"]}),/*#__PURE__*/e(\"h1\",{children:\"1. Create a Remote Network\"}),/*#__PURE__*/e(\"p\",{children:\"After creating a Twingate account, from the main \u201CNetwork\u201A page, add a new Remote Network and give it a name. This represents the network we\u2019re going to connect to \u2014 in this case, that would be AWS.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=Rb-ugV-msPc\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to create a Remote Network\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"2. Add a Connector\"}),/*#__PURE__*/t(\"p\",{children:[\"The next step is to deploy a Twingate Connector, which is a piece of software that allows for secure access to your remote network and the services running on it. In addition to AWS, it can also be deployed to other cloud instances (\",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/gcp-wordpress-staging-environment\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"GCP\"})}),\", Azure, etc.) as well as your home devices, including \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/synology-nas\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Synology NAS\"})}),\" and \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/raspberry-pi-home-assistant\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Raspberry Pi\"})}),\".\"]}),/*#__PURE__*/e(\"h2\",{children:\"Generate Connector tokens\"}),/*#__PURE__*/e(\"p\",{children:\"In this case, we\u2019ll set it up on AWS. Click on one of the automatically generated Connectors (the names are random) and complete the following steps:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Click on Linux as the deployment method\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Generate tokens. You\u2019ll be prompted to sign in again, after which you should see two new tokens.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Copy the automatically generated shell command. You will soon run this command on your EC2 instance to install the Connector there.\"})})]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=GfCgunxkW8M\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to generate Connector tokens\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"Deploy the Connector on the Remote Network\"}),/*#__PURE__*/e(\"p\",{children:\"If you don\u2019t already have one, create a new VM instance on AWS where we\u2019ll deploy the Twingate Connector. We suggest giving the VM instance the same name as the Connector for easy association. After the instance is up and running, connect to it using whichever method you prefer and paste in the command that was automatically generated by your Twingate Connector. After the command completes, you should see that the Connector status has turned green, indicating that it was successfully deployed.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=LEluAnYNNBQ\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to deploy a Connector on AWS\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"3. Add a Resource\"}),/*#__PURE__*/e(\"p\",{children:\"Now that you\u2019ve deployed a Twingate Connector on AWS, you can get remote access to any other resource running on the same VPC subnet. You can configure your resources not to have a Public IP address, but you will still be able to access them via Twingate.\"}),/*#__PURE__*/e(\"p\",{children:\"Go back to your Remote Network and click on the \u201CAdd Resource\u201A link. In the popup, click on the \u201CCIDR Address\u201A box, choose a Label name for the Resource, enter the private IP address of your resource\u2019s VM instance, and click \u201CAdd Resource\u201A. Congrats! You now have secure, private access to Airflow on AWS. The same steps can be repeated for any other AWS resources you have.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=3mldnJh2bis\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to add a Resource\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"4. Download the Twingate client\"}),/*#__PURE__*/e(\"p\",{children:\"All that\u2019s left to do now is to install Twingate on your device (we support Windows, Mac, Linux and have apps for iOS and Android) to authenticate your account and authorize your access to the instance. As an example, let\u2019s walk through setting up the Twingate client on macOS.\"}),/*#__PURE__*/t(\"p\",{children:[\"First, download and install the macOS app \",/*#__PURE__*/e(s,{href:\"https://api.twingate.com/download/darwin\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\". Type in the Network URL that you chose when you signed up (the \",/*#__PURE__*/e(\"code\",{children:\"[abc]\"}),\" part of \",/*#__PURE__*/e(\"code\",{children:\"[abc].twingate.com\"}),\") and click \u201CJoin Network\u201A. You\u2019ll be asked to log in using the same account you used to sign up. After signing in, you\u2019ll see that Twingate is connected with access to the Resource you created. Click on \u201COpen in Browser\u2026\u201A and you should see your resource is accessible via the Private IP address of your VM instance, even though it has no public IP address.\"]}),/*#__PURE__*/e(\"p\",{children:\"Finally, disconnect from Twingate and try accessing the resource again \u2014 you should see that it\u2019s completely inaccessible.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=_X5WmJtGB5U\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to access your Resource using the Twingate client\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Congrats! You\u2019ve finished setting up Twingate for AWS and used it to get secure access to Airflow. Anything else that you deploy to the same VPC (e.g., a web app, dashboard, database, etc.) can also be added as a Resource, and you would have secure access for those as well using the same Connector.\"}),/*#__PURE__*/e(\"p\",{children:\"If you also run things on GCP or on-prem, you can use Twingate as a single solution to manage your hybrid or multi-cloud architecture. Just follow similar steps to deploy connectors on each network, or use our API to configure everything programmatically. And as the end user, Twingate\u2019s client app is all you need to get secure access to all of your resources.\"}),/*#__PURE__*/t(\"p\",{children:[\"Join us in the \",/*#__PURE__*/e(s,{href:\"https://forum.twingate.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"community forum\"})}),\" to share how things went and what cool use cases you\u2019ve discovered!\"]}),/*#__PURE__*/e(\"h1\",{children:\"5. Sharing is Caring\"}),/*#__PURE__*/e(\"p\",{children:\"Do you want to share access to the resource with a teammate, client, or friend? You can easily do this from the Twingate web UI. Just go to the \u201CTeam\u201A tab and click \u201CInvite User\u201A to send an email invitation. The recipient would simply follow the same steps to download the Twingate client, join your network, and get access to any resource you want!\"}),/*#__PURE__*/e(\"img\",{alt:\"invite client\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,4lFNmzEPQKj6eeB0cAmIYWvrXY.png?originalFilename=invite-client.png\",src:\"https://framerusercontent.com/images/4lFNmzEPQKj6eeB0cAmIYWvrXY.png\",srcSet:\"https://framerusercontent.com/images/4lFNmzEPQKj6eeB0cAmIYWvrXY.png?scale-down-to=512 512w,https://framerusercontent.com/images/4lFNmzEPQKj6eeB0cAmIYWvrXY.png 800w\"})]})},{index:73,id:\"CwoHOCdz4\",[h]:!0,[d]:!1,[p]:\"What is Cloudflare VPN?\",[u]:\"Cloudflare VPN?\",[m]:\"cloudflare-vpn\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2022-03-03T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/yxWEEP3nYydU1PEeRMwvkHQVCY.png\",srcSet:\"https://framerusercontent.com/images/yxWEEP3nYydU1PEeRMwvkHQVCY.png?scale-down-to=512 512w,https://framerusercontent.com/images/yxWEEP3nYydU1PEeRMwvkHQVCY.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/yxWEEP3nYydU1PEeRMwvkHQVCY.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/yxWEEP3nYydU1PEeRMwvkHQVCY.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/yxWEEP3nYydU1PEeRMwvkHQVCY.png\",srcSet:\"https://framerusercontent.com/images/yxWEEP3nYydU1PEeRMwvkHQVCY.png?scale-down-to=512 512w,https://framerusercontent.com/images/yxWEEP3nYydU1PEeRMwvkHQVCY.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/yxWEEP3nYydU1PEeRMwvkHQVCY.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/yxWEEP3nYydU1PEeRMwvkHQVCY.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Leveraging its content delivery network and DDoS protection infrastructure, Cloudflare has expanded its services to include \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sase-meaning\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Secure Access Service Edge (SASE)\"})}),\". Companies can adopt a subset of Cloudflare\u2019s SASE offering to create a Zero Trust alternative to their legacy \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN\"})}),\" systems.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Cloudflare VPN\"}),/*#__PURE__*/e(\"h2\",{children:\"About Cloudflare VPN\"}),/*#__PURE__*/e(\"p\",{children:\"Launched in 2010, Cloudflare has built a distributed infrastructure that puts 95% of the internet population within 10ms of a Cloudflare server. When users worldwide access Cloudflare-hosted websites or services, they get low-latency connections and a better experience.\"}),/*#__PURE__*/e(\"p\",{children:\"Cloudflare has used this infrastructure to expand into a range of network services, including its SASE offering, Cloudflare One. A secure, cloud-based wide-area network service, Cloudflare One consists of five components:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Cloudflare Access (VPN alternative and CASB)\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Cloudflare Gateway (secure web gateway)\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Cloudflare Magic Firewall (firewall as a service)\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Cloudflare Magic WAN (WAN as a service)\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Cloudflare Global Network (SD-WAN)\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Companies looking for a more focused replacement for their legacy VPN systems can get Cloudflare Teams, a bundle of Cloudflare Access, and Cloudflare Gateway.\"}),/*#__PURE__*/e(\"p\",{children:\"Cloudflare Access uses Zero Trust principles to connect a company\u2019s users and resources. Security rules are enforced when users connect to the Cloudflare network. Once the user is authenticated and authorized, they connect to a resource.\"}),/*#__PURE__*/e(\"p\",{children:\"Cloudflare Gateway is an advanced web filter that keeps unauthorized or malicious activity from penetrating protected networks. The Gateway\u2019s activity logging lets companies audit user activity even when using SaaS applications.\"}),/*#__PURE__*/e(\"h2\",{children:\"Applications\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Provide secure access for on-premises and remote users\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Provide secure access for third-party users\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Secure access to cloud-based resources\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Migrate to a distributed Zero Trust architecture\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"Benefits\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Advanced threat protection reduces attack surfaces\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Improved user experience on Cloudflare\u2019s low-latency network.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"End-to-end encryption between user devices and resources\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Security policies set by identity and device\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Detailed user and device activity logging\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Free pricing tier supports up to 50 users and three network locations\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"Considerations\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Although encrypted, all company data passes through Cloudflare\u2019s infrastructure\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Work-related or not, all user traffic passes through Cloudflare by default\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Split tunneling requires additional configuration\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Compatibility issues may require legacy VPN for specific applications\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Legacy VPNs and firewalls may interfere with Cloudflare\u2019s WARP client\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"Twingate\"}),/*#__PURE__*/e(\"h2\",{children:\"About Twingate\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate delivers a modern approach to secure \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-models\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control\"})}),\" based on \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\". In the process, Twingate eliminates the performance, usability, and security liabilities of legacy VPN technologies.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Whether running on-premises, on a private cloud, or provided by a SaaS vendor, Twingate\u2019s software-defined perimeters hide company resources. Thus, Hackers cannot see the resources \u2014 even if they penetrate a protected network \u2014 reducing the attack surface and limiting \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/lateral-movement\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"lateral movement\"})}),\".\"]}),/*#__PURE__*/t(\"p\",{children:[\"Administrative consoles simplify the management of role-based policies based on principles of \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/principle-of-least-privilege\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"least privilege\"})}),\". As a result, permissions are provided on a just-in-time, need-to-know basis. Twingate makes it easier to manage privileged credentials and reduces the risks created by compromised credentials.\"]}),/*#__PURE__*/e(\"p\",{children:\"Twingate delivers benefits beyond secure access control. Company networks become more performant and productivity improves. Direct, encrypted connections between users and cloud resources shift traffic off the company network without compromising security. In addition, these low-latency connections improve the user experience and employee productivity.\"}),/*#__PURE__*/e(\"h2\",{children:\"Applications\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Single system for controlling access for all users\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Single system for protecting on-premises and cloud resources\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Fast, low-impact pathway to Zero Trust architecture\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"Benefits\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Eliminate overlapping security and access control systems\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Reduced attack surface makes breaches more difficult\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Smaller blast radius when attacks succeed\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"No changes to networks, resources, or user devices needed\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Coexists with existing security stack\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Easier administration through unified consoles\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Deploy Twingate in less than 15 minutes\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"Considerations\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Free pricing tier limited to five users and one network\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Most advanced features require an enterprise pricing tier\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"Cloudflare Security Capabilities Vs. Twingate and Zero Trust\"}),/*#__PURE__*/e(\"p\",{children:\"The old way of protecting networks relies too much on trust. VPN gateways are designed to grant full access to the protected network. But since they publish their presence, VPN gateways are easily discovered. Exploiting a gateway\u2019s vulnerabilities \u2014 or simply compromising a user\u2019s credentials \u2014 lets hackers access everything on the network.\"}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust is a modern security paradigm that addresses the challenges legacy VPN architectures create. However, Cloudflare and Twingate implement Zero Trust in very different ways.\"}),/*#__PURE__*/e(\"p\",{children:\"Cloudflare replaces a company\u2019s protected network with its own protected network. A resource is connected to the nearest Cloudflare data center. On the user\u2019s device, the WARP client app contacts its closest Cloudflare data center. Once authenticated and authorized, Cloudflare creates an encrypted tunnel from the user\u2019s device to the protected resource through the various data centers.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate creates a more complete separation between the control plane and the data plane. Access control policies are distributed from a Twingate server. Policy enforcement, however, is executed by the client app and the resource. The encrypted tunnel between client and resource follows the most direct route across the internet or a private network.\"}),/*#__PURE__*/e(\"h1\",{children:\"Cloudflare Performance Vs. Twingate\"}),/*#__PURE__*/e(\"p\",{children:\"As networking becomes more distributed, the centralized topology of VPN systems undermines network performance. Concentrating all traffic through VPN gateways forces users to compete for throughput. At the same time, backhauling traffic destined for the cloud through the company network adds latency and creates poor user experiences.\"}),/*#__PURE__*/e(\"p\",{children:\"Cloudflare eliminates VPN\u2019s performance impacts by leveraging its CDN\u2019s global point-of-presence (PoP) network. Users and resources connect to the nearest Cloudflare PoP. All traffic flows through Cloudflare\u2019s network and bypasses the public internet. However, all traffic includes the user\u2019s web browsing and other non-essential activity by default.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate, on the other hand, created an architecture that turns every device into a local PoP. Little data passes between the client app and Twingate\u2019s control system \u2014 just enough to coordinate authentication and distribute access control rules. All company data flows directly between users and resources along the most performant routes. In addition, Twingate enables split tunneling by default, so web browsing and other non-essential traffic pass over the public internet.\"}),/*#__PURE__*/e(\"h1\",{children:\"Cloudflare Ease of Use Vs. Twingate\"}),/*#__PURE__*/e(\"p\",{children:\"VPN technology has become more challenging to use and manage. In a typical workday, remote users access many resources hosted in different locations. Each on-premises subnet requires a unique VPN gateway. Cloud resources require their own VPN gateways. Users must adapt to this fractured system just to get their jobs done.\"}),/*#__PURE__*/e(\"p\",{children:\"As complex as this is for users, it pales compared to the administrator\u2019s experience. They must maintain policies across multiple systems. In addition, the constant flow of vulnerabilities, exploits, and patches requires continuous vigilance.\"}),/*#__PURE__*/e(\"p\",{children:\"Both Twingate and Cloudflare make remote access much easier for users and administrators alike. By replacing a company\u2019s network with its own, Cloudflare takes on network management responsibilities. Users simply activate their WARP client to get access to needed resources.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate\u2019s approach simplifies the user experience even further. The Twingate Client operates seamlessly in the background, automatically routing protected and personal traffic as needed. For administrators, simple consoles reduce the management of user permissions and access rules to a few mouse clicks.\"}),/*#__PURE__*/e(\"h1\",{children:\"Cloudflare scalability Vs. Twingate\"}),/*#__PURE__*/e(\"p\",{children:\"When a company suddenly needs to turn its office employees into an at-home workforce, its legacy VPN solution will require significant upgrades.\"}),/*#__PURE__*/t(\"p\",{children:[\"Unfortunately, VPN architectures are brittle and resistant to change. Expanding capacity requires expensive investments in hardware and licenses. And since VPN technologies are tightly coupled to a company\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/network-architecture\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"network architecture\"})}),\", any change must be carefully planned to minimize disruption.\"]}),/*#__PURE__*/e(\"p\",{children:\"Both Twingate and Cloudflare provide more responsive solutions for today\u2019s dynamic business environment. Administrators simply add or remove users to respond to changing business needs.\"}),/*#__PURE__*/e(\"h1\",{children:\"Cloudflare Support Vs. Twingate Support\"}),/*#__PURE__*/e(\"p\",{children:\"Both Twingate and Cloudflare support subscribers of their respective free pricing tiers with community forums. Paid subscribers to both services get email support, but Cloudflare also offers phone and chat support options. In both cases, Enterprise-level clients get priority support.\"}),/*#__PURE__*/e(\"h1\",{children:\"Enhancing security with Twingate\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate\u2019s approach to Zero Trust extends beyond access control with advanced security features. The Twingate Client can evaluate device posture before establishing connections to protected resources. Security rules can deny access until operating system updates and other measures are taken to regain compliance.\"}),/*#__PURE__*/e(\"p\",{children:\"When companies implement Twingate\u2019s access control solution, they get detailed activity logs indexed by user and device. Activity baselines let network administrators quickly identify unusual behavior. These faster response times limit the blast radius of a successful breach.\"}),/*#__PURE__*/e(\"p\",{children:\"Too many users have access to SSH and other network services. This makes it easier for cybercriminals to penetrate deeper into a network. By extending multi-factor authentication through Twingate, companies limit which users can access these tools and make lateral movement more challenging.\"}),/*#__PURE__*/e(\"h1\",{children:\"Adopt Twingate\u2019s more direct Zero Trust access control\"}),/*#__PURE__*/e(\"p\",{children:\"With VPN a growing point of vulnerability, organizations of all sizes are turning to solutions based on Zero Trust. Twingate\u2019s modern approach to secure access control fits today\u2019s more distributed networks and workforces.\"}),/*#__PURE__*/e(\"p\",{children:\"Direct connections between users and protected resources deliver the security, usability, and performance improvements companies need. And since a Twingate implementation requires no changes to existing networks, companies can deploy Zero Trust in minutes.\"}),/*#__PURE__*/t(\"p\",{children:[\"Take Twingate for a spin with our \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=cloudflare-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"free Starter tier\"})}),\" for individual or small team use. Or contact us to learn how Twingate\u2019s Zero Trust solution makes access control simpler and more secure.\"]})]})},{index:74,id:\"andFHI4cv\",[h]:!0,[d]:!1,[p]:\"Simple Alternative to AWS Client VPN\",[u]:\"AWS Client VPN\",[m]:\"aws-client-vpn\",[g]:\"\",[w]:\"Jimmy Li\",[f]:\"2022-03-02T00:00:00.000Z\",[y]:\"nwIUHELao\",[b]:T({src:\"https://framerusercontent.com/images/AlAUSNLfO4jGO5On0sRduRUykGc.png\",srcSet:\"https://framerusercontent.com/images/AlAUSNLfO4jGO5On0sRduRUykGc.png?scale-down-to=512 512w,https://framerusercontent.com/images/AlAUSNLfO4jGO5On0sRduRUykGc.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/AlAUSNLfO4jGO5On0sRduRUykGc.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/AlAUSNLfO4jGO5On0sRduRUykGc.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/AlAUSNLfO4jGO5On0sRduRUykGc.png\",srcSet:\"https://framerusercontent.com/images/AlAUSNLfO4jGO5On0sRduRUykGc.png?scale-down-to=512 512w,https://framerusercontent.com/images/AlAUSNLfO4jGO5On0sRduRUykGc.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/AlAUSNLfO4jGO5On0sRduRUykGc.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/AlAUSNLfO4jGO5On0sRduRUykGc.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"If you use AWS, what\u2019s the best way to securely access your AWS resources? One option is to use a VPN like AWS Client VPN, but the setup process can be quite involved and there are \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/aws-vpn-pricing\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"hidden costs\"})}),\". An alternative is a Zero Trust solution like \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=aws-client-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate\"})}),\". In this guide, we\u2019ll walk through how in just a few minutes, you can set up secure access to all your AWS resources with just a single line of code using Twingate. If you run things on GCP or on-prem as well, you can also use Twingate as a single solution to manage your hybrid or multi-cloud architecture.\"]}),/*#__PURE__*/t(\"p\",{children:[\"\\xf0\u0178\u017D\\xa5 \",/*#__PURE__*/e(\"strong\",{children:\"Full 4 minute video tutorial:\"})]}),/*#__PURE__*/e(\"img\",{alt:\"Video tutorial: How to securely access AWS resources using Twingate in 4 minutes\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,NXFp7RBYSF7QLhvmvMw7c34niTk.png?originalFilename=client-access.png\",src:\"https://framerusercontent.com/images/NXFp7RBYSF7QLhvmvMw7c34niTk.png\",srcSet:\"https://framerusercontent.com/images/NXFp7RBYSF7QLhvmvMw7c34niTk.png?scale-down-to=512 512w,https://framerusercontent.com/images/NXFp7RBYSF7QLhvmvMw7c34niTk.png 800w\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=gy7feeuoSPM\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Video tutorial: How to securely access AWS resources using Twingate in 4 minutes\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/t(\"p\",{children:[\"Please also join us in our \",/*#__PURE__*/e(s,{href:\"https://forum.twingate.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"community forum\"})}),\" to share and discuss your experience and any other use cases you\u2019ve discovered!\"]}),/*#__PURE__*/e(\"h1\",{children:\"Prerequisites\"}),/*#__PURE__*/e(\"p\",{children:\"If you haven\u2019t already, launch an EC2 instance. This will be where we\u2019ll deploy the Twingate Connector later on. We support all major Linux distributions.\"}),/*#__PURE__*/e(\"p\",{children:\"The Twingate Connector will grant you access to your cloud resources. If you haven\u2019t done so already, the video below shows how to deploy some DevOps tools on AWS. Note that you don\u2019t need Public IP addresses for these resources \u2014 Twingate will be able to connect to them via just their Private IP addresses.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=zm3xpeOSV8I\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to deploy Jenkins on AWS\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"Sign up for Twingate\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate Starter is a new free plan that is designed for home and personal use. If you don\u2019t have an account already, please click \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/twingate-starter-setup?utm_source=blog&utm_medium=blog&utm_campaign=aws-client-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\" and follow the simple steps to sign up for a Starter account and begin the initial setup. Once you have an account, there are 5 simple steps to get up and running.\"]}),/*#__PURE__*/e(\"h1\",{children:\"1. Create a Remote Network\"}),/*#__PURE__*/e(\"p\",{children:\"After creating a Twingate account, from the main \u201CNetwork\u201A page, add a new Remote Network and give it a name. This represents the network we\u2019re going to connect to \u2014 in this case, that would be AWS.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=Rb-ugV-msPc\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to create a Remote Network\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"2. Add a Connector\"}),/*#__PURE__*/t(\"p\",{children:[\"The next step is to deploy a Twingate Connector, which is a piece of software that allows for secure access to your remote network and the services running on it. In addition to AWS, it can also be deployed to other cloud instances (\",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/gcp-wordpress-staging-environment\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"GCP\"})}),\", Azure, etc.) as well as your home devices, including \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/synology-nas\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Synology NAS\"})}),\" and \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/raspberry-pi-home-assistant\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Raspberry Pi\"})}),\".\"]}),/*#__PURE__*/e(\"h2\",{children:\"Generate Connector tokens\"}),/*#__PURE__*/e(\"p\",{children:\"In this case, we\u2019ll set it up on AWS. Click on one of the automatically generated Connectors (the names are random) and complete the following steps:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Click on Linux as the deployment method\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Generate tokens. You\u2019ll be prompted to sign in again, after which you should see two new tokens.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Copy the automatically generated shell command. You will soon run this command on your EC2 instance to install the Connector there.\"})})]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=GfCgunxkW8M\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to generate Connector tokens\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"Deploy the Connector on the Remote Network\"}),/*#__PURE__*/e(\"p\",{children:\"If you don\u2019t already have one, create a new VM instance on AWS where we\u2019ll deploy the Twingate Connector. We suggest giving the VM instance the same name as the Connector for easy association. After the instance is up and running, connect to it using whichever method you like and paste in the command that was automatically generated by your Twingate Connector. After the command completes, you should see that the Connector status has turned green, indicating that it was successfully deployed.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=LEluAnYNNBQ\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to deploy a Connector on AWS\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"3. Add a Resource\"}),/*#__PURE__*/e(\"p\",{children:\"Now that you\u2019ve deployed a Twingate Connector on AWS, you can get remote access to any other resource running on the same VPC subnet. You can configure your resources not to have a Public IP address, but you will still be able to access them via Twingate.\"}),/*#__PURE__*/e(\"p\",{children:\"Go back to your Remote Network and click on the \u201CAdd Resource\u201A link. In the popup, click on the \u201CCIDR Address\u201A box, choose a Label name for the Resource, enter the private IP address of your resource\u2019s VM instance, and click \u201CAdd Resource\u201A. Congrats! You now have secure, private access to your resource, whether that\u2019s Jenkins, Grafana, MongoDB, or anything else you use.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=3mldnJh2bis\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to add a Resource\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"4. Download the Twingate client\"}),/*#__PURE__*/e(\"p\",{children:\"All that\u2019s left to do now is to install Twingate on your device (we support Windows, Mac, Linux and have apps for iOS and Android) to authenticate your account and authorize your access to the instance. As an example, let\u2019s walk through setting up the Twingate client on macOS.\"}),/*#__PURE__*/t(\"p\",{children:[\"First, download and install the macOS app \",/*#__PURE__*/e(s,{href:\"https://api.twingate.com/download/darwin\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\". Type in the Network URL that you chose when you signed up (the \",/*#__PURE__*/e(\"code\",{children:\"[abc]\"}),\" part of \",/*#__PURE__*/e(\"code\",{children:\"[abc].twingate.com\"}),\") and click \u201CJoin Network\u201A. You\u2019ll be asked to log in using the same account you used to sign up. After signing in, you\u2019ll see that Twingate is connected with access to the Resource you created. Click on \u201COpen in Browser\u2026\u201A and you should see your resource is accessible via the Private IP address of your VM instance, even though it has no public IP address.\"]}),/*#__PURE__*/e(\"p\",{children:\"Finally, disconnect from Twingate and try accessing the resource again \u2014 you should see that it\u2019s completely inaccessible.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"}),\" \",/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=_X5WmJtGB5U\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"How to access your Resource using the Twingate client\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Congrats! You\u2019ve finished setting up Twingate for AWS and used it to get secure access to your cloud resources. Anything else that you deploy to the same VPC (e.g., a web app, dashboard, database, etc.) can also be added as a Resource, and you would have secure access for those as well using the same Connector.\"}),/*#__PURE__*/e(\"p\",{children:\"If you also run things on GCP or on-prem, you can use Twingate as a single solution to manage your hybrid or multi-cloud architecture. Just follow similar steps to deploy connectors on each network, or use our API to configure everything programmatically. And as the end user, Twingate\u2019s client app is all you need to get secure access to all of your resources.\"}),/*#__PURE__*/t(\"p\",{children:[\"Join us in the \",/*#__PURE__*/e(s,{href:\"https://forum.twingate.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"community forum\"})}),\" to share how things went and what cool use cases you\u2019ve discovered!\"]}),/*#__PURE__*/e(\"h1\",{children:\"5. Sharing is Caring\"}),/*#__PURE__*/e(\"p\",{children:\"Do you want to share access to the resource with a client, collaborator, or friend? You can easily do this from the Twingate web UI. Just go to the \u201CTeam\u201A tab and click \u201CInvite User\u201A to send an email invitation. The recipient would simply follow the same steps to download the Twingate client, join your network, and get access to any resource you want!\"}),/*#__PURE__*/e(\"img\",{alt:\"invite client\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,4lFNmzEPQKj6eeB0cAmIYWvrXY.png?originalFilename=invite-client.png\",src:\"https://framerusercontent.com/images/4lFNmzEPQKj6eeB0cAmIYWvrXY.png\",srcSet:\"https://framerusercontent.com/images/4lFNmzEPQKj6eeB0cAmIYWvrXY.png?scale-down-to=512 512w,https://framerusercontent.com/images/4lFNmzEPQKj6eeB0cAmIYWvrXY.png 800w\"})]})},{index:75,id:\"Sb2ypXi7J\",[h]:!0,[d]:!1,[p]:\"What is Zscaler Private Access?\",[u]:\"Zscaler Private Access?\",[m]:\"zscaler-private-access\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2022-03-01T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/hml8mkH2IQk0pJkgu4OAUzbHsM.png\",srcSet:\"https://framerusercontent.com/images/hml8mkH2IQk0pJkgu4OAUzbHsM.png?scale-down-to=512 512w,https://framerusercontent.com/images/hml8mkH2IQk0pJkgu4OAUzbHsM.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/hml8mkH2IQk0pJkgu4OAUzbHsM.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/hml8mkH2IQk0pJkgu4OAUzbHsM.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/hml8mkH2IQk0pJkgu4OAUzbHsM.png\",srcSet:\"https://framerusercontent.com/images/hml8mkH2IQk0pJkgu4OAUzbHsM.png?scale-down-to=512 512w,https://framerusercontent.com/images/hml8mkH2IQk0pJkgu4OAUzbHsM.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/hml8mkH2IQk0pJkgu4OAUzbHsM.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/hml8mkH2IQk0pJkgu4OAUzbHsM.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"h1\",{children:\"What is Zscaler Private Access?\"}),/*#__PURE__*/t(\"p\",{children:[\"Zscaler Private Access is an access control solution designed around \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" principles. Companies use Zscaler Private Access to protect private resources and manage access for all users, whether at the office or working from home. However, this enterprise-grade solution may not work for every business. We will explain Zscaler Private Access and how it compares to Twingate\u2019s distributed approach to \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust access control\"})}),\".\"]}),/*#__PURE__*/e(\"h1\",{children:\"Zscaler Private Access\"}),/*#__PURE__*/e(\"h2\",{children:\"About Zscaler\"}),/*#__PURE__*/e(\"p\",{children:\"Zscaler Private Access (ZPA) is a cloud-native Zero Trust access control solution designed for today\u2019s distributed network architectures. Companies use Zscaler\u2019s ZPA product to provide access to private resources to all users no matter their location. The resources themselves may run on-premises in data centers or be hosted on public cloud platforms such as Azure or AWS.\"}),/*#__PURE__*/e(\"p\",{children:\"Zscaler customers deploy apps to their private resources and to users\u2019 devices. The resource\u2019s app initiates a proxy connection to the nearest Zscaler data center. The Zscaler client app enforces access policies on the user\u2019s device before initiating a proxy connection to its closest Zscaler data center.\"}),/*#__PURE__*/e(\"p\",{children:\"Zscaler operates Private Service Edges at a global network of more than 150 data centers. When users try to access resources, the Private Service Edge links the client and resource\u2019s proxy connections.\"}),/*#__PURE__*/e(\"p\",{children:\"The Zscaler cloud network also centralizes access management. Administrators use simple dashboards to monitor activity, manage security policies, and modify user permissions.\"}),/*#__PURE__*/e(\"p\",{children:\"As its name suggests, Zscaler Private Access only lets companies control access to their private resources. They must subscribe to a separate solution, Zscaler Internet Access, to manage their X-as-a-Service (XaaS) resources.\"}),/*#__PURE__*/e(\"h2\",{children:\"Applications\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Unified access control for external and internal users.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Unified access control for on-premises and cloud-hosted private resources.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Migrate from secure perimeter to Zero Trust network architecture.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Extend access control to IoT devices.\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"Benefits\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Consistent user experience at home or at the office.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Enhanced security through smaller attack surfaces and least privilege access policies.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Fast, easy deployments of software solutions.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Integrations with identity providers and other third-party services.\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"Considerations\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Zscaler\u2019s focus on large enterprises may not suit small or mid-sized organizations.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Opaque pricing structure requires consultation with Zscaler or a reseller.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"With all traffic passing through Zscaler\u2019s cloud, latency depends on the distance to the nearest Private Server Edge.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"User traffic passing through Zscaler\u2019s cloud may not be appropriate for all businesses.\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"Twingate\"}),/*#__PURE__*/e(\"h2\",{children:\"About Twingate\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate designed a distributed architecture for Zero Trust secure access. The legacy secure perimeter paradigm integrated the data plane and the control plane. Changes to access policies impact network configurations and vice versa. Twingate decouples the data and control planes to make companies\u2019 \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/network-architecture\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"network architectures\"})}),\" more performant and secure.\"]}),/*#__PURE__*/e(\"p\",{children:\"Twingate\u2019s solution consists of a cloud-based platform connecting users and resources. Companies deploy lightweight Connectors to protect resources. When users need access, the Twingate Client app enforces security policies. It then contacts Twingate\u2019s cloud-based Controller which facilitates authentication and authorization. A Twingate Relay then creates a direct, encrypted connection between the user\u2019s device and the resource.\"}),/*#__PURE__*/e(\"p\",{children:\"Administrators use simple consoles to define and manage security policies in the Controller. These policies can be based on device posture, user identity and role, network type, and more.\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"software-based\"})}),\" Zero Trust solution lets companies protect any resource whether running on-premises, hosted in the cloud, or delivered by a third-party XaaS provider.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Applications\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Provide access for all users whether on-premises or remote, employees or contractors.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Protect all resources whether on-premises, cloud-hosted, or third-party.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Simple, phased migrations to Zero Trust architectures.\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"Benefits\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Unification of access control systems no matter where resources and users are located.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Enhanced security through smaller attack surfaces and \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/principle-of-least-privilege\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"least privilege access\"})}),\" policies.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Rapid deployment through existing CI/CD pipelines.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Compatible with existing networks and security stacks.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Simplified administration with consoles for managing \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-models\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access policies and user permissions\"})}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Transparent, user-based pricing scales from small teams to the largest enterprise.\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"Considerations\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Free tier is limited to five users and one network.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Enterprise pricing tier required for the most advanced features.\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"Zscaler Private Access Security Capabilities Vs. Twingate and Zero Trust\"}),/*#__PURE__*/t(\"p\",{children:[\"Both Zscaler and Twingate address the inherent security weaknesses of \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/rdp-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"legacy VPN\"})}),\" technologies. Companies once assumed they could protect resources running on trusted networks by creating secure perimeters. They used VPN to create portals through their defenses for a handful of remote employees.\"]}),/*#__PURE__*/e(\"p\",{children:\"VPN was created to connect private networks over the internet. It treats a remote user\u2019s device as a remote network. Once connected, users have full access to anything on the network. Making things worse, anyone can see a company\u2019s VPN gateways on the public internet.\"}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust solutions eliminate these security risks by hiding resources behind software-defined perimeters. When hackers breach a private network, they cannot see the resources. Least privilege access policies make attacks more difficult by removing over-permissioned user accounts.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate and Zscaler make it much easier to turn each resource into its own protected segment without expensive changes to network infrastructure.\"}),/*#__PURE__*/e(\"h1\",{children:\"Zscaler Private Access Performance Vs. Twingate\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate and Zscaler also address the severe performance impacts of legacy castle-and-moat architectures. VPN gateways concentrate all user traffic. The hardware limitations, however, force users to compete for throughput. When users access cloud resources, VPN gateways channel the traffic in both directions through the private network. Besides undermining network bandwidth, this backhaul increases latency and degrades the user experience.\"}),/*#__PURE__*/e(\"p\",{children:\"Solutions such as Twingate\u2019s or Zscaler\u2019s improve user experience and network performance. Traffic destined for resources in the cloud no longer travels over a company\u2019s private network.\"}),/*#__PURE__*/e(\"p\",{children:\"Zscaler\u2019s centralized data center network creates single-hop routes from one side of the world to another. How much this improves latency will depend on how close users and resources are to their respective data centers.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate, by comparison, turns each user device into its own point of presence (PoP) by creating direct connections to resources along the most efficient, performant path.\"}),/*#__PURE__*/e(\"h1\",{children:\"Zscaler Private Access Ease of Use Vs. Twingate\"}),/*#__PURE__*/e(\"p\",{children:\"Both Twingate and ZPA are cloud-first solutions that make access control easier to manage. Browser consoles let administrators on-board and off-board users, update permissions, and manage security policies.\"}),/*#__PURE__*/e(\"p\",{children:\"Unlike legacy VPN systems, both solutions are easy to deploy. All components of Twingate and Zscaler\u2019s solutions are software and require no changes to the underlying network or the protected resources.\"}),/*#__PURE__*/e(\"h1\",{children:\"Zscaler Private Access scalability Vs Twingate\"}),/*#__PURE__*/e(\"p\",{children:\"Scalability was never easy with legacy VPN technologies \u2014 a weakness the pandemic made clear. Building access control into the physical network means any changes are time-consuming and expensive. In addition, hardware capacity limits meant that gateways designed to handle a few remote users collapsed when every user went remote.\"}),/*#__PURE__*/e(\"p\",{children:\"Modern software solutions such as Zscaler or Twingate scale instantly as business needs change. Administrators can add new users or update permissions from consoles without having to rip-and-replace network appliances.\"}),/*#__PURE__*/e(\"h1\",{children:\"Zscaler Private Access Support Vs. Twingate Support\"}),/*#__PURE__*/e(\"p\",{children:\"Zscaler Private Access provides 24x7 support through its website and call centers. However, telephone response times vary depending on the customer\u2019s service agreement. The Standard agreement included with all plans offers priority-1 response times of two hours. Upgrade to the Premium Plus service levels and response times drop to fifteen minutes.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate provides support options for each subscription tier. A knowledge base and community forum are available to all customers \u2014 even those on the free Starter plan. At the Business tier, customers get access to Twingate\u2019s email support system. Enterprise tier customers get priority support services.\"}),/*#__PURE__*/e(\"h1\",{children:\"How Twingate enhances security beyond access control\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s modern approach to Zero Trust provides additional security benefits. For example, companies can restrict SSH access to specific users and contexts. Threat actors use SSH and other common tools to penetrate deeper into the network. Twingate extends \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"multi-factor authentication\"})}),\" to SSH and limits access to privileged users.\"]}),/*#__PURE__*/e(\"p\",{children:\"Other security features include policies based on device posture and activity logs indexed to both users and devices. Combined, these features help Twingate customers further reduce their attack surface and mitigate successful attacks.\"}),/*#__PURE__*/e(\"h1\",{children:\"Secure access for all resources with Twingate\u2019s Zero Trust solution\"}),/*#__PURE__*/e(\"p\",{children:\"The old secure perimeter paradigm has outlived its usefulness. Technologies like VPN make networks too brittle and expensive to manage. Even worse, VPN itself is a significant vector for cyberattacks.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate lets companies deploy secure access solutions based on modern Zero Trust principles. Within as little as 15 minutes, companies can hide any resource and implement role-based, least privilege access rules. The user experience improves, networks become more performant, and companies become less vulnerable to today\u2019s security threats.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=zscaler-private-access\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact Twingate\"})}),\" to learn how to protect your on-premises, cloud-hosted, and third-party cloud services. Or subscribe to our free Starter tier to see how individuals and small teams benefit from Zero Trust access.\"]})]})},{index:76,id:\"A5ZK9iAct\",[h]:!0,[d]:!1,[p]:\"How to Choose an Enterprise VPN | Twingate\",[u]:\"Enterprise VPN\",[m]:\"enterprise-vpn\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2022-02-24T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/o9muAnSHSCoaZ73zo4Kpa8kmM0.png\",srcSet:\"https://framerusercontent.com/images/o9muAnSHSCoaZ73zo4Kpa8kmM0.png?scale-down-to=512 512w,https://framerusercontent.com/images/o9muAnSHSCoaZ73zo4Kpa8kmM0.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/o9muAnSHSCoaZ73zo4Kpa8kmM0.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/o9muAnSHSCoaZ73zo4Kpa8kmM0.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/o9muAnSHSCoaZ73zo4Kpa8kmM0.png\",srcSet:\"https://framerusercontent.com/images/o9muAnSHSCoaZ73zo4Kpa8kmM0.png?scale-down-to=512 512w,https://framerusercontent.com/images/o9muAnSHSCoaZ73zo4Kpa8kmM0.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/o9muAnSHSCoaZ73zo4Kpa8kmM0.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/o9muAnSHSCoaZ73zo4Kpa8kmM0.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Over the past three decades, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN technologies\"})}),\" have become core elements of network architectures. But VPN is brittle, difficult to manage, and less secure. Even the most sophisticated enterprise VPNs suffer from these inherent weaknesses.\"]}),/*#__PURE__*/t(\"p\",{children:[\"This article will introduce you to the enterprise VPN, its strengths, and what to consider when selecting an enterprise VPN provider. You should also consider the challenges enterprise VPNs create \u2014 challenges that go away with modern \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" secure access solutions.\"]}),/*#__PURE__*/e(\"h1\",{children:\"What is an Enterprise VPN?\"}),/*#__PURE__*/t(\"p\",{children:[\"Enterprise VPNs securely connect geographically separate \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/network-architecture\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"network endpoints\"})}),\". Created as a cheaper alternative to leased-line WAN services, VPN connected companies\u2019 remote networks to their central computing resources across the public internet. In this site-to-site model, VPN gateways sat at the edge of each location\u2019s protected networks. The gateways connected through secure, encrypted tunnels that prevented inspection or interception of sensitive data.\"]}),/*#__PURE__*/e(\"p\",{children:\"Soon after, another use case emerged: remote access. Remote access VPN applied its site-to-site model to let traveling users access company resources through the secure perimeter. The VPN gateway treated the VPN client as another trusted network. Once connected, the user gained access to mail servers, databases, and any other resources on the network.\"}),/*#__PURE__*/e(\"p\",{children:\"Today\u2019s enterprise VPN solutions, also known as cloud VPNs or VPNs-as-a-Service, serve the same purposes using cloud-based architectures. The enterprise VPN provider maintains a network backbone that terminates in a dozen or more points of presence (PoPs) worldwide. Field offices or remote users connect to their nearest PoP. Once authenticated, their traffic travels across the provider\u2019s private network to the company\u2019s network endpoint.\"}),/*#__PURE__*/e(\"p\",{children:\"Enterprise VPNs offer several benefits over traditional VPN infrastructures:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Security:\"}),\" Rather than enforcing \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control\"})}),\" rules after users connect to a VPN gateway, the rules are enforced at the PoP.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Integrations:\"}),\" Enterprise VPN providers offer integrations with cloud platforms and service providers to extend their coverage beyond a company\u2019s on-premises networks.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Efficiency:\"}),\" Enterprise VPN providers take responsibility for managing and maintaining their infrastructure, freeing company IT teams to focus on other tasks.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"These benefits make enterprise VPNs increasingly attractive options for CTOs frustrated with the labor and expense required by hardware-centric VPN technologies.\"}),/*#__PURE__*/e(\"h1\",{children:\"Top Four Considerations When Selecting an Enterprise VPN\"}),/*#__PURE__*/e(\"p\",{children:\"Choosing the wrong enterprise VPN provider could lock a company into a system that undermines network performance or inhibits business growth. Consider these four things when selecting an enterprise VPN:\"}),/*#__PURE__*/e(\"h2\",{children:\"Present and Future IT Infrastructure\"}),/*#__PURE__*/e(\"p\",{children:\"Self-evaluation is an important first step. Any enterprise VPN must support the way the company works today. Some key questions to ask:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"How are resources split between on-premises assets, cloud-hosted platforms, and cloud X-as-a-Service (XaaS) providers?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"How permanent are work from home policies? Which users will return to an office-centric work mode? Which users will continue working remotely?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"How many non-employees need access to company resources? What security exposure does integration with customers and suppliers create?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"What is the balance between managed user devices and user-owned devices? In BYOD scenarios, how much access will administrators have to user-owned devices?\"})})]}),/*#__PURE__*/e(\"p\",{children:\"These questions and others will map a company\u2019s needs to the right VPN solution. Asking the same questions about where the company plans to be next year or five years from now is just as important. Eliminateany enterprise VPN providers that cannot evolve with the company from consideration.\"}),/*#__PURE__*/e(\"h2\",{children:\"Performance, Capacity, and Scalability\"}),/*#__PURE__*/e(\"p\",{children:\"Some providers began as network equipment manufacturers ,while others offered cloud-native solutions. Whatever their origins, the providers\u2019 VPN designs will not fit every company\u2019s needs.\"}),/*#__PURE__*/e(\"p\",{children:\"Solutions that hew too close to hub-and-spoke topologies concentrate user traffic, reduce network throughput, and increase latency. Additionally, the size of a provider\u2019s PoP network may not match a company\u2019s needs. With small networks, any promised performance gains vanish beneath everyday internet congestion.\"}),/*#__PURE__*/e(\"h2\",{children:\"Compatibility with Existing Infrastructure\"}),/*#__PURE__*/e(\"p\",{children:\"VPN plays a fundamental role in a company\u2019s infrastructure. Vendor selection must factor in how well the technology integrates with that infrastructure. Some questions to ask:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"How much of the current security stack must be replaced?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"What changes need to be made to resources and networks?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Can any user device run the VPN client?\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"Ease of Use\"}),/*#__PURE__*/e(\"p\",{children:\"Security compliance depends directly on the user experience. The more a user must engage with the VPN client, the less likely they are to follow proper security hygiene as they may be inclined to turn the VPN off due to latency. An enterprise VPN must make life as easy for the user as possible.\"}),/*#__PURE__*/t(\"p\",{children:[\"Ease of use is just as important for administrators. Security best practices call for narrowly-defined, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-models\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"role-based\"})}),\" access policies and network segmentation. With the wrong enterprise VPN, both will be difficult to deploy and manage.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Common Failures of Enterprise VPNs\"}),/*#__PURE__*/e(\"p\",{children:\"An enterprise VPN provider that aligns with everything a company needs could still become an obstacle to business performance. Even the most advanced provider is adapting a thirty-year-old technology to fit today\u2019s distributed network environment. These are the common failures of enterprise VPNs:\"}),/*#__PURE__*/e(\"h2\",{children:\"VPNs are Not Complete Solutions\"}),/*#__PURE__*/e(\"p\",{children:\"VPN is based on a distinction between internal and external that no longer exists. Today, resources are not confined to company facilities, and administrators may have little control over user-owned devices. Users are just as likely to be freelancers as employees.\"}),/*#__PURE__*/e(\"p\",{children:\"In the case of cloud integrations, enterprise VPN providers may support Azure, AWS, and other large cloud platforms. However, they cannot support every XaaS provider. Companies must add duplicative fixes that make networks more complex for every gap in a VPN\u2019s coverage.\"}),/*#__PURE__*/e(\"h2\",{children:\"VPNs Undermine Business Performance\"}),/*#__PURE__*/e(\"p\",{children:\"The VPN paradigm\u2019s hub-and-spoke topology, especially with hardware-centric solutions, significantly penalizes network performance. VPN gateways support a limited number of simultaneous users. Gateways also concentrate remote traffic through networks even when that traffic is destined for cloud resources.\"}),/*#__PURE__*/e(\"p\",{children:\"The resulting hit to network throughput and latency makes it harder for users to work efficiently. And when business performance suffers, IT departments take the blame.\"}),/*#__PURE__*/e(\"h2\",{children:\"VPNs are Brittle and Difficult to Manage\"}),/*#__PURE__*/e(\"p\",{children:\"Another consequence of VPN design is the integration of access control with network infrastructure. Any change to a VPN gateway can require changes elsewhere in the network. Likewise, any changes in the network can require changes to VPN gateways and client apps.\"}),/*#__PURE__*/e(\"h2\",{children:\"VPNs Expand your Attack Surface\"}),/*#__PURE__*/e(\"p\",{children:\"VPN systems are among the top vectors for cyberattacks. Because every VPN gateway publishes its presence on the internet, hackers can exploit any unpatched device to penetrate the protected network. Hackers also target user VPN credentials through social engineering attacks to gain access to the network.\"}),/*#__PURE__*/t(\"p\",{children:[\"What makes these attacks so effective is VPN\u2019s permissive nature. Originally meant to connect two trusted networks, VPN gateways grant full access to the networks they protect. VPN\u2019s permissive access lets hackers \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/lateral-movement\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"move laterally\"})}),\" through the network undetected.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Enterprise VPNs vs. Zero Trust\"}),/*#__PURE__*/t(\"p\",{children:[\"Businesses are adopting a modern approach to secure access called \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" In response to VPN\u2019s growing weaknesses. Discarding the old concept of secure perimeters and trusted users, Zero Trust assumes that nothing is ever secure. Any user, device, network, or resource could be compromised at any time. Zero Trust solutions challenge every connection request, authorizing access on a least-privilege basis, and revoking permissions as each session ends.\"]}),/*#__PURE__*/e(\"p\",{children:\"When implemented through software-defined perimeters (SDPs), Zero Trust solutions significantly limit companies\u2019 risk exposure. Hiding resources behind SDPs makes them impossible to see from the internet \u2014 or even from a compromised network. Challenging every connection attempt impedes lateral movement and makes hackers easier to identify. As a result, the attack surface of Zero Trust networks is much smaller than that of VPN networks.\"}),/*#__PURE__*/e(\"h2\",{children:\"Twingate Secure Access through Zero Trust\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate\u2019s software-based Zero Trust solutions solve many of the issues VPN technologies create.\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Unified solution:\"}),\" Twingate lets companies control access for all users, devices, and resources within a single system.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Performant networks:\"}),\" Twingate\u2019s direct, encrypted connections send user traffic along the most efficient routes, relieving private networks from traffic destined for cloud assets.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Responsive scalability:\"}),\" Not dependent on network infrastructure, Twingate can scale up and down instantly with a company\u2019s business needs.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Easy administration:\"}),\" Simple, unified consoles let administrators manage user permissions quickly.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Improved security:\"}),\" Twingate tightens privileged access by extending Zero Trust to SSH and other network tools.\"]})})]}),/*#__PURE__*/e(\"h2\",{children:\"Zero-impact Migration to Twingate Zero Trust\"}),/*#__PURE__*/e(\"p\",{children:\"Unlike early Zero Trust implementations that required significant re-engineering, Twingate solutions are much easier to deploy. No changes to the underlying network or resource settings are needed. Twingate is compatible with a company\u2019s security stack \u2014 and will co-exist with traditional VPN systems.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate\u2019s design supports phased deployments. A company can start with teams and resources with the greatest need for secure, unified access control. Over time, a company can extend its Twingate Zero Trust system throughout the organization.\"}),/*#__PURE__*/e(\"h2\",{children:\"Twingate Zero Trust is a modern replacement for enterprise VPN\"}),/*#__PURE__*/e(\"p\",{children:\"Today\u2019s enterprise VPN solutions are saddled with the inherent weaknesses of a thirty-year-old technology. At best, they only mitigate the performance, manageability, and security issues VPN technology creates.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate\u2019s modern, Zero Trust solution is designed for today\u2019s distributed networking environment: users can be anywhere with any device, resources could be scattered across physical and cloud locations. Twingate shrinks the attack surface and constrains lateral movement \u2014 in the process, improving network performance and the user experience.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=enterprise-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact us\"})}),\" to learn more about how Twingate\u2019s secure access solution can be deployed in as little as 15 minutes. Or try our free 5-user Starter plan to take Twingate for a spin.\"]})]})},{index:77,id:\"MMScrfVUG\",[h]:!0,[d]:!1,[p]:\"What is Perimeter 81 VPN?\",[u]:\"Perimeter 81 VPN?\",[m]:\"perimeter81-vpn\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2022-02-23T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/Af7UWdkpFIemFuwvnslOlhA5Qg.png\",srcSet:\"https://framerusercontent.com/images/Af7UWdkpFIemFuwvnslOlhA5Qg.png?scale-down-to=512 512w,https://framerusercontent.com/images/Af7UWdkpFIemFuwvnslOlhA5Qg.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/Af7UWdkpFIemFuwvnslOlhA5Qg.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/Af7UWdkpFIemFuwvnslOlhA5Qg.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/Af7UWdkpFIemFuwvnslOlhA5Qg.png\",srcSet:\"https://framerusercontent.com/images/Af7UWdkpFIemFuwvnslOlhA5Qg.png?scale-down-to=512 512w,https://framerusercontent.com/images/Af7UWdkpFIemFuwvnslOlhA5Qg.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/Af7UWdkpFIemFuwvnslOlhA5Qg.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/Af7UWdkpFIemFuwvnslOlhA5Qg.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"h1\",{children:\"What is Perimeter 81 VPN?\"}),/*#__PURE__*/t(\"p\",{children:[\"Perimeter 81 is an Israeli network security service provider. The company\u2019s founders previously developed a consumer-focused VPN service called SaferVPN. After a successful exit, they used SaferVPN\u2019s technology as the foundation for Perimeter 81. The new company\u2019s focus is on solving the problems that legacy hardware-centric technologies like \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/business-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN\"})}),\" create for the modern enterprise.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Using a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sase-meaning\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Secure Access Service Edge (SASE)\"})}),\" model, Perimeter 81 consolidates networking, security, and remote access within a single, cloud-based service. Applying principles of \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust Network Access\"})}),\" helps Perimeter 81\u2019s customers adopt a more secure and flexible approach to defending their most sensitive networked resources.\"]}),/*#__PURE__*/e(\"p\",{children:\"Billing itself as the \u201Cworld\u2019s first Cybersecurity Experience Platform,\u201C Perimeter 81 offers a wide range of services:\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"User management\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Unified, cloud-based console for managing user access policies.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Cross-platform agents for remote devices.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Identity-based and user-based access policies.\"})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Network management\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Site-to-site wide-area networking for branch networks and cloud resources.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Global Points of Presence network backbone.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Split tunneling to balance user experience and network performance.\"})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Network security\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Authentication with single sign-on and multi-factor authentication.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Encryption of user-to-resource connections.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"DNS filtering to block malicious or inappropriate websites.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Device posture checking.\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"Perimeter 81 VPN\"}),/*#__PURE__*/e(\"h2\",{children:\"Brief product summary\"}),/*#__PURE__*/e(\"p\",{children:\"Although Perimeter 81 promotes its broader suite of converged networking services, companies can use a subset of those features as a replacement for their legacy VPN infrastructure:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Encryption by port and protocol.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Role-based, least-privilege access rules.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Protect cloud and on-premises resources.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Always-on security for remote users.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Network visibility through unified dashboards.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Manage access through browser-based consoles.\"})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Use cases\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Manage access for remote users.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Manage access for on-premises users.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Manage access for contractors and other third-party users.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Unify access control to on-premises and cloud-based resources.\"})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Benefits\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Unified dashboards for managing access control rules and network usage.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Easy deployment of Perimeter 81 VPN agents to user devices.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Global PoP network.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Client agent support for Windows, macOS, Linux, iOS, and Android.\"})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Considerations\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"\u201CVPN alternative\u201A features are a subset of much larger platform.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Changes may be needed to network architecture or configurations.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Entry-level Essentials plan requires a minimum of 5 users and has fewer security features.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Third party reviewers have mentioned inconsistent performance and/or speed\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"Twingate\"}),/*#__PURE__*/e(\"h2\",{children:\"About Twingate\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate delivers a modern approach to secure network access by establishing software-defined perimeters around every protected network. Least \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/principle-of-least-privilege\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"privilege access\"})}),\" and other \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust principles\"})}),\" significantly reduce a company\u2019s attack surface while making networks more efficient and performant.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Applications\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Manage access for remote and on-premises users.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Manage access for employees and third-party users.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Implement role-based, least privilege access.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Secure on-premises and cloud resources.\"})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Benefits\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Zero-trust network access based on least privilege.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Unified access control for all users and resources.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"No changes to network infrastructure required.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"No changes to resources or user devices required.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Compatible with existing security stack.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Simple, easy-to-use administrative console.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Quick implementation within 15 minutes.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Tiered pricing includes a free option for individuals or small teams.\"})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Considerations\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Tiered pricing based on the number of users and remote networks.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Advanced features limited to the Enterprise tier.\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"Perimeter 81 Security Capabilities Vs. Twingate and Zero Trust\"}),/*#__PURE__*/t(\"p\",{children:[\"Both Twingate and Perimeter 81 offer solutions to many challenges organizations face from \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/business-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"legacy VPN technologies\u2019\"})}),\" increasing vulnerability to cybercrime. Publicly visible on the internet, hackers can easily discover unpatched VPN gateways and establish footholds in vulnerable networks. And because VPN gateways allow full access to the networks they protect, any vulnerable credentials give hackers freedom to move laterally through the breached network.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Both solutions apply \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust Network Access\"})}),\" principles to eliminate these vulnerabilities. But there are differences. Perimeter 81 network entry points, for example, are publicly visible while Twingate hides all company resources behind \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"software-defined perimeters\"})}),\".\"]}),/*#__PURE__*/e(\"h1\",{children:\"Perimeter 81 Performance Vs. Twingate\"}),/*#__PURE__*/e(\"p\",{children:\"Legacy VPN technologies can undermine network performance and user experience. VPN gateways are choke points through which all secure traffic must flow, consuming bandwidth and increasing latency. As we saw during the pandemic, VPN gateways that supported a handful of traveling employees could not handle the spike in traffic as everyone worked from home.\"}),/*#__PURE__*/e(\"p\",{children:\"Although different, the cloud-centric architectures that Perimeter 81 and Twingate use help mitigate the challenges of supporting large populations of remote users. Split tunneling, for example, routes a user\u2019s non-essential traffic to the public internet while work-related traffic passes through encrypted connections. In Twingate\u2019s case, split-tunneling is enabled by default while administrators must reconfigure each Perimeter 81 client agent.\"}),/*#__PURE__*/e(\"h1\",{children:\"Perimeter 81 Ease of Use Vs. Twingate\"}),/*#__PURE__*/e(\"p\",{children:\"VPN technologies have also become more difficult for end-users and administrators alike. To mitigate the security weaknesses of VPNs, companies segment their networks behind different VPN gateways. This forces users to connect and disconnect their VPN client as they switch from one resource to another.\"}),/*#__PURE__*/e(\"p\",{children:\"Administrative overhead increases as well. Segmented networks require more access control policies. The physical networks themselves become more difficult to manage. And since VPN only provides remote access to on-premises resources, parallel systems are needed to support on-site workers and cloud-based resources.\"}),/*#__PURE__*/e(\"p\",{children:\"Unified, cloud-based solutions such as those from Perimeter 81 or Twingate simplify the user and administrator experience. Client agents are simple and easy to use, creating connections directly to resources. Remote users, on-site users, and third-party users fall under the same access control system.\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate goes a step further by fully decoupling access control from the physical network. Adding \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate\u2019s Zero Trust\"})}),\" protection can be done without making changes to the resource\u2019s address or disrupting established user workflows. Decoupled from the underlying network, Twingate\u2019s secure access solution can work with more \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/network-connectivity-for-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"complex architectures\"})}),\".\"]}),/*#__PURE__*/e(\"h1\",{children:\"Perimeter 81 Scalability Vs. Twingate\"}),/*#__PURE__*/t(\"p\",{children:[\"Another advantage that modern \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control solutions\"})}),\" have over legacy VPN architectures is their responsiveness to changing business conditions. Embedded in the network architecture, VPN simply cannot scale quickly or affordably.\"]}),/*#__PURE__*/e(\"p\",{children:\"Both Twingate and Perimeter 81 leverage their cloud-based architectures to make security and access control more responsive to business goals. Simple browser-based consoles let administrators manage access control policies, user profiles, and devices.\"}),/*#__PURE__*/e(\"p\",{children:\"Where the two service providers differ is in the complexity of the deployment process. Twingate is designed to coexist with a company\u2019s existing network. Customers have deployed Twingate\u2019s software-based solutions in as little as 15 minutes. Perimeter 81, on the other hand, is better seen as a replacement for a company\u2019s wide-area-networking, network management, and remote access solutions. The planning and implementation process is more involved and can require changes to the network to get access provisioned exactly as desired that could impact business processes and workflows.\"}),/*#__PURE__*/e(\"h1\",{children:\"Perimeter 81 Support Vs. Twingate Support\"}),/*#__PURE__*/e(\"p\",{children:\"Access to support varies with the tiered pricing structure the two companies offer. In Twingate\u2019s case all customers, including those on the free Starter tier, get access to their comprehensive knowledge base and community forum. Email support is added at the Business tier while Enterprise-tier customers get priority support.\"}),/*#__PURE__*/e(\"p\",{children:\"Perimeter 81\u2019s paying customers get a knowledge base as well as chat and email support. At the lowest tier, however, chat and email are only available during office hours. Phone support and dedicated \u201Csuccess managers\u201A are only available for customers at the two highest tiers.\"}),/*#__PURE__*/e(\"h1\",{children:\"How Twingate enhances security beyond access control\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate\u2019s laser focus on secure access control can be attractive to organizations that want to keep their existing infrastructure investments in place. Phased deployments of Twingate are simple, straightforward, and do not require any changes to the way the organization works. Moreover, Twingate offers additional features that enhance an organization\u2019s network security.\"}),/*#__PURE__*/e(\"p\",{children:\"Legacy services such as SSH were designed with few, if any, security features. Rather than letting all users have access to these services, Twingate lets companies apply 2-Factor Authentication to limit privileges to specific users accessing specific resources. This dramatically reduces hackers\u2019 ability to leverage compromised privileged credentials.\"}),/*#__PURE__*/e(\"p\",{children:\"In addition to setting least-privilege access policies by user or role, Twingate customers can define policies based on device posture. Unlike other solutions, Twingate decentralizes policy enforcement. The Twingate client agent evaluates device posture and applies relevant access rules before any connections are made.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate helps minimize the blast radius of a security breach by providing detailed activity logs. Besides indexing by user, Twingate\u2019s system indexes activity logs by device. Extensive, detailed, indexed logs make spotting unusual behavior much easier. As a result, companies can react to potential breaches much faster.\"}),/*#__PURE__*/e(\"h1\",{children:\"Businesses of all sizes benefit from Twingate\u2019s focus on secure access\"}),/*#__PURE__*/e(\"p\",{children:\"Perimeter 81 and Twingate are among the new generation of service providers eliminating the security weaknesses of legacy VPN technologies through Zero Trust Network Access. Twingate\u2019s approach gives organizations of all sizes a simple, less disruptive path to unifying access control for all users and resources. No changes to the network are necessary. Twingate coexists with legacy systems as a company rolls out its more secure system. Deployable in minutes, secure, and performant, Twingate scales with any organization and budget.\"}),/*#__PURE__*/t(\"p\",{children:[\"Check out Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=perimeter81-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"free Starter tier\"})}),\" to quickly evaluate how easy modern security and access control can be.\"]})]})},{index:78,id:\"qThWphEHv\",[h]:!0,[d]:!1,[p]:\"Staging Environments for WordPress Sites on GCP\",[u]:\"WordPress Sites on GCP\",[m]:\"gcp-wordpress-staging-environment\",[g]:\"\",[w]:\"Jimmy Li\",[f]:\"2022-02-18T00:00:00.000Z\",[y]:\"nwIUHELao\",[b]:T({src:\"https://framerusercontent.com/images/r53eBykSZmbafh0Tx2VUfTRpK0o.png\",srcSet:\"https://framerusercontent.com/images/r53eBykSZmbafh0Tx2VUfTRpK0o.png?scale-down-to=512 512w,https://framerusercontent.com/images/r53eBykSZmbafh0Tx2VUfTRpK0o.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/r53eBykSZmbafh0Tx2VUfTRpK0o.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/r53eBykSZmbafh0Tx2VUfTRpK0o.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/r53eBykSZmbafh0Tx2VUfTRpK0o.png\",srcSet:\"https://framerusercontent.com/images/r53eBykSZmbafh0Tx2VUfTRpK0o.png?scale-down-to=512 512w,https://framerusercontent.com/images/r53eBykSZmbafh0Tx2VUfTRpK0o.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/r53eBykSZmbafh0Tx2VUfTRpK0o.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/r53eBykSZmbafh0Tx2VUfTRpK0o.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"If you are a web developer working with clients, running your own business website, or simply hosting your personal blog, you likely want to have a way for you or your customers to privately preview changes before they are made public. With \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=wordpress-staging\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate Starter\"})}),\", you can easily create a private staging environment that is completely inaccessible from the public internet but still shareable with collaborators or clients \u2014 all without setting up a VPN, port forwarding, static IP addresses, or configuring DDNS.\"]}),/*#__PURE__*/t(\"p\",{children:[\"In this guide, we\u2019ll walk through how to set things up on Google Cloud Platform (GCP) for WordPress, but the same general steps also work if you use other solutions like \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/aws-wordpress-staging-environment\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"AWS\"})}),\", Digital Ocean, or Linode. As the video tutorial below shows, the entire process takes under 3 minutes. We\u2019ll walk through each step in the sections below.\"]}),/*#__PURE__*/t(\"p\",{children:[\"\\xf0\u0178\u017D\\xa5 \",/*#__PURE__*/e(\"strong\",{children:\"Full 3 minute video tutorial:\"})]}),/*#__PURE__*/e(\"img\",{alt:\"Video tutorial: How to set up remote access to a private staging environment on GCP using Twingate in <3 minutes\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,7Lr8aFXhZpSOYVy7loUVJ3ZRPqg.png?originalFilename=client-remote-access.png\",src:\"https://framerusercontent.com/images/7Lr8aFXhZpSOYVy7loUVJ3ZRPqg.png\",srcSet:\"https://framerusercontent.com/images/7Lr8aFXhZpSOYVy7loUVJ3ZRPqg.png?scale-down-to=512 512w,https://framerusercontent.com/images/7Lr8aFXhZpSOYVy7loUVJ3ZRPqg.png 800w\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=tL0vktWOA8k\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Video tutorial: How to set up remote access to a private staging environment on GCP using Twingate in <3 minutes\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/t(\"p\",{children:[\"Please also join us in our \",/*#__PURE__*/e(s,{href:\"https://forum.twingate.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"community forum\"})}),\" to share and discuss your experience and any other use cases you\u2019ve discovered!\"]}),/*#__PURE__*/e(\"h1\",{children:\"Prerequisites\"}),/*#__PURE__*/t(\"p\",{children:[\"GCP comes with pre-configured instances of WordPress to make it really fast to start building a website, and it has a \",/*#__PURE__*/e(s,{href:\"https://cloud.google.com/free\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"free tier and free credits\"})}),\" to get up and running with no cost. Please follow the short video tutorial below to deploy WordPress on GCP if you don\u2019t already have it set up. Choose the GCP zone and machine configuration that is appropriate for you. As part of the deployment configuration, we can safely remove the external IP and deny HTTP/HTTPS traffic from the Internet. In the rest of this guide, we\u2019ll show you how to use Twingate to grant yourself (or any other trusted party) secure, private access to your instance via just the Private IP address.\"]}),/*#__PURE__*/t(\"p\",{children:[\"\\xf0\u0178\u017D\\xa5 \",/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"})]}),/*#__PURE__*/e(\"img\",{alt:\"Video tutorial: How to deploy WordPress on GCP\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,6Fn6EovNoOIX2D2Kl8Wyb0YTlM.png?originalFilename=gcp-deploy-wordpress.png\",src:\"https://framerusercontent.com/images/6Fn6EovNoOIX2D2Kl8Wyb0YTlM.png\",srcSet:\"https://framerusercontent.com/images/6Fn6EovNoOIX2D2Kl8Wyb0YTlM.png?scale-down-to=512 512w,https://framerusercontent.com/images/6Fn6EovNoOIX2D2Kl8Wyb0YTlM.png 800w\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=48c9rqmreR0\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Video tutorial: How to deploy WordPress on GCP\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h1\",{children:\"Sign up for Twingate\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate Starter is a new free plan that is designed for home and personal use. If you don\u2019t have an account already, please click \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/twingate-starter-setup?utm_source=blog&utm_medium=blog&utm_campaign=wordpress-staging\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\" and follow the simple steps to sign up for a Starter account and begin the initial setup. Once you have an account, there are 5 simple steps to get up and running.\"]}),/*#__PURE__*/e(\"h1\",{children:\"1. Create a Remote Network\"}),/*#__PURE__*/e(\"p\",{children:\"After creating a Twingate account, from the main \u201CNetwork\u201A page, add a new Remote Network and give it a name. This represents the network we\u2019re going to connect to \u2014 in this case, that would be GCP.\"}),/*#__PURE__*/t(\"p\",{children:[\"\\xf0\u0178\u017D\\xa5 \",/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"})]}),/*#__PURE__*/e(\"img\",{alt:\"Video tutorial: How to create a Remote Network for GCP on Twingate\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,G740CxxYX5E7KhNIpMYU9NqP8.png?originalFilename=gcp-add-remote-network.png\",src:\"https://framerusercontent.com/images/G740CxxYX5E7KhNIpMYU9NqP8.png\",srcSet:\"https://framerusercontent.com/images/G740CxxYX5E7KhNIpMYU9NqP8.png?scale-down-to=512 512w,https://framerusercontent.com/images/G740CxxYX5E7KhNIpMYU9NqP8.png 800w\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=5c6Fe7O2AFs\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Video tutorial: How to create a Remote Network for GCP on Twingate\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h1\",{children:\"2. Add a Connector\"}),/*#__PURE__*/t(\"p\",{children:[\"The next step is to deploy a Twingate Connector, which is a piece of software that allows for secure access to your remote network and the services running on it. In addition to Lightsail, it can also be deployed to other cloud instances (\",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/aws-wordpress-staging-environment\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"AWS\"})}),\", Azure, etc.) as well as your home devices, including \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/synology-nas\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Synology NAS\"})}),\" and \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/raspberry-pi-home-assistant\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Raspberry Pi\"})}),\".\"]}),/*#__PURE__*/e(\"h2\",{children:\"Generate Connector tokens\"}),/*#__PURE__*/e(\"p\",{children:\"In this case, we\u2019ll set it up on GCP. Click on one of the automatically generated Connectors (the names are random) and complete the following steps:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Click on Linux as the deployment method\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Generate tokens. You\u2019ll be prompted to sign in again, after which you should see two new tokens.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Copy the automatically generated shell command. You will soon run this command on your Lightsail instance to install the Connector there.\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"\\xf0\u0178\u017D\\xa5 \",/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"})]}),/*#__PURE__*/e(\"img\",{alt:\"Video tutorial: How to generate Connector tokens and deploy via Linux\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,xCbUQNMXkQd9XnrrRiIkbpXSXY.png?originalFilename=linux-generate-tokens.png\",src:\"https://framerusercontent.com/images/xCbUQNMXkQd9XnrrRiIkbpXSXY.png\",srcSet:\"https://framerusercontent.com/images/xCbUQNMXkQd9XnrrRiIkbpXSXY.png?scale-down-to=512 512w,https://framerusercontent.com/images/xCbUQNMXkQd9XnrrRiIkbpXSXY.png 800w\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=ry-95xa926Y\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Video tutorial: How to generate Connector tokens and deploy via Linux\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h2\",{children:\"Deploy the Connector on the Remote Network\"}),/*#__PURE__*/e(\"p\",{children:\"In GCP, create a new VM instance where we\u2019ll deploy the Twingate Connector.\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"We suggest giving the VM instance the same name as the Connector for easy association\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Choose the Region, Zone, and Machine configuration that\u2019s appropriate for you (some configurations can be \",/*#__PURE__*/e(s,{href:\"https://cloud.google.com/free\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"free\"})}),\")\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Expand the \u201CNetworking, Disks, Security, \u2026\u201A section at the bottom, then expand the \u201CManagement\u201A section. Inside the \u201CAutomation\u201A textbox, paste in the command that was generated earlier. This will ensure that the Twingate Connector automatically installs and runs when you boot up your VM instance.\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"\\xf0\u0178\u017D\\xa5 \",/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"})]}),/*#__PURE__*/e(\"img\",{alt:\"Video tutorial: How to deploy a Connector on a GCP VM\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,Em8kF9knZ4bsI2Id5h6OfcIPns.png?originalFilename=deploy-connector-gcp-linux.png\",src:\"https://framerusercontent.com/images/Em8kF9knZ4bsI2Id5h6OfcIPns.png\",srcSet:\"https://framerusercontent.com/images/Em8kF9knZ4bsI2Id5h6OfcIPns.png?scale-down-to=512 512w,https://framerusercontent.com/images/Em8kF9knZ4bsI2Id5h6OfcIPns.png 800w\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=hEi1ZUlGwXE\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Video tutorial: How to deploy a Connector on a GCP VM\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"After just a minute or so, the instance should be up and running, and you can check the logs to verify that the Connector was successfully deployed. You should also see within the Twingate admin console that the Connector status has turned green.\"}),/*#__PURE__*/t(\"p\",{children:[\"\\xf0\u0178\u017D\\xa5 \",/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"})]}),/*#__PURE__*/e(\"img\",{alt:\"Video tutorial: How to verify that the Connector has successfully deployed on a GCP VM instance\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,9qIjT3yfvarsUrPrMJ4MGNwK4.png?originalFilename=connector-connected.png\",src:\"https://framerusercontent.com/images/9qIjT3yfvarsUrPrMJ4MGNwK4.png\",srcSet:\"https://framerusercontent.com/images/9qIjT3yfvarsUrPrMJ4MGNwK4.png?scale-down-to=512 512w,https://framerusercontent.com/images/9qIjT3yfvarsUrPrMJ4MGNwK4.png 800w\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=44VivKjxBW4\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Video tutorial: How to verify that the Connector has successfully deployed on a GCP VM instance\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h1\",{children:\"3. Add a Resource\"}),/*#__PURE__*/e(\"p\",{children:\"Now that you\u2019ve deployed a Twingate Connector on GCP, you can get remote access to any other VM instance running on the same VPC network. Even though the WordPress instance has no external IP address and we\u2019ve denied all HTTP/HTTPS access, we can add it as a Twingate Resource and get secure access.\"}),/*#__PURE__*/e(\"p\",{children:\"Go back to your Remote Network and click on the \u201CAdd Resource\u201A link. In the popup, click on the \u201CCIDR Address\u201A box, choose a Label name for the Resource, enter the private IP address of your WordPress VM instance, and click \u201CAdd Resource\u201A. Congrats! You now have secure, private access to your VM instance and can use it as a staging environment for your WordPress site.\"}),/*#__PURE__*/t(\"p\",{children:[\"\\xf0\u0178\u017D\\xa5 \",/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"})]}),/*#__PURE__*/e(\"img\",{alt:\"Video tutorial: How to add WordPress as a resource\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,JNvDQsyEtvI97J2YsTfr6BSBHow.png?originalFilename=add-resource-gcp-wordpress.png\",src:\"https://framerusercontent.com/images/JNvDQsyEtvI97J2YsTfr6BSBHow.png\",srcSet:\"https://framerusercontent.com/images/JNvDQsyEtvI97J2YsTfr6BSBHow.png?scale-down-to=512 512w,https://framerusercontent.com/images/JNvDQsyEtvI97J2YsTfr6BSBHow.png 800w\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=P-3NvQ7chSs\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Video tutorial: How to add WordPress as a resource\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h1\",{children:\"4. Download the Twingate client\"}),/*#__PURE__*/e(\"p\",{children:\"All that\u2019s left to do now is to install Twingate on your device (we support Windows, Mac, Linux and have apps for iOS and Android) to authenticate your account and authorize your access to the instance. As an example, let\u2019s walk through setting up the Twingate client on macOS.\"}),/*#__PURE__*/t(\"p\",{children:[\"First, download and install the macOS app \",/*#__PURE__*/e(s,{href:\"https://api.twingate.com/download/darwin\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\". Type in the Network URL that you chose when you signed up (the \",/*#__PURE__*/e(\"code\",{children:\"[abc]\"}),\" part of \",/*#__PURE__*/e(\"code\",{children:\"[abc].twingate.com\"}),\") and click \u201CJoin Network\u201A. You\u2019ll be asked to log in using the same account you used to sign up. After signing in, you\u2019ll see that Twingate is connected with access to the Resource you created. Click on \u201COpen in Browser\u2026\u201A and you should see your WordPress site is accessible via the Private IP address of your GCP VM instance, even though it has no public IP address.\"]}),/*#__PURE__*/t(\"p\",{children:[\"\\xf0\u0178\u017D\\xa5 \",/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"})]}),/*#__PURE__*/e(\"img\",{alt:\"Video tutorial: How to access your resource using the Twingate client\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,7Lr8aFXhZpSOYVy7loUVJ3ZRPqg.png?originalFilename=client-remote-access.png\",src:\"https://framerusercontent.com/images/7Lr8aFXhZpSOYVy7loUVJ3ZRPqg.png\",srcSet:\"https://framerusercontent.com/images/7Lr8aFXhZpSOYVy7loUVJ3ZRPqg.png?scale-down-to=512 512w,https://framerusercontent.com/images/7Lr8aFXhZpSOYVy7loUVJ3ZRPqg.png 800w\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://www.youtube.com/watch?v=HD4W-g40TVc\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Video tutorial: How to access your resource using the Twingate client\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"Finally, disconnect from Twingate and try accessing the site again \u2014 you should see that it\u2019s completely inaccessible.\"}),/*#__PURE__*/t(\"p\",{children:[\"Congrats! You\u2019ve finished setting up Twingate for GCP and used it to create a staging environment for your WordPress site. Anything else that you deploy to the same VPC network (e.g., a web app, dashboard, database, etc.) can also be added as a Resource, and you would have a private staging environment for those as well, using the same Connector. Join us in the \",/*#__PURE__*/e(s,{href:\"https://forum.twingate.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"community forum\"})}),\" to share how things went and what cool use cases you\u2019ve discovered!\"]}),/*#__PURE__*/e(\"h1\",{children:\"5. Sharing is Caring\"}),/*#__PURE__*/e(\"p\",{children:\"Do you want to share access to the WordPress site with a client, collaborator, or friend? You can easily do this from the Twingate web UI. Just go to the \u201CTeam\u201A tab and click \u201CInvite User\u201A to send an email invitation. The recipient would simply follow the same steps to download the Twingate client, join your network, and get access to the WordPress site, or any other resource you set up!\"}),/*#__PURE__*/e(\"img\",{alt:\"Invite other users\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,4lFNmzEPQKj6eeB0cAmIYWvrXY.png?originalFilename=invite-client.png\",src:\"https://framerusercontent.com/images/4lFNmzEPQKj6eeB0cAmIYWvrXY.png\",srcSet:\"https://framerusercontent.com/images/4lFNmzEPQKj6eeB0cAmIYWvrXY.png?scale-down-to=512 512w,https://framerusercontent.com/images/4lFNmzEPQKj6eeB0cAmIYWvrXY.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Invite other users\"})]})},{index:79,id:\"Z53dchup9\",[h]:!0,[d]:!1,[p]:\"Remote Access to Plex on Windows Without Port Forwarding\",[u]:\"Plex on Windows\",[m]:\"windows-plex-remote-access-without-port-forwarding\",[g]:\"\",[w]:\"Jimmy Li\",[f]:\"2022-02-10T00:00:00.000Z\",[y]:\"nwIUHELao\",[b]:T({src:\"https://framerusercontent.com/images/GYvKyja3Eumznnh96Sk6e69CpvM.png\",srcSet:\"https://framerusercontent.com/images/GYvKyja3Eumznnh96Sk6e69CpvM.png?scale-down-to=512 512w,https://framerusercontent.com/images/GYvKyja3Eumznnh96Sk6e69CpvM.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/GYvKyja3Eumznnh96Sk6e69CpvM.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/GYvKyja3Eumznnh96Sk6e69CpvM.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/GYvKyja3Eumznnh96Sk6e69CpvM.png\",srcSet:\"https://framerusercontent.com/images/GYvKyja3Eumznnh96Sk6e69CpvM.png?scale-down-to=512 512w,https://framerusercontent.com/images/GYvKyja3Eumznnh96Sk6e69CpvM.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/GYvKyja3Eumznnh96Sk6e69CpvM.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/GYvKyja3Eumznnh96Sk6e69CpvM.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"img\",{alt:\"Plex + Twingate client experience\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,WH0PZSKXCcn7GoEmO8C4ISmWoQ.png?originalFilename=plex-client.png\",src:\"https://framerusercontent.com/images/WH0PZSKXCcn7GoEmO8C4ISmWoQ.png\",srcSet:\"https://framerusercontent.com/images/WH0PZSKXCcn7GoEmO8C4ISmWoQ.png?scale-down-to=512 512w,https://framerusercontent.com/images/WH0PZSKXCcn7GoEmO8C4ISmWoQ.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Plex + Twingate client experience\"}),/*#__PURE__*/e(\"p\",{children:\"Plex Media Server is a great solution to organize all of your media and access them from your laptop, phone, TV, or lots of other places. It\u2019s easy to listen to your music or watch your movies via Plex when you\u2019re at home and connected to your home network. But what about when you are away on vacation, or if you want to share access to your library with friends and family?\"}),/*#__PURE__*/e(\"h1\",{children:\"Plex remote access not working?\"}),/*#__PURE__*/e(\"p\",{children:\"Plex offers a remote access feature that relies on port forwarding, but the configuration may not always work or there may be other common issues like Double-NAT, resulting in an error like the screenshot below.\"}),/*#__PURE__*/e(\"img\",{alt:\"Plex remote access not available\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,JCNSmqK3iisMbdSJVVvZsEDEVA.png?originalFilename=plex-no-remote-access.png\",src:\"https://framerusercontent.com/images/JCNSmqK3iisMbdSJVVvZsEDEVA.png\",srcSet:\"https://framerusercontent.com/images/JCNSmqK3iisMbdSJVVvZsEDEVA.png?scale-down-to=512 512w,https://framerusercontent.com/images/JCNSmqK3iisMbdSJVVvZsEDEVA.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Plex remote access not available\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"Using port forwarding also exposes an open port to your home network that can potentially be exploited. For mobile access, Plex provides mobile apps, but without a paid subscription, video and music streaming is limited to 1 minute and photos are watermarked.\"}),/*#__PURE__*/t(\"p\",{children:[\"There are other common approaches, but as the table below illustrates, they are cumbersome, insecure, and potentially expensive. We are excited to offer a new simple, secure, and free solution: \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=windows-plex\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate Starter\"})}),\"!\"]}),/*#__PURE__*/e(\"img\",{alt:\"Twingate remote access does not require setting up a VPN, port forwarding, static IP addresses, or configuring DDNS\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,FWA2KYIjilZryZI5ofbLHiDizNg.png?originalFilename=vpn-comparison.png\",src:\"https://framerusercontent.com/images/FWA2KYIjilZryZI5ofbLHiDizNg.png\",srcSet:\"https://framerusercontent.com/images/FWA2KYIjilZryZI5ofbLHiDizNg.png?scale-down-to=512 512w,https://framerusercontent.com/images/FWA2KYIjilZryZI5ofbLHiDizNg.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate remote access does not require setting up a VPN, port forwarding, static IP addresses, or configuring DDNS\"}),/*#__PURE__*/t(\"p\",{children:[\"If you are running your Plex Media Server on a NAS or a Raspberry Pi, please follow the tutorial \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/plex-media-server\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\". In this guide, we\u2019ll focus on Windows and walk you through the steps to setup Twingate to access your Windows Plex Media Server from anywhere.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Please also join us in our \",/*#__PURE__*/e(s,{href:\"https://forum.twingate.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"community forum\"})}),\" to share and discuss your experience and any other use cases you\u2019ve discovered!\"]}),/*#__PURE__*/e(\"h1\",{children:\"Prerequisites\"}),/*#__PURE__*/e(\"p\",{children:\"The rest of this guide assumes that you have some components already installed. If you\u2019ve already installed Plex, WSL, and Docker on your Windows PC, skip ahead to \u201CSign up for Twingate\u201A below. If not, please following these instructions first.\"}),/*#__PURE__*/e(\"h2\",{children:\"Install Plex Media Server on your Windows PC\"}),/*#__PURE__*/t(\"p\",{children:[\"Plex Media Server can be installed on a variety of devices. In this guide, we\u2019ll focus on Windows. If you haven\u2019t already done so, please install Plex Media Server \",/*#__PURE__*/e(s,{href:\"https://www.plex.tv/media-server-downloads#plex-media-server\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\".\"]}),/*#__PURE__*/e(\"h2\",{children:\"Install WSL\"}),/*#__PURE__*/e(\"p\",{children:\"Windows Subsystem for Linux (WSL) lets you run a Linux environment on your Windows PC and is required to set up Twingate. Fortunately, it can be installed by running just a single command.\"}),/*#__PURE__*/t(\"p\",{children:[\"First, open up Command Prompt or PowerShell as an Administrator. Type \",/*#__PURE__*/e(\"code\",{children:\"command prompt\"}),\" in the Windows start menu search box and click on \u201CRun as administrator\u201A, as shown in the screenshot below.\"]}),/*#__PURE__*/e(\"img\",{alt:\"Open Command Prompt as an Administrator\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,1OMopn1Au7xvzh5ikj0VSvsvwsw.png?originalFilename=command-prompt-admin.png\",src:\"https://framerusercontent.com/images/1OMopn1Au7xvzh5ikj0VSvsvwsw.png\",srcSet:\"https://framerusercontent.com/images/1OMopn1Au7xvzh5ikj0VSvsvwsw.png?scale-down-to=512 512w,https://framerusercontent.com/images/1OMopn1Au7xvzh5ikj0VSvsvwsw.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Open Command Prompt as an Administrator\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/t(\"p\",{children:[\"In the Command Prompt window that pops up, simply type in \",/*#__PURE__*/e(\"code\",{children:\"wsl --install\"}),\" and press Enter. After some time, the installation will automatically complete and Ubuntu will now be installed.\"]}),/*#__PURE__*/e(\"img\",{alt:\"Installing WSL\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,MaHf0dHt2AKarZ5zc2sDOnn45g.png?originalFilename=wsl-install.png\",src:\"https://framerusercontent.com/images/MaHf0dHt2AKarZ5zc2sDOnn45g.png\",srcSet:\"https://framerusercontent.com/images/MaHf0dHt2AKarZ5zc2sDOnn45g.png?scale-down-to=512 512w,https://framerusercontent.com/images/MaHf0dHt2AKarZ5zc2sDOnn45g.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Installing WSL\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/t(\"p\",{children:[\"If you run into any issues, please also refer to Microsoft\u2019s detailed instructions \",/*#__PURE__*/e(s,{href:\"https://docs.microsoft.com/en-us/windows/wsl/install\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\".\"]}),/*#__PURE__*/e(\"h2\",{children:\"Install Docker\"}),/*#__PURE__*/t(\"p\",{children:[\"Docker is a popular platform for building and installing applications, and it\u2019s how we will install Twingate. Fortunately, it also has a very simple installation wizard on Windows. Please download it \",/*#__PURE__*/e(s,{href:\"https://docs.docker.com/desktop/windows/install\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\" and open the \",/*#__PURE__*/e(\"code\",{children:\"Docker Desktop Installer.exe\"}),\" file to start the wizard.\"]}),/*#__PURE__*/e(\"p\",{children:\"On the Configuration screen, make sure that \u201CInstall required Windows components for WSL 2\u201A is checked.\"}),/*#__PURE__*/e(\"img\",{alt:\"Install Docker components for WSL 2\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,pdPCxiDiIPPPKsuWzrQXuVgv9Q.png?originalFilename=docker-install-config.png\",src:\"https://framerusercontent.com/images/pdPCxiDiIPPPKsuWzrQXuVgv9Q.png\",srcSet:\"https://framerusercontent.com/images/pdPCxiDiIPPPKsuWzrQXuVgv9Q.png?scale-down-to=512 512w,https://framerusercontent.com/images/pdPCxiDiIPPPKsuWzrQXuVgv9Q.png 706w\"}),/*#__PURE__*/e(\"p\",{children:\"Install Docker components for WSL 2\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"Follow the rest of the installation wizard. After completion, open the Docker Desktop application and you should see a screen like this. We will come back to Docker later on.\"}),/*#__PURE__*/e(\"img\",{alt:\"Docker Desktop is running\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,9N3A4uCOxQ6Ktuy6FWycmoDyAdk.png?originalFilename=docker-start.png\",src:\"https://framerusercontent.com/images/9N3A4uCOxQ6Ktuy6FWycmoDyAdk.png\",srcSet:\"https://framerusercontent.com/images/9N3A4uCOxQ6Ktuy6FWycmoDyAdk.png?scale-down-to=512 512w,https://framerusercontent.com/images/9N3A4uCOxQ6Ktuy6FWycmoDyAdk.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Docker Desktop is running\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h1\",{children:\"Sign up for Twingate\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate Starter is a new free plan that is designed for home and personal use. If you don\u2019t have an account already, please click \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/twingate-starter-setup?utm_source=blog&utm_medium=blog&utm_campaign=windows-plex\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\" and follow the simple steps to sign up for a Starter account and begin the initial setup.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Add a Remote Network\"}),/*#__PURE__*/e(\"p\",{children:\"Click on the \u201CAdd a Remote Network\u201A button, and you should see a popup. Twingate supports many different kinds of remote networks. If you are looking to connect to AWS, Azure, or GCP, then select the appropriate option in the dropdown menu. If you are connecting to your home network, choose \u201COther\u201A for the Location. Regardless of which option you choose, give the network a name, like \u201CHome Network\u201A, then click \u201CAdd Remote Network\u201A to create it.\"}),/*#__PURE__*/e(\"img\",{alt:\"Add a Remote Network\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,5nUDs3njYPZaemmR5rnr7Dz5dU.png?originalFilename=add-remote-network.png\",src:\"https://framerusercontent.com/images/5nUDs3njYPZaemmR5rnr7Dz5dU.png\",srcSet:\"https://framerusercontent.com/images/5nUDs3njYPZaemmR5rnr7Dz5dU.png?scale-down-to=512 512w,https://framerusercontent.com/images/5nUDs3njYPZaemmR5rnr7Dz5dU.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Add a Remote Network\"}),/*#__PURE__*/e(\"h1\",{children:\"Add a Connector\"}),/*#__PURE__*/e(\"p\",{children:\"After completing the steps above, you should now have a Starter account with a Remote Network set up. The next step is to deploy a Twingate Connector, which is a piece of software that allows for secure access to your remote network and the devices connected to it. For it to work, you first need to deploy the Connector on the device that is hosting your Plex Media Server, which is your Windows PC in this case.\"}),/*#__PURE__*/e(\"p\",{children:\"Click on the remote network you just created and you should see two automatically generated Connectors (the names are random) that are not yet connected. Choose one of the two Connectors and click on the \u201CDeploy Connector\u201A button. You\u2019ll see a Controller configuration page like the one below with several deployment options. For Step 1, keep the default option of Docker.\"}),/*#__PURE__*/e(\"img\",{alt:\"Set up the Connector\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,LAEnRaydyh4jNGTvLRnHI2wEPSU.png?originalFilename=connector-setup.png\",src:\"https://framerusercontent.com/images/LAEnRaydyh4jNGTvLRnHI2wEPSU.png\",srcSet:\"https://framerusercontent.com/images/LAEnRaydyh4jNGTvLRnHI2wEPSU.png?scale-down-to=512 512w,https://framerusercontent.com/images/LAEnRaydyh4jNGTvLRnHI2wEPSU.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Set up the Connector\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"The next step is to generate tokens for the Connector. Scroll down to Step 2 and click the \u201CGenerate Tokens\u201A button. You\u2019ll see a popup asking you to re-authenticate using whichever account you used to sign up (e.g., Google). After doing so, you\u2019ll be redirected back and should see that two tokens have been generated.\"}),/*#__PURE__*/e(\"p\",{children:\"Scroll down to Step 3, where you\u2019ll see that a command has been automatically generated. Click the button to copy the command.\"}),/*#__PURE__*/t(\"p\",{children:[\"After installing WSL, you should now have Ubuntu on your Windows computer. Search for \",/*#__PURE__*/e(\"code\",{children:\"ubuntu\"}),\" in the start menu and open Ubuntu.\"]}),/*#__PURE__*/e(\"img\",{alt:\"Open Ubuntu\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,iE1ITIm9Gjm5DQFoXqdpIwPglss.png?originalFilename=run-ubuntu.png\",src:\"https://framerusercontent.com/images/iE1ITIm9Gjm5DQFoXqdpIwPglss.png\",srcSet:\"https://framerusercontent.com/images/iE1ITIm9Gjm5DQFoXqdpIwPglss.png?scale-down-to=512 512w,https://framerusercontent.com/images/iE1ITIm9Gjm5DQFoXqdpIwPglss.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Open Ubuntu\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/t(\"p\",{children:[\"In the window that popped up, paste in the command you copied earlier and run it (your command will have different tokens). You may need to add \",/*#__PURE__*/e(\"code\",{children:\"sudo\"}),\" at the beginning of the command. After just a minute, the command should complete.\"]}),/*#__PURE__*/e(\"img\",{alt:\"Run command in Ubuntu\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,Yg1ItB3xbDWcGvzhzxyA3WTohFs.png?originalFilename=ubuntu-complete.png\",src:\"https://framerusercontent.com/images/Yg1ItB3xbDWcGvzhzxyA3WTohFs.png\",srcSet:\"https://framerusercontent.com/images/Yg1ItB3xbDWcGvzhzxyA3WTohFs.png?scale-down-to=512 512w,https://framerusercontent.com/images/Yg1ItB3xbDWcGvzhzxyA3WTohFs.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Run command in Ubuntu\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/t(\"p\",{children:[\"Open up Docker Desktop and click on \u201CImages\u201A in the side panel on the left. You should see that \",/*#__PURE__*/e(\"code\",{children:\"twingate/connector\"}),\" has automatically appeared as an image and is \",/*#__PURE__*/e(\"code\",{children:\"IN USE\"}),\".\"]}),/*#__PURE__*/e(\"img\",{alt:\"Connected deployed on Docker\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,NDRrV3Db9dIxjTjJnlNvxoM2eC8.png?originalFilename=docker-connected.png\",src:\"https://framerusercontent.com/images/NDRrV3Db9dIxjTjJnlNvxoM2eC8.png\",srcSet:\"https://framerusercontent.com/images/NDRrV3Db9dIxjTjJnlNvxoM2eC8.png?scale-down-to=512 512w,https://framerusercontent.com/images/NDRrV3Db9dIxjTjJnlNvxoM2eC8.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Connected deployed on Docker\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"On the Twingate web UI, you should also see that the Connector\u2019s status has automatically turned green, indicating that it has been successfully deployed on your Windows PC.\"}),/*#__PURE__*/e(\"img\",{alt:\"Connector is connected\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,o74fBNR4lerWaIF6nBHUItjTcA.png?originalFilename=connector-connected.png\",src:\"https://framerusercontent.com/images/o74fBNR4lerWaIF6nBHUItjTcA.png\",srcSet:\"https://framerusercontent.com/images/o74fBNR4lerWaIF6nBHUItjTcA.png?scale-down-to=512 512w,https://framerusercontent.com/images/o74fBNR4lerWaIF6nBHUItjTcA.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Connector is connected\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h1\",{children:\"Add a Resource\"}),/*#__PURE__*/e(\"p\",{children:\"You\u2019ve now set up a Connector on your Windows PC, which enables remote access to Plex, or other services that you\u2019re running on your computer (called a \u201CResource\u201A in Twingate).\"}),/*#__PURE__*/t(\"p\",{children:[\"Go back to your Remote Network and click on the \u201CAdd Resource\u201A link. You\u2019ll see a popup like the one below. Click on the \u201CCIDR Address\u201A box, choose a Label name for the Resource, enter the private IP address of Plex (it\u2019s listed under Plex Settings > Remote Access and is likely \",/*#__PURE__*/e(\"code\",{children:\"10.x.x.x\"}),\" or \",/*#__PURE__*/e(\"code\",{children:\"192.168.x.x\"}),\"), choose \",/*#__PURE__*/e(\"code\",{children:\"32400\"}),\" for the Port Restriction, and click \u201CAdd Resource\u201A. Congrats! Your Plex Media Server is now enabled for secure remote access.\"]}),/*#__PURE__*/e(\"img\",{alt:\"Add a Resource\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,GcvbUDzBFbl3gG3thQlCtPxjErA.png?originalFilename=add-resource.png\",src:\"https://framerusercontent.com/images/GcvbUDzBFbl3gG3thQlCtPxjErA.png\",srcSet:\"https://framerusercontent.com/images/GcvbUDzBFbl3gG3thQlCtPxjErA.png?scale-down-to=512 512w,https://framerusercontent.com/images/GcvbUDzBFbl3gG3thQlCtPxjErA.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Add a Resource\"}),/*#__PURE__*/e(\"h1\",{children:\"Download the Twingate client\"}),/*#__PURE__*/e(\"p\",{children:\"All that\u2019s left to do now is to install Twingate on your devices (we support Windows, Mac, Linux and have apps for iOS and Android) and access your Plex Media Server from anywhere. As an example, let\u2019s walk through setting things up on iOS.\"}),/*#__PURE__*/t(\"p\",{children:[\"First, download and install the iOS app \",/*#__PURE__*/e(s,{href:\"https://api.twingate.com/download/ios\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\". Type in the Twingate Network URL that you chose when you signed up and tap \u201CJoin Network\u201A. You\u2019ll be automatically asked to log in using the same account you used to sign up. After signing in, you\u2019ll land on the home screen, where you should already see your Plex Resource listed. When you are connected to your Twingate network, a \u201CVPN\u201A icon will appear in the top bar of your screen.\"]}),/*#__PURE__*/e(\"p\",{children:\"To test it out, stay connected to Twingate, disconnect from your local network (e.g., by disabling WiFi), and navigate to your Plex Media Server instance on your phone\u2019s browser. You should be able to access it just as if you were at home.\"}),/*#__PURE__*/e(\"p\",{children:\"Finally, disconnect from Twingate and try accessing Plex again \u2014 you should see that it\u2019s inaccessible.\"}),/*#__PURE__*/e(\"img\",{alt:\"Plex + Twingate client experience\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,WH0PZSKXCcn7GoEmO8C4ISmWoQ.png?originalFilename=plex-client.png\",src:\"https://framerusercontent.com/images/WH0PZSKXCcn7GoEmO8C4ISmWoQ.png\",srcSet:\"https://framerusercontent.com/images/WH0PZSKXCcn7GoEmO8C4ISmWoQ.png?scale-down-to=512 512w,https://framerusercontent.com/images/WH0PZSKXCcn7GoEmO8C4ISmWoQ.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Plex + Twingate client experience\"}),/*#__PURE__*/t(\"p\",{children:[\"Congrats! You\u2019ve finished setting up Twingate for Plex Media Server. Join us in the \",/*#__PURE__*/e(s,{href:\"https://forum.twingate.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"community forum\"})}),\" to share how things went and what cool use cases you\u2019ve discovered!\"]}),/*#__PURE__*/e(\"h1\",{children:\"Sharing is Caring\"}),/*#__PURE__*/e(\"p\",{children:\"Do you want to share access with a family member? You can easily do this from the Twingate web UI. Just go to the Team tab and click \u201CInvite User\u201A to send an email invitation. The recipient would simply follow the same steps to download the Twingate client, join your network, and get access to Plex, or any other resource you set up!\"}),/*#__PURE__*/e(\"img\",{alt:\"Invite other users\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,aCD5ak5DqcW7pv2chnhA9eJyWg.png?originalFilename=sharing.png\",src:\"https://framerusercontent.com/images/aCD5ak5DqcW7pv2chnhA9eJyWg.png\",srcSet:\"https://framerusercontent.com/images/aCD5ak5DqcW7pv2chnhA9eJyWg.png?scale-down-to=512 512w,https://framerusercontent.com/images/aCD5ak5DqcW7pv2chnhA9eJyWg.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Invite other users\"})]})},{index:80,id:\"S_b59GZM5\",[h]:!0,[d]:!1,[p]:\"Remote Access VPN vs. Zero Trust\",[u]:\"Remote Access VPN\",[m]:\"remote-access-vpn\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2022-02-09T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/4T1cOBn3tRLr4K8RRUaS6HYj3oM.png\",srcSet:\"https://framerusercontent.com/images/4T1cOBn3tRLr4K8RRUaS6HYj3oM.png?scale-down-to=512 512w,https://framerusercontent.com/images/4T1cOBn3tRLr4K8RRUaS6HYj3oM.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/4T1cOBn3tRLr4K8RRUaS6HYj3oM.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/4T1cOBn3tRLr4K8RRUaS6HYj3oM.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/4T1cOBn3tRLr4K8RRUaS6HYj3oM.png\",srcSet:\"https://framerusercontent.com/images/4T1cOBn3tRLr4K8RRUaS6HYj3oM.png?scale-down-to=512 512w,https://framerusercontent.com/images/4T1cOBn3tRLr4K8RRUaS6HYj3oM.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/4T1cOBn3tRLr4K8RRUaS6HYj3oM.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/4T1cOBn3tRLr4K8RRUaS6HYj3oM.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"A quarter-century ago, remote access VPNs solved an important business problem: how to keep remote workers connected to the company network. But that was a long time ago. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/business-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN technology\"})}),\" does not work with today\u2019s distributed networks and workforces.\"]}),/*#__PURE__*/t(\"p\",{children:[\"In this article, we will introduce the concepts behind remote access VPNs, explain why it no longer fits with the way we work today, and introduce \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\u2019s\"})}),\" modern approach to access control.\"]}),/*#__PURE__*/e(\"h1\",{children:\"What is a remote access VPN?\"}),/*#__PURE__*/e(\"p\",{children:\"A remote access VPN establishes encrypted internet connections between remote users\u2019 devices and a protected network. The system consists of two components:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"A VPN client app on the user\u2019s device.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"A VPN gateway at the edge of the network\u2019s secure perimeter.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"When the client connects to the gateway\u2019s public internet address, an encrypted tunnel gives the user access to the network and its resources.\"}),/*#__PURE__*/e(\"p\",{children:\"Over the past three decades, VPN has become the dominant form of remote access for businesses of all sizes because of the clear benefits it offered:\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Productivity\"}),\" - Field engineers, salespeople, and executives experienced less downtime while on the road. In addition, having instant access to company resources made employees more responsive to customers.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Ubiquity\"}),\" - VPN\u2019s popularity means businesses can choose among a wide field of solutions that fit their needs and budgets. The pool of IT workers with VPN-related experience is also much larger, making staffing easier.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Security\"}),\" - Encrypted tunnels let users connect to the company network from untrusted locations like hotels and coffee shops without risking sensitive data.\"]}),/*#__PURE__*/e(\"h1\",{children:\"How do remote access VPNs compare to site-to-site VPNs?\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/business-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN\"})}),\" was first developed as a wide-area networking solution, not for remote access. Until the 1990s, connecting a company\u2019s remote networks to their central computing resources meant paying telephone companies for expensive leased-line services.\"]}),/*#__PURE__*/e(\"p\",{children:\"The internet offered an affordable alternative, but how could companies send private data over public networks? Deploying VPN gateways in a hub-and-spoke topology created a virtual, private network across the internet and made remote sites part of the central network. Under the direct control of the company\u2019s IT staff, this static architecture was relatively easy to deploy and manage.\"}),/*#__PURE__*/e(\"p\",{children:\"Remote access capabilities came later but used the same structure as site-to-site applications. Each remote VPN client is a spoke connecting to the VPN gateway\u2019s central hub. When users connect to the main office, their devices become extensions of the company network. From there, users can access that network\u2019s resources.\"}),/*#__PURE__*/e(\"h1\",{children:\"Are remote access VPNs built for hybrid workforces?\"}),/*#__PURE__*/e(\"p\",{children:\"A quarter-century ago, extending the site-to-site approach to remote access made some sense. The infrastructure and skill sets were already in place and the benefits were very real. But as the pandemic made crystal clear, legacy remote access VPN does not work anymore.\"}),/*#__PURE__*/e(\"p\",{children:\"Back in the day, companies had direct control over their information technologies. Resources, devices, and networks were company-owned and company-managed. Only a relative handful of those devices connected remotely.\"}),/*#__PURE__*/e(\"p\",{children:\"The workforce was also very different. Only employees could access the company network. Plus, the number of employees accessing the network remotely was limited to a narrow range of trusted roles.\"}),/*#__PURE__*/e(\"h2\",{children:\"Remote VPNs are not built for the way we work today\"}),/*#__PURE__*/t(\"p\",{children:[\"Things are \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/network-connectivity-for-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"more decentralized today\"})}),\". Resources, devices, and networks may not be owned by the company, managed by the company, or located on company property. More resources are either hosted on third-party cloud platforms or simply outsourced to SaaS providers. The very idea of a \u201Csecure perimeter\u201A is becoming meaningless as the network\u2019s boundaries extend far beyond the office walls.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Workforces are also more amorphous. Long-running trends like \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/byod\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"BYOD\"})}),\" and work-from-home went exponential in 2020. Rather than having most user devices on-premises, most were connecting remotely. Instead of managing fleets of company-owned computers, companies were opening their networks to a more diverse mix of devices connecting from home routers.\"]}),/*#__PURE__*/e(\"p\",{children:\"The reason remote access VPN does not suit the way business works today is built into its fundamental design:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/e(\"p\",{children:\"Hub-and-spoke topology in a distributed world\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Gateways channeling every user\u2019s traffic create bottlenecks that impact network bandwidth and latency.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Each subnet requires its own \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/business-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN\"})}),\" gateway, making networks expensive and difficult to scale while degrading the user experience.\"]})})]})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/e(\"p\",{children:\"Only controlling remote access to managed networks\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Separate \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control\"})}),\" systems are needed for on-premises users.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Cloud resources require their own unique access control systems.\"})})]})]})]}),/*#__PURE__*/t(\"p\",{children:[\"Companies are realizing that, beyond the productivity issues, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/business-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN\"})}),\" makes them more vulnerable to security breaches. The problem comes down to trust. VPN gateways, for example, trust that only \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authorized\"})}),\" users will access their public IP addresses. That visibility, however, makes VPN gateways easily discoverable by hackers who can exploit vulnerabilities.\"]}),/*#__PURE__*/t(\"p\",{children:[\"The greatest risk, however, is from compromised user credentials. Trusting an \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authorized\"})}),\" user, VPN gateways grant full access to whatever network they protect. Stolen user credentials grant hackers the same \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/lateral-movement\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"unfettered access\"})}),\" \u2014 and let them appear to be the authorized user.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Remote access VPNs vs. Zero Trust for hybrid workforces\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust Network Access\"})}),\" is a modern security paradigm based on the assumption that trust never exists. Not only can a breach happen, but it probably already has. Zero Trust requires the verification of every connection attempt no matter:\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Who the user is.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"What device they use.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Where they connect from.\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"Zero Trust lets companies adopt \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/network-connectivity-for-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"distributed architectures\"})}),\" more suited to modern networking. Rather than consolidating traffic through gateways, Zero Trust systems let traffic flow directly between devices and resources. This approach generates several benefits:\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Resources and devices can be anywhere on any network.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Nothing is ever exposed to the public internet.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Software-based, Zero Trust solutions are simple to deploy and manage.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Routing and rules enforcement happen locally rather than round-tripping to central systems.\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"Modern \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" access control also improves the performance of company networks while improving the user experience. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/network-connectivity-for-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Direct connections\"})}),\" allow traffic to follow the most performant route. Traffic between remote users and cloud resources no longer traverses company networks. In addition, geographically dispersed users experience less latency and improved productivity.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Where is the industry headed?\"}),/*#__PURE__*/t(\"p\",{children:[\"While Zero Trust eliminates the inefficiencies imposed by \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"legacy VPN technologies\"})}),\", security is the primary driver of its adoption across industries. The number and severity of cyber breaches increase every year as secure perimeters crumble. In the face of this threat, for example, the US government is rapidly shifting to Zero Trust architectures.\"]}),/*#__PURE__*/t(\"p\",{children:[\"\u201CFederal agency CIOs and IT leadership are leaning into this challenge,\u201A \",/*#__PURE__*/e(s,{href:\"https://www.whitehouse.gov/omb/briefing-room/2022/01/26/office-of-management-and-budget-releases-federal-strategy-to-move-the-u-s-government-towards-a-zero-trust-architecture\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Federal Chief Information Officer Clare Martorana said recently.\"})}),\" \u201CThe zero trust strategy provides a clear roadmap for deploying technology that is secure by design and responsive to the needs of our workforce.\u201A\"]}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust is not limited to organizations as complex as the US government. Companies of all sizes can adopt Zero Trust access control to improve their security posture, increase productivity, and make their IT investments more agile.\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s modern \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust solution\"})}),\" lets large and small companies alike protect their most sensitive resources while enjoying benefits such as:\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Protect resources, not networks\"}),\" - Mirco-segmentation was impractical with VPN, but Twingate\u2019s solution lets companies shield every resource behind its own \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"software-defined perimeter\"})}),\".\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Invisibility on any network\"}),\" - With Twingate\u2019s approach, an organization\u2019s private resources disappear. Whether on the internet or a compromised network, hackers cannot see protected resources.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Transparent user experience\"}),\" - VPN undermines security compliance by making the user experience more difficult. Twingate\u2019s client operates transparently with no user engagement.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Simple to deploy\"}),\" - Twingate customers have deployed \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" across their organizations in as little as 15 minutes. No changes are needed to the network or any resource settings.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Simple to manage\"}),\" - Twingate\u2019s administrator console turns permission management into a one-click operation.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Twingate does more than replace remote access VPN. Our complete \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control\"})}),\" solution applies to all users whether they are remote or on-site, employees or contractors. Twingate can protect any resource whether it runs on a local server or is hosted in the cloud. We can even extend \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/protect-legacy-apps-with-multi-factor-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"multi-factor authentication to SSH\"})}),\" and other services hackers use to escalate their privileges.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Twingate goes beyond remote access VPN\"}),/*#__PURE__*/e(\"p\",{children:\"In a simpler information age, remote access VPN was a solution that matched the way business worked. Today\u2019s world is more complex, dynamic, and distributed which is why businesses need a modern approach to network access control.\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust solution\"})}),\" gives companies a more secure, flexible, and performant way to manage network access. Resources can be in the cloud or on-premises. Users can be anywhere in the world. Twingate makes it easy for companies to enforce granular access control policies based on \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/principle-of-least-privilege\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"least-privilege principles\"})}),\". And without the need to re-architect their networks, Twingate customers can reap the benefits of Zero Trust in minutes.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Use Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=remote-access-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"free Starter plan\"})}),\" to experience how simple and easy Zero Trust can be. Or \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=remote-access-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"contact us\"})}),\" for more information about how Zero Trust can work for your organization.\"]})]})},{index:81,id:\"F1Bw9KRhD\",[h]:!0,[d]:!1,[p]:\"Free & Easy Staging Environments for WordPress Sites on AWS\",[u]:\"WordPress Sites on AWS\",[m]:\"aws-wordpress-staging-environment\",[g]:\"\",[w]:\"Jimmy Li\",[f]:\"2022-02-07T00:00:00.000Z\",[y]:\"nwIUHELao\",[b]:T({src:\"https://framerusercontent.com/images/qNoZVjtEqSYN6hG7EInymrgu7Wc.png\",srcSet:\"https://framerusercontent.com/images/qNoZVjtEqSYN6hG7EInymrgu7Wc.png?scale-down-to=512 512w,https://framerusercontent.com/images/qNoZVjtEqSYN6hG7EInymrgu7Wc.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/qNoZVjtEqSYN6hG7EInymrgu7Wc.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/qNoZVjtEqSYN6hG7EInymrgu7Wc.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/qNoZVjtEqSYN6hG7EInymrgu7Wc.png\",srcSet:\"https://framerusercontent.com/images/qNoZVjtEqSYN6hG7EInymrgu7Wc.png?scale-down-to=512 512w,https://framerusercontent.com/images/qNoZVjtEqSYN6hG7EInymrgu7Wc.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/qNoZVjtEqSYN6hG7EInymrgu7Wc.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/qNoZVjtEqSYN6hG7EInymrgu7Wc.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"If you are a web developer working with clients, running your own business website, or simply hosting your personal blog, you likely want to have a way for you or your customers to privately preview changes before they are made public. With \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=wordpress-staging\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate Starter\"})}),\", you can easily create a private staging environment that is completely inaccessible from the public internet but still shareable with collaborators or clients \u2014 all without setting up a VPN, port forwarding, static IP addresses, or configuring DDNS.\"]}),/*#__PURE__*/t(\"p\",{children:[\"In this guide, we\u2019ll walk through how to set things up on WordPress running on Amazon Lightsail, but the same general steps also work if you use other solutions like AWS EC2, Digital Ocean, or Linode. Please also join us in our \",/*#__PURE__*/e(s,{href:\"https://forum.twingate.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"community forum\"})}),\" to share and discuss your experience and any other use cases you\u2019ve discovered!\"]}),/*#__PURE__*/e(\"h1\",{children:\"Prerequisites\"}),/*#__PURE__*/t(\"p\",{children:[\"Amazon Lightsail is an easy way to get up and running on AWS and comes with pre-configured instances of WordPress to make it really fast to start building a website, and it is free for the first 3 months. Please follow the short guide \",/*#__PURE__*/e(s,{href:\"https://aws.amazon.com/getting-started/hands-on/launch-a-wordpress-website\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\" to create an instance if you don\u2019t already have one.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Restrict access to your Lightsail instance\"}),/*#__PURE__*/e(\"p\",{children:\"After the quick setup, you (or anyone else) are now able to access your WordPress site via the Public IP address associated with your Lightsail instance. Since we want to restrict access to our staging environment, we can go to the \u201CNetworking\u201A tab and remove the HTTP/HTTPS access rules under the \u201CIPv4 Firewall\u201A section.\"}),/*#__PURE__*/e(\"img\",{alt:\"Remove public access\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,zb1FcB9DTGfMhfBtxKBWuiN1TnE.png?originalFilename=lightsail-networking.png\",src:\"https://framerusercontent.com/images/zb1FcB9DTGfMhfBtxKBWuiN1TnE.png\",srcSet:\"https://framerusercontent.com/images/zb1FcB9DTGfMhfBtxKBWuiN1TnE.png?scale-down-to=512 512w,https://framerusercontent.com/images/zb1FcB9DTGfMhfBtxKBWuiN1TnE.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Remove public access\"}),/*#__PURE__*/e(\"p\",{children:\"If you try the Public IP address again, you should find that it\u2019s no longer accessible.\"}),/*#__PURE__*/e(\"img\",{alt:\"Site is inaccessible\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,XS8qRRTZSv6xgetp7owf4NVK0fk.png?originalFilename=site-inaccessible.png\",src:\"https://framerusercontent.com/images/XS8qRRTZSv6xgetp7owf4NVK0fk.png\",srcSet:\"https://framerusercontent.com/images/XS8qRRTZSv6xgetp7owf4NVK0fk.png?scale-down-to=512 512w,https://framerusercontent.com/images/XS8qRRTZSv6xgetp7owf4NVK0fk.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Site is inaccessible\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"In the rest of this guide, we\u2019ll show you how to use Twingate to grant yourself (or any other trusted party) secure, private access to your instance via just the Private IP address.\"}),/*#__PURE__*/e(\"h1\",{children:\"Sign up for Twingate\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate Starter is a new free plan that is designed for home and personal use. If you don\u2019t have an account already, please click \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/twingate-starter-setup?utm_source=blog&utm_medium=blog&utm_campaign=wordpress-staging\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\" and follow the simple steps to sign up for a Starter account and begin the initial setup.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Create a Remote Network\"}),/*#__PURE__*/e(\"p\",{children:\"After creating a Twingate account, from the main \u201CNetwork\u201A page, add a new Remote Network and give it a name. This represents the network we\u2019re going to connect to \u2014 in this case, our Lightsail instance.\"}),/*#__PURE__*/e(\"img\",{alt:\"Create a Remote Network\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,cgofRwPJErMY6d21XLTehezkzqk.png?originalFilename=lightsail-remote-network.png\",src:\"https://framerusercontent.com/images/cgofRwPJErMY6d21XLTehezkzqk.png\",srcSet:\"https://framerusercontent.com/images/cgofRwPJErMY6d21XLTehezkzqk.png?scale-down-to=512 512w,https://framerusercontent.com/images/cgofRwPJErMY6d21XLTehezkzqk.png 800w\"}),/*#__PURE__*/e(\"h1\",{children:\"Add a Connector\"}),/*#__PURE__*/e(\"p\",{children:\"The next step is to deploy a Twingate Connector, which is a piece of software that allows for secure access to your remote network and the services running on it. In addition to Lightsail, it can also be deployed to other cloud instances (AWS EC2, GCP, Azure, etc.) as well as your home devices, including:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/synology-nas\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Synology NAS\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/raspberry-pi-home-assistant\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Raspberry Pi\"})})})})]}),/*#__PURE__*/e(\"p\",{children:\"In this case, we\u2019ll set it up on our Lightsail instance. Click on one of the automatically generated Connectors (the names are random) and complete the following steps:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Click on Linux as the deployment method\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Generate tokens. You\u2019ll be prompted to sign in again, after which you should see two new tokens.\"})}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/t(\"p\",{children:[\"Copy the automatically generated shell command. You will soon run this command on your Lightsail instance to install the Connector there.    \",/*#__PURE__*/e(\"span\",{children:\"                  \"})]}),/*#__PURE__*/e(\"img\",{alt:\"Deploy the Connector\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,B6Wxdzrjw1YsO98WACmBrEZlT5U.png?originalFilename=deploy-connector.png\",src:\"https://framerusercontent.com/images/B6Wxdzrjw1YsO98WACmBrEZlT5U.png\",srcSet:\"https://framerusercontent.com/images/B6Wxdzrjw1YsO98WACmBrEZlT5U.png?scale-down-to=512 512w,https://framerusercontent.com/images/B6Wxdzrjw1YsO98WACmBrEZlT5U.png 800w\"})]})]}),/*#__PURE__*/e(\"p\",{children:'Go to your Lightsail instance, and under the \u201CConnect\u201A tab, click the \u201CConnect using SSH\" button.'}),/*#__PURE__*/e(\"img\",{alt:\"Connect to Lightsail instance using SSH\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,jhJtpeNXRl7EPFEioecr52WneK0.png?originalFilename=lightsail-connect-ssh.png\",src:\"https://framerusercontent.com/images/jhJtpeNXRl7EPFEioecr52WneK0.png\",srcSet:\"https://framerusercontent.com/images/jhJtpeNXRl7EPFEioecr52WneK0.png?scale-down-to=512 512w,https://framerusercontent.com/images/jhJtpeNXRl7EPFEioecr52WneK0.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"This will open up a new window with a Linux terminal connected to your instance. Paste in and execute the command that was generated by your Twingate Connector (your tokens and Twingate URL will be different).\"}),/*#__PURE__*/e(\"img\",{alt:\"Run the Twingate Connector command\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,gMAg4Bk9n1Og0HOaVVGZPFhU5g.png?originalFilename=lightsail-ssh-command.png\",src:\"https://framerusercontent.com/images/gMAg4Bk9n1Og0HOaVVGZPFhU5g.png\",srcSet:\"https://framerusercontent.com/images/gMAg4Bk9n1Og0HOaVVGZPFhU5g.png?scale-down-to=512 512w,https://framerusercontent.com/images/gMAg4Bk9n1Og0HOaVVGZPFhU5g.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"After just a minute or so, the command should complete and you should see that the Connector status has turned green, indicating that you\u2019ve successfully deployed the Connector on your Lightsail instance.\"}),/*#__PURE__*/e(\"img\",{alt:\"Connector is connected\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,rTxowGT68CcuRoIoyXaEtvXWvTY.png?originalFilename=connector-connected.png\",src:\"https://framerusercontent.com/images/rTxowGT68CcuRoIoyXaEtvXWvTY.png\",srcSet:\"https://framerusercontent.com/images/rTxowGT68CcuRoIoyXaEtvXWvTY.png?scale-down-to=512 512w,https://framerusercontent.com/images/rTxowGT68CcuRoIoyXaEtvXWvTY.png 800w\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h1\",{children:\"Add a Resource\"}),/*#__PURE__*/e(\"p\",{children:\"Go back to your Remote Network and click on the \u201CAdd Resource\u201A link. You\u2019ll see a popup like the one below. Click on the \u201CCIDR Address\u201A box, choose a Label name for the Resource, enter the private IP address of your Lightsail instance that\u2019s displayed in the \u201CNetworking\u201A tab of your Lightsail console, and click \u201CAdd Resource\u201A. Congrats! You now have secure, private access to you Lightsail instance and can use it as a staging environment for your WordPress site.\"}),/*#__PURE__*/e(\"img\",{alt:\"Add a Resource\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,S2aZYstknOhCjFsGCiBo7FxLdbo.png?originalFilename=add-resource.png\",src:\"https://framerusercontent.com/images/S2aZYstknOhCjFsGCiBo7FxLdbo.png\",srcSet:\"https://framerusercontent.com/images/S2aZYstknOhCjFsGCiBo7FxLdbo.png?scale-down-to=512 512w,https://framerusercontent.com/images/S2aZYstknOhCjFsGCiBo7FxLdbo.png 800w\"}),/*#__PURE__*/e(\"h1\",{children:\"Download the Twingate client\"}),/*#__PURE__*/e(\"p\",{children:\"All that\u2019s left to do now is to install Twingate on your device (we support Windows, Mac, Linux and have apps for iOS and Android) to authenticate your account and authorize your access to the instance. As an example, let\u2019s walk through setting up the Twingate client on macOS.\"}),/*#__PURE__*/t(\"p\",{children:[\"First, download and install the macOS app \",/*#__PURE__*/e(s,{href:\"https://api.twingate.com/download/darwin\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\". Type in the Network URL that you chose when you signed up (the \",/*#__PURE__*/e(\"code\",{children:\"[abc]\"}),\" part of \",/*#__PURE__*/e(\"code\",{children:\"[abc].twingate.com\"}),\") and click \u201CJoin Network\u201A. You\u2019ll be asked to log in using the same account you used to sign up. After signing in, you\u2019ll see that Twingate is connected with access to the Resource you created.\"]}),/*#__PURE__*/e(\"img\",{alt:\"Client is connected\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,JOl7hl5PZgclxqx0JSEtYhG2G8.png?originalFilename=client-resource.png\",src:\"https://framerusercontent.com/images/JOl7hl5PZgclxqx0JSEtYhG2G8.png\",srcSet:\"https://framerusercontent.com/images/JOl7hl5PZgclxqx0JSEtYhG2G8.png?scale-down-to=512 512w,https://framerusercontent.com/images/JOl7hl5PZgclxqx0JSEtYhG2G8.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Click on \u201COpen in Browser\u2026\u201A and you should see your WordPress site is accessible via the Private IP address of your Lightsail instance, even though it\u2019s not accessible via the Public IP address.\"}),/*#__PURE__*/e(\"img\",{alt:\"Client access\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,o9tRyY21uIIuofzjDkwxFjnwAM.png?originalFilename=client-about.png\",src:\"https://framerusercontent.com/images/o9tRyY21uIIuofzjDkwxFjnwAM.png\",srcSet:\"https://framerusercontent.com/images/o9tRyY21uIIuofzjDkwxFjnwAM.png?scale-down-to=512 512w,https://framerusercontent.com/images/o9tRyY21uIIuofzjDkwxFjnwAM.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Finally, disconnect from Twingate and try accessing the site again \u2014 you should see that it\u2019s inaccessible via both the Private and Public IP addresses.\"}),/*#__PURE__*/t(\"p\",{children:[\"Congrats! You\u2019ve finished setting up Twingate for your Lightsail instance and used it to create a staging environment for your WordPress site. If you run anything else on your instance like a web app, you now have a private staging environment for those as well. Join us in the \",/*#__PURE__*/e(s,{href:\"https://forum.twingate.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"community forum\"})}),\" to share how things went and what cool use cases you\u2019ve discovered!\"]}),/*#__PURE__*/e(\"h1\",{children:\"Sharing is Caring\"}),/*#__PURE__*/e(\"p\",{children:\"Do you want to share access to the WordPress site with a client, collaborator, or friend? You can easily do this from the Twingate web UI. Just go to the \u201CTeam\u201A tab and click \u201CInvite User\u201A to send an email invitation. The recipient would simply follow the same steps to download the Twingate client, join your network, and get access to the WordPress site, or any other resource you set up!\"}),/*#__PURE__*/e(\"img\",{alt:\"Invite other users\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,4lFNmzEPQKj6eeB0cAmIYWvrXY.png?originalFilename=invite-client.png\",src:\"https://framerusercontent.com/images/4lFNmzEPQKj6eeB0cAmIYWvrXY.png\",srcSet:\"https://framerusercontent.com/images/4lFNmzEPQKj6eeB0cAmIYWvrXY.png?scale-down-to=512 512w,https://framerusercontent.com/images/4lFNmzEPQKj6eeB0cAmIYWvrXY.png 800w\"})]})},{index:82,id:\"ADUOnTJdf\",[h]:!0,[d]:!1,[p]:\"How to sign up for Twingate Starter: Simple, Secure & Free Remote Access to your home network\",[u]:\"Twingate Starter sign up\",[m]:\"twingate-starter-setup\",[g]:\"\",[w]:\"Jimmy Li\",[f]:\"2022-01-30T00:00:00.000Z\",[y]:\"nwIUHELao\",[b]:T({src:\"https://framerusercontent.com/images/l5CTArS3sg40z4Z4ioTdGjsFZY.png\",srcSet:\"https://framerusercontent.com/images/l5CTArS3sg40z4Z4ioTdGjsFZY.png?scale-down-to=512 512w,https://framerusercontent.com/images/l5CTArS3sg40z4Z4ioTdGjsFZY.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/l5CTArS3sg40z4Z4ioTdGjsFZY.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/l5CTArS3sg40z4Z4ioTdGjsFZY.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/l5CTArS3sg40z4Z4ioTdGjsFZY.png\",srcSet:\"https://framerusercontent.com/images/l5CTArS3sg40z4Z4ioTdGjsFZY.png?scale-down-to=512 512w,https://framerusercontent.com/images/l5CTArS3sg40z4Z4ioTdGjsFZY.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/l5CTArS3sg40z4Z4ioTdGjsFZY.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/l5CTArS3sg40z4Z4ioTdGjsFZY.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"There are common approaches to accessing devices and apps on your home network while you\u2019re away from home, but as the table below illustrates, they are cumbersome, insecure, and potentially expensive. We are excited to offer a new simple, secure, and free solution: \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=plex-media-server\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate Starter\"})}),\"!\"]}),/*#__PURE__*/e(\"img\",{alt:\"Twingate remote access does not require setting up a VPN, port forwarding, static IP addresses, or configuring DDNS\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,rO7Zjjqq5v2MrA7U5RCtv50FVU0.png?originalFilename=vpn-comparison.png\",src:\"https://framerusercontent.com/images/rO7Zjjqq5v2MrA7U5RCtv50FVU0.png\",srcSet:\"https://framerusercontent.com/images/rO7Zjjqq5v2MrA7U5RCtv50FVU0.png?scale-down-to=512 512w,https://framerusercontent.com/images/rO7Zjjqq5v2MrA7U5RCtv50FVU0.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate remote access does not require setting up a VPN, port forwarding, static IP addresses, or configuring DDNS\"}),/*#__PURE__*/e(\"p\",{children:\"We\u2019ve created a quick start guide below to walk you through the steps to sign up for a free Twingate Starter account. With this account, you can then easily configure secure remote access to lots of devices and servers, including:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/raspberry-pi-home-assistant\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Raspberry Pi\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/synology-nas\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Synology NAS\"})})})})]}),/*#__PURE__*/e(\"p\",{children:\"On these devices and servers, you can then unlock simple, secure, and free remote acess to a variety of apps and use cases, including\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/raspberry-pi-home-assistant\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Home Assistant\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/plex-media-server\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Plex Media Server\"})})})})]}),/*#__PURE__*/t(\"p\",{children:[\"Please join us at our \",/*#__PURE__*/e(s,{href:\"https://forum.twingate.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"community forum\"})}),\" to share and discuss your experience and projects.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Prerequisites\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate can be installed either as a Docker container or directly on the OS. If you prefer the first approach, please first \",/*#__PURE__*/e(s,{href:\"https://docs.docker.com/get-docker\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"install Docker\"})}),\".\"]}),/*#__PURE__*/e(\"h1\",{children:\"Sign up for Twingate\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate Starter is a new free plan that is designed for home and personal use. If you don\u2019t have an account already, please click \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=starter-setup\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\" to sign up for a Starter account. Creating an account is simple and you can choose to sign up using a Google, Github, or other existing account you have.\"]}),/*#__PURE__*/e(\"p\",{children:\"Complete the short questionnaire and choose a Network Name and URL on Step 3. This URL (in this example, \u201Cjlhome\u201A) will be a unique identifier that you\u2019ll use later to connect your clients.\"}),/*#__PURE__*/e(\"img\",{alt:\"Name your network\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,VI2GfZ28R9pIfe2pVoNPKtQ9OU.png?originalFilename=name-your-network.png\",src:\"https://framerusercontent.com/images/VI2GfZ28R9pIfe2pVoNPKtQ9OU.png\",srcSet:\"https://framerusercontent.com/images/VI2GfZ28R9pIfe2pVoNPKtQ9OU.png?scale-down-to=512 512w,https://framerusercontent.com/images/VI2GfZ28R9pIfe2pVoNPKtQ9OU.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Name your network\"}),/*#__PURE__*/e(\"p\",{children:\"At this point, you should see a home screen like the one below.\"}),/*#__PURE__*/e(\"img\",{alt:\"Signup complete\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,jFnDr4R8lZsqthXPVF4MaAeBtnI.png?originalFilename=signup-complete.png\",src:\"https://framerusercontent.com/images/jFnDr4R8lZsqthXPVF4MaAeBtnI.png\",srcSet:\"https://framerusercontent.com/images/jFnDr4R8lZsqthXPVF4MaAeBtnI.png?scale-down-to=512 512w,https://framerusercontent.com/images/jFnDr4R8lZsqthXPVF4MaAeBtnI.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Signup complete\"}),/*#__PURE__*/e(\"h1\",{children:\"Add a Remote Network\"}),/*#__PURE__*/e(\"p\",{children:\"Click on the \u201CAdd a Remote Network\u201A button, and you should see a popup. Twingate supports many different kinds of remote networks. If you are looking to connect to AWS, Azure, or GCP, then select the appropriate option in the dropdown menu. If you are connecting to your home network, choose \u201COther\u201A for the Location. Regardless of which option you choose, give the network a name, like \u201CHome Network\u201A, then click \u201CAdd Remote Network\u201A to create it.\"}),/*#__PURE__*/e(\"img\",{alt:\"Add a Remote Network\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,5nUDs3njYPZaemmR5rnr7Dz5dU.png?originalFilename=add-remote-network.png\",src:\"https://framerusercontent.com/images/5nUDs3njYPZaemmR5rnr7Dz5dU.png\",srcSet:\"https://framerusercontent.com/images/5nUDs3njYPZaemmR5rnr7Dz5dU.png?scale-down-to=512 512w,https://framerusercontent.com/images/5nUDs3njYPZaemmR5rnr7Dz5dU.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Add a Remote Network\"}),/*#__PURE__*/e(\"h1\",{children:\"Add a Connector\"}),/*#__PURE__*/e(\"p\",{children:\"The Twingate Connector is a piece of software that allows for secure access to your remote network and the devices connected to it (e.g., your Raspberry Pi or Synology NAS). For it to work, you first need to deploy the Connector on your devices. Click on the remote network you just created and you should see a screen like the one below with two automatically generated Connectors (the names are random) that are not yet connected.\"}),/*#__PURE__*/e(\"img\",{alt:\"Add a Connector\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,SjVoRD3I66SrdN96PQ6AaQ4hPI.png?originalFilename=add-connector.png\",src:\"https://framerusercontent.com/images/SjVoRD3I66SrdN96PQ6AaQ4hPI.png\",srcSet:\"https://framerusercontent.com/images/SjVoRD3I66SrdN96PQ6AaQ4hPI.png?scale-down-to=512 512w,https://framerusercontent.com/images/SjVoRD3I66SrdN96PQ6AaQ4hPI.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Add a Connector\"}),/*#__PURE__*/e(\"p\",{children:\"Choose one of the two Connectors and click on the \u201CDeploy Connector\u201A button. You\u2019ll see a Controller configuration page like the one below with several deployment options. The Connector can be deployed on a variety of devices and servers. Please follow the appropriate instructions below:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/raspberry-pi-home-assistant\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Raspberry Pi\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/synology-nas\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Synology NAS\"})})})})]}),/*#__PURE__*/e(\"p\",{children:\"After deploying the Connector, return to the Twingate web portal and you should see that the Connector\u2019s status has automatically turned green, indicating that the Connector was successfully deployed.\"}),/*#__PURE__*/e(\"img\",{alt:\"Connector is connected\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,OA6Qk2khsAw8PsQMK9z5mJGsyfQ.png?originalFilename=add-connector-docker-connected.png\",src:\"https://framerusercontent.com/images/OA6Qk2khsAw8PsQMK9z5mJGsyfQ.png\",srcSet:\"https://framerusercontent.com/images/OA6Qk2khsAw8PsQMK9z5mJGsyfQ.png?scale-down-to=512 512w,https://framerusercontent.com/images/OA6Qk2khsAw8PsQMK9z5mJGsyfQ.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Connector is connected\"}),/*#__PURE__*/e(\"h1\",{children:\"Add a Resource\"}),/*#__PURE__*/t(\"p\",{children:[\"You\u2019ve now set up a Connector on your Synology NAS. This Connector enables remote access for any device or service on your home network (called a \u201CResource\u201A in Twingate). We\u2019ve put together some guides for things that we\u2019re tinkering on at home ourselves, but please join us in the \",/*#__PURE__*/e(s,{href:\"https://forum.twingate.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"community forum\"})}),\" to share how things went and what other cool use cases you\u2019ve discovered!\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/raspberry-pi-home-assistant\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Home Assistant\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/plex-media-server\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Plex Media Server\"})})})})]}),/*#__PURE__*/e(\"h1\",{children:\"Sharing is Caring\"}),/*#__PURE__*/e(\"p\",{children:\"Do you want to share access with a family member? You can easily do this from the Twingate web UI. Just go to the Team tab and click \u201CInvite User\u201A to send an email invitation. The recipient would simply follow the same steps to download the Twingate client, join your network, and get access to the devices and resources that you choose.\"}),/*#__PURE__*/e(\"img\",{alt:\"Invite other users\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,wJPtFs7Rp1d8H5qfpBe42WwnM.png?originalFilename=sharing.png\",src:\"https://framerusercontent.com/images/wJPtFs7Rp1d8H5qfpBe42WwnM.png\",srcSet:\"https://framerusercontent.com/images/wJPtFs7Rp1d8H5qfpBe42WwnM.png?scale-down-to=512 512w,https://framerusercontent.com/images/wJPtFs7Rp1d8H5qfpBe42WwnM.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Invite other users\"})]})},{index:83,id:\"nEvgX_0SL\",[h]:!0,[d]:!1,[p]:\"What is OpenVPN & Key Limitations\",[u]:\"What is OpenVPN & Key Limitations\",[m]:\"what-is-openvpn\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2022-01-26T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/HveSuRQLAx8qKaD0KkejruZuI.png\",srcSet:\"https://framerusercontent.com/images/HveSuRQLAx8qKaD0KkejruZuI.png?scale-down-to=512 512w,https://framerusercontent.com/images/HveSuRQLAx8qKaD0KkejruZuI.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/HveSuRQLAx8qKaD0KkejruZuI.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/HveSuRQLAx8qKaD0KkejruZuI.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/HveSuRQLAx8qKaD0KkejruZuI.png\",srcSet:\"https://framerusercontent.com/images/HveSuRQLAx8qKaD0KkejruZuI.png?scale-down-to=512 512w,https://framerusercontent.com/images/HveSuRQLAx8qKaD0KkejruZuI.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/HveSuRQLAx8qKaD0KkejruZuI.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/HveSuRQLAx8qKaD0KkejruZuI.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"OpenVPN is a twenty-year-old protocol for delivering remote access to protected networks. Available in many commercial and consumer VPN applications, OpenVPN is a simpler, more performant alternative to \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ipsec\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"IPsec\"})}),\". Yet, OpenVPN suffers from the weaknesses inherent to all \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/business-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN technologies\"})}),\". It simply is not designed to handle the realities of today\u2019s distributed, cloud-enabled networking ecosystem.\"]}),/*#__PURE__*/t(\"p\",{children:[\"In this article, we will explain why OpenVPN and other VPN protocols are no longer suited to how the world works today. We will compare \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate\"})}),\" with OpenVPN\u2019s legacy technology and show how our modern approach is more secure, more performant, easier to use, and more responsive to today\u2019s dynamic business conditions.\"]}),/*#__PURE__*/e(\"h1\",{children:\"What is OpenVPN?\"}),/*#__PURE__*/e(\"p\",{children:\"OpenVPN is an open-source protocol for establishing virtual private network connections. First developed in 2001, the protocol\u2019s configurability has led to widespread adoption by consumer and commercial VPN providers alike. The capabilities this protocol offers includes:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"SSL/TLS security through the OpenSSL library\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/tcp-vs-udp\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"TCP/UDP\"})}),\" tunneling\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Dynamic IP addressing and DHCP\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Native \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authentication\"})}),\" through pre-shared keys or certificates\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"With twenty years of community development effort behind it, the OpenVPN protocol has been ported to a wide range of platforms including all major desktop and mobile operating systems. Open-source VPN router firmware projects such as DD-WRT have also integrated the OpenVPN protocol.\"}),/*#__PURE__*/e(\"p\",{children:\"The project\u2019s original developers also founded OpenVPN, Inc. to commercialize their protocol through two main product lines. OpenVPN Access Server is a Linux-based VPN solution for small and medium businesses. OpenVPN Cloud is a managed remote access service that lets companies avoid maintaining their own servers.\"}),/*#__PURE__*/e(\"h1\",{children:\"OpenVPN Security Capabilities vs. Twingate & Zero Trust\"}),/*#__PURE__*/t(\"p\",{children:[\"The \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/business-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN\"})}),\" architecture that OpenVPN is based on is as old as the public internet. They were originally developed to provide secure, network-to-network connections over the internet. That fundamental concept remained as it evolved to support remote access features. As a result, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/business-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN\"})}),\" technologies create two major security weaknesses:\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Public visibility\"}),\" - All VPN gateways publish their presence on the internet, letting hackers monitor them for vulnerabilities.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Network access\"}),\" - A compromised client device or VPN gateway gives hackers full access to the protected network.\"]})})]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust Network Access\"})}),\" solutions such as Twingate\u2019s are designed for a networking environment in which nothing is reliably secure. Breaches could happen at any time \u2014 and may already be in progress.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Rather than defending entire networks, Twingate establishes \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"software-defined perimeters\"})}),\" around each resource, hiding it from public and private networks alike. Connections are only created once a user has been \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authenticated and authorized\"})}),\" through role-based \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/principle-of-least-privilege\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"least-privilege access\"})}),\" policies. Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" solution dramatically reduces an organization\u2019s attack surface and limits hackers\u2019 abilities to move through a network.\"]}),/*#__PURE__*/e(\"h1\",{children:\"OpenVPN Performance vs. Twingate\"}),/*#__PURE__*/e(\"p\",{children:\"At the heart of OpenVPN\u2019s decades-old architecture is the assumption that a company\u2019s resources, devices, and users are in the same physical location. Today\u2019s internet-connected architectures make this secure perimeter paradigm obsolete. Resources and users could be anywhere. The OpenVPN protocol\u2019s outdated model imposes severe performance penalties on company networks and the user experience.\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Network congestion\"}),\" - \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/business-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN gateways\"})}),\" are bottlenecks through which all remote traffic flows. But gateway capacity is limited. Without expensive upgrades, the congestion caused by remote working impacts network performance.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Network latency\"}),\" - Traffic flowing between remote users and cloud resources must pass through the VPN gateway. This two-step routing adds latency to users\u2019 connections and undermines productivity.\"]})})]}),/*#__PURE__*/t(\"p\",{children:[\"Twingate eliminates these performance penalties by establishing direct, encrypted connections between user devices and resources. In addition, default split tunneling shifts non-essential user traffic to the public internet. Replacing legacy OpenVPN with Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust solution\"})}),\" lowers bandwidth demands on private networks and reduces the latency of user connections.\"]}),/*#__PURE__*/e(\"h1\",{children:\"OpenVPN Ease of Use vs. Twingate\"}),/*#__PURE__*/e(\"p\",{children:\"Whether using OpenVPN or other protocols, VPN-based remote access technologies are difficult to use and manage. End-users must frequently interact with the VPN client software. This is especially true when companies mitigate VPN\u2019s weaknesses through network segmentation. Users must connect and disconnect their VPN each time they need a resource on a different subnet.\"}),/*#__PURE__*/t(\"p\",{children:[\"Since VPN is a remote access solution, it does not apply to on-premises workers. A company\u2019s VPN system is also limited to protecting its private networks. Cloud platforms have their own VPN security systems. As a result, administrators must synchronize policies and permissions across these discrete various \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control\"})}),\" systems.\"]}),/*#__PURE__*/e(\"p\",{children:\"Twingate eliminates these sources of friction. No matter where users are, they get a better experience with a client app that works seamlessly with every resource. Administrators can use simple management consoles to apply consistent policies no matter where the user or resource is located.\"}),/*#__PURE__*/e(\"h1\",{children:\"OpenVPN Scalability vs. Twingate\"}),/*#__PURE__*/t(\"p\",{children:[\"OpenVPN and other legacy technologies integrate \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control\"})}),\" into the \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/network-architecture\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"network architecture\"})}),\". This makes VPN more brittle and less responsive to changing business demands. Any changes to the network will impact access policies and vice versa. Ensuring that changes do not impact operations takes time and resources.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s software-based solution decouples access control from the physical network. No new infrastructure or changes to configurations are needed. Network administrators can keep the existing network names and IP addresses. In addition, Twingate integrates with \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/identity-providers\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"major identity providers\"})}),\" and other elements of a company\u2019s existing security stack.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Twingate customers have deployed their \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" systems in as little as 15 minutes. Our service-based model removes much of the burden that VPN change management places on IT teams. As business demands evolve, easy-to-use consoles let administrators add, change, and remove user permissions with a few mouse clicks.\"]}),/*#__PURE__*/e(\"h1\",{children:\"OpenVPN Support vs. Twingate\"}),/*#__PURE__*/e(\"p\",{children:\"Like many open-source projects, the support for the OpenVPN protocol is a mix of community-driven forums and vendor-specific resources. This can get complicated since VPN vendors may modify their implementation of OpenVPN. For example, some vendors will use different encryption algorithms to improve performance on their OpenVPN servers. Identifying the best source for support in these cases is not always clear-cut.\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate customers have a single source for all their support needs. Individuals and small teams using our free Starter Tier can rely on a \",/*#__PURE__*/e(s,{href:\"https://forum.twingate.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"community forum\"})}),\" focused on Twingate\u2019s solution. Large teams and organizations using our paid tiers have direct access to Twingate\u2019s support team.\"]}),/*#__PURE__*/e(\"h1\",{children:\"How Twingate enhances security beyond access control\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s modern, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust security solution\"})}),\" delivers more than remote access control. You can enhance your organizations with additional capabilities including:\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Universal 2-factor authentication\"}),\" - Twingate integrates with 2FA providers and extends \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/two-factor-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"2FA protection\"})}),\" to any private resource. Without any settings changes, services such as SSH can get the same level of \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control\"})}),\" as databases and other resources.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Device restrictions\"}),\" - Take access control beyond user identity by applying \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authorizations\"})}),\" based on the posture of specific devices. As access requests are made, Twingate can evaluate the device\u2019s security settings, operating system status, and other variables. Policies can limit or prohibit access based on the device\u2019s real-time \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/device-trust-in-a-zero-trust-world\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"security posture\"})}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Activity logging\"}),\" - Twingate\u2019s extensive logging gives administrators enterprise-wide visibility over how their networks are being used. All activity logs are indexed to the identity of each user and device to better establish baseline usage patterns and identify unusual activity.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"DNS filtering\"}),\" - Besides integrating with identity providers, Twingate is compatible with other security services such as DNS filtering to help protect users\u2019 public internet access.\"]})})]}),/*#__PURE__*/e(\"h1\",{children:\"Improve security, performance, and usability with Twingate\u2019s Zero Trust solution\"}),/*#__PURE__*/t(\"p\",{children:[\"OpenVPN and other VPN protocols were developed in a networking world that no longer exists. Their reliance on the secure perimeter paradigm makes \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/business-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN\"})}),\" solutions less secure, difficult to manage, and harder to scale. With fewer resources and users sitting in a company facility, the topology of VPN architectures imposes significant penalties on a company\u2019s private network performance and user experience.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s modern approach based on principles of \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" eliminates the burden and friction of legacy technologies like OpenVPN. You can implement Twingate quickly without changing your network. Management becomes much simpler by consolidating control of access to all resources \u2014 no matter where they are located \u2014 within Twingate\u2019s single, easy-to-use system. And Twingate improves security by reducing your company\u2019s attack surface and taking away hackers\u2019 ability to move laterally.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=what-is-openvpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact us\"})}),\" to learn more about Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" solution. To get a zero-risk experience of Twingate in action, try out our new \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=what-is-openvpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Starter service\"})}),\". Perfect for individuals and small teams, this free service lets you provide up to 5 users remote access to a private network.\"]})]})},{index:84,id:\"NIOHXLS_Z\",[h]:!0,[d]:!1,[p]:\"Simple, Secure & Free Remote Access to your Synology NAS\",[u]:\"Synology NAS\",[m]:\"synology-nas\",[g]:\"\",[w]:\"Jimmy Li\",[f]:\"2022-01-26T00:00:00.000Z\",[y]:\"nwIUHELao\",[b]:T({src:\"https://framerusercontent.com/images/5EBeb0zEgbfhmhEtS1aaFgfE0.png\",srcSet:\"https://framerusercontent.com/images/5EBeb0zEgbfhmhEtS1aaFgfE0.png?scale-down-to=512 512w,https://framerusercontent.com/images/5EBeb0zEgbfhmhEtS1aaFgfE0.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/5EBeb0zEgbfhmhEtS1aaFgfE0.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/5EBeb0zEgbfhmhEtS1aaFgfE0.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/5EBeb0zEgbfhmhEtS1aaFgfE0.png\",srcSet:\"https://framerusercontent.com/images/5EBeb0zEgbfhmhEtS1aaFgfE0.png?scale-down-to=512 512w,https://framerusercontent.com/images/5EBeb0zEgbfhmhEtS1aaFgfE0.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/5EBeb0zEgbfhmhEtS1aaFgfE0.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/5EBeb0zEgbfhmhEtS1aaFgfE0.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"A network-attached storage device (or NAS) is a great way to backup your files or your entire computer. But beyond just storage, a NAS is itself also a computer that can be used for example as a media server to access your photos or watch your movies. This works fine when you are at home, but what\u2019s the best way to access your NAS when you are out and about?\"}),/*#__PURE__*/t(\"p\",{children:[\"There are some common approaches, but as the table below illustrates, they are cumbersome, insecure, and potentially expensive. We are excited to offer a new simple, secure, and free solution: \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=synology-nas\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate Starter\"})}),\"!\"]}),/*#__PURE__*/e(\"img\",{alt:\"Twingate remote access does not require setting up a VPN, port forwarding, static IP addresses, or configuring DDNS\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,rO7Zjjqq5v2MrA7U5RCtv50FVU0.png?originalFilename=vpn-comparison.png\",src:\"https://framerusercontent.com/images/rO7Zjjqq5v2MrA7U5RCtv50FVU0.png\",srcSet:\"https://framerusercontent.com/images/rO7Zjjqq5v2MrA7U5RCtv50FVU0.png?scale-down-to=512 512w,https://framerusercontent.com/images/rO7Zjjqq5v2MrA7U5RCtv50FVU0.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate remote access does not require setting up a VPN, port forwarding, static IP addresses, or configuring DDNS\"}),/*#__PURE__*/t(\"p\",{children:[\"We\u2019ve created a quick start guide below to walk you through the steps to get Twingate up and running on Synology, a popular NAS option, but the same concept would work for TrueNAS, Unraid, and others. Please join us at our \",/*#__PURE__*/e(s,{href:\"https://forum.twingate.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"community forum\"})}),\" to share and discuss your experience and projects.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Prerequisites\"}),/*#__PURE__*/e(\"p\",{children:\"The rest of this guide assumes that you have a couple components already installed. If not, please following these instructions first:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://kb.synology.com/en-us/DSM/help/DSM/MainMenu/get_started?version=6\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Set up your Synology NAS\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://kb.synology.com/en-us/DSM/help/Docker/docker_desc?version=6\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Install Docker on your Synology NAS\"})})})})]}),/*#__PURE__*/e(\"h1\",{children:\"Sign up for Twingate\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate Starter is a new free plan that is designed for home and personal use. If you don\u2019t have an account already, please click \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/twingate-starter-setup?utm_source=blog&utm_medium=blog&utm_campaign=synology-nas\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\" and follow the simple steps to sign up for a Starter account and begin the initial setup. Creating an account is simple and you can choose to sign up using a Google, Github, or other existing account you have.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Add a Connector\"}),/*#__PURE__*/e(\"p\",{children:\"The Twingate Connector is a piece of software that allows for secure access to your remote network and the devices connected to it (in this case, your Synology NAS). For it to work, you first need to deploy the Connector on your Synology NAS. Click on the remote network you just created and you should see a screen like the one below with two automatically generated Connectors (the names are random) that are not yet connected.\"}),/*#__PURE__*/e(\"img\",{alt:\"Add a Connector\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,SjVoRD3I66SrdN96PQ6AaQ4hPI.png?originalFilename=add-connector.png\",src:\"https://framerusercontent.com/images/SjVoRD3I66SrdN96PQ6AaQ4hPI.png\",srcSet:\"https://framerusercontent.com/images/SjVoRD3I66SrdN96PQ6AaQ4hPI.png?scale-down-to=512 512w,https://framerusercontent.com/images/SjVoRD3I66SrdN96PQ6AaQ4hPI.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Add a Connector\"}),/*#__PURE__*/e(\"p\",{children:\"Choose one of the two Connectors and click on the \u201CDeploy Connector\u201A button. You\u2019ll see a Controller configuration page like the one below with several deployment options. You can keep the default option (Docker).\"}),/*#__PURE__*/e(\"h2\",{children:\"Docker deployment\"}),/*#__PURE__*/e(\"img\",{alt:\"Add a Connector via Docker\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,lyiqB9xK58gM4UoEgU6DUXrWsVs.png?originalFilename=add-connector-docker.png\",src:\"https://framerusercontent.com/images/lyiqB9xK58gM4UoEgU6DUXrWsVs.png\",srcSet:\"https://framerusercontent.com/images/lyiqB9xK58gM4UoEgU6DUXrWsVs.png?scale-down-to=512 512w,https://framerusercontent.com/images/lyiqB9xK58gM4UoEgU6DUXrWsVs.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Add a Connector via Docker\"}),/*#__PURE__*/e(\"p\",{children:\"The next step is to generate tokens for the Connector. Scroll down to Step 2 and click the \u201CGenerate Tokens\u201A button. You\u2019ll see a popup like below asking you to re-authenticate using whichever account you used to sign up (e.g., Google). After doing so, you\u2019ll come back to this page and see that two tokens have been generated. You will need these tokens in a little bit.\"}),/*#__PURE__*/e(\"img\",{alt:\"Generate tokens\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,HxnjHNBFmGGgLCvT4dhKJU2r7o.png?originalFilename=add-connector-docker-tokens.png\",src:\"https://framerusercontent.com/images/HxnjHNBFmGGgLCvT4dhKJU2r7o.png\",srcSet:\"https://framerusercontent.com/images/HxnjHNBFmGGgLCvT4dhKJU2r7o.png?scale-down-to=512 512w,https://framerusercontent.com/images/HxnjHNBFmGGgLCvT4dhKJU2r7o.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Generate tokens\"}),/*#__PURE__*/e(\"h2\",{children:\"Install the Twingate Connector on your Synology NAS\"}),/*#__PURE__*/t(\"p\",{children:[\"Open Docker on your Synology NAS, click on \u201CRegistry\u201A in the left side panel, search for \",/*#__PURE__*/e(\"code\",{children:\"twingate\"}),\", select \",/*#__PURE__*/e(\"code\",{children:\"twingate/connector\"}),\", and click \u201CDownload\u201A to install it.\"]}),/*#__PURE__*/e(\"img\",{alt:\"Install the Twingate Connector via Docker\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,G2wgIJksEOvF0mmnzGk9608SyPs.png?originalFilename=docker-registry.png\",src:\"https://framerusercontent.com/images/G2wgIJksEOvF0mmnzGk9608SyPs.png\",srcSet:\"https://framerusercontent.com/images/G2wgIJksEOvF0mmnzGk9608SyPs.png?scale-down-to=512 512w,https://framerusercontent.com/images/G2wgIJksEOvF0mmnzGk9608SyPs.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Install the Twingate Connector via Docker\"}),/*#__PURE__*/e(\"p\",{children:\"Click on the \u201CImage\u201A tab and you sould see the Connector. Select it and click on the \u201CLaunch\u201A button. In the \u201CGeneral Settings\u201A screen, give the Connector a name and then click on \u201CAdvanced Settings\u201A.\"}),/*#__PURE__*/e(\"img\",{alt:\"Docker container general settings\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,duFNbpZvh5M49a0cQDfmFUCs.png?originalFilename=container-general-settings.png\",src:\"https://framerusercontent.com/images/duFNbpZvh5M49a0cQDfmFUCs.png\",srcSet:\"https://framerusercontent.com/images/duFNbpZvh5M49a0cQDfmFUCs.png?scale-down-to=512 512w,https://framerusercontent.com/images/duFNbpZvh5M49a0cQDfmFUCs.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Docker container general settings\"}),/*#__PURE__*/e(\"p\",{children:\"Under \u201CAdvanced Settings\u201A, go to the \u201CNetwork\u201A tab, and make sure to check the box next to \u201CUse the same network as Docker Host\u201A.\"}),/*#__PURE__*/e(\"img\",{alt:\"Docker container advanced settings\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,4GR0JEeQh0mv3ihprgdftWeod50.png?originalFilename=container-advanced-settings.png\",src:\"https://framerusercontent.com/images/4GR0JEeQh0mv3ihprgdftWeod50.png\",srcSet:\"https://framerusercontent.com/images/4GR0JEeQh0mv3ihprgdftWeod50.png?scale-down-to=512 512w,https://framerusercontent.com/images/4GR0JEeQh0mv3ihprgdftWeod50.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Docker container advanced settings\"}),/*#__PURE__*/t(\"p\",{children:[\"Next, go to the \u201CEnvironment\u201A tab and you should see several variables listed. Make sure that the \",/*#__PURE__*/e(\"code\",{children:\"REFRESH_TOKEN\"}),\", \",/*#__PURE__*/e(\"code\",{children:\"ACCESS_TOKEN\"}),\", and \",/*#__PURE__*/e(\"code\",{children:\"TENANT_URL\"}),\" variables are defined. For the first two variables, paste in the two tokens that you generated earlier. For the third variable, enter your Twingate URL (e.g., \",/*#__PURE__*/e(\"code\",{children:\"https://jlhome.twingate.com\"}),\").\"]}),/*#__PURE__*/e(\"img\",{alt:\"Docker container environment variables\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,1XCFu2RyjKlpP2EHmwjdkiNzzs.png?originalFilename=container-environment-variables.png\",src:\"https://framerusercontent.com/images/1XCFu2RyjKlpP2EHmwjdkiNzzs.png\",srcSet:\"https://framerusercontent.com/images/1XCFu2RyjKlpP2EHmwjdkiNzzs.png?scale-down-to=512 512w,https://framerusercontent.com/images/1XCFu2RyjKlpP2EHmwjdkiNzzs.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Docker container environment variables\"}),/*#__PURE__*/e(\"p\",{children:\"Click \u201CApply\u201A to save the settings, then click \u201CNext\u201A and you should see a summary of the settings you configured. Make sure to check \u201CRun this container after the wizard is finished\u201A and click \u201CApply\u201A. The container for your Twingate Connector should have been successfully created. Check in Docker that the container is running. If it is not, click the on/off toggle on the right.\"}),/*#__PURE__*/e(\"p\",{children:\"Go back the Twingate web portal and you should see that the Connector\u2019s status has automatically turned green, indicating that the Connector was successfully deployed.\"}),/*#__PURE__*/e(\"img\",{alt:\"Connector is connected\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,OA6Qk2khsAw8PsQMK9z5mJGsyfQ.png?originalFilename=add-connector-docker-connected.png\",src:\"https://framerusercontent.com/images/OA6Qk2khsAw8PsQMK9z5mJGsyfQ.png\",srcSet:\"https://framerusercontent.com/images/OA6Qk2khsAw8PsQMK9z5mJGsyfQ.png?scale-down-to=512 512w,https://framerusercontent.com/images/OA6Qk2khsAw8PsQMK9z5mJGsyfQ.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Connector is connected\"}),/*#__PURE__*/e(\"h2\",{children:\"Keeping the Twingate connector up to date\"}),/*#__PURE__*/e(\"p\",{children:\"We regularly update our connector with improvements. Follow these steps to update your Docker container:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Go to the \u201CRegistry\u201A tab and download the latest version of \",/*#__PURE__*/e(\"code\",{children:\"twingate/connector\"})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Go to the \u201CContainer\u201A tab and stop \",/*#__PURE__*/e(\"code\",{children:\"twingate/connector\"})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Go to the \u201CActions\u201A menu and select \u201CClear\u201A (or might be named \u201CReset\u201A)\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Restart the \",/*#__PURE__*/e(\"code\",{children:\"twingate/connector\"}),\" container\"]})})]}),/*#__PURE__*/e(\"h1\",{children:\"Add a Resource\"}),/*#__PURE__*/t(\"p\",{children:[\"You\u2019ve now set up a Connector on your Synology NAS. This Connector enables remote access for any device or service on your home network (called a \u201CResource\u201A in Twingate). Go back to your Remote Network and click on the \u201CAdd Resource\u201A link. You\u2019ll see a popup like the one below. Click on the \u201CCIDR Address\u201A box, choose a Label name for the Resource, enter the local IP address of your Synology NAS (probably something like \",/*#__PURE__*/e(\"code\",{children:\"10.x.x.x\"}),\" or \",/*#__PURE__*/e(\"code\",{children:\"192.168.x.x\"}),\"), choose 5000 for the Port Restriction, and click \u201CAdd Resource\u201A.\"]}),/*#__PURE__*/e(\"img\",{alt:\"Add a Resource\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,1PHAa95fN9f9AD1tOXRDAFE27EQ.png?originalFilename=add-resource-synology.png\",src:\"https://framerusercontent.com/images/1PHAa95fN9f9AD1tOXRDAFE27EQ.png\",srcSet:\"https://framerusercontent.com/images/1PHAa95fN9f9AD1tOXRDAFE27EQ.png?scale-down-to=512 512w,https://framerusercontent.com/images/1PHAa95fN9f9AD1tOXRDAFE27EQ.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Add a Resource\"}),/*#__PURE__*/e(\"p\",{children:\"Congrats! Your Synology NAS is now enabled for secure remote access.\"}),/*#__PURE__*/e(\"img\",{alt:\"Setup is complete\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,ZpJOqrglSCpmDjTjEV9HJLj7Eg.png?originalFilename=setup-complete-synology.png\",src:\"https://framerusercontent.com/images/ZpJOqrglSCpmDjTjEV9HJLj7Eg.png\",srcSet:\"https://framerusercontent.com/images/ZpJOqrglSCpmDjTjEV9HJLj7Eg.png?scale-down-to=512 512w,https://framerusercontent.com/images/ZpJOqrglSCpmDjTjEV9HJLj7Eg.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Setup is complete\"}),/*#__PURE__*/e(\"h1\",{children:\"Set up the Twingate client\"}),/*#__PURE__*/e(\"p\",{children:\"All that\u2019s left to do now is to install Twingate on your device (we support Windows, Mac, Linux and have apps for iOS and Android) and access your Synology NAS. As an example, let\u2019s walk through setting up the Twingate client on iOS.\"}),/*#__PURE__*/t(\"p\",{children:[\"First, download and install the iOS app \",/*#__PURE__*/e(s,{href:\"https://api.twingate.com/download/ios\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\". Type in the Network URL that you chose when you signed up and tap \u201CJoin Network\u201A. You\u2019ll be automatically asked to log in using the same account you used to sign up. After signing in, you\u2019ll land on the home screen, where you should already see your Synology NAS Resource listed. When you are connected to your Twingate network, a \u201CVPN\u201A icon will appear in the top bar of your screen.\"]}),/*#__PURE__*/e(\"p\",{children:\"To test it out, stay connected to Twingate, disconnect from your local network (e.g., by disabling WiFi), and navigate to your Synology NAS on your phone\u2019s browser. You should be able to access it just as if you were at home.\"}),/*#__PURE__*/e(\"p\",{children:\"Finally, disconnect from Twingate and try accessing it again \u2014 you should see that it\u2019s inaccessible.\"}),/*#__PURE__*/e(\"p\",{children:\"Congrats! You\u2019ve finished setting up Twingate for Synology NAS. You can now securely access anything that you have running on your Synology NAS, such as:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Streaming photos, music, or videos stored on your NAS from anywhere\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Monitoring and reviewing camera footage using Surveillance Station\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Using your NAS as a file server that you can use from anywhere\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"Join us in the \",/*#__PURE__*/e(s,{href:\"https://forum.twingate.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"community forum\"})}),\" to share how things went and what cool use cases you\u2019ve discovered!\"]}),/*#__PURE__*/e(\"img\",{alt:\"Client setup\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,EslHATFQyfHLJJSdE7QFMx9zs.png?originalFilename=client-setup-synology.png\",src:\"https://framerusercontent.com/images/EslHATFQyfHLJJSdE7QFMx9zs.png\",srcSet:\"https://framerusercontent.com/images/EslHATFQyfHLJJSdE7QFMx9zs.png?scale-down-to=512 512w,https://framerusercontent.com/images/EslHATFQyfHLJJSdE7QFMx9zs.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Client setup\"}),/*#__PURE__*/e(\"h1\",{children:\"Sharing is Caring\"}),/*#__PURE__*/e(\"p\",{children:\"Do you want to share access with a family member? You can easily do this from the Twingate web UI. Just go to the Team tab and click \u201CInvite User\u201A to send an email invitation. The recipient would simply follow the same steps to download the Twingate client, join your network, and get access to your Synology NAS, or any other resource you set up!\"}),/*#__PURE__*/e(\"img\",{alt:\"Invite other users\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,wJPtFs7Rp1d8H5qfpBe42WwnM.png?originalFilename=sharing.png\",src:\"https://framerusercontent.com/images/wJPtFs7Rp1d8H5qfpBe42WwnM.png\",srcSet:\"https://framerusercontent.com/images/wJPtFs7Rp1d8H5qfpBe42WwnM.png?scale-down-to=512 512w,https://framerusercontent.com/images/wJPtFs7Rp1d8H5qfpBe42WwnM.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Invite other users\"})]})},{index:85,id:\"iRlC_eMRQ\",[h]:!0,[d]:!1,[p]:\"Simple, Secure & Free Remote Access to your Raspberry Pi + Home Assistant\",[u]:\"Raspberry Pi + Home Assistant\",[m]:\"raspberry-pi-home-assistant\",[g]:\"\",[w]:\"Jimmy Li\",[f]:\"2022-01-21T00:00:00.000Z\",[y]:\"nwIUHELao\",[b]:T({src:\"https://framerusercontent.com/images/0fmSCHttmKPuzNXU6ekdnYld0.png\",srcSet:\"https://framerusercontent.com/images/0fmSCHttmKPuzNXU6ekdnYld0.png?scale-down-to=512 512w,https://framerusercontent.com/images/0fmSCHttmKPuzNXU6ekdnYld0.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/0fmSCHttmKPuzNXU6ekdnYld0.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/0fmSCHttmKPuzNXU6ekdnYld0.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/0fmSCHttmKPuzNXU6ekdnYld0.png\",srcSet:\"https://framerusercontent.com/images/0fmSCHttmKPuzNXU6ekdnYld0.png?scale-down-to=512 512w,https://framerusercontent.com/images/0fmSCHttmKPuzNXU6ekdnYld0.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/0fmSCHttmKPuzNXU6ekdnYld0.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/0fmSCHttmKPuzNXU6ekdnYld0.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"If you are like us, you need a secure remote access solution for your job, and maybe you already use Twingate at work.\"}),/*#__PURE__*/e(\"p\",{children:\"Also like us, you might enjoy tinkering at home with devices that you want to be able to securely access and control when you\u2019re away. For example, if you have a Raspberry Pi, you could set up Home Assistant on it to control and automate your smart devices. But what\u2019s the best way to access it when you are not at home?\"}),/*#__PURE__*/t(\"p\",{children:[\"There are some common approaches, but as the table below illustrates, they are cumbersome, insecure, and potentially expensive. We are excited to offer a new simple, secure, and free solution: \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=raspberry-pi-home-assistant\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate Starter\"})}),\"!\"]}),/*#__PURE__*/e(\"img\",{alt:\"Twingate remote access does not require setting up a VPN, port forwarding, static IP addresses, or configuring DDNS\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,rO7Zjjqq5v2MrA7U5RCtv50FVU0.png?originalFilename=vpn-comparison.png\",src:\"https://framerusercontent.com/images/rO7Zjjqq5v2MrA7U5RCtv50FVU0.png\",srcSet:\"https://framerusercontent.com/images/rO7Zjjqq5v2MrA7U5RCtv50FVU0.png?scale-down-to=512 512w,https://framerusercontent.com/images/rO7Zjjqq5v2MrA7U5RCtv50FVU0.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate remote access does not require setting up a VPN, port forwarding, static IP addresses, or configuring DDNS\"}),/*#__PURE__*/t(\"p\",{children:[\"We\u2019ve created a quick start guide below to walk you through the steps to get Twingate up and running on your Raspberry Pi. Please join us at our \",/*#__PURE__*/e(s,{href:\"https://forum.twingate.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"community forum\"})}),\" to share and discuss your experience and projects.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Prerequisites\"}),/*#__PURE__*/e(\"p\",{children:\"The rest of this guide assumes that you have a few components already installed. If not, please following these instructions first:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://www.raspberrypi.com/documentation/computers/getting-started.html\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Set up your Raspberry Pi\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://www.home-assistant.io/installation/raspberrypi\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Install Home Assistant on your Raspberry Pi\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Twingate can be installed either as a Docker container or directly on the OS. If you prefer the first approach, please first \",/*#__PURE__*/e(s,{href:\"https://docs.docker.com/get-docker\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"install Docker\"})}),\".\"]})})]}),/*#__PURE__*/e(\"h1\",{children:\"Sign up for Twingate\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate Starter is a new free plan that is designed for home and personal use. If you don\u2019t have an account already, please click \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/twingate-starter-setup?utm_source=blog&utm_medium=blog&utm_campaign=raspberry-pi-home-assistant\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\" to sign up for a Starter account. Creating an account is simple and you can choose to sign up using a Google, Github, or other existing account you have.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Add a Connector\"}),/*#__PURE__*/e(\"p\",{children:\"The Twingate Connector is a piece of software that allows for secure access to your remote network and the devices connected to it (in this case, your Raspberry Pi). For it to work, you first need to deploy the Connector on your Raspberry Pi. Click on the remote network you just created and you should see a screen like the one below with two automatically generated Connectors (the names are random) that are not yet connected.\"}),/*#__PURE__*/e(\"img\",{alt:\"Add a Connector\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,SjVoRD3I66SrdN96PQ6AaQ4hPI.png?originalFilename=add-connector.png\",src:\"https://framerusercontent.com/images/SjVoRD3I66SrdN96PQ6AaQ4hPI.png\",srcSet:\"https://framerusercontent.com/images/SjVoRD3I66SrdN96PQ6AaQ4hPI.png?scale-down-to=512 512w,https://framerusercontent.com/images/SjVoRD3I66SrdN96PQ6AaQ4hPI.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Add a Connector\"}),/*#__PURE__*/e(\"p\",{children:\"Choose one of the two Connectors and click on the \u201CDeploy Connector\u201A button. You\u2019ll see a Controller configuration page like the one below with several deployment options. We\u2019ll walk through the Docker method first and then also cover the Linux method further below.\"}),/*#__PURE__*/e(\"h2\",{children:\"Docker deployment\"}),/*#__PURE__*/e(\"img\",{alt:\"Add a Connector via Docker\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,lyiqB9xK58gM4UoEgU6DUXrWsVs.png?originalFilename=add-connector-docker.png\",src:\"https://framerusercontent.com/images/lyiqB9xK58gM4UoEgU6DUXrWsVs.png\",srcSet:\"https://framerusercontent.com/images/lyiqB9xK58gM4UoEgU6DUXrWsVs.png?scale-down-to=512 512w,https://framerusercontent.com/images/lyiqB9xK58gM4UoEgU6DUXrWsVs.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Add a Connector via Docker\"}),/*#__PURE__*/e(\"p\",{children:\"The next step is to generate tokens for the Connector. Scroll down to Step 2 and click the \u201CGenerate Tokens\u201A button. You\u2019ll see a popup like below asking you to re-authenticate using whichever account you used to sign up (e.g., Google). After doing so, you\u2019ll come back to this page and see that two tokens have been generated.\"}),/*#__PURE__*/e(\"img\",{alt:\"Generate tokens\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,HxnjHNBFmGGgLCvT4dhKJU2r7o.png?originalFilename=add-connector-docker-tokens.png\",src:\"https://framerusercontent.com/images/HxnjHNBFmGGgLCvT4dhKJU2r7o.png\",srcSet:\"https://framerusercontent.com/images/HxnjHNBFmGGgLCvT4dhKJU2r7o.png?scale-down-to=512 512w,https://framerusercontent.com/images/HxnjHNBFmGGgLCvT4dhKJU2r7o.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Generate tokens\"}),/*#__PURE__*/t(\"p\",{children:[\"Scroll down to Step 4 and copy the Docker command that has been automatically generated. Paste this into a terminal on your Raspberry Pi (you may need to add \",/*#__PURE__*/e(\"code\",{children:\"sudo\"}),\" at the beginning).\"]}),/*#__PURE__*/e(\"img\",{alt:\"Copy command\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,jupud568QSdHaoNuIOaE5mAis.png?originalFilename=add-connector-docker-command.png\",src:\"https://framerusercontent.com/images/jupud568QSdHaoNuIOaE5mAis.png\",srcSet:\"https://framerusercontent.com/images/jupud568QSdHaoNuIOaE5mAis.png?scale-down-to=512 512w,https://framerusercontent.com/images/jupud568QSdHaoNuIOaE5mAis.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Copy command\"}),/*#__PURE__*/t(\"p\",{children:[\"The command should have run successfully in seconds. (You may also be asked to enter a password if you ran the command with \",/*#__PURE__*/e(\"code\",{children:\"sudo\"}),\" at the beginning.) You can check that the Connector is running using \",/*#__PURE__*/e(\"code\",{children:\"sudo docker ps\"}),\".\"]}),/*#__PURE__*/e(\"img\",{alt:\"Check docker ps\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,ndYW2lQqAURFl0Et2obY4QZLv6M.png?originalFilename=add-connector-docker-ps.png\",src:\"https://framerusercontent.com/images/ndYW2lQqAURFl0Et2obY4QZLv6M.png\",srcSet:\"https://framerusercontent.com/images/ndYW2lQqAURFl0Et2obY4QZLv6M.png?scale-down-to=512 512w,https://framerusercontent.com/images/ndYW2lQqAURFl0Et2obY4QZLv6M.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Check docker ps\"}),/*#__PURE__*/e(\"p\",{children:\"If you go back to the Connector configuration page, you should also see that the Connection Status has also automatically turned green. Congrats! You\u2019ve successfully deployed your Connector.\"}),/*#__PURE__*/e(\"img\",{alt:\"Connector is connected\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,OA6Qk2khsAw8PsQMK9z5mJGsyfQ.png?originalFilename=add-connector-docker-connected.png\",src:\"https://framerusercontent.com/images/OA6Qk2khsAw8PsQMK9z5mJGsyfQ.png\",srcSet:\"https://framerusercontent.com/images/OA6Qk2khsAw8PsQMK9z5mJGsyfQ.png?scale-down-to=512 512w,https://framerusercontent.com/images/OA6Qk2khsAw8PsQMK9z5mJGsyfQ.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Connector is connected\"}),/*#__PURE__*/e(\"h2\",{children:\"Linux deployment\"}),/*#__PURE__*/t(\"p\",{children:[\"An alternative method is to deploy the Connector directly on the Linux OS. We support \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/connectors-on-linux#supported-distributions\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"multiple distributions\"})}),\". Choose the other automatically generated Connector and click the \u201CLinux\u201A box under Step 1.\"]}),/*#__PURE__*/e(\"img\",{alt:\"Add a Connector via Linux\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,LmxXMzuZNN3q6TiZrrIpfOVMQj4.png?originalFilename=add-connector-linux.png\",src:\"https://framerusercontent.com/images/LmxXMzuZNN3q6TiZrrIpfOVMQj4.png\",srcSet:\"https://framerusercontent.com/images/LmxXMzuZNN3q6TiZrrIpfOVMQj4.png?scale-down-to=512 512w,https://framerusercontent.com/images/LmxXMzuZNN3q6TiZrrIpfOVMQj4.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Add a Connector via Linux\"}),/*#__PURE__*/e(\"p\",{children:\"Just like with the Docker method, you\u2019ll need to generate tokens for Step 2. This will also prompt you to authenticate again using the account you used to sign up.\"}),/*#__PURE__*/e(\"img\",{alt:\"Generate tokens\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,k78LtZ7SuoXr9xoPXih1h5Kp65M.png?originalFilename=add-connector-linux-tokens.png\",src:\"https://framerusercontent.com/images/k78LtZ7SuoXr9xoPXih1h5Kp65M.png\",srcSet:\"https://framerusercontent.com/images/k78LtZ7SuoXr9xoPXih1h5Kp65M.png?scale-down-to=512 512w,https://framerusercontent.com/images/k78LtZ7SuoXr9xoPXih1h5Kp65M.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Generate tokens\"}),/*#__PURE__*/e(\"p\",{children:\"After authenticating, you\u2019ll see two tokens were generated and a command was automatically generated under Step 3. Click the button to copy the command and run it in a shell terminal.\"}),/*#__PURE__*/e(\"img\",{alt:\"Copy command\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,2MfTdcKM8npvg2QzLXXf4iokqSk.png?originalFilename=add-connector-linux-command.png\",src:\"https://framerusercontent.com/images/2MfTdcKM8npvg2QzLXXf4iokqSk.png\",srcSet:\"https://framerusercontent.com/images/2MfTdcKM8npvg2QzLXXf4iokqSk.png?scale-down-to=512 512w,https://framerusercontent.com/images/2MfTdcKM8npvg2QzLXXf4iokqSk.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Copy command\"}),/*#__PURE__*/e(\"p\",{children:\"The command should take a couple minutes to run, after which you should see that the Connector\u2019s status has automatically turned green on the Twingate web portal.\"}),/*#__PURE__*/e(\"img\",{alt:\"Connector is connected\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,t2ch1epU5uFZzPFxdxAfIwcIH0.png?originalFilename=add-connector-linux-connected.png\",src:\"https://framerusercontent.com/images/t2ch1epU5uFZzPFxdxAfIwcIH0.png\",srcSet:\"https://framerusercontent.com/images/t2ch1epU5uFZzPFxdxAfIwcIH0.png?scale-down-to=512 512w,https://framerusercontent.com/images/t2ch1epU5uFZzPFxdxAfIwcIH0.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Connector is connected\"}),/*#__PURE__*/e(\"h1\",{children:\"Add a Resource\"}),/*#__PURE__*/e(\"p\",{children:\"You\u2019ve now set up a Connector on your Raspberry Pi. This Connector enables remote access for any device or service on your home network (called a \u201CResource\u201A in Twingate). For now, we\u2019re just interested in enabling access to the Home Assistant service on the Raspberry Pi, so we need to add it as a Resource.\"}),/*#__PURE__*/e(\"p\",{children:\"Go back to your Remote Network and click on the \u201CAdd Resource\u201A link. You\u2019ll see a popup like the one below. Click on the \u201CCIDR Address\u201A box, choose a Label name for the Resource, enter the local IP address of Home Assistant (likely something like 192.168.xxx.xxx), choose 8123 for the Port Restriction, and click \u201CAdd Resource\u201A.\"}),/*#__PURE__*/e(\"img\",{alt:\"Add a Resource\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,jFxTzP0DoFNtfojLE2rtbsrVx4.png?originalFilename=add-resource.png\",src:\"https://framerusercontent.com/images/jFxTzP0DoFNtfojLE2rtbsrVx4.png\",srcSet:\"https://framerusercontent.com/images/jFxTzP0DoFNtfojLE2rtbsrVx4.png?scale-down-to=512 512w,https://framerusercontent.com/images/jFxTzP0DoFNtfojLE2rtbsrVx4.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Add a Resource\"}),/*#__PURE__*/e(\"p\",{children:\"Congrats! Your Home Assistant is now enabled for secure remote access!\"}),/*#__PURE__*/e(\"img\",{alt:\"Setup is complete\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,CP4KUnwl1MeKB0kuyf5z83fLYNY.png?originalFilename=setup-complete.png\",src:\"https://framerusercontent.com/images/CP4KUnwl1MeKB0kuyf5z83fLYNY.png\",srcSet:\"https://framerusercontent.com/images/CP4KUnwl1MeKB0kuyf5z83fLYNY.png?scale-down-to=512 512w,https://framerusercontent.com/images/CP4KUnwl1MeKB0kuyf5z83fLYNY.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Setup is complete\"}),/*#__PURE__*/e(\"h1\",{children:\"Set up the Twingate client\"}),/*#__PURE__*/e(\"p\",{children:\"All that\u2019s left to do now is to install Twingate on your device (we support Windows, Mac, Linux and have apps for iOS and Android) and access your Raspberry Pi + Home Assistant. As an example, let\u2019s walk through setting up the Twingate client on iOS.\"}),/*#__PURE__*/t(\"p\",{children:[\"First, download and install the iOS app \",/*#__PURE__*/e(s,{href:\"https://api.twingate.com/download/ios\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\". Type in the Network URL that you chose when you signed up and tap \u201CJoin Network\u201A. You\u2019ll be automatically asked to log in using the same account you used to sign up. After signing in, you\u2019ll land on the home screen, where you should already see your Home Assistant Resource listed. When you are connected to your Twingate network, a \u201CVPN\u201A icon will appear in the top bar of your screen.\"]}),/*#__PURE__*/e(\"p\",{children:\"To test it out, stay connected to Twingate, disconnect from your local network (e.g., by disabling WiFi), and navigate to your Home Assistant instance on your phone\u2019s browser. You should be able to access it just as if you were at home.\"}),/*#__PURE__*/e(\"p\",{children:\"Finally, disconnect from Twingate and try accessing Home Assistant again \u2014 you should see that it\u2019s inaccessible.\"}),/*#__PURE__*/t(\"p\",{children:[\"Congrats! You\u2019ve finished setting up Twingate for Raspberry Pi + Home Assistant. Join us in the \",/*#__PURE__*/e(s,{href:\"https://forum.twingate.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"community forum\"})}),\" to share how things went and what cool integrations you\u2019ve set up!\"]}),/*#__PURE__*/e(\"img\",{alt:\"Client setup\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,nM4KIa6ml0uw4kA1IFwtcdTqvM.png?originalFilename=client-setup.png\",src:\"https://framerusercontent.com/images/nM4KIa6ml0uw4kA1IFwtcdTqvM.png\",srcSet:\"https://framerusercontent.com/images/nM4KIa6ml0uw4kA1IFwtcdTqvM.png?scale-down-to=512 512w,https://framerusercontent.com/images/nM4KIa6ml0uw4kA1IFwtcdTqvM.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Client setup\"}),/*#__PURE__*/e(\"h1\",{children:\"Sharing is Caring\"}),/*#__PURE__*/e(\"p\",{children:\"Do you want to share access with a family member? You can easily do this from the Twingate web UI. Just go to the Team tab and click \u201CInvite User\u201A to send an email invitation. The recipient would simply follow the same steps to download the Twingate client, join your network, and get access to Home Assistant, or any other resource you set up!\"}),/*#__PURE__*/e(\"img\",{alt:\"Invite other users\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,wJPtFs7Rp1d8H5qfpBe42WwnM.png?originalFilename=sharing.png\",src:\"https://framerusercontent.com/images/wJPtFs7Rp1d8H5qfpBe42WwnM.png\",srcSet:\"https://framerusercontent.com/images/wJPtFs7Rp1d8H5qfpBe42WwnM.png?scale-down-to=512 512w,https://framerusercontent.com/images/wJPtFs7Rp1d8H5qfpBe42WwnM.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Invite other users\"})]})},{index:86,id:\"SkVkmMHgL\",[h]:!0,[d]:!1,[p]:\"Mesh VPNs & How They Differ from Hub and Spoke VPNs\",[u]:\"Mesh VPNs\",[m]:\"mesh-vpn\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2022-01-17T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/TIE8LHlCN0vQMdvgX15CFSpcnvE.png\",srcSet:\"https://framerusercontent.com/images/TIE8LHlCN0vQMdvgX15CFSpcnvE.png?scale-down-to=512 512w,https://framerusercontent.com/images/TIE8LHlCN0vQMdvgX15CFSpcnvE.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/TIE8LHlCN0vQMdvgX15CFSpcnvE.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/TIE8LHlCN0vQMdvgX15CFSpcnvE.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/TIE8LHlCN0vQMdvgX15CFSpcnvE.png\",srcSet:\"https://framerusercontent.com/images/TIE8LHlCN0vQMdvgX15CFSpcnvE.png?scale-down-to=512 512w,https://framerusercontent.com/images/TIE8LHlCN0vQMdvgX15CFSpcnvE.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/TIE8LHlCN0vQMdvgX15CFSpcnvE.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/TIE8LHlCN0vQMdvgX15CFSpcnvE.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"As traditional \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/business-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN technologies\"})}),\" become less effective and more problematic, companies are searching for another way to provide secure remote access to their private resources. Mesh VPN solutions offer an alternative that replaces VPN\u2019s original hub-and-spoke model with a distributed, peer-to-peer topology. Although it solves some problems, mesh VPN does not address all the challenges modern enterprises face.\"]}),/*#__PURE__*/t(\"p\",{children:[\"We will explain what mesh VPNs are, how they work, and how they differ from traditional VPN solutions. As enterprise networks and workforces become more distributed, however, mesh VPNs add complexity and struggle to scale. Secure access solutions based on \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust principles\"})}),\" are better suited for how business works today.\"]}),/*#__PURE__*/e(\"h1\",{children:\"What is mesh VPN?\"}),/*#__PURE__*/t(\"p\",{children:[\"A mesh VPN is a private, centrally-managed peer-to-peer (P2P) network that creates direct, secure connections between any two member nodes. Unlike public P2P services such as Gnutella or BitTorrent, mesh VPN solutions give administrators control over \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access\"})}),\" and visibility into network activity. That central control does not extend to the mesh VPN\u2019s data traffic which passes directly between nodes through encrypted tunnels.\"]}),/*#__PURE__*/e(\"p\",{children:\"Mesh VPNs let organizations build efficient network topologies that link multiple geographically separated sites together without running them through a central location. Increasingly, companies are looking at mesh VPNs to support distributed workforces.\"}),/*#__PURE__*/e(\"h2\",{children:\"How Mesh VPNs work\"}),/*#__PURE__*/e(\"p\",{children:\"Most of the work in a mesh VPN is done by software agents running on each node. The agent maintains a list of the other nodes in the network and their public keys and IP addresses. When two nodes connect, they exchange keys and establish an encrypted connection.\"}),/*#__PURE__*/e(\"p\",{children:\"Some mesh VPNs, such as the open-source project tinc, use a pure P2P model. However, many solutions take a hybrid approach to centralize some features. For example, the list of authorized nodes may be synchronized from a central server rather than distributed by the P2P agents themselves.\"}),/*#__PURE__*/e(\"h1\",{children:\"The difference between Mesh and Traditional Hub and Spoke\"}),/*#__PURE__*/t(\"p\",{children:[\"Mesh VPNs attempt to address some of the weaknesses inherent to the traditional hub and spoke \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/business-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN topologies\"})}),\". Originally created as an affordable, internet-based solution to wide-area networking, VPN was designed to connect a few trusted networks. It was only later that VPN\u2019s features extended to providing remote access. Even then, the remote users were a small subset of the company\u2019s employees.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Hub and Spoke VPN topologies\"}),/*#__PURE__*/e(\"p\",{children:\"A hub and spoke topology was a logical design decision. A VPN gateway provided a central point for remote offices and users to access the central, protected network. However, in today\u2019s distributed network environment, this approach creates significant challenges.\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"VPN gateway visibility:\"}),\" The VPN gateway must have a public IP address to be discoverable by remote clients. But that visibility also makes the gateway discoverable by anybody \u2014 including cybercriminals.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Full network access:\"}),\" VPN gateways treat any authenticated client as a trusted network. The user and device get full access to the protected network. Should hackers compromise a device, they are free to roam wherever they want.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Network performance:\"}),\" The hub and spoke model forces all traffic from the spokes through the VPN gateway. This includes any traffic between users and cloud-based resources. As a result, throughput and latency often suffer.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Flexibility and scalability:\"}),\" All traffic must be encrypted and decrypted as it passes through the gateway. If demand for remote access increases suddenly, the performance of a company\u2019s existing VPN appliances or servers may not be enough to handle the increased workload. The time and resources needed to upgrade VPN capacity make the technology less responsive to dynamic business needs.\"]})})]}),/*#__PURE__*/e(\"h2\",{children:\"Distributed VPN topologies\"}),/*#__PURE__*/e(\"p\",{children:\"Mesh VPNs eliminate the centralized structure of traditional VPN solutions in favor of a P2P approach. This distributed topology offers several improvements:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Hidden nodes:\"}),\" The list of node addresses is not published outside the mesh VPN so the attack surface is smaller.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Access control:\"}),\" Administrators can determine what a node can see and connect to within the mesh VPN.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"User experience:\"}),\" Direct connections can follow the most performant route to improve user experience.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Network performance:\"}),\" Since traffic is not concentrated through a gateway, traffic on the company\u2019s network is reduced.\"]})})]}),/*#__PURE__*/t(\"p\",{children:[\"However, mesh VPNs do not fix every weakness in the \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/business-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN model\"})}),\" \u2014 and they create new issues that companies must address.\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Node addresses:\"}),\" Some mesh VPN solutions require each node to have a unique IP address across all networks. Readdressing every node has knock-on effects throughout the organization. The network infrastructure, system settings, and workflows must be updated. Users must change their bookmarks and learn how to use the new addresses.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Scalability:\"}),\" Companies are used to having VPN clients running on every user device. Mesh VPNs also need agents running on every device hosting a resource. That includes every on-prem server and cloud VM. As a result, mesh VPNs increase administrative overhead.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Complexity:\"}),\" The complexity of mesh VPN solutions can require higher levels of expertise to manage. Some solutions, for example, require policies to be written in JSON rather than being set in simple user interfaces.\"]})})]}),/*#__PURE__*/e(\"h2\",{children:\"Hybrid VPN topologies\"}),/*#__PURE__*/e(\"p\",{children:\"Companies searching for an alternative to a traditional hub and spoke VPN are not limited to distributed mesh solutions. VPN\u2019s original site-to-site capability, for example, can alleviate the pressure on the company\u2019s central hub. VPN gateways at regional offices provide local network access while site-to-site VPN connections handle the traffic passing between offices. This approach becomes challenging to manage and expensive as the number of site-to-site connections increase.\"}),/*#__PURE__*/e(\"p\",{children:\"Dynamic multipoint VPN (DMVPN) blends the hub-and-spoke and mesh topologies. The network still has a central VPN gateway that forms the hub for incoming connections. When traffic needs to pass from one node to another, the DMVPN gateway dynamically configures a direct, peer-to-peer connection. DMVPNs are complex enterprise solutions requiring expertise to deploy and manage.\"}),/*#__PURE__*/e(\"h1\",{children:\"VPN considerations vs. Zero Trust secure access\"}),/*#__PURE__*/t(\"p\",{children:[\"Whether it is the traditional hub-and-spoke model, the distributed mesh model, or something in between, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/business-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN technologies\"})}),\" are no longer the best solutions for modern businesses. Resources are distributed across on-premises systems, co-located servers, private clouds, and X-as-a-Service platforms. Work-from-home policies and a growing reliance on contractors and other third parties mean remote access is no longer limited to a handful of executives and field engineers.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" is a modern alternative to VPN that provides more efficient and performant access to resources while improving a company\u2019s security posture. Central to Zero Trust is the concept that any network has probably been breached. In that light, every connection attempt \u2014 regardless of the user, device, or network \u2014 may be an attack. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Authentication\"})}),\" and \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-models\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"role-based authorization\"})}),\" is needed before any connection request is granted. And with access control rules based on \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/principle-of-least-privilege\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"principles of least privilege\"})}),\", users may only access the specific resources they need to do their jobs.\"]}),/*#__PURE__*/e(\"h1\",{children:\"How Twingate enhances security beyond access control\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust solution\"})}),\" is designed from the ground up as an enterprise product. From established businesses to rapidly-growing startups, we understand our customers\u2019 challenges and designed a solution that meets their needs.\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Deployment:\"}),\" Twingate coexists with your network infrastructure. You do not need to add hardware or reconfigure systems. This lets you roll out \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" gradually without disrupting business operations.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Manageability:\"}),\" Mesh VPNs need to have software running on every device may work for smaller networks but becomes impractical in dynamic enterprise environments. Twingate\u2019s lightweight Connector software can be installed on each network segment or VPC host.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Security stack integration:\"}),\" Twingate integrates with the \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/identity-providers\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"major identity providers\"})}),\" and \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/two-factor-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"two-factor authentication\"})}),\" solutions you already use. Better yet, we extend 2FA to protect services such as SSH.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Device posture:\"}),\" Twingate lets you set \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authorization policies\"})}),\" based on \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/device-trust-in-a-zero-trust-world\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"device posture\"})}),\". Operating system version, antivirus status, and other factors can limit the degree of resource access any device receives.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Indexed activity logs:\"}),\" Twingate makes it easier to identify usage patterns and detect potential attacks by indexing all activity logs to user and device identities.\"]})})]}),/*#__PURE__*/e(\"h1\",{children:\"Secure distributed networks with Twingate\"}),/*#__PURE__*/t(\"p\",{children:[\"Mesh VPNs are an attempt to mitigate the weaknesses of \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/business-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"traditional VPN technologies\"})}),\" by replacing hub-and-spoke with distributed, peer-to-peer topologies. They address some of VPN\u2019s security weaknesses and eliminate the VPN gateways that undermine network performance. However, mesh VPNs introduce other issues that make them less suitable for modern businesses.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust-based approach\"})}),\" to secure access is designed for the way enterprises work today. Able to protect resources wherever they are located, easy to deploy, and simple to manage, Twingate reduces the friction businesses experience on the path to Zero Trust Network Access.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=mesh-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact us\"})}),\" today to learn more about Twingate\u2019s distributed network architecture.\"]})]})},{index:87,id:\"JcMwvQFkd\",[h]:!0,[d]:!1,[p]:\"What is Private DNS & Zero Trust Applications\",[u]:\"What is Private DNS & Zero Trust Applications\",[m]:\"what-is-private-dns\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2022-01-14T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/qU7kaE6JCncB2ejgKtyY2X7Eo.png\",srcSet:\"https://framerusercontent.com/images/qU7kaE6JCncB2ejgKtyY2X7Eo.png?scale-down-to=512 512w,https://framerusercontent.com/images/qU7kaE6JCncB2ejgKtyY2X7Eo.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/qU7kaE6JCncB2ejgKtyY2X7Eo.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/qU7kaE6JCncB2ejgKtyY2X7Eo.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/qU7kaE6JCncB2ejgKtyY2X7Eo.png\",srcSet:\"https://framerusercontent.com/images/qU7kaE6JCncB2ejgKtyY2X7Eo.png?scale-down-to=512 512w,https://framerusercontent.com/images/qU7kaE6JCncB2ejgKtyY2X7Eo.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/qU7kaE6JCncB2ejgKtyY2X7Eo.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/qU7kaE6JCncB2ejgKtyY2X7Eo.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Rather than forcing users and systems to rely on IP addresses, private DNS lets you assign text-based names to networked resources. These systems resolve readable domain names into IP addresses that web browsers and other network systems can use. Private and public DNS are fundamental parts of modern networking, making DNS a growing vector for cyberattacks.\"}),/*#__PURE__*/t(\"p\",{children:[\"We will introduce the concept of private DNS and explain why businesses run their DNS servers. Although private DNS can help protect sensitive company assets, the technology has security flaws that modern \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" solutions can address.\"]}),/*#__PURE__*/e(\"h1\",{children:\"What is a Private DNS\"}),/*#__PURE__*/t(\"p\",{children:[\"The Domain Name System (DNS) is a distributed database that links human-readable domain names with machine-readable IP addresses. Rather than remembering addresses such as 138.68.235.89, for example, DNS lets people type the more friendly \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"www.twingate.com\"})}),\" into their browser instead.\"]}),/*#__PURE__*/e(\"p\",{children:\"In this use case, the browser contacts a DNS server, often managed by an internet service provider. If that server has the domain name saved in its cache, it returns the corresponding IP address. The browser uses that address to connect to the site. If the domain name is not in the server\u2019s cache, it queries more authoritative servers within the DNS until it finds the IP address or times out.\"}),/*#__PURE__*/e(\"p\",{children:\"Private DNS lets an organization\u2019s employees and systems use text-based names such as dev.example.com or engineering.example.com. Using name-based addressing is easier for end-users. It also makes network administration more efficient. User devices and internal systems do not need to be reconfigured every time a resource\u2019s IP address changes.\"}),/*#__PURE__*/e(\"h1\",{children:\"The difference between private and public DNS\"}),/*#__PURE__*/e(\"p\",{children:\"While companies still have uses for public DNS, modern organizations prefer the benefits of managing a private DNS infrastructure.\"}),/*#__PURE__*/e(\"h2\",{children:\"Network management\"}),/*#__PURE__*/e(\"p\",{children:\"Companies manage their own publicly-facing DNS servers. For example, browsers connecting to the company\u2019s public website would access this public DNS server as it downloads elements for a webpage.\"}),/*#__PURE__*/e(\"p\",{children:\"A private DNS server, on the other hand, may focus entirely on resolving queries for the company\u2019s internal assets. Network administrators can configure the servers and networks for each application to deliver optimal performance.\"}),/*#__PURE__*/e(\"h2\",{children:\"User experience\"}),/*#__PURE__*/e(\"p\",{children:\"Caching is an essential feature of public DNS servers. By saving recent results, the DNS server can avoid queries to other servers and respond faster.\"}),/*#__PURE__*/e(\"p\",{children:\"For the same reason, companies will dedicate private DNS servers to handle internal users\u2019 internet traffic. Caching IP addresses to the frequently-visited websites of customers, suppliers, and contractors reduces latency and improves the user experience.\"}),/*#__PURE__*/e(\"h2\",{children:\"Control\"}),/*#__PURE__*/e(\"p\",{children:\"Even though some private DNS servers play the same role as public DNS servers, the private approach gives companies more control over network usage. Internally resolving employees\u2019 DNS queries lets administrators block access to social media services and inappropriate websites.\"}),/*#__PURE__*/e(\"p\",{children:\"Private DNS also plays a role in network design. Administrators can create custom domain names that reflect the structure and processes within the organization while using IP addresses at the network level. Private DNS ensures that changes to one do not necessarily impact the other.\"}),/*#__PURE__*/e(\"h2\",{children:\"Security\"}),/*#__PURE__*/e(\"p\",{children:\"Security is the most significant benefit of using private DNS. Separating the public and private use of DNS ensures that the two are not mixed. People accessing the public DNS server only get IP addresses for web servers and other public-facing assets. The only way to get IP addresses for internal assets is by querying a private DNS protected within the internal network\u2019s perimeter.\"}),/*#__PURE__*/e(\"p\",{children:\"Privacy of employees\u2019 internet activity is another reason companies use private DNS. Public DNS providers get a broad picture of their users\u2019 internet activity that they can use to build profiles for resale. A private DNS keeps those traffic patterns hidden.\"}),/*#__PURE__*/e(\"h2\",{children:\"Use of private DNS for mobile devices\"}),/*#__PURE__*/e(\"p\",{children:\"In the past, implementing DNS on users\u2019 mobile devices has been a challenge. The most popular mobile operating systems did not have global settings for the device\u2019s DNS provider. Instead, they defaulted to whatever DNS the WiFi or cellular provider used. This began to change in 2018 with Android 9\u2019s Private DNS release. Although the words are the same, this feature is not the same private DNS used by businesses.\"}),/*#__PURE__*/e(\"p\",{children:\"Android\u2019s Private DNS feature addresses internet privacy. Traditional DNS transmits the query and the response in plain text. Internet providers and hackers alike can use simple tools to see this data. Smartphones running the latest Android operating system automatically encrypt DNS queries through a technique called DNS over TLS. This prevents others from listening in on a user\u2019s internet activity. It also reduces the risk of man-in-the-middle attacks.\"}),/*#__PURE__*/e(\"p\",{children:\"Of course, Android\u2019s Private DNS only works if the network\u2019s DNS server supports this encryption format. To get around this, smartphone users can assign a global DNS provider within their device\u2019s network settings that will work for all WiFi and cellular connections.\"}),/*#__PURE__*/e(\"p\",{children:\"Until recently, Apple\u2019s iOS platform still relied on the DNS server of each network connection. However, there was a way to achieve the same thing. Third-party developers wrote apps using Apple\u2019s VPN framework but only implemented the narrow subset of functions that enabled DNS encryption. With the release of iOS 14, Apple devices now have native support for DNS encryption and let users specify global DNS providers.\"}),/*#__PURE__*/e(\"p\",{children:\"These changes to the most popular mobile platforms also apply to enterprise use cases. Mobile device management systems can push profiles that modify device DNS settings.\"}),/*#__PURE__*/e(\"h1\",{children:\"What are the security risks of using public DNS?\"}),/*#__PURE__*/t(\"p\",{children:[\"Like many of the internet\u2019s fundamental building blocks, DNS was designed in a much different era. It evolved from an academic project and depended on idealistic assumptions of trust. As a result, DNS has no security features. Besides transmitting data in the clear, DNS lacks the \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authentication\"})}),\" features needed to prevent spoofing and other DNS attacks.\"]}),/*#__PURE__*/e(\"p\",{children:\"Complicating matters further, DNS is such a core part of how IP-based networks operate that compromised DNS servers give hackers enormous power. They can reroute traffic to harvest user credentials or use DNS servers to exfiltrate data. The combination of ubiquity and weak security have made DNS a tempting target for cyberattacks.\"}),/*#__PURE__*/t(\"p\",{children:[\"In their recent \",/*#__PURE__*/e(s,{href:\"https://www.businesswire.com/news/home/20210603005259/en/EfficientIP-and-IDC-Threat-Actors-Diversify-Their-Toolkits-Throughout-Pandemic-with-DNS-Attacks-Costing-Nearly-1-Million-Each\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Global DNS Threat Report\"})}),\", IDC and efficientIP found that 87% of organizations were the targets of DNS attacks, experiencing more than seven attacks per year. A quarter of these attacks resulted in the theft of customer information. The average cost of these attacks in the United States was more than $1 million.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Targeting DNS in the cloud\"}),/*#__PURE__*/e(\"p\",{children:\"DNS attacks are becoming even more widespread as companies adopt cloud and mixed-cloud infrastructures. In the past, companies could reduce their attack surface by protecting their private DNS servers within the on-premises network.\"}),/*#__PURE__*/e(\"p\",{children:\"Cloud-based networks, however, must have connections to the public internet. This increases the chances that a private, cloud-based DNS server could be compromised. The Global DNS Threat Report found that one out of every four companies surveyed experienced attacks on their cloud DNS servers \u2014 and half of them experienced service downtime as a result.\"}),/*#__PURE__*/t(\"p\",{children:[\"Today\u2019s complex network architectures require a modern approach to protecting private DNS servers. The old traditions of securing a network perimeter cannot work when the perimeter stretches beyond the company\u2019s on-premises network. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" offers a modern approach to network security that can reduce the risks created by DNS.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s Zero Trust solution uses \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"software-defined perimeters\"})}),\" to hide all resources, on-prem or in the cloud. A transparent proxy lets remote and on-site users connect to these protected resources without directly querying the private DNS server.\"]}),/*#__PURE__*/e(\"p\",{children:\"When the user tries to connect to a resource, the Twingate Client app transparently intercepts the DNS query and resolves it with an IP address. Although this IP address is unique to the resource, it is not the actual address on the private network. The Twingate Client routes traffic for this address to the resource\u2019s Twingate Connector. This Connector queries the company\u2019s private DNS server and receives the actual IP address. By proxying the connection between device and resource, the Client and Connector let users do their work without ever accessing the private DNS server.\"}),/*#__PURE__*/e(\"h1\",{children:\"Twingate\u2019s Zero Trust solution protects private DNS\"}),/*#__PURE__*/e(\"p\",{children:\"DNS has been a fundamental part of the network landscape for nearly four decades. The globally-distributed index of domain names and IP addresses in public DNS servers is the first step in almost every action on the internet. Companies use private DNS servers for the same reasons. The technology can improve performance, make network architectures more flexible, and protect sensitive resources from the risks of the public internet.\"}),/*#__PURE__*/e(\"p\",{children:\"But as with so many traditional network technologies, security was not designed into DNS from the beginning. Hackers target DNS because a successful breach can help them pierce deeper into a victim\u2019s network.\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s Zero Trust network security solution can \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/private-dns-best-practices\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"reduce the attack surface\"})}),\" of your organization\u2019s DNS infrastructure. Our \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"software-defined perimeters\"})}),\" ensure that no user, device, or hacker on your network can see your DNS servers. Transparent proxies let users do their work while denying hackers access to sensitive data.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=what-is-private-dns\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact Twingate\"})}),\" today to learn how \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust security\"})}),\" can protect your organization from DNS attacks.\"]})]})},{index:88,id:\"XL4UPq58c\",[h]:!0,[d]:!1,[p]:\"Architecting Network Connectivity for a Zero Trust Future\",[u]:\"Network Connectivity\",[m]:\"network-connectivity-for-zero-trust\",[g]:\"\",[w]:\"Alex Marshall\",[f]:\"2022-01-12T00:00:00.000Z\",[y]:\"KI2UGBfh7\",[b]:T({src:\"https://framerusercontent.com/images/UCujnCGCj38fqeQSxwv4Kp4IMj8.png\",srcSet:\"https://framerusercontent.com/images/UCujnCGCj38fqeQSxwv4Kp4IMj8.png?scale-down-to=512 512w,https://framerusercontent.com/images/UCujnCGCj38fqeQSxwv4Kp4IMj8.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/UCujnCGCj38fqeQSxwv4Kp4IMj8.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/UCujnCGCj38fqeQSxwv4Kp4IMj8.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/UCujnCGCj38fqeQSxwv4Kp4IMj8.png\",srcSet:\"https://framerusercontent.com/images/UCujnCGCj38fqeQSxwv4Kp4IMj8.png?scale-down-to=512 512w,https://framerusercontent.com/images/UCujnCGCj38fqeQSxwv4Kp4IMj8.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/UCujnCGCj38fqeQSxwv4Kp4IMj8.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/UCujnCGCj38fqeQSxwv4Kp4IMj8.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Since launching Twingate in 2020, we\u2019ve been fortunate to work with some of the fastest-growing companies in the world. These companies work on the bleeding edge of technology, and one of the most common discussions we have is how network connectivity will evolve to fully realize the potential of \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\". Today, we want to share our views on where network architectures are headed in a Zero Trust world and introduce new enhancements to Twingate.\"]}),/*#__PURE__*/t(\"p\",{children:[\"First off, we\u2019re excited to announce \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/changelog\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"several technical enhancements\"})}),\" to Twingate that bring several modern networking technologies into our core networking engine. These include leveraging NAT traversal to facilitate direct, peer-to-peer connections between nodes in your Twingate network, and introducing QUIC, a modern network transport protocol that offers more resilient, lower latency connections.\"]}),/*#__PURE__*/t(\"p\",{children:[\"These enhancements allow us to clarify how we believe network architectures will evolve in the coming years as \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust principles\"})}),\" become more widely implemented. We\u2019ll start with a quick review of a traditional network architecture using \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/business-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN\"})}),\" for remote access, discuss the cloud-based architecture used by most vendors today, and walk-through Twingate\u2019s distributed network architecture and the underlying techniques we\u2019ve used to bring this architecture to life.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Traditional Network with VPN\"}),/*#__PURE__*/e(\"img\",{alt:\"Traditional Network with VPN\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,YXtnAnYcpdj8LdwZz2nXeIxz8ME.png?originalFilename=vpn.png\",src:\"https://framerusercontent.com/images/YXtnAnYcpdj8LdwZz2nXeIxz8ME.png\",srcSet:\"https://framerusercontent.com/images/YXtnAnYcpdj8LdwZz2nXeIxz8ME.png?scale-down-to=512 512w,https://framerusercontent.com/images/YXtnAnYcpdj8LdwZz2nXeIxz8ME.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Traditional Network with VPN\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/business-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN\"})}),\" first came into broad usage in the 1990s. It is still the dominant technology used for remote access into corporate networks when users are not physically connected to the corporate network (usually at the company\u2019s office). In this architecture, a VPN gateway is deployed at the edge of a private network and acts as an entry point for remote users who need \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access to resources\"})}),\" on that network.\"]}),/*#__PURE__*/e(\"p\",{children:\"Companies often configure a single VPN into the corporate network and then set up secondary tunnels between other networks, which may be in different geographic locations. In this model, the VPN gateway acts as a concentrator for any remote user to enter the private network before being routed to their final destination. This results in a hub-and-spoke network topology that creates several problems:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The VPN gateway sits at the edge of the private network with a public IP address, exposing it to the public internet. This makes VPN gateways susceptible to attackers, particularly when vulnerabilities are discovered. Unfortunately, these vulnerabilities are discovered frequently and are commonly exploited by adversaries.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Because users can only connect to a single VPN gateway before their traffic is routed to its final destination, a significant performance hit often occurs as users bounce around geographically distributed locations before reaching the destination resource.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Remote VPN users are typically given full access to the private network, which creates a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/lateral-movement\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"large blast radius\"})}),\" if a remote user is compromised or an attacker breaches the public VPN gateway.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"Because of this, companies and IT teams often jump through tremendous hoops to secure these inherent design flaws. For example, companies will usually increase the number of VPN gateways to solve performance challenges, creating an even larger public attack surface to secure.\"}),/*#__PURE__*/t(\"p\",{children:[\"While many companies have begrudgingly tolerated these design flaws, designing around them when possible, the movement to the cloud and the demand from employees to work from anywhere have put significant pressure on IT and security teams who are forced to manage and secure this legacy \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/network-architecture\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"network architecture\"})}),\".\"]}),/*#__PURE__*/e(\"h1\",{children:\"Cloud-based Networks and the PoP Race\"}),/*#__PURE__*/e(\"img\",{alt:\"Cloud-based Networks\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,Mz6g3pvvSAnNyYLLY58RZHvGsU.png?originalFilename=cloud-pop.png\",src:\"https://framerusercontent.com/images/Mz6g3pvvSAnNyYLLY58RZHvGsU.png\",srcSet:\"https://framerusercontent.com/images/Mz6g3pvvSAnNyYLLY58RZHvGsU.png?scale-down-to=512 512w,https://framerusercontent.com/images/Mz6g3pvvSAnNyYLLY58RZHvGsU.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Cloud-based Networks\"}),/*#__PURE__*/e(\"p\",{children:\"In the 2010s, a new crop of vendors emerged that attempted to solve these challenges by taking the on-prem private network managed by the company\u2019s IT team and shifting it to a hosted network managed by the vendor. In this architecture, VPN gateways are replaced by Points-of-Presence (PoPs) that are geographically distributed and managed by the vendor.\"}),/*#__PURE__*/e(\"p\",{children:\"With this approach, the vendor\u2019s private cloud network sits between users and company resources. Remote users need to first connect to the vendor\u2019s nearest PoP before being routed to the final destination. To provide performance improvements over the traditional model, vendors offering this network architecture are in a perpetual race to build as many PoPs as possible (to be geographically close to users) and maintain and upgrade the network backbone between PoPs.\"}),/*#__PURE__*/e(\"p\",{children:\"However, even the largest vendors using this model have PoPs in the low 100s. Depending on the geographic distribution of a company\u2019s workforce and the location of resources, this network architecture can improve the traditional network model. However, this model still puts the customer\u2019s network performance at the mercy of how well a vendor\u2019s distributed PoP footprint aligns with the company\u2019s needs.\"}),/*#__PURE__*/e(\"p\",{children:\"Depending on the specific vendor\u2019s implementation, other downsides with this model may include:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Inability to work for all protocols or resource types:\"}),\" Some implementations of this model are optimized for web-based resources accessed through a browser. This means it is difficult (and in some cases impossible) to use these solutions for applications and protocols like SSH and database clients.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Hard to integrate:\"}),\" These solutions will often require a complex implementation process so that a company\u2019s private network is connected to the vendor\u2019s network. This may require complex configuration and management of dedicated VPN tunnels, challenges with configuring DNS, and other points of deployment friction.\"]})})]}),/*#__PURE__*/e(\"h1\",{children:\"Distributed Networks for a Distributed World\"}),/*#__PURE__*/e(\"p\",{children:\"With Twingate, we designed a network architecture with the underlying assumption that users and resources are both highly distributed and in constant motion. We believe that the ideal network architecture for this distributed world must allow network traffic to flow directly between nodes without traversing any intermediate nodes or networks.\"}),/*#__PURE__*/t(\"p\",{children:[\"This also means that our customers\u2019 network performance is not limited by our ability to geographically scale-out a large footprint of PoPs in far-flung locations. This brings cloud-based architecture to its logical end state and effectively \",/*#__PURE__*/e(\"em\",{children:/*#__PURE__*/e(\"strong\",{children:\"puts a local PoP on every device.\"})})]}),/*#__PURE__*/e(\"img\",{alt:\"Distributed Network with local PoP on every device\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,JEggvuurgGSyViuC2jVkMT97oAU.png?originalFilename=twingate-1.png\",src:\"https://framerusercontent.com/images/JEggvuurgGSyViuC2jVkMT97oAU.png\",srcSet:\"https://framerusercontent.com/images/JEggvuurgGSyViuC2jVkMT97oAU.png?scale-down-to=512 512w,https://framerusercontent.com/images/JEggvuurgGSyViuC2jVkMT97oAU.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Distributed Network with local PoP on every device\"}),/*#__PURE__*/t(\"p\",{children:[\"To make all of this work, we need a new network architecture. While several widely accepted frameworks are available, which we gleaned inspiration from, they did not align with our \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust principles\"})}),\". The frameworks we researched and assessed include \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Software-Defined Perimeter (SDP)\"})}),\", mesh networks, and Software-Defined Networking (SDN). Twingate\u2019s architecture has elements of all these frameworks, and we\u2019ve specifically focused on making design decisions that optimize for performance and security without compromising ease of deployment.\"]}),/*#__PURE__*/e(\"p\",{children:\"In Twingate\u2019s model, we think about separating our network architecture into three primary concepts:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"The network layer:\"}),\" The set of resources and devices that need to connect to each other\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"The control layer:\"}),\" Permissions and access rules that determine which users and resources are permitted to communicate\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"The transport layer:\"}),\" The enabling mechanisms and routes for data to move between users and resources\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"In a traditional network design, these concepts are tightly coupled and often result in tradeoffs that manifest in some combination of low performance, poor security controls, difficulty in deployment and management, or all of the above. Instead, we decided to decouple each of those concepts into separate layers that allow us to optimize the behavior of each layer to produce the maximum benefit, whether that is connection performance or security controls.\"}),/*#__PURE__*/t(\"p\",{children:[\"We describe this as a distributed network architecture, and we believe that this will become the standard way companies will design and manage \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access to their networks\"})}),\" over the coming years.\"]}),/*#__PURE__*/e(\"p\",{children:\"Let\u2019s take a look at each of these layers and describe how they work in the context of Twingate:\"}),/*#__PURE__*/e(\"img\",{alt:\"Three layers of Twingate network architecture\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,aisMutUoECKqzj4dTpisyK6Tg8.png?originalFilename=layers.png\",src:\"https://framerusercontent.com/images/aisMutUoECKqzj4dTpisyK6Tg8.png\",srcSet:\"https://framerusercontent.com/images/aisMutUoECKqzj4dTpisyK6Tg8.png?scale-down-to=512 512w,https://framerusercontent.com/images/aisMutUoECKqzj4dTpisyK6Tg8.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Three layers of Twingate network architecture\"}),/*#__PURE__*/e(\"h2\",{children:\"The Network Layer\"}),/*#__PURE__*/t(\"p\",{children:[\"This refers to the complete set of resources and devices that can potentially connect to each other. No existing interconnection between this set of nodes is necessary and individual nodes in this layer can exist in any network or geography. The combination of the control and transport layers (described below) ensures that only \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authorized\"})}),\" clients can access assigned resources.\"]}),/*#__PURE__*/e(\"p\",{children:\"Clients and resources can access the control and transport layers directly via an embedded library, client application, or a lightweight proxy. These components perform a few critical functions:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Policy enforcement:\"}),\" rules passed down by the control layer are enforced locally without any traffic needing to leave the device.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Routing:\"}),\" route selections are executed locally to deliver the best connectivity performance.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Security:\"}),\" implement security controls such as enforcing \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/whitelisting\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"allow/deny lists\"})}),\" or implementing secure DNS.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"Most importantly, no node in the network needs to be exposed to the public internet.\"}),/*#__PURE__*/e(\"h2\",{children:\"The Control Layer\"}),/*#__PURE__*/e(\"p\",{children:\"This layer is responsible for defining the rules governing which nodes in the network can communicate with each other. While this control layer needs to be distributed and redundant to serve low latency requests to clients and resources, no traffic passes through this layer.\"}),/*#__PURE__*/e(\"p\",{children:\"The control layer performs a few critical functions:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Authentication:\"}),\" users and clients cannot access resources without first \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authenticating\"})}),\" themselves. This is enforced and enabled by the control layer, and it interfaces to an \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/identity-providers\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"identity authority\"})}),\" (e.g., Okta) for authentication.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Policy definition:\"}),\" policies are defined in the control layer (e.g., via a web-based admin console or the admin API) and subsequently passed down to the network nodes for enforcement and execution.\"]})})]}),/*#__PURE__*/e(\"h2\",{children:\"The Transport Layer\"}),/*#__PURE__*/e(\"p\",{children:\"This layer is responsible for facilitating the optimal route from any client to any resource and serves two primary functions:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Signaling channel for peer-to-peer connections:\"}),\" By default, the transport layer attempts to establish a direct, peer-to-peer connection between the client and the resource. This is achieved by using a signaling channel to directly orchestrate a connection between the two nodes. If either or both nodes are behind a firewall, then a range of NAT traversal techniques are used to establish a direct, end-to-end encrypted connection between client and resource.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Serves as a backup transport channel to relay encrypted traffic:\"}),\" If a peer-to-peer connection cannot be established, the transport layer can take over relaying encrypted traffic between the client and resource. Although this appears similar in structure to the Cloud Network architecture described above, a key difference is that all routing and \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authorization\"})}),\" decisions are made directly in the client and resource nodes. These decisions are enabled by the control layer and executed by the client and resource nodes, which relegates the transport layer to a zero-knowledge transfer of encrypted bytes.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"In aggregate, the decoupling of these concepts into discrete concepts enables us to drive towards the optimal combination performance, security controls, and ease of management.\"}),/*#__PURE__*/e(\"p\",{children:\"Next, we\u2019ll dive deeper into the underlying network techniques to bring this architecture to life.\"}),/*#__PURE__*/e(\"h1\",{children:\"Twingate\u2019s Distributed Network Architecture\"}),/*#__PURE__*/e(\"p\",{children:\"As we\u2019ve worked to implement our version of the distributed network topology, we\u2019ve employed a range of techniques that provide optimal performance in most scenarios and reflect the reality of how people work today.\"}),/*#__PURE__*/e(\"h2\",{children:\"It all starts with Routing\"}),/*#__PURE__*/t(\"p\",{children:[\"The first problem is routing. How do you get a network connection established from a client to a resource? The easiest solution would involve every device on the Internet having a unique address so that network connections could be directly routable between any two devices. Although this is how the Internet started, with every host uniquely accessible, it was clear as early as 1992 that every unique address in the IPv4 space would \",/*#__PURE__*/e(s,{href:\"https://datatracker.ietf.org/doc/html/rfc1338\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"soon be exhausted\"})}),\". With inevitable Internet address exhaustion on the horizon, a number of solutions were proposed, including Network Address Translation (NAT), which was \",/*#__PURE__*/e(s,{href:\"https://datatracker.ietf.org/doc/html/rfc1631\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"proposed in 1994\"})}),\" and adopted soon thereafter. NAT was intended to be a short-term solution, with IPv6 being the long-term solution to address exhaustion. The last block of IPv4 addresses was assigned in 2011, and in 2021 we\u2019re still waiting for the complete adoption of IPv6. NAT and IPv4 will be with us for some time to come.\"]}),/*#__PURE__*/e(\"p\",{children:\"For most use cases, NAT doesn\u2019t present any particular problems. Without realizing it, everyone who uses the Internet today has their traffic constantly traversing multiple layers of NAT to access public Internet services. In this situation, a private host (a user\u2019s device) is accessing a public host (e.g., a web server). Traffic can be exchanged by virtue of the public host having a publicly accessible endpoint that\u2019s routable from the private host via an ISP.\"}),/*#__PURE__*/t(\"p\",{children:[\"Where things get interesting is when one private host wants to connect to another private host\u2014known as a peer-to-peer connection\u2014where, for example, two participants wish to initiate a video call, each at home behind the NAT service on their home router. Several technologies have been developed to address the issue of NAT traversal\u2014so-called because each peer must traverse the NAT layer in front of its peer\u2014since the earlier days of the Internet. \",/*#__PURE__*/e(s,{href:\"https://en.wikipedia.org/wiki/WebRTC\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"WebRTC\"})}),\" is one of the most well-known approaches. We\u2019ll come back to this topic of NAT traversal techniques later on.\"]}),/*#__PURE__*/e(\"p\",{children:\"In our distributed network architecture, the control layer authorizes connections from any client to any resource in the network layer. If this is the end goal, and we can\u2019t control whether clients and resources are behind a NAT layer, how can a client connect to a resource under those conditions? It turns out that there are several approaches, which we\u2019ll go through in progressive order of complexity.\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Open access:\"}),\" The simplest possible option is that everything should have a public IP address, which means that connecting any two hosts requires routing and nothing else. This isn\u2019t as crazy as it sounds, but it does require a significant rethinking of how individual hosts are secured from attack by default, so this isn\u2019t practical on today\u2019s Internet. In the future, IPv6 will make this option more realistic.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Port forwarding:\"}),\" A relatively simple approach that \",/*#__PURE__*/e(s,{href:\"https://www.shodan.io/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"questionably\"})}),\" relies on security through obscurity. The approach taken here is to translate from some public IP address (your home internet router, for example) and a designated port that forwards traffic through to a private address and different port. This exposes only the necessary service(s) that you wish to make available and makes the destination routable to the public internet. Still, this approach leaves the target service and host open to public attack vectors and involves the configuration of router rules, which adds unnecessary complexity at any kind of scale.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Port knocking:\"}),\" Also known as Secure Packet Authorization (SPA), this technique is akin to having a secret knock to enter a Prohibition-era speakeasy, hence the technique\u2019s name. While the actual implementation is more complex, the goal is to deter casual port scanners by leaving open ports unresponsive unless a particular sequence and timing of packets arrive to open up the specific port. It\u2019s an effective technique, but one that leaves your host and services wide open if the packet sequence is discovered.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Data relay:\"}),\" Instead of developing techniques that involve opening up access to the target host from the public Internet, using a relay introduces an intermediate host publicly accessible from both the client and resource hosts. This has the advantage that the client and resource hosts can remain invisible to the public Internet. As long as a relay is available close to either host, minimal additional latency is introduced. The relay can be incorporated into the overall transport such that no connection termination occurs and streams can remain private. This approach is a standard backup method when NAT traversal techniques are unsuccessful.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Proxies:\"}),\" With the introduction of proxies, we\u2019ve now departed the realm of solutions-driven purely by the routing and transport layers of networks. Proxies work by terminating network connections, either manipulating or validating the packets and payloads they receive, and sending that data forward to either a destination resource or a corresponding reverse proxy, passing data to the destination resource.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"Proxies are software-based and operate in the operating system\u2019s user space. Proxies are easily deployed and introduce a significant level of sophistication into the type of routing and transport manipulation that\u2019s possible while often remaining transparent to the application initiating a network connection. For these reasons, proxies are the dominant solution deployed today across many applications involving network traffic management.\"}),/*#__PURE__*/e(\"p\",{children:\"There are two approaches taken to deploying proxies in practice. While their underlying functionality may be identical, they differ in the tradeoffs made in their deployment.\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Public proxies:\"}),\" Public proxies are deployed with a publicly routable address, which means that they can sit in front of a destination resource, making it accessible from clients regardless of whether they have publicly accessible addresses or not. The tradeoff here is that with the convenience of accessibility comes the burden of ensuring that the public proxy is hardened and regularly patched to prevent attacks. This is particularly true because of the role the proxy plays: if identified as a proxy from the outside, it\u2019s an entry point that is securing something in the private network behind it.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Private proxies:\"}),\" Private proxies serve the same role, but they are deployed behind firewalls on a private network. There are significant security benefits to this approach\u2014no public address and all the benefits of using a proxy in the first place\u2014but they don\u2019t address the issue of making resources accessible to clients because they, too, are behind a firewall. This leads us to the topic of NAT traversal, which we\u2019ll cover next.\"]})})]}),/*#__PURE__*/e(\"h3\",{children:\"Punching Holes Through (Fire)walls\"}),/*#__PURE__*/e(\"p\",{children:\"Since we ended with private proxies in our overview above, it\u2019s a safe bet that we think private proxies represent the best set of tradeoffs for implementing a distributed network topology. The two primary reasons for this are that private proxies are:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Invisible to the public internet:\"}),\" Because they sit behind a private network\u2019s firewall, it\u2019s impossible to discover them via public Internet port scanning or probe them for vulnerabilities. Even if a sophisticated attacker can infer the existence of a proxy behind a firewall based on visible traffic patterns, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/defense-in-depth-webinar\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"defense in depth\"})}),\" is a highly effective technique here by separating security concerns into an effective firewall.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Simple to deploy:\"}),\" Since they run as a regular user space service, they\u2019re effortless to deploy onto virtually any available device, regardless of platform or silicon chipset. The lower security burden of private proxies also means that they\u2019re more likely to be deployed when needed. Successful adoption of a given approach is also an essential factor in overall security posture.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"The last puzzle piece is figuring out how to make these proxies accessible to clients who wish to connect to the destination resources they protect: enter NAT traversal. Because NAT has been implemented across Internet-connected networks for several decades, the range of solutions available to solve the problem of two hosts, each behind a NAT layer, establishing a peer-to-peer connection is fairly mature today. We won\u2019t go into depth here but instead, cover the high-level steps involved in establishing a peer-to-peer connection via NAT traversal.\"}),/*#__PURE__*/e(\"img\",{alt:\"Twingate NAT traversal process\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,8uUgOgY1kT4QWbubeA9jLhlI.png?originalFilename=twingate.png\",src:\"https://framerusercontent.com/images/8uUgOgY1kT4QWbubeA9jLhlI.png\",srcSet:\"https://framerusercontent.com/images/8uUgOgY1kT4QWbubeA9jLhlI.png?scale-down-to=512 512w,https://framerusercontent.com/images/8uUgOgY1kT4QWbubeA9jLhlI.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate NAT traversal process\"}),/*#__PURE__*/e(\"p\",{children:\"The NAT traversal process is divided into four primary stages:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Establish a signaling channel:\"}),\" On initial startup, both the client and private proxy\u2014known as the connector in Twingate\u2019s architecture\u2014initiate and establish an \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authenticated\"})}),\" connection to a central service that is publicly accessible. The initial role of this service is to establish a signaling channel for the exchange of peer candidate addresses to each peer. In Twingate\u2019s architecture, our existing authenticated relay infrastructure\u2014already distributed globally\u2014is used to establish a signaling channel.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Discover peer candidate addresses:\"}),\" For the client to negotiate a peer-to-peer connection with a connector, both peers must discover their public IP:port address assigned by the NAT layer. A STUN server facilitates this process and is hosted on our relay infrastructure.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Exchange candidate peer addresses:\"}),\" Each peer next receives one or more candidate addresses for its peer via the signaling channel. The connector will receive candidate address(es) for the client and vice-versa.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Negotiate & establish the connection:\"}),\" The peer candidate addresses are used by the partner peer to attempt to establish a direct peer-to-peer connection and complete the NAT traversal process.\"]})})]}),/*#__PURE__*/e(\"h2\",{children:\"Putting it all together\"}),/*#__PURE__*/e(\"p\",{children:\"It\u2019s not always possible to establish a direct peer-to-peer connection for various reasons, from blocked ports to incompatible NAT layers. In that case, a backup data transport method needs to be maintained. In Twingate\u2019s case, this is a data relay infrastructure that operates in the transport layer of our network architecture. Relays have public addresses, so they are always accessible from clients and deployed connectors, serving as a reliable backup transport method.\"}),/*#__PURE__*/e(\"p\",{children:\"In summary:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Private proxies\"}),\" provide the best set of tradeoffs between security and flexibility to specifically deploy into the private networks where access is needed.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"NAT traversal\"}),\" is used to create a peer-to-peer connection between clients and resources to minimize latency.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Relaying infrastructure is available as a \",/*#__PURE__*/e(\"strong\",{children:\"backup transport\"}),\" method when NAT traversal is not possible.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Twingate automatically prioritizes the \",/*#__PURE__*/e(\"strong\",{children:\"lowest latency transport option\"}),\" that\u2019s available between peers.\"]})})]}),/*#__PURE__*/e(\"h2\",{children:\"One more thing\u2026\"}),/*#__PURE__*/e(\"p\",{children:\"We mentioned above that proxies provide the opportunity to introduce a significant level of sophistication into network traffic management. We\u2019ve taken advantage of that to introduce QUIC, a new transport layer network protocol, into our peer-to-peer connections. QUIC introduces several improvements to our transport layer, including faster connection establishment, greater tolerance to network changes\u2014a dominant mode standard in today\u2019s world of mobile devices\u2014and more effective traffic management of multiple, concurrent data streams. User space network stack implementations like QUIC can evolve more quickly than their kernel space counterparts, and we\u2019re excited to participate in this fast-paced evolution.\"}),/*#__PURE__*/t(\"p\",{children:[\"QUIC was originally developed by Google and has since been standardized by IETF in \",/*#__PURE__*/e(s,{href:\"https://datatracker.ietf.org/doc/html/rfc9000\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"RFC 9000\"})}),\" and proposed as the underlying transport protocol for HTTP/3. One of the primary goals of QUIC was to become a better transport mechanism for HTTP/2, which suffers from the so-called head of line blocking problem due to its use of TCP as the underlying transport protocol. The head of line blocking problem occurs when all HTTP/2 streams multiplexed over a single TCP connection are impacted by retransmission due to packet loss affecting only a subset of streams.\"]}),/*#__PURE__*/t(\"p\",{children:[\"QUIC is built on top of \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/tcp-vs-udp\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"UDP\"})}),\", which is an unreliable network protocol, and so it provides its own reliable delivery mechanisms. QUIC provides reliable and ordered delivery of multiple concurrent data streams by multiplexing them over a single connection.\"]}),/*#__PURE__*/e(\"img\",{alt:\"Twingate's QUIC Transport\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,q4kc1nxwSh39ecLeMVd6KJeTAYw.png?originalFilename=QUIC.png\",src:\"https://framerusercontent.com/images/q4kc1nxwSh39ecLeMVd6KJeTAYw.png\",srcSet:\"https://framerusercontent.com/images/q4kc1nxwSh39ecLeMVd6KJeTAYw.png?scale-down-to=512 512w,https://framerusercontent.com/images/q4kc1nxwSh39ecLeMVd6KJeTAYw.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate's QUIC Transport\"}),/*#__PURE__*/t(\"p\",{children:[\"Although \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/tcp-vs-udp\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"TCP\"})}),\" implementations have been highly optimized over many years, for many users and use cases, QUIC\u2019s low latency is arguably more critical than raw throughput, and QUIC can match or exceed TCP+TLS in this respect. Thanks to QUIC\u2019s adoption, there are also ongoing efforts to optimize UDP performance in the Linux kernel, which will further improve performance in the future.\"]}),/*#__PURE__*/e(\"p\",{children:\"The motivation behind the development of QUIC\u2014to improve the throughput of multiple streams on a single reliable connection\u2014is also valuable to maximizing throughput from the Twingate client to multiple private resources. Although QUIC was envisioned to optimize the throughput of multiple streams for a single application (e.g., your browser), Twingate extends this concept by mapping individual data flows from any number of applications to single QUIC streams and delivering those data flows to connectors and resources deployed anywhere in our distributed architecture.\"}),/*#__PURE__*/e(\"p\",{children:\"Beyond performance management for multiple data flows, adopting QUIC also introduces several valuable improvements to our network architecture:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Faster connection establishment:\"}),\" The initial connection takes a single round trip between client and server. Connection resumption can also be done without any additional round-trip negotiation.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Support for the latest cryptographic protocols:\"}),\" QUIC only supports TLS 1.3 and later, and introduces additional security into the encrypted channel.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Client-side roaming:\"}),\" QUIC connections survive client-side IP and port changes\u2014for example, due to NAT rebinding or a user switching between networks\u2014which not only results in a better experience for users but is also better suited for today\u2019s mobile work environment.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Incorporates best practices from TCP:\"}),\" Although QUIC is a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/tcp-vs-udp\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"UDP\"})}),\"-based protocol, it contains the best practices learned over the long history of the \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/tcp-vs-udp\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"TCP\"})}),\" protocol without being restricted by TCP\u2019s legacy (e.g., packet format). For example, QUIC is usually more efficient than TCP in dealing with packet loss recovery.\"]})})]}),/*#__PURE__*/e(\"h2\",{children:\"Try Twingate for Free\"}),/*#__PURE__*/t(\"p\",{children:[\"We\u2019re thrilled by the \",/*#__PURE__*/e(s,{href:\"https://www.g2.com/products/twingate/reviews\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"reception Twingate has received\"})}),\" since our launch in 2020. If you\u2019re interested in taking Twingate for a spin, we just launched a free tier where you can implement our secure access solution for your startup, home network, or personal projects. Of course, we also have business plans if you\u2019re interested in moving off VPN for your company.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=22q1-direct-connect\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Learn more here\"})}),\" or \",/*#__PURE__*/e(s,{href:\"https://forum.twingate.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"join our new community\"})}),\".\"]})]})},{index:89,id:\"qFbKDkdXk\",[h]:!0,[d]:!1,[p]:\"Cloud VPNs: As Brittle, Unsecure as Traditional VPNs\",[u]:\"Cloud VPNs\",[m]:\"cloud-vpn\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2021-12-20T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/sVSd5FjUNF2vEGWICHvvndWqHA.png\",srcSet:\"https://framerusercontent.com/images/sVSd5FjUNF2vEGWICHvvndWqHA.png?scale-down-to=512 512w,https://framerusercontent.com/images/sVSd5FjUNF2vEGWICHvvndWqHA.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/sVSd5FjUNF2vEGWICHvvndWqHA.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/sVSd5FjUNF2vEGWICHvvndWqHA.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/sVSd5FjUNF2vEGWICHvvndWqHA.png\",srcSet:\"https://framerusercontent.com/images/sVSd5FjUNF2vEGWICHvvndWqHA.png?scale-down-to=512 512w,https://framerusercontent.com/images/sVSd5FjUNF2vEGWICHvvndWqHA.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/sVSd5FjUNF2vEGWICHvvndWqHA.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/sVSd5FjUNF2vEGWICHvvndWqHA.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Cloud VPNs deliver traditional \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/business-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"business virtual private networking (VPN)\"})}),\" technologies like cloud-based services. Flexible and globally accessible, cloud VPNs address some of the frustrations generated by this decades-old technology.\"]}),/*#__PURE__*/t(\"p\",{children:[\"We will introduce you to cloud VPNs and explain why companies use them to provide mixed-cloud access. Cloud VPNs may offer benefits over their traditional counterparts, but we will show how they keep the same security weaknesses. Because of these weaknesses, many companies are bypassing cloud VPNs for solutions based on \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\".\"]}),/*#__PURE__*/e(\"h1\",{children:\"What is a cloud VPN?\"}),/*#__PURE__*/t(\"p\",{children:[\"Cloud VPNs provide the same security, connectivity, and remote access features as traditional \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/business-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"virtual private network solutions\"})}),\". However, they are implemented as cloud-based services rather than as network appliances. Also referred to as hosted VPNs or VPN-as-a-Service (VPNaaS), cloud VPNs solve some of modern companies\u2019 issues with hardware-based versions. These connectivity solutions can take one of two forms:\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Site-to-site cloud VPN services\"}),\" connect a company\u2019s on-premises LANs to its public or private cloud networks.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Remote access cloud VPN services\"}),\" connect a company\u2019s remote users to its on-premises, private cloud, or public cloud networks.\"]})})]}),/*#__PURE__*/e(\"h2\",{children:\"Cloud VPN benefits\"}),/*#__PURE__*/t(\"p\",{children:[\"As companies increasingly rely on a mix of on-premises and cloud-based resources, cloud VPNs are becoming standard elements in today\u2019s more distributed \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/network-architecture\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"network architectures\"})}),\". These services offer several benefits, including:\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Familiar technology\"}),\" - VPN has been part of the security landscape for more than three decades. Administrators\u2019 familiarity with \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/business-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"traditional VPN\"})}),\" shortens the learning curve when adding cloud VPN services.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Affordable, flexible, and scalable\"}),\" - Compared to the costs of deploying, maintaining, and upgrading VPN hardware, usage-based VPNaaS fees are more affordable. Modifying a cloud VPN is much easier than changing a physical network. And cloud VPNs are more responsive to changing business requirements, letting companies scale up or down whenever they need.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Compatibility\"}),\" - Third-party cloud VPN providers have integrations with many cloud services, allowing companies to use one security solution for all cloud-based and on-premises resources.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Globally accessible\"}),\" - Unlike hardware VPNs, companies can rapidly deploy a cloud VPN solution globally. Cloud VPNs are accessible anywhere remote users can get an internet connection.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Direct access\"}),\" - Cloud VPNs eliminate backhaul by letting remote users connect directly to cloud-based networks. The only time users connect to the company network is when they need access to on-premises resources. As a result, the network\u2019s performance improves, and users experience lower latency.\"]})})]}),/*#__PURE__*/e(\"h1\",{children:\"How are cloud VPNs different from traditional business VPNs?\"}),/*#__PURE__*/t(\"p\",{children:[\"Companies increasingly rely on a distributed mix of on-premises and cloud-based systems. With the company\u2019s networked assets spread far beyond its physical network, IT departments turn to cloud VPNs to address weaknesses in traditional \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/business-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"business VPN\"})}),\" technologies.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Cloud VPNs remove network chokepoints\"}),/*#__PURE__*/t(\"p\",{children:[\"Hardware VPN solutions provide access to a protected, physical network. All remote traffic passes through the \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/twingate-vs-vpn#security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN gateway\"})}),\". This approach worked when all resources resided on the corporate LAN. But with a mixed-cloud environment, the VPN gateway channels all traffic between remote workers and cloud-based resources through the company network. This \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/twingate-vs-vpn#performance\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"backhauled traffic\"})}),\" consumes bandwidth and adds latency to user connections.\"]}),/*#__PURE__*/e(\"p\",{children:\"Cloud VPNs break this logjam by letting users connect directly to the network they need, whether in the cloud or on-premises.\"}),/*#__PURE__*/e(\"h2\",{children:\"Cloud VPNs Centralize Remote Access Security\"}),/*#__PURE__*/e(\"p\",{children:\"Local VPN solutions only address one aspect of network security: remote access to the company LAN. As we have seen, protecting cloud-based assets by running traffic through on-premises VPN gateways does not work. Most cloud-hosting services offer remote access security features. When companies run a multi-cloud infrastructure, however, using each service\u2019s security creates too much complexity:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Administrators must set up and maintain security policies across all cloud platforms.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"End-users must use separate credentials to access each platform.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Cloud VPNs simplify matters. Companies can use a single system to control remote access to their on-premises and cloud networks. And end-users only need to learn a single system to get remote access.\"}),/*#__PURE__*/e(\"h2\",{children:\"Cloud VPNs are More Flexible\"}),/*#__PURE__*/t(\"p\",{children:[\"The sudden shift to work-from-home in 2020 highlighted how inflexible \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/business-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"traditional VPN technology\"})}),\" has become. VPN gateways have hard limits on bandwidth and user numbers. Adding more capacity requires buying, testing, and deploying new hardware \u2014 without disrupting business operations.\"]}),/*#__PURE__*/e(\"p\",{children:\"On the other hand, cloud VPNs can adapt and scale whenever changing business requirements demand.\"}),/*#__PURE__*/e(\"h1\",{children:\"What are the security risks of using a cloud VPN?\"}),/*#__PURE__*/e(\"p\",{children:\"When VPN was developed more than 30 years ago, it let companies save money by securely connecting remote LANs to the central office over the internet. The technology evolved to allow small numbers of people working to remotely access the company\u2019s network.\"}),/*#__PURE__*/e(\"p\",{children:\"Despite its migration to the cloud, the original network-to-network model is still a fundamental part of VPN\u2019s design. Many of the security weaknesses associated with hardware VPN solutions are just as much part of Cloud VPNs.\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Visibility\"}),\" - VPN gateways publish their presence to the public internet to connect client apps. This visibility lets cybercriminals discover a company\u2019s VPN gateways and incorporate what they learn into their attacks.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"IPsec complexity\"}),\" - Cloud VPN solutions use \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ipsec\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"IPsec protocols\"})}),\" to protect site-to-site and remote access connections. IPsec, however, is notoriously complex. Any mistakes in its configuration could provide an opening for an attack.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Permissive network connections\"}),\" - Even as a remote access solution, VPN treats the user\u2019s device as a second network to be connected. Anyone connecting to a cloud VPN gets access to the network it protects. Compromised user credentials let \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/lateral-movement\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"hackers traverse the protected network freely\"})}),\".\"]})})]}),/*#__PURE__*/t(\"p\",{children:[\"Cloud VPNs address some of the performance and manageability issues of standard \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/business-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"business VPNs\"})}),\". As we have seen, they do not address the security weaknesses inherent to VPN technology. This is why more and more businesses are turning to the \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" model of \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/network-access-control\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"network access control\"})}),\".\"]}),/*#__PURE__*/e(\"h1\",{children:\"What alternatives exist for securing company resources other than cloud VPNs?\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" has emerged as an approach to network access for how computing works in the 21st Century. Unlike the increasingly outdated \u201Csecure perimeter\u201A approach companies have used for decades, Zero Trust recognizes that trust is an illusion. A clicked link or an opened attachment is all it takes for a trusted device to become an attack vector.\"]}),/*#__PURE__*/t(\"p\",{children:[\"A central tenet of Zero Trust security is the assumption that every user, device, and network has already been compromised. In that context, the only way to protect the company\u2019s assets is to challenge every connection attempt. Users must be verified explicitly each time they try to access a resource. And the access privileges they receive for each session must be \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/principle-of-least-privilege\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"limited to the minimum necessary\"})}),\" for users to do their job.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Twingate uses \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"software-defined perimeters (SDPs)\"})}),\" to implement \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust security\"})}),\". Compatible with \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/secure-iac-webinar\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Infrastructure as Code practices\"})}),\", Twingate replaces brittle legacy technologies with a modern, flexible approach. Among the benefits Twingate delivers:\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Reduced attack surface\"}),\" - Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"SDPs\"})}),\" do not require public IP addresses. Whether on-premises or in the cloud, all resources effectively disappear from the internet and become undiscoverable by hackers.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Identity provider integration\"}),\" - Twingate integrates with a company\u2019s existing \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/security-stack-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"security stack\"})}),\", including \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/identity-providers\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"identity providers\"})}),\" such as Okta and Azure AD.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Rapid deployment\"}),\" - Companies have deployed Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust solution\"})}),\" in as little as fifteen minutes. No changes are needed to the underlying network or the protected resources. Since Twingate can coexist with an existing security system, companies can phase in their \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust migration\"})}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Performant direct connections\"}),\" - Twingate\u2019s client app connects directly to protected resources no matter where they are hosted. Traffic is efficiently routed along the most performant path while reducing overhead on the private network. Split tunneling improves performance by routing users\u2019 non-essential traffic over the public internet.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Better user experience\"}),\" - Users do not need to hand their device to IT staff or change obscure settings in their device\u2019s operating system. Instead, they follow an installation process similar to consumer app stores. The Twingate client app runs seamlessly in the background without user interaction.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Administrative simplicity\"}),\" - Help desk calls decline as users adjust to the streamlined experience. Twingate\u2019s administrative consoles also make life easier by enabling single-click on-boarding and off-boarding.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Monitoring and auditing\"}),\" - Twingate\u2019s extensive activity logs are indexed by user identity and device. This helps administrators spot unusual behavior to seal security breaches quickly.\"]})})]}),/*#__PURE__*/e(\"h1\",{children:\"Skip cloud VPN for Twingate\u2019s 21st Century security solution\"}),/*#__PURE__*/e(\"p\",{children:\"While cloud VPNs offer tangible benefits over their physical equivalents, they do not address the technology\u2019s most significant weakness: security. Flexibility and cloud compatibility may justify cloud VPNs in the short term. But they are not long-term solutions for the modern company.\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate delivers a more secure and performant solution by implementing \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust principles\"})}),\". Whether users are on-site or remote, have managed devices or \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/byod\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"bring their own\"})}),\", or resources on-prem or in the cloud, Twingate reduces your network\u2019s attack surface and simplifies \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control\"})}),\".\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=cloud-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact Twingate\"})}),\" to learn more about protecting on-prem and cloud-hosted resources within a single Zero Trust solution.\"]})]})},{index:90,id:\"NpAwWeiIE\",[h]:!0,[d]:!1,[p]:\"DMZ Network: Is It Necessary to Secure Company Resources?\",[u]:\"DMZ Network\",[m]:\"dmz-network\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2021-12-17T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/8ofzR5VO0LTBiS2BtdSHaTbiBvA.png\",srcSet:\"https://framerusercontent.com/images/8ofzR5VO0LTBiS2BtdSHaTbiBvA.png?scale-down-to=512 512w,https://framerusercontent.com/images/8ofzR5VO0LTBiS2BtdSHaTbiBvA.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/8ofzR5VO0LTBiS2BtdSHaTbiBvA.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/8ofzR5VO0LTBiS2BtdSHaTbiBvA.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/8ofzR5VO0LTBiS2BtdSHaTbiBvA.png\",srcSet:\"https://framerusercontent.com/images/8ofzR5VO0LTBiS2BtdSHaTbiBvA.png?scale-down-to=512 512w,https://framerusercontent.com/images/8ofzR5VO0LTBiS2BtdSHaTbiBvA.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/8ofzR5VO0LTBiS2BtdSHaTbiBvA.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/8ofzR5VO0LTBiS2BtdSHaTbiBvA.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"A DMZ network sits between a company\u2019s secure perimeter and unsecured external networks such as the internet. Web servers and other externally-facing systems sit in the DMZ without compromising the security of internal resources.\"}),/*#__PURE__*/t(\"p\",{children:[\"This article will explain DMZs and why they have been valuable elements of traditional network security architectures. However, DMZs are not perfect security solutions \u2014 even if you follow best practices. We will explain how modern security solutions based on \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" provide a better fit to the way businesses work today.\"]}),/*#__PURE__*/e(\"h1\",{children:\"What is a DMZ network?\"}),/*#__PURE__*/e(\"p\",{children:\"The concept of a demilitarized zone, or DMZ, describes methods for interfacing internal, protected networks with untrusted external networks. For decades, DMZs have been critical elements of the traditional secure perimeter paradigm. They provide more securable paths for data to flow between the protected network and the internet.\"}),/*#__PURE__*/t(\"p\",{children:[\"Often called a perimeter network, the DMZ is a subnetwork that exists outside the secure perimeter\u2019s defenses but remains under network administrators\u2019 control. External-facing resources are placed within the DMZ to be accessed from the internet. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/network-access-control\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Network access control\"})}),\" systems limit traffic flowing between the DMZ and the internal network.\"]}),/*#__PURE__*/e(\"p\",{children:\"The separation and control that DMZs provide make it easier to protect internal resources, provide access, and reduce the risks of cyberattacks. The benefits of a DMZ includes:\"}),/*#__PURE__*/e(\"h2\",{children:\"Minimize security breach impacts\"}),/*#__PURE__*/t(\"p\",{children:[\"DMZs limit the scope of successful security breaches. Should hackers penetrate a DMZ, they only have access to the resources within that particular DMZ. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/network-access-control\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Network access controls\"})}),\" constrain their ability to \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/lateral-movement\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"move laterally\"})}),\" and prevent them from surveilling the internal network.\"]}),/*#__PURE__*/e(\"p\",{children:\"At the same time, a DMZ\u2019s extra security measures give administrators a better chance to spot unusual network traffic and close the breach quickly.\"}),/*#__PURE__*/e(\"h2\",{children:\"Decoupling services from databases\"}),/*#__PURE__*/e(\"p\",{children:\"Externally-facing systems often need access to proprietary databases and other resources:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Web servers need access to customer information.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Email servers need access to company directories.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"API servers need access to backend databases.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"However, placing these proprietary resources on a publicly-facing server is too risky. Hosting the front-end server within a DMZ while keeping sensitive back-end resources on the protected internal network avoids those risks.\"}),/*#__PURE__*/e(\"h2\",{children:\"Isolate less secure services\"}),/*#__PURE__*/e(\"p\",{children:\"FTP and other services with few security controls can become vectors for cyberattacks. Placing FTP servers in their own DMZ reduces the risk that a successful attack can propagate to the internal network.\"}),/*#__PURE__*/e(\"h2\",{children:\"Internet access for internal users\"}),/*#__PURE__*/e(\"p\",{children:\"Access control rules can force all internal use of the internet through a dedicated proxy server sitting in a DMZ. This gives administrators more visibility and control over the company\u2019s internet usage.\"}),/*#__PURE__*/e(\"h2\",{children:\"Improve internal network performance\"}),/*#__PURE__*/e(\"p\",{children:\"Frequently-accessed web servers impose high loads on networks. Placing these servers in a DMZ takes those loads off the internal network. Administrators can optimize the DMZ subnet to handle those loads more efficiently.\"}),/*#__PURE__*/e(\"h1\",{children:\"How do DMZ networks work?\"}),/*#__PURE__*/t(\"p\",{children:[\"One approach to building a business DMZ network uses a single firewall. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Access control\"})}),\" rules determine what traffic enters the DMZ, accesses the DMZ\u2019s resources, and may enter the internal network. This architecture is simple to create and manage, but it is not the most secure option. If hackers breach the single firewall, they breach the secure perimeter.\"]}),/*#__PURE__*/e(\"p\",{children:\"A dual-firewall architecture increases security at the expense of added administrative complexity. In this approach, an external firewall controls access between the internet and the DMZ\u2019s resources. An internal firewall, ideally from a different provider, controls the DMZ\u2019s resources and the internal network. Should hackers breach the external firewall, they do not get immediate access to the internal network.\"}),/*#__PURE__*/e(\"p\",{children:\"Note that the consumer-grade internet routers small businesses may use often have a DMZ feature. Any traffic not destined for specific hosts on the LAN gets routed to a host of a particular IP address. This consumer feature does not provide any of the security benefits of a true DMZ. The host is not on a separate subnet, and access between the host and the LAN is not controlled by a firewall.\"}),/*#__PURE__*/e(\"h1\",{children:\"What are the security risks of using a DMZ network?\"}),/*#__PURE__*/e(\"p\",{children:\"A DMZ is as secure as its configuration, policies, and administration make it. Even then, the resources within the DMZ itself could compromise the network\u2019s defenses. Here are some of the risks that DMZ networks may face:\"}),/*#__PURE__*/e(\"h2\",{children:\"Internet visibility\"}),/*#__PURE__*/e(\"p\",{children:\"The resources hosted in a DMZ must be publicly visible so external users can access them. But with visibility comes discoverability. Hackers can use simple scanning tools to find the resources in a company\u2019s DMZ, identify vulnerabilities, and plan their attacks.\"}),/*#__PURE__*/e(\"h2\",{children:\"DMZ network vulnerabilities\"}),/*#__PURE__*/e(\"p\",{children:\"The infrastructure used to create the DMZ subnetwork must be configured and maintained correctly. Overly-permissive access control rules or unpatched firewalls can open vectors to attack. This is especially true for single-firewall DMZ architectures.\"}),/*#__PURE__*/e(\"h2\",{children:\"DMZ resource vulnerabilities\"}),/*#__PURE__*/t(\"p\",{children:[\"Many of the resources within a DMZ can introduce security vulnerabilities. Remote access technologies such as \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/rdp-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN or RDP\"})}),\", for example, have become common targets of cyberattacks. Web or email servers that are not sufficiently locked down can let hackers move laterally through the DMZ and eventually into the protected network.\"]}),/*#__PURE__*/e(\"h2\",{children:\"DMZ\u2019s declining relevance\"}),/*#__PURE__*/e(\"p\",{children:\"The entire concept of a DMZ assumes a secure perimeter surrounding on-premises resources. But that is an outdated computing model that is less relevant to the way business works today. SD-WAN technologies, for example, bypass DMZs entirely as they link offices together over the internet. In addition, DMZs cannot protect resources hosted on cloud platforms or outsourced to cloud-based X-as-a-Service providers.\"}),/*#__PURE__*/e(\"h1\",{children:\"What are the best practices for securing DMZ networks?\"}),/*#__PURE__*/e(\"p\",{children:\"For DMZ networks to provide both security and access, they need to be designed in ways that make any successful breach challenging to move laterally. Some best practices to follow include:\"}),/*#__PURE__*/e(\"h2\",{children:\"Segment DMZs\"}),/*#__PURE__*/t(\"p\",{children:[\"Using a single DMZ to host every externally-facing system increases the chances of a successful breach. It gives hackers more opportunities for \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/lateral-movement\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"lateral movement\"})}),\". Given time, they can compile information that could open a path into the protected network. And they may have that time since the complex traffic patterns in a multi-purpose DMZ make spotting unusual behavior more difficult.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Ideally, each externally-facing system should sit within a dedicated DMZ. The \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control\"})}),\" rules will be easier to specify. Traffic patterns will be easier to monitor. And hackers will have nowhere else to go.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Lockdown DMZs in dual-firewall architectures\"}),/*#__PURE__*/e(\"p\",{children:\"Use firewalls from two different vendors to provide the most protection for internal networks. They are less likely to share vulnerabilities, and hackers must work harder to penetrate the internal network.\"}),/*#__PURE__*/e(\"p\",{children:\"Set the minimum configuration firewalls, routers, servers, and other systems in the DMZ need to function. For example, all ports should be closed unless specifically required to pass the DMZ\u2019s traffic.\"}),/*#__PURE__*/e(\"p\",{children:\"Locking down the DMZ limits hackers\u2019 options and makes their activity easier to discover.\"}),/*#__PURE__*/e(\"h2\",{children:\"Limit what hackers can learn\"}),/*#__PURE__*/e(\"p\",{children:\"Do not use the internal network\u2019s policies when defining the DMZ\u2019s policies. Whatever hackers learn when observing how traffic in the DMZ is routed and secured should not give them insights into the internal network\u2019s operations.\"}),/*#__PURE__*/e(\"h2\",{children:\"Monitor and audit\"}),/*#__PURE__*/e(\"p\",{children:\"The sooner a security breach is discovered, the less damage hackers can do. Ensure that all traffic gets inspected and logged. Use intrusion detection systems in addition to each firewall\u2019s security features.\"}),/*#__PURE__*/e(\"p\",{children:\"Just because the DMZ was set up securely does not mean it remains secure. Conduct regular audits of access control rules, ports, and other potential vulnerabilities.\"}),/*#__PURE__*/e(\"h1\",{children:\"What alternatives exist for securing company resources other than DMZ networks?\"}),/*#__PURE__*/t(\"p\",{children:[\"DMZs are not the security solution they once were. Network architectures are no longer designed for physical, on-premises assets accessed by employees at their desks. Mission-critical resources may be hosted in the cloud or delivered over the internet by third parties. Complicating matters further, work-from-home and \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/byod\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"BYOD policies\"})}),\" let more users access company resources away from the office.\"]}),/*#__PURE__*/t(\"p\",{children:[\"In today\u2019s more distributed environment, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust Network Access (ZTNA)\"})}),\" provides a modern approach to securing proprietary resources. Rather than defending a secure perimeter, ZTNA defends each resource by assuming that every device, network, and user is already compromised. Explicit verification and \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/principle-of-least-privilege\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"least privilege access policies\"})}),\" ensure that \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authorized\"})}),\" users get the lowest level of access they need to do their work.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"ZTNA solution\"})}),\" provides the security of a DMZ no matter where users or resources are located. By applying \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"software-defined perimeters\"})}),\", for example, Twingate can hide resources such as email servers from the public internet. Remote workers get direct access to the services they need. At the same time, the company\u2019s attack surface shrinks dramatically as hackers lose discoverability.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Twingate Replaces DMZ Network Security\"}),/*#__PURE__*/t(\"p\",{children:[\"DMZ networks were effective solutions for their time. Putting a more secure subnet between the internet and a secure perimeter lets administrators focus their security efforts on the most likely vectors for attack. But modern \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/network-architecture\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"network architectures\"})}),\" are not so clean-cut. Secure perimeters are fading as more resources migrate to the cloud and more users work remotely.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Twingate lets companies replace their DMZ networks with ZTNA\u2019s modern approach to remote access security. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=dmz-network\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact Twingate\"})}),\" today to learn more.\"]})]})},{index:91,id:\"BKWQKY7Qy\",[h]:!0,[d]:!1,[p]:\"Bastion Host Servers Explained\",[u]:\"Bastion Host Servers Explained\",[m]:\"bastion-host\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2021-12-15T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/lcIsFIpo4Dqn1EgyX6peWYPdacQ.png\",srcSet:\"https://framerusercontent.com/images/lcIsFIpo4Dqn1EgyX6peWYPdacQ.png?scale-down-to=512 512w,https://framerusercontent.com/images/lcIsFIpo4Dqn1EgyX6peWYPdacQ.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/lcIsFIpo4Dqn1EgyX6peWYPdacQ.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/lcIsFIpo4Dqn1EgyX6peWYPdacQ.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/lcIsFIpo4Dqn1EgyX6peWYPdacQ.png\",srcSet:\"https://framerusercontent.com/images/lcIsFIpo4Dqn1EgyX6peWYPdacQ.png?scale-down-to=512 512w,https://framerusercontent.com/images/lcIsFIpo4Dqn1EgyX6peWYPdacQ.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/lcIsFIpo4Dqn1EgyX6peWYPdacQ.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/lcIsFIpo4Dqn1EgyX6peWYPdacQ.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Bastion hosts provide remote access to private networks from an external network. Commonly used as SSH proxy servers to support system administration, bastions provide a convenient, securable path through a protected network perimeter. As with \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/rdp-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN and RDP\"})}),\", however, the bastion host is an old remote access technology that does not work well in today\u2019s decentralized computing environment.\"]}),/*#__PURE__*/e(\"p\",{children:\"In this article, we will introduce the bastion host concept, why companies use it, and how bastions work. We will also explain how bastions \u2014 especially those providing SSH proxy services \u2014 create new security risks.\"}),/*#__PURE__*/e(\"h1\",{children:\"What is a bastion host?\"}),/*#__PURE__*/t(\"p\",{children:[\"A bastion host is a dedicated server that lets \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authorized\"})}),\" users access a private network from an external network such as the internet. Placed outside the firewall or within a DMZ, the bastion host becomes the only ingress path to those internal resources. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Access control\"})}),\" becomes easier to manage while minimizing the potential attack surface.\"]}),/*#__PURE__*/e(\"p\",{children:\"Technically, any single-purpose server providing access control could be a bastion host. This includes DNS, web, or mail servers. These systems face the internet, so they need to be on the public side of a firewall or DMZ. At the same time, they may provide authorized users access to certain internal resources.\"}),/*#__PURE__*/e(\"p\",{children:\"Network administrators often use bastion hosts to remotely manage networked assets. In this scenario, the bastion\u2019s sole purpose is to provide SSH proxy services. Remote administrators sign into the bastion and then sign into the subnet or resource they need to maintain.\"}),/*#__PURE__*/e(\"p\",{children:\"Bastions simplify security administration. The internal network can be configured to block all internet-bound traffic and only allow SSH communications with the bastion host. With all external traffic channeled through the bastion, administrators can focus their security efforts on protecting a single asset.\"}),/*#__PURE__*/e(\"p\",{children:\"At the same time, user management becomes simpler. When an employee leaves, administrators do not need to revoke access to each private network and subnet. Revoking the former employee\u2019s access to the bastion cuts them off from everything else.\"}),/*#__PURE__*/e(\"h1\",{children:\"How do bastion hosts work?\"}),/*#__PURE__*/e(\"p\",{children:\"To understand how a bastion host works, we will look at a simple scenario in which a company\u2019s administrators need access to Linux instances connected on a subnet within a virtual private cloud. Exposing a port in each instance to the public internet would give administrators the access they need. But the security implications make that approach too risky.\"}),/*#__PURE__*/e(\"p\",{children:\"Instead, a bastion host is used as a bridge between the public internet and the private subnet. The bastion runs as a locked-down, single-purpose system \u2014 in this case, an SSH proxy server. Administrators strip the bastion of all unnecessary applications, ports, processes, user accounts, and protocols. Everything that does not serve the bastion host\u2019s single purpose as an SSH proxy gets disabled or deleted.\"}),/*#__PURE__*/t(\"p\",{children:[\"The bastion host resides on its own subnet with an IP address that is accessible from the public internet. The bastion only accepts SSH connections from a limited range of IP addresses in the IT department. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-list\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"ACLs\"})}),\", \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/whitelisting\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"allowlists\"})}),\", and other network-level access controls limit access from the bastion to its protected subnets.\"]}),/*#__PURE__*/t(\"p\",{children:[\"When \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authorized\"})}),\" users need to access a resource on the private subnet, they must first use their SSH keys to establish a connection with the bastion host. Once \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authenticated\"})}),\", they can then use another set of SSH keys to connect with the private network.\"]}),/*#__PURE__*/e(\"h1\",{children:\"What are the security risks of using a bastion host?\"}),/*#__PURE__*/t(\"p\",{children:[\"Because bastion hosts are publicly visible and widely used to provide SSH proxy services, they have become a target for cyberattacks. SSH itself is the problem. Designed as a more secure alternative to TELNET and other early communications protocols, SSH added \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authentication\"})}),\" and encryption. However, this thirty-year-old protocol has not kept up with enterprise networking\u2019s rapid evolution. Aspects of SSH that undermine security include:\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"SSH keys grant elevated, even root-level, access.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Private SSH keys do not expire automatically.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Old, vulnerable SSH hashing algorithms are still in use.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"SSH has no built-in integration with \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/introducing-identity-first-networking\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Identity Providers\"})}),\" or other security systems.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Key management features are not part of the SSH protocol.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"In effect, SSH is a personal productivity tool that is used at enterprise scale. Without centralized management features or security integrations, SSH leaves key management to individual users. Unless everyone in the organization follows best practices perfectly all the time, SSH inevitably creates an extended attack surface.\"}),/*#__PURE__*/t(\"p\",{children:[\"A \",/*#__PURE__*/e(s,{href:\"https://www.venafi.com/blog/venafi-study-cios-massively-underestimate-ssh-risks-do-you\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"recent study\"})}),\" combining an analysis of millions of client and host keys with a survey of CIOs around the world found:\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"On average, each server had 2.5 root access keys, at least one of which was orphaned.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"On average, each server had 2 duplicate and 1 shared private key.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Despite the acknowledged risk, 40% of enterprises had no automated tools to remove unused SSH keys.\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"Without security system integration, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authentication\"})}),\" is left to SSH\u2019s trusting approach to authentication. The lack of centralized management makes de-provisioning more difficult. Former employees could retain access to private systems for months or years. In addition, SSH is easy to misconfigure due to its deep feature set.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Advanced threat actors can now spend \",/*#__PURE__*/e(s,{href:\"https://www.zdnet.com/article/openssh-to-deprecate-sha-1-logins-due-to-security-risk\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"less than $50,000 to compromise OpenSSH\u2019s SHA-1\"})}),\" hashing algorithm. That investment is worth it. Compromised SSH keys can give attackers elevated or root access to the bastion host and the networked resources it protects.\"]}),/*#__PURE__*/e(\"h1\",{children:\"What are the best practices for securing bastion hosts\"}),/*#__PURE__*/e(\"p\",{children:\"Given the bastion\u2019s role as a portal through a secure perimeter, bastion host best practices focus on defending the server from attack.\"}),/*#__PURE__*/e(\"h2\",{children:\"Harden the bastion host\"}),/*#__PURE__*/e(\"p\",{children:\"A bastion server must have the smallest possible attack surface. As mentioned earlier, it should be stripped of everything that does not directly support the bastion\u2019s operation. All other daemons, processes, protocols, and applications need to go. Guest and other extra user accounts should be disabled.\"}),/*#__PURE__*/e(\"h2\",{children:\"Tighten network controls\"}),/*#__PURE__*/t(\"p\",{children:[\"Access to the bastion host must be limited to \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authorized users\"})}),\". Network-level access controls should restrict incoming SSH connection requests from a known range of IP addresses. Private subnets should be configured to only accept SSH connections from the bastion. Depending on the use case, the network can prevent traffic from passing out through the bastion.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Secure SSH\"}),/*#__PURE__*/e(\"p\",{children:\"Although difficult at scale, there are ways to manage SSH keys. Adding multi-factor authentication helps protect against compromised privileged accounts. Periodically resetting SSH keys reduces the risk of orphaned keys. Regular audits help to identify overly permissive keys.\"}),/*#__PURE__*/e(\"h1\",{children:\"What alternatives exist for securing company resources other than bastion hosts?\"}),/*#__PURE__*/t(\"p\",{children:[\"Many of the cybersecurity risks enterprises face every day are generated by decades-old remote access security systems. SSH, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/what-is-rdp\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"RDP\"})}),\", \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/business-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN\"})}),\", and similar technologies were developed in the 1990s. Back then, the secure perimeter was the dominant network security paradigm. Trusted users accessed on-premises resources from their desktop computers. Security infrastructure defended the private network from external threats.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Today, computing and its associated risks have become much more complex. Users are no longer sitting in the office \u2014 and they may not be employees. The devices they use, no longer tethered to a desk, may access resources from anywhere. And the resources themselves are increasingly hosted in the cloud. In this environment, relying on a bastion host for \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control\"})}),\" can be just as risky as a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/business-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN\"})}),\".\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust Network Access\"})}),\" is a modern approach to secure access control that meets today\u2019s challenges. Rather than protecting networks, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" protects each resource by assuming that any connection request is an attack. Every user must verify their identity explicitly regardless of who they are, what device they use, or where they are located. Once \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authenticated\"})}),\", the user only receives the \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/principle-of-least-privilege\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"least amount of access they need\"})}),\" to do their work.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust solution\"})}),\" can replace bastion hosts and the security weaknesses they create. Unlike bastion hosts, Twingate \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/bastion-replacement\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"does not require public-facing IP addresses\"})}),\". All private resources and networks are rendered invisible to the internet by software-defined perimeters.\"]}),/*#__PURE__*/e(\"p\",{children:\"Decentralizing access control reduces the threat surface further. Bastion hosts channel all external traffic which makes them targets for attack. Twingate establishes direct, encrypted tunnels between the user\u2019s device and the specific resource they need to use.\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate integrates with \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/introducing-identity-first-networking\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Identity Providers\"})}),\", multi-factor authentication systems, and other elements of an existing security stack. Simple administration consoles make it easier to change permissions as users\u2019 roles evolve \u2014 or remove permissions entirely when a user departs.\"]}),/*#__PURE__*/e(\"p\",{children:\"Finally, Twingate is fully compatible with SSH so administrators can use the tools they know to manage their systems. Twingate handles the authentication and authorization functions more securely than SSH ever could.\"}),/*#__PURE__*/e(\"h1\",{children:\"Replace your bastion hosts with Twingate\u2019s remote access solution\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/bastion-replacement\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Bastion hosts\"})}),\" have become pervasive elements of enterprise networks. They provide a single remote access path to protected network resources. Locking down the bastion host and designing network infrastructure to control access lets companies focus security resources on a single asset. The bastion\u2019s value as an SSH proxy makes it a popular way to manage network resources remotely.\"]}),/*#__PURE__*/e(\"p\",{children:\"Nevertheless, the bastion\u2019s public IP address makes it an attractive target for cybercriminals. Widespread reliance on SSH is a particular weakness that makes the bastion a critical vector for attacks.\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust Network Access solution\"})}),\" makes remote access security easier to deploy and manage in today\u2019s cloud-centric computing environment. Administrators can use SSH to remotely manage private resources, whether in the cloud or on-premises, more securely and efficiently.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=bastion-host\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact Twingate\"})}),\" to learn more about replacing bastion hosts with our Zero Trust remote access solution.\"]})]})},{index:92,id:\"aRiRtj907\",[h]:!0,[d]:!1,[p]:\"Supporting BYOD with Zero Trust Security\",[u]:\"BYOD with Zero Trust Security\",[m]:\"byod\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2021-12-08T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/I4DIJlpUDl8cd5w2PX89JzOQp4.png\",srcSet:\"https://framerusercontent.com/images/I4DIJlpUDl8cd5w2PX89JzOQp4.png?scale-down-to=512 512w,https://framerusercontent.com/images/I4DIJlpUDl8cd5w2PX89JzOQp4.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/I4DIJlpUDl8cd5w2PX89JzOQp4.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/I4DIJlpUDl8cd5w2PX89JzOQp4.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/I4DIJlpUDl8cd5w2PX89JzOQp4.png\",srcSet:\"https://framerusercontent.com/images/I4DIJlpUDl8cd5w2PX89JzOQp4.png?scale-down-to=512 512w,https://framerusercontent.com/images/I4DIJlpUDl8cd5w2PX89JzOQp4.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/I4DIJlpUDl8cd5w2PX89JzOQp4.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/I4DIJlpUDl8cd5w2PX89JzOQp4.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Recent years have put the security risks of BYOD policies in the spotlight. Letting users access company resources through their personal devices offers many benefits. But the relative lack of control makes them vectors for cyberattacks. While many solutions exist for managing BYOD environments, they still depend on outdated remote access security technologies.\"}),/*#__PURE__*/t(\"p\",{children:[\"This article explains how the BYOD trend began and what drove its widespread adoption by companies of all sizes. The security risks that BYOD presents are also addressed along with an introduction to a new approach to BYOD security called \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\".\"]}),/*#__PURE__*/e(\"h1\",{children:\"What is BYOD?\"}),/*#__PURE__*/e(\"p\",{children:\"Bring Your Own Device (BYOD) refers to policies that let employees and other users access company resources from their personal devices. Consumers\u2019 rapid adoption of smartphones in the 2010s drove this trend. Executives, salespeople, and other traveling employees wanted to use their personal phones for their work rather than using their companies\u2019 more out-of-date devices.\"}),/*#__PURE__*/t(\"p\",{children:[\"By 2013, more than \",/*#__PURE__*/e(s,{href:\"https://www.zdnet.com/article/research-74-percent-using-or-adopting-byod\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"40% of organizations had BYOD policies in place\"})}),\". The COVID pandemic made work-from-home and BYOD essential. A recent study found that \",/*#__PURE__*/e(s,{href:\"https://www.bitglass.com/press-releases/bitglass-study-finds-security-gaps-bring-your-own-device\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"82% of companies now rely on BYOD\"})}),\". Even as some employees return to the office, many companies will continue BYOD-enabled remote working.Letting your employees do company work on personal devices creates several benefits:\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Productivity improves as people use the devices they are familiar with.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Employees enjoy a better user experience on their own devices.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Morale improves as employees feel trusted and empowered.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Companies get faster technology refreshes as users upgrade their devices.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Companies spend less on end-user technology.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Of course, BYOD policies also introduce risks:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Lost or stolen devices could fall into the wrong hands.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Employees may leave the company but still have access or data.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Personal devices may not have the latest security in place.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Managing BYOD is more complicated than managing company-owned devices.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Employees may not trust the company\u2019s monitoring of their activity.\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"Why are companies adopting BYOD?\"}),/*#__PURE__*/e(\"p\",{children:\"The smartphone-driven trends of the 2010s drove the first wave of BYOD adoption. What could IT departments do when CEOs asked whether they really had to use two phones? Changes to tax policies also made BYOD an easier choice. But convenience is only one reason for BYOD adoption.\"}),/*#__PURE__*/e(\"h2\",{children:\"Boosting productivity\"}),/*#__PURE__*/t(\"p\",{children:[\"Several studies have found evidence that BYOD policies can increase employee productivity. One survey found that \",/*#__PURE__*/e(s,{href:\"https://www.itproportal.com/2015/12/22/why-byod-in-workplace-increases-productivity\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"BYOD lets users save up to 81 minutes every week\"})}),\". Another report found that \",/*#__PURE__*/e(s,{href:\"https://www.forcepoint.com/cyber-edu/bring-your-own-device-byod\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"workplace productivity increased 16%\"})}),\" when BYOD policies were implemented.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Reducing costs\"}),/*#__PURE__*/t(\"p\",{children:[\"BYOD policies can lower IT costs. Employees already know how to use their personal devices. This reduces training costs as well as the number of help desk calls. A larger saving comes from not having to purchase end-user devices for every employee. These cost savings are not limited to large enterprises. A study found that \",/*#__PURE__*/e(s,{href:\"https://www.techrepublic.com/article/byod-managing-and-securing-your-mobile-workforce\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"BYOD could save $1.5 million\"})}),\" a year for companies with as few as 500 employees.\"]}),/*#__PURE__*/e(\"h1\",{children:\"How does BYOD work?\"}),/*#__PURE__*/e(\"p\",{children:\"Even if a company does not have a formal BYOD policy, its employees are already using their personal devices to get things done. Bringing this shadow IT infrastructure under control is an important step towards securing company resources.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/security-stack-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Mobile device management (MDM) solutions\"})}),\" let IT and security teams control which personal devices may access the company network. Although first created to manage users\u2019 smartphones, MDM solutions now encompass a broad range of devices. MDM apps installed on the device create an encrypted sandbox that keeps work-related data and access separate from the user\u2019s personal activities.\"]}),/*#__PURE__*/e(\"p\",{children:\"Management consoles let administrators monitor usage and enforce security policies. Most importantly, they can protect company resources should a device get stolen or an employee leave the company. The MDM system lets them terminate access and remotely wipe all company data from the user\u2019s device.\"}),/*#__PURE__*/e(\"p\",{children:\"Depending on the degree of control companies impose, MDM systems may let users self-provision. Approaches to provisioning user devices vary but often follows this general process:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Employee training\"}),\" - Employees must acknowledge that they understand the company\u2019s security policies and how they are expected to use BYOD privileges responsibly.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Device preparation\"}),\" - Users with certain devices may need to configure settings in the operating system or security software.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Download and installation\"}),\" - Users download and install the client application from a company website or their device\u2019s app store.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Registration\"}),\" - During the installation process, users will enter their credentials for the company\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authentication\"})}),\" system.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"Once this process is complete, the device will have separate areas for the employee\u2019s work and personal activities. The company\u2019s business, security, and other applications will be installed in the work area as well.\"}),/*#__PURE__*/e(\"h1\",{children:\"What are the security concerns for BYOD?\"}),/*#__PURE__*/t(\"p\",{children:[\"Despite its benefits, BYOD can expand a company\u2019s attack surface. A T-Mobile study of cybercrime found that \",/*#__PURE__*/e(s,{href:\"https://venturebeat.com/2020/12/18/t-mobile-massive-byod-growth-raises-huge-enterprise-security-risks\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"lost mobile devices led to 41% of successful security breaches\"})}),\" over the past decade.\"]}),/*#__PURE__*/e(\"p\",{children:\"The biggest challenge of BYOD workforces is the incredible variety that administrators must deal with:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Different form factors.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Different makes and models.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Different operating systems and versions.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Different security applications.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Different ages.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Managing such a diverse ecosystem consumes time and resources. Should something get missed, cybercriminals may have an opening into a company\u2019s network.\"}),/*#__PURE__*/e(\"p\",{children:\"Other security rules that must be considered include:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Employees are not always in control of their devices.\"}),\" Loss and theft aside, employees may leave devices unattended in hotel rooms, coffee shops, or airport lounges. At home, other family members may have access to the device.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Employees take their personal devices when they leave the company.\"}),\" The devices may still store company data or have access to company resources.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"People do not apply security updates right away.\"}),\" Unpatched vulnerabilities could create an opening for attackers.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"In addition to these issues, employees may try to circumvent BYOD security. When strict policies create friction that interferes with worker productivity, individuals and teams will find easier ways to get things done. If employees suspect their company has too much control \u2014 or is using their devices to spy on their activity \u2014 they may also find ways to bypass BYOD policies.\"}),/*#__PURE__*/e(\"h1\",{children:\"How Zero Trust technology can improve security of BYOD\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" is a modern approach to remote access that makes BYOD easier to deploy and manage while improving network security. Traditional methods rely on outdated security technologies, such as \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/business-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN\"})}),\", that make flawed assumptions:\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Company-owned devices are more secure than employee-owned devices.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Resource access from the office is more secure than remote access.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Once \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authenticated\"})}),\", a user\u2019s connection is always secure.\"]})})]}),/*#__PURE__*/t(\"p\",{children:[\"One of the core principles of \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" \u2014 assume breach \u2014 recognizes the modern reality that security breaches can happen at any time to any user regardless of the device or network they are on.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Zero Trust solutions protect each resource by hiding it behind a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"software-defined perimeter\"})}),\". Every attempt to connect, regardless of the source, gets challenged as if it is a potential attack. Once authenticated, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/principle-of-least-privilege\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"least privileged access rules\"})}),\" let employees access only the resources their roles justify. And when authenticated sessions end, so does the employee\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authorization\"})}),\". New connection attempts get challenged as if the previous session never happened.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust solution\"})}),\" integrates with a company\u2019s existing \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/security-stack-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"security stack\"})}),\" to protect on-premises and cloud-based resources while letting employees work productively. Working with the existing Identity Provider (IdP), Twingate \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/introducing-identity-first-networking\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"verifies a user\u2019s identity\"})}),\" when they try to access a resource. Going further, Twingate evaluates the context of that connection:\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"What device are they using?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"What is the \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/device-trust-in-a-zero-trust-world\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"device\u2019s security posture\"})}),\"?\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"What network are they connecting from?\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"By enforcing context-sensitive authentication rules, Twingate lets companies create more granular \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authorization policies\"})}),\" across a wider range of use cases. The scope of a user\u2019s access to a particular resource can change depending on which device they use and whether they connect from home, the office, a hotel, or a customer site. When the user accesses a less sensitive resource, they can get more permissive authorizations.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Twingate also makes the \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" experience simple for both the end-user and the administrator. The end-user can install the Twingate client application without making any changes to operating system settings. The app runs seamlessly in the background. Work traffic is securely routed directly to either cloud or on-premises resources while personal activity stays on the public internet.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Administrators do not need to configure user devices or alter resource settings. Simple consoles let them quickly on-board and off-board users or change authorizations. Since Twingate operates on the transport layer, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control\"})}),\" is decoupled from the network\u2019s architecture. Implementing Zero Trust will not require infrastructure changes.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Make BYOD more productive and secure with Twingate\"}),/*#__PURE__*/e(\"p\",{children:\"Personal devices are a permanent part of every company\u2019s IT infrastructure, whether they acknowledge it or not. Establishing and enforcing BYOD policies is the only way to minimize the resulting security risks. Administrators do not have as much control over BYOD as they do company-owned assets. But they still must find ways to keep company data secure and control access to company resources.\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" remote access and security solution provides a simple, scalable path to making the BYOD workforce more productive. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=byod\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact Twingate\"})}),\" to find out how Zero Trust can improve your BYOD security.\"]})]})},{index:93,id:\"sZcO7PD9A\",[h]:!0,[d]:!1,[p]:\"TCP vs UDP: When to Use Which Protocol\",[u]:\"TCP vs UDP\",[m]:\"tcp-vs-udp\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2021-12-02T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/Ku4wJLDwvu619MUlyAltFkEoqaw.png\",srcSet:\"https://framerusercontent.com/images/Ku4wJLDwvu619MUlyAltFkEoqaw.png?scale-down-to=512 512w,https://framerusercontent.com/images/Ku4wJLDwvu619MUlyAltFkEoqaw.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/Ku4wJLDwvu619MUlyAltFkEoqaw.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/Ku4wJLDwvu619MUlyAltFkEoqaw.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/Ku4wJLDwvu619MUlyAltFkEoqaw.png\",srcSet:\"https://framerusercontent.com/images/Ku4wJLDwvu619MUlyAltFkEoqaw.png?scale-down-to=512 512w,https://framerusercontent.com/images/Ku4wJLDwvu619MUlyAltFkEoqaw.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/Ku4wJLDwvu619MUlyAltFkEoqaw.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/Ku4wJLDwvu619MUlyAltFkEoqaw.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"TCP and UDP are the most widely-used communication protocols in the Internet protocol suite. One ensures the data you send is received accurately. The other transfers data quickly. Whether an application uses TCP vs. UDP depends on the relative importance of accuracy vs. speed.\"}),/*#__PURE__*/e(\"p\",{children:\"This article will explain what these protocols do and their differences. We will also address why TCP is better for some applications and UDP for others. While they are core elements of IP networks, however, the two protocols can also increase your vulnerability to cyberattacks.\"}),/*#__PURE__*/e(\"h1\",{children:\"What is TCP?\"}),/*#__PURE__*/e(\"p\",{children:\"Transmission Control Protocol (TCP) provides reliable communications between two hosts. It transfers ordered data streams from the source and ensures accurate and complete data reconstruction at the destination. This approach compensates for the inherent unreliability of Internet Protocol (IP), the protocol that underlies a TCP connection.\"}),/*#__PURE__*/e(\"p\",{children:\"On the sender\u2019s side, TCP takes data from the application layer and creates an ordered stream of outbound segments. On the receiver\u2019s side, TCP opens the incoming segments to reassemble the data for the application layer. Because the segments are ordered, TCP can reliably reconstruct the original file.\"}),/*#__PURE__*/e(\"h2\",{children:\"How TCP works\"}),/*#__PURE__*/e(\"p\",{children:\"A TCP session begins with a three-way handshake between TCP endpoints at the source and destination:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The source sends a message containing an Initial Sequence Number (ISN) to the destination.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The destination increments the Sequence Number (SN) and sends it back to the source.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The source increments the SN and sends it to the destination.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"At the source, TCP divides data coming from the application layer. Each piece of data gets encapsulated with a header to create a TCP segment. Among the TCP header\u2019s ten required fields is the segment\u2019s Sequence Number. Each new segment gets an SN that is incremented by one over the previous segment\u2019s SN.\"}),/*#__PURE__*/e(\"p\",{children:\"An IP-based network layer makes a best effort to deliver packets to their destination. But there is no guarantee that packets arrive sequentially \u2014 or at all. Even if segments arrive at the destination jumbled up, the Sequence Numbers let TCP know how to reconstruct the original data. If a segment takes too long or fails to arrive, the destination TCP can send a retransmission request to the source.\"}),/*#__PURE__*/e(\"p\",{children:\"Thanks to their two-way connection, the TCP endpoints can manage segment transmission to minimize congestion. The time it takes for one end to acknowledge a message is an indicator of network congestion. In response, TCP does things like adjusting transmission rates.\"}),/*#__PURE__*/e(\"h1\",{children:\"What is UDP?\"}),/*#__PURE__*/e(\"p\",{children:\"User Datagram Protocol (UDP) is an unreliable communications protocol that transmits data from a source to one or more destinations. Unlike TCP, UDP does not compensate for the way IP transfers data across networks.\"}),/*#__PURE__*/e(\"h2\",{children:\"How UDP works\"}),/*#__PURE__*/e(\"p\",{children:\"At the source, UDP encapsulates each piece of data in a header to create a datagram. The header consists of fields for the source port, destination port, the datagram\u2019s length, and a checksum.\"}),/*#__PURE__*/e(\"p\",{children:\"UDP is a connectionless protocol so there is no handshake process with the destination. The source UDP simply hands each datagram to the network layer\u2019s IP and moves on to creating the next datagram. The destination UDP port listens for incoming datagrams and passes the data to the application layer. UDP has no way to recover missing datagrams.\"}),/*#__PURE__*/e(\"h1\",{children:\"How are TCP and UDP different?\"}),/*#__PURE__*/e(\"img\",{alt:\"TCP vs UDP\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,0b3s2rYMeJs7hNyRA4gGJHIymQY.png?originalFilename=tcp-vs-udp-comparison-table.png\",src:\"https://framerusercontent.com/images/0b3s2rYMeJs7hNyRA4gGJHIymQY.png\",srcSet:\"https://framerusercontent.com/images/0b3s2rYMeJs7hNyRA4gGJHIymQY.png?scale-down-to=512 512w,https://framerusercontent.com/images/0b3s2rYMeJs7hNyRA4gGJHIymQY.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"TCP vs UDP\"}),/*#__PURE__*/e(\"h2\",{children:\"Reliability\"}),/*#__PURE__*/e(\"p\",{children:\"A key distinction between these protocols is their different approaches to reliability. Thanks to its two-way connection, TCP can reconstruct the original data even with sub-optimal network conditions. On the other hand, UDP has no way to guarantee that every datagram will arrive.\"}),/*#__PURE__*/e(\"h2\",{children:\"Overhead\"}),/*#__PURE__*/e(\"p\",{children:\"The reliability TCP offers has consequences. The data transfer takes time and is more resource-intensive than UDP. Among the things TCP must do at the source and the destination:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Manage communications between the endpoints.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Generate segments.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Receive segments and detect errors.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Retransmit segments.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Manage congestion.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Reassemble the completed data.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"With no commitments to deliver the data or manage congestion, UDP consumes fewer resources.\"}),/*#__PURE__*/e(\"h2\",{children:\"Latency\"}),/*#__PURE__*/e(\"p\",{children:\"Latency over UDP connections is much lower than over TCP connections. Any latency over UDP is primarily due to the network itself. TCP\u2019s various functions add additional latency to the data transmission.\"}),/*#__PURE__*/e(\"h2\",{children:\"Number of recipients\"}),/*#__PURE__*/e(\"p\",{children:\"TCP can only transfer data from one point to another. UDP\u2019s connectionless nature, on the other hand, allows its use for multicasting or broadcasting to multiple destinations.\"}),/*#__PURE__*/e(\"h1\",{children:\"When is it optimal to use TCP vs UDP?\"}),/*#__PURE__*/e(\"p\",{children:\"When considering TCP vs UDP for transferring data, you have to consider your priorities.\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"How important is data integrity?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"How important is latency?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"How performant are the endpoints?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"How many destinations need to receive the data?\"})})]}),/*#__PURE__*/e(\"p\",{children:\"When data integrity is your top priority, then TCP will always be the best choice. The protocol guarantees complete delivery and accurate reconstruction of the original data. Typically, applications that transfer data files will use TCP since the protocol\u2019s latency and performance issues are not that critical.\"}),/*#__PURE__*/e(\"p\",{children:\"UDP benefits applications that need to receive data quickly even if accuracy suffers. This is why real-time applications like audio and video streaming will often use UDP.\"}),/*#__PURE__*/e(\"p\",{children:\"An easy way to understand the difference is to consider ways to distribute video. When downloading movies, a media app would use TCP. The priority here is delivering the file accurately to ensure correct playback. When streaming video, however, accuracy is less important than continuity. UDP ensures that data arrives at the streamer quickly. The media app uses error correction to handle missing data.\"}),/*#__PURE__*/e(\"h1\",{children:\"How secure are TCP and UDP?\"}),/*#__PURE__*/e(\"p\",{children:\"The Internet Protocol suite was not developed with security in mind. As a result, fundamental elements of the suite, including TCP and UDP, can create security vulnerabilities.\"}),/*#__PURE__*/e(\"p\",{children:\"An unencrypted IP connection is susceptible to packet sniffing. Cybercriminals can read the fields in TCP segments and UDP datagrams. Using this information, they can launch Denial-of-Service (DoS) attacks.\"}),/*#__PURE__*/e(\"p\",{children:\"Both protocols, for example, are susceptible to flood attacks. In a TCP SYN flood, the attacker targets an open TCP port by flooding it with SYN messages. The targeted device responds to each one with a SYN-ACK message and then waits for responses that never come. Legitimate connections get crowded out and the system crashes. With UDP floods, the attackers send datagrams to open non-UDP ports to generate so many ICMP responses that the targeted system fails.\"}),/*#__PURE__*/e(\"p\",{children:\"TCP connections are vulnerable to attacks in other ways. When hackers inspect a TCP segment, they can get enough information to create fake segments. This spoofing lets them transmit commands to the receiving system to support a breach. Generating random SNs should prevent this attack. However, some TCP/IP stacks use predictable random number generators, which makes their communications vulnerable.\"}),/*#__PURE__*/e(\"p\",{children:\"Another TCP and UDP vulnerability is not specific to the protocols themselves. Basic applications such as Telnet, FTP, DNS, and SSH depend on these protocols. But they also have known vulnerabilities that are exposed by open TCP or UDP ports.\"}),/*#__PURE__*/e(\"h1\",{children:\"Twingate\u2019s Approach to Zero Trust Security\"}),/*#__PURE__*/t(\"p\",{children:[\"TCP and UDP play a crucial role in Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust security solution\"})}),\". The Zero Trust framework is a modern approach to network security that focuses on defending resources rather than networks. Each resource is surrounded by a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"software-defined perimeter\"})}),\" that renders it invisible to anyone on the private network or the public internet. Only after successful \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authentication and authorization\"})}),\" will a user gain access to a resource and, even then, that access will be temporary.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" lets an organization apply a fine-grained segmentation of their networks and reduces their attack surface. However, some solutions implement Zero Trust at the application layer. They may not be compatible with every on-premises system or cloud-hosted application. When they are, they require the configuration of every user device and protected resource. This approach makes deployment and maintenance both difficult and expensive.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust solution\"})}),\" takes a more elegant approach. The Twingate Client running on a user\u2019s device is protocol-agnostic and will transparently proxy TCP and UDP traffic. The same is true for the protected resource\u2019s Twingate Connector. The two ends of the Zero Trust connection can also exchange ICMP messages (pings) to support network management.\"]}),/*#__PURE__*/e(\"p\",{children:\"With Twingate\u2019s built-in protocol support, neither the client device nor the resource needs special configurations. Access to the resource may be browser-based, RDP, SSH, or VNC and it will work without any additional overhead.\"}),/*#__PURE__*/e(\"h1\",{children:\"Secure your TCP and UDP traffic with Twingate\"}),/*#__PURE__*/e(\"p\",{children:\"The TCP and UDP transport protocols handle much of the data transferred over IP-based networks. TCP offers accurate delivery between two locations but requires more time and resources. UDP requires less overhead and lower latency but cannot guarantee that every datagram will be delivered.\"}),/*#__PURE__*/t(\"p\",{children:[\"Because Twingate\u2019s approach to \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust Network Access\"})}),\" supports both TCP and UDP, you can seamlessly protect almost any on-premises or cloud-based resource with minimal overhead.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=tcp-vs-udp\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact Twingate\"})}),\" to learn more about our modern approach to remote access and security.\"]})]})},{index:94,id:\"GKh9Vi6FL\",[h]:!0,[d]:!1,[p]:\"Business VPNs - Recommendations and Alternatives\",[u]:\"Business VPNs\",[m]:\"business-vpn\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2021-11-23T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/0xBanUTIrK4VMZRnfSXqpmvn3I.png\",srcSet:\"https://framerusercontent.com/images/0xBanUTIrK4VMZRnfSXqpmvn3I.png?scale-down-to=512 512w,https://framerusercontent.com/images/0xBanUTIrK4VMZRnfSXqpmvn3I.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/0xBanUTIrK4VMZRnfSXqpmvn3I.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/0xBanUTIrK4VMZRnfSXqpmvn3I.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/0xBanUTIrK4VMZRnfSXqpmvn3I.png\",srcSet:\"https://framerusercontent.com/images/0xBanUTIrK4VMZRnfSXqpmvn3I.png?scale-down-to=512 512w,https://framerusercontent.com/images/0xBanUTIrK4VMZRnfSXqpmvn3I.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/0xBanUTIrK4VMZRnfSXqpmvn3I.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/0xBanUTIrK4VMZRnfSXqpmvn3I.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Business VPNs, or virtual private networks, were created in the 1990s as an affordable way to link company locations and workers over the internet. Flash forward three decades and business VPNs are still the most common security and remote access tools. But are they still the best option?\"}),/*#__PURE__*/t(\"p\",{children:[\"In this article, we will explain how business VPNs are used and why their origins make them poor choices for today\u2019s networks. A modern alternative, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust Network Access\"})}),\", avoids VPN\u2019s many weaknesses and delivers more effective remote access security.\"]}),/*#__PURE__*/e(\"h1\",{children:\"What is a Business VPN?\"}),/*#__PURE__*/e(\"p\",{children:\"A business VPN lets companies transfer data privately over the public internet to connect networks at company sites or to support employees\u2019 remote access needs.\"}),/*#__PURE__*/e(\"h2\",{children:\"Site-to-site business VPNs\"}),/*#__PURE__*/e(\"p\",{children:\"With site-to-site VPN, companies install VPN gateways at the perimeter of each site\u2019s network. An encrypted tunnel between each gateway passes network traffic securely over the internet without putting proprietary information at risk.\"}),/*#__PURE__*/e(\"p\",{children:\"A manufacturer, for example, may have several locations: the headquarters, manufacturing plants, and regional sales offices. Site-to-site VPNs link these locations to operate as one networked system.\"}),/*#__PURE__*/e(\"h2\",{children:\"Remote access VPNs\"}),/*#__PURE__*/e(\"p\",{children:\"A company\u2019s secure network perimeter protects proprietary information and systems by blocking external connections. Remote access VPNs let the company\u2019s users securely pass through this network perimeter when away from the office. Whether at home or on the road, the user\u2019s device searches for and connects with a VPN gateway so the user can access the network as if they were in the office.\"}),/*#__PURE__*/e(\"p\",{children:\"In the past, remote access VPNs mainly supported field employees and office workers who traveled extensively. More recently, VPN technologies let employees work from home when nobody was allowed in the office.\"}),/*#__PURE__*/e(\"h2\",{children:\"Business vs consumer VPNs\"}),/*#__PURE__*/e(\"p\",{children:\"Business VPN technologies are not the same as the consumer VPN services you see advertised everywhere. They serve very different needs.\"}),/*#__PURE__*/e(\"p\",{children:\"Consumer VPNs offer two main benefits: protecting personal data and hiding an individual\u2019s online activity. Using public WiFi hotspots is safer when using a VPN to encrypt internet traffic. Users can also mask their location since their internet traffic appears to come from the VPN provider\u2019s servers.\"}),/*#__PURE__*/t(\"p\",{children:[\"Business VPNs, on the other hand, do more than protect company data through encrypted connections. They are part of the company\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/network-architecture\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"network infrastructure\"})}),\". For example, administrators can deploy VPN gateways to control which network segments remote users may access.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Why were Business VPNs created?\"}),/*#__PURE__*/e(\"p\",{children:\"Site-to-site connections were the first uses of VPN. Before the internet, only large businesses could afford telephone companies\u2019 dedicated lines to connect physically separated office sites. Creating a virtual network over the internet was a more affordable option. The private link merged two distant networks and let them operate as one.\"}),/*#__PURE__*/e(\"p\",{children:\"With laptops making remote computing easier, VPN evolved to support remote access. Traveling employees could log into the company network as if they were sitting in the office.\"}),/*#__PURE__*/e(\"h1\",{children:\"Why are Business VPNs no longer the best remote access solution?\"}),/*#__PURE__*/e(\"p\",{children:\"VPN\u2019s origin as a way of linking two company-owned networks embeds security and management flaws into the company\u2019s network infrastructure.\"}),/*#__PURE__*/e(\"h2\",{children:\"Business VPNs only protect networks, not resources\"}),/*#__PURE__*/t(\"p\",{children:[\"The only thing VPN gateways control is access through the company\u2019s secure perimeter to the protected network. Once through, the user can \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access any network segment and any resource\"})}),\". When hackers compromise a user\u2019s device, they get the same access. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/lateral-movement\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Lateral movement\"})}),\" techniques let the hacker roam across the network to distribute malware and exfiltrate company data.\"]}),/*#__PURE__*/e(\"h2\",{children:\"VPN gateways create significant attack vectors\"}),/*#__PURE__*/e(\"p\",{children:\"VPN gateways publish their presence on the public internet. That is the only way VPN client apps can find the gateway. But if a client app can see the gateway, so can cybercriminals. Simple tools let hackers scan the entire internet within hours to find every vulnerable gateway faster than administrators can deploy patches.\"}),/*#__PURE__*/e(\"h2\",{children:\"Poor network performance\"}),/*#__PURE__*/e(\"p\",{children:\"Business VPNs use a hub-and-spoke topology which became a huge problem in early 2020. VPN gateways designed to support dozens of remote users suddenly had to support hundreds. Even if the appliance could handle the load, the pipes in and out could not support the bandwidth demands.\"}),/*#__PURE__*/e(\"p\",{children:\"Latency is another challenge for business VPNs. No matter the ultimate destination, all user traffic passes through the gateway. Users accessing cloud resources experience significant backhaul latency as their data roundtrips through the gateway.\"}),/*#__PURE__*/e(\"h2\",{children:\"Poor user experience\"}),/*#__PURE__*/e(\"p\",{children:\"Sluggish connections are not new experiences for the salespeople and field engineers who have always used VPNs. It is a new experience for the office workers now struggling with home office connections. They simply do not get the same responsiveness from their systems.\"}),/*#__PURE__*/e(\"p\",{children:\"The VPN experience also suffers in organizations that use segmentation to protect company resources. Network routing rules can make this transparent for users in the office. But the resources remote users access every day may lie behind different VPN gateways. This structure forces users to constantly switch VPN connections to get their work done.\"}),/*#__PURE__*/e(\"h2\",{children:\"Very brittle and difficult to maintain\"}),/*#__PURE__*/e(\"p\",{children:\"Every aspect of VPN adds administrative overhead. Setting up a VPN must be done carefully to avoid inadvertently opening a security hole. VPN hardware must be monitored constantly to ensure users get performant connections. Since VPN integrates access control into the infrastructure, any change to the network requires new VPN configurations.\"}),/*#__PURE__*/e(\"p\",{children:\"If that weren\u2019t enough, business VPNs are so critical to daily operations that any downtime could significantly disrupt the company.\"}),/*#__PURE__*/e(\"h1\",{children:\"Why is Zero Trust considered a better alternative to Business VPNs?\"}),/*#__PURE__*/t(\"p\",{children:[\"Work-from-home, cloud migration, cybercrime, and other trends make traditional VPN technologies a poor choice for any company. Business VPN has become less secure, more difficult to manage, and more expensive. Given these limitations, companies need a better option. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust Network Access\"})}),\" is a modern approach designed to meet today\u2019s networking challenges.\"]}),/*#__PURE__*/e(\"p\",{children:\"As its name implies, Zero Trust avoids the weaknesses built into VPN technologies by assuming nothing can be trusted implicitly. Every user, device, network, and resource could be compromised at any time so Zero Trust always assumes they are \u2014 until proven otherwise.\"}),/*#__PURE__*/e(\"h2\",{children:\"Protects resources, not networks\"}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust draws perimeters around each resource rather than entire networks. Every access request gets challenged, even if it comes from the office LAN. This micro-segmentation makes successful breaches less effective by blocking lateral movement.\"}),/*#__PURE__*/e(\"h2\",{children:\"Invisible to the public internet\"}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust shrinks your company\u2019s overall attack surface. Ingress points do not publish their presence to the internet, effectively rendering protected resources invisible to hackers.\"}),/*#__PURE__*/e(\"h2\",{children:\"Transparent user experience\"}),/*#__PURE__*/t(\"p\",{children:[\"Zero Trust client apps run transparently in the background on user devices. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-models\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Role-based rules\"})}),\" tell the client which resources the user may access so routing can happen seamlessly without user involvement.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Removes performance bottlenecks\"}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust creates a direct, encrypted connection between each user and each resource. Access to cloud assets happens over the internet rather than through the private network. As a result, users experience more performant connections while traffic on company networks declines.\"}),/*#__PURE__*/e(\"h2\",{children:\"Easier to deploy and maintain\"}),/*#__PURE__*/t(\"p\",{children:[\"Zero Trust solutions are software-based so they can run on a company\u2019s on-premises or cloud-based compute resources. The components of \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" are easy to deploy to resources and user devices. And simple consoles let administrators on-board, off-board, and manage user accounts quickly.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Should your business be using a VPN?\"}),/*#__PURE__*/e(\"p\",{children:\"Companies continue to use business VPNs despite the technology\u2019s significant weaknesses. VPN is a known quantity making it an \u201Ceasy\u201A choice for companies of all sizes.\"}),/*#__PURE__*/e(\"p\",{children:\"At one end of the scale, startups have few people juggling many priorities. Security and remote access are necessary but not mission-critical. Going with a business VPN gets it done and lets staff focus on more important tasks.\"}),/*#__PURE__*/t(\"p\",{children:[\"At the other end of the scale, established corporations have already invested in \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/network-architecture\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"traditional architectures\"})}),\". Sticking with business VPNs sounds more appealing than an expensive, drawn-out restructuring project.\"]}),/*#__PURE__*/e(\"p\",{children:\"These short-term decisions have consequences. VPN technologies hold small companies back due to the cost of scaling at startup speeds. Established businesses have even more to lose when their business VPNs are inevitably breached.\"}),/*#__PURE__*/t(\"p\",{children:[\"The perception that \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" is complicated and requires complete rearchitecting of the network keeps many companies dependent on VPN. What these businesses need is a simple, phased approach to Zero Trust that can work in parallel with their existing systems.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Twingate\u2019s Approach to Business VPNs and Zero Trust Security\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust Network Access solution\"})}),\" is already in use at global organizations and early-stage startups. Our simple, software-based approach lets you deploy Zero Trust within 15 minutes.\"]}),/*#__PURE__*/e(\"p\",{children:\"Rather than flipping a switch for the entire organization, you can start small. Focus on teams who suffer the most under VPN\u2019s limitations or on resources that need the most protection. Twingate simplifies the provisioning and maintenance of remote access with benefits that include:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Integration with your existing \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/security-stack-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"security stack\"})})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"No architecture changes required\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Simple administrative tools\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Transparent user experience\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"Making life easier for administrators and users goes hand-in-hand with making your company\u2019s information assets more secure. Twingate hides every protected resource behind a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"software-defined perimeter\"})}),\" to reduce your attack surface. Simplifying \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-models\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"role-based access control\"})}),\" makes this micro-segmentation easier to manage while minimizing the impact of successful breaches.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Twingate Zero Trust, a secure replacement for VPNs\"}),/*#__PURE__*/e(\"p\",{children:\"Business VPNs were effective solutions for their time. But the 1990s internet was a very different place. Remote working, cloud computing, ransomware, and the other realities of modern IT have made VPN technologies obsolete.\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s approach to \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" removes the friction from remote access while improving security and making your networks more performant and easier to manage.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=business-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact Twingate\"})}),\" today to learn more about replacing your business VPN with a better approach to security and remote access.\"]})]})},{index:95,id:\"Avx7HD6P2\",[h]:!0,[d]:!1,[p]:\"SAML vs. OAuth: A Plain Language Explanation\",[u]:\"SAML vs. OAuth\",[m]:\"saml-vs-oauth\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2021-11-19T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/0tsQDB8FDWnj5FQhwLXRzXc5uKA.png\",srcSet:\"https://framerusercontent.com/images/0tsQDB8FDWnj5FQhwLXRzXc5uKA.png?scale-down-to=512 512w,https://framerusercontent.com/images/0tsQDB8FDWnj5FQhwLXRzXc5uKA.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/0tsQDB8FDWnj5FQhwLXRzXc5uKA.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/0tsQDB8FDWnj5FQhwLXRzXc5uKA.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/0tsQDB8FDWnj5FQhwLXRzXc5uKA.png\",srcSet:\"https://framerusercontent.com/images/0tsQDB8FDWnj5FQhwLXRzXc5uKA.png?scale-down-to=512 512w,https://framerusercontent.com/images/0tsQDB8FDWnj5FQhwLXRzXc5uKA.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/0tsQDB8FDWnj5FQhwLXRzXc5uKA.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/0tsQDB8FDWnj5FQhwLXRzXc5uKA.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"As corporate technology assets diversify and spread beyond the network perimeter, the \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/passwordless-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"proliferation of passwords\"})}),\" undermines network security. Single Sign-On technologies promise to solve this problem by letting workers use one credential across every protected system. Many rely on open-standard frameworks such as SAML and OAuth to avoid vendor lock-in. But how do you know when to use SAML vs OAuth?\"]}),/*#__PURE__*/t(\"p\",{children:[\"That is a critical question to answer as you begin the move to \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust Network Access (ZTNA)\"})}),\". When every access attempt gets challenged by your ZTNA security system, Single Sign-On (SSO) technologies improve the user experience and simplify credential management. To help, we will provide a plain language explanation of the similarities and differences between SAML and OAuth, how they work, and when it makes sense to use each one.\"]}),/*#__PURE__*/e(\"h1\",{children:\"What is SAML?\"}),/*#__PURE__*/e(\"p\",{children:\"Developed and maintained by the Organization for the Advancement of Structured Information Standards (OASIS), the Security Assertion Markup Language (SAML) is a standardized framework for federating identity so SSO authentication can work across multiple services.\"}),/*#__PURE__*/t(\"p\",{children:[\"Strictly speaking, SAML is only concerned with the authentication of a user\u2019s identity. Each service provider executes its own authorization process. However, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authentication and authorization\"})}),\" solutions such as Azure Active Directory or Okta may use SAML to support both processes.\"]}),/*#__PURE__*/e(\"p\",{children:\"SAML defines the flow of information between three entities:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"User: The person, device, or system requesting access to a resource or service.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Service provider (SP): The system or organization that owns the resource or service.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Identity provider (IdP): A separate system or third-party service that performs identity verification.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"A simple SAML process flow works like this:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The User requests access from the SP.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The SP contacts the IdP.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The IdP issues an identity prompt to the User.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The User confirms their identity.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The IdP issues an authentication token to the SP.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The SP grants the User access.\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"With SAML, service providers avoid the cost, security, and compliance issues associated with maintaining users\u2019 identity information. Users avoid the hassles associated with creating passwords for, and logging into, every service provider. And by federating \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authentication\"})}),\" through a central identity provider, the user\u2019s identity information is more secure.\"]}),/*#__PURE__*/e(\"p\",{children:\"Enterprise SSO is the most common application of SAML. Organizations no longer rely on centralized, on-premises applications for everything they do. Their users need to access a growing range of cloud-hosted applications and third-party X-as-a-Service providers. SAML defines a standards-based method for distributing authentication information internally and externally while using a single identity provider. B2B platforms like Salesforce and Workplace use SAML to support SSO with their customers\u2019 IdP.\"}),/*#__PURE__*/e(\"h1\",{children:\"What is OAuth?\"}),/*#__PURE__*/e(\"p\",{children:\"The Internet Engineering Task Force (IETF) developed OAuth (pronounced \u201Coh-auth\u201A) as an open-standard framework to let internet-based services exchange limited information over HTTP/HTTPS on a user\u2019s behalf. OAuth lets a user delegate to one service limited access authorization to another service. Using OAuth eliminates the need for deep integrations between the two services, limits access, and protects users\u2019 credentials.\"}),/*#__PURE__*/e(\"p\",{children:\"The OAuth standard defines four roles in a typical exchange:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Resource owner: Often an end-user, the owner is able to grant access to a protected resource.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Resource server: The application or service that holds the protected resource.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Client: An application or service that the owner wants the protected resource to go to.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Authorization server: The service authorizing the resource exchange.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"In a simple OAuth exchange,\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The client asks the owner for permission to get the resource.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The owner\u2019s approval creates an authorization grant.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The client sends this authorization grant to the authorization server.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The authorization server issues an access token to the client.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The client presents the access token to the resource server.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The resource server gives the client the resource.\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"Typically, the access tokens give the client a limited-duration subset of the resource owner\u2019s access to the resource server. Note that OAuth is only an \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authorization\"})}),\" framework. Typically, the authorization server will also verify the owner\u2019s identity but that process happens outside the OAuth framework\u2019s structure.\"]}),/*#__PURE__*/e(\"p\",{children:\"Web SSO is the most common use of OAuth. Cloud-based platforms use OAuth to let third-party apps access APIs and private user content. For example, OAuth lets you give a list management app access to your Twitter account.\"}),/*#__PURE__*/e(\"p\",{children:\"Enterprises use OAuth to control partner access to their API platforms. If you integrate Salesforce\u2019s customer relationship management functions or Square\u2019s point-of-sale systems into your organization\u2019s processes, you can use OAuth to manage user access.\"}),/*#__PURE__*/e(\"h1\",{children:\"What are the differences between SAML & OAuth?\"}),/*#__PURE__*/t(\"p\",{children:[\"In many respects, the SAML vs OAuth question is one of apples and oranges. Both technologies support SSO. However, SAML and OAuth come at it from different directions. SAML\u2019s purpose is to federate identity and reduce the friction associated with authentication. OAuth, on the other hand, lets an already-authenticated user delegate authorization. Each technology can be part of an overall \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authentication and authorization\"})}),\" process, either with each other or with complementary technologies.\"]}),/*#__PURE__*/e(\"p\",{children:\"Azure Active Directory, for example, uses both technologies. Rather than requiring unique logins for each application, an organization can use the SAML-based Microsoft identity platform to centralize authentication. Similarly, the Microsoft identity platform can use OAuth to distribute authorization tokens.\"}),/*#__PURE__*/e(\"h1\",{children:\"How should your company be using SAML or OAuth?\"}),/*#__PURE__*/e(\"p\",{children:\"SAML and OAuth are not mutually exclusive. Whether you use one or the other or both will depend on what you need from a Single Sign-On system.\"}),/*#__PURE__*/e(\"h2\",{children:\"When user identity does not matter\"}),/*#__PURE__*/e(\"p\",{children:\"OAuth is a good choice for B2C or B2B projects serving a general population of users where user identity is not important. You can implement OAuth-based SSO by integrating various sign-in services from companies like Google or Twitter. This frees you from having to store, maintain, and secure users\u2019 passwords. In addition, your users get a frictionless experience while having to manage fewer passwords.\"}),/*#__PURE__*/e(\"p\",{children:\"Within an enterprise, applications and services often do not need identity information. The central identity management system does the verification work. OAuth\u2019s access token is all the application needs to grant the user appropriate access.\"}),/*#__PURE__*/e(\"h2\",{children:\"Light integrations with web services\"}),/*#__PURE__*/e(\"p\",{children:\"OAuth lets you add APIs from third-party web services to enhance the features of your app. Rather than develop your own cloud storage system for a consumer app, for example, OAuth lets your users store and access files in their Google Drive accounts.\"}),/*#__PURE__*/e(\"p\",{children:\"Organizations can use the same model for their internally-developed, API-driven applications and services. OAuth will let an app developed in one department use APIs developed in another.\"}),/*#__PURE__*/e(\"h2\",{children:\"Control user access\"}),/*#__PURE__*/e(\"p\",{children:\"Modern enterprises rely on resources outside their direct control, for example by letting developers use the enterprise GitHub account. SAML lets these services authenticate user access requests through the company\u2019s IdP. This gives administrators more control and visibility over their users\u2019 access to third-party resources.\"}),/*#__PURE__*/e(\"h1\",{children:\"Twingate\u2019s Approach to Zero Trust Security\"}),/*#__PURE__*/e(\"p\",{children:\"Simple, fast, and reliable processes for authenticating and authorizing user access are essential elements of Zero Trust security. In today\u2019s threat landscape, the only way to protect networked resources is to challenge every access attempt. Rigid, difficult-to-use processes add friction and overhead that undermine your security.\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s modern approach to security implements \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust Network Access\"})}),\" by wrapping each protected resource within a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Software-Defined Perimeter (SDP)\"})}),\". Whether on-premises or in the cloud, the Twingate SDP hides your resources and will not grant access without authentication and authorization. We \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/identity-providers\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"integrate with top IdPs\"})}),\" including Okta, Azure ID, Google Workspace, and OneLogin so you do not need to replace your existing security stack. We also enable \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/protect-legacy-apps-with-multi-factor-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"multi-factor authentication (MFA)\"})}),\" to be applied to resources of all types, including legacy applications that don\u2019t natively support SSO or MFA.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Twingate makes it easier to apply granular, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-models\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"role-based access control policies\"})}),\" to reduce the attack surface and mitigate successful breaches. Our single, centralized administrative console lets you provision and deprovision access quickly to eliminate privilege creep and zombie accounts. Our detailed, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/device-trust-in-a-zero-trust-world\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"device\"})}),\"- and \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/introducing-identity-first-networking\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"identity\"})}),\"-indexed activity logs give you a complete picture of resource usage and allow you to quickly identify unusual behavior.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Simplify Zero Trust with Twingate and Single Sign-On\"}),/*#__PURE__*/e(\"p\",{children:\"Giving your users a frictionless sign-on experience across on-premises, cloud-hosted, and third-party assets helps ensure security compliance. Users only need one password to access the resources they need to do their jobs. Okta, Azure, and other identity providers offer SAML authentication, OAuth authorization, and similar technologies so security administrators can control resource access within a single system.\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust Network Access solution\"})}),\" integrates your existing security stack to protect sensitive resources with Software-Defined Perimeters.\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Make it easier for users to access resources wherever they are.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Limit user access to just the resources they need for their work.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Improve your security posture and minimize the impact of successful breaches.\"})})]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=saml-vs-oauth\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact Twingate\"})}),\" today to learn how your authentication and authorization system can be part of our larger Zero Trust platform.\"]})]})},{index:96,id:\"tABqnqbSa\",[h]:!0,[d]:!1,[p]:\"The Top 5 Essentials for any Start-Up's Security Stack\",[u]:\"Start-Up Security Stack\",[m]:\"security-stack-essentials\",[g]:\"\",[w]:\"Tyler Charboneau\",[f]:\"2021-11-11T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/P1hNOwpQyK2HwKcMoxGppWvlo.png\",srcSet:\"https://framerusercontent.com/images/P1hNOwpQyK2HwKcMoxGppWvlo.png?scale-down-to=512 512w,https://framerusercontent.com/images/P1hNOwpQyK2HwKcMoxGppWvlo.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/P1hNOwpQyK2HwKcMoxGppWvlo.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/P1hNOwpQyK2HwKcMoxGppWvlo.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/P1hNOwpQyK2HwKcMoxGppWvlo.png\",srcSet:\"https://framerusercontent.com/images/P1hNOwpQyK2HwKcMoxGppWvlo.png?scale-down-to=512 512w,https://framerusercontent.com/images/P1hNOwpQyK2HwKcMoxGppWvlo.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/P1hNOwpQyK2HwKcMoxGppWvlo.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/P1hNOwpQyK2HwKcMoxGppWvlo.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Cybersecurity is a critical consideration for all companies. Whether you sell software as a service (SaaS) or platform as a service (PaaS) solutions\u2014or something else\u2014technology is pervasive within today\u2019s businesses. Implementing strong security measures helps maintain the trust of your employees, customers, and business partners. As a start-up, this trust is integral to long-term growth.\"}),/*#__PURE__*/e(\"p\",{children:\"Every company needs a robust security stack\u2014a set of technologies that protects the various aspects of a company\u2019s technical operations. However, we also know that the world of cybersecurity can be an imposing one\u2014bursting with acronyms and hundreds of competing software vendors\u2014all against a backdrop of security threats reported weekly. The modern company is also growing more complex and dispersed with the ascent of remote work. Employees are using personal devices to access internal systems, and assets are moving to the cloud.\"}),/*#__PURE__*/e(\"p\",{children:\"This article lists key components that we believe are critical to a modern start-up\u2019s security stack. Additionally, we\u2019ll share some industry-leading tools and vendors in each focus area. Assembling a full security stack will give your company a galvanized, protective foundation\u2014upon which you may host assets and conduct safe business.\"}),/*#__PURE__*/e(\"h1\",{children:\"1) Remote Access Security\"}),/*#__PURE__*/t(\"p\",{children:[\"Remote access security products ensure that only \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authenticated, authorized\"})}),\" individuals have access to your corporate network, resources, and other assets. With the pandemic having made telework more mainstream, remote access control helps form the backbone of the modern company\u2019s security stack.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Traditionally, VPNs have been used to secure remote access to corporate networks. These legacy solutions are widespread yet starting to show their age, as they\u2019re hampered by vulnerabilities, maintenance challenges, and limited control over individual resources on the network. Since they govern access at the network level, VPNs often cannot benefit from (nor provide) the same fine-grained configuration as other resources. However, those that leverage evolving access architectures (like \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\") can be highly effective.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust Network Access (ZTNA)\"})}),\" solutions are a nascent category of secure remote access products. The \",/*#__PURE__*/e(\"strong\",{children:\"zero trust\"}),\" concept is a modernized approach that assumes that all network traffic is \",/*#__PURE__*/e(\"em\",{children:\"untrusted\"}),\", regardless of where that traffic originates. This essentially means that all network access is considered \u201Cremote.\u201A This approach ensures that all network requests are \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authenticated and authorized\"})}),\" while restoring fine-grained \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control\"})}),\" for key resources. Accordingly, it\u2019s easier to prevent users from accidentally gaining elevated privileges while operating within the network. Security and compliance also go hand in hand. Remote access security can help you meet these compliance requirements (e.g., \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/soc2-compliance\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"SOC\"})}),\") more effectively by promoting better security, privacy, and confidentiality at the networking layer.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Leading Remote Access Solutions\"}),/*#__PURE__*/e(\"p\",{children:\"Some popular remote access solutions include:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:/*#__PURE__*/e(\"strong\",{children:\"Twingate\"})})}),/*#__PURE__*/e(\"strong\",{children:\":\"}),\" a Zero Trust Network Access solution that simplifies the deployment and management of a Zero Trust architecture\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Cisco Meraki:\"}),\" a well known hardware-based VPN solution\"]})})]}),/*#__PURE__*/e(\"h1\",{children:\"2) Endpoint Detection and Response (EDR)\"}),/*#__PURE__*/t(\"p\",{children:[\"Any company, both large and small, oversees a growing pool of work devices over time. These laptops, mobile phones, tablets, desktops, servers, and virtual machines (on-premises \",/*#__PURE__*/e(\"em\",{children:\"and\"}),\" remote) are called \u201Cendpoints.\u201A Because such devices tap into corporate and other networks (which may be insecure), it\u2019s important to oversee them and safeguard them against external threats. Endpoint detection and response technologies \",/*#__PURE__*/e(s,{href:\"https://www.webroot.com/us/en/resources/glossary/what-is-endpoint-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"operate at the device level\"})}),\", whereas network security governs safety over network infrastructure.\"]}),/*#__PURE__*/t(\"p\",{children:[\"A cybersecurity admin\u2019s chief concern is that a compromised device may put the entire ecosystem at risk. Consider a 2020 Ponemon Institute study that found (at the time) that \",/*#__PURE__*/e(s,{href:\"https://expertinsights.com/insights/50-endpoint-security-stats-you-should-know\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"68 percent of organizations experienced one or more successful endpoint attacks\"})}),\". These attacks compromised data and IT infrastructure to some degree. Additionally, 68 percent of IT respondents also noticed increases in endpoint-attack frequencies.\"]}),/*#__PURE__*/e(\"p\",{children:\"Endpoint detection and response specifically aims to counteract the following threats:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Device theft and compromisation\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Malware\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Ransomware\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Web-based attacks\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Social engineering attacks (phishing, etc.)\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Account takeovers\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"That said, what mechanisms are common within EDR? Firstly, \",/*#__PURE__*/e(s,{href:\"https://www.mcafee.com/enterprise/en-us/security-awareness/endpoint/what-is-endpoint-detection-and-response.html\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"usage-data collection through continual monitoring is a hallmark process\"})}),\" and one that helps illuminate any suspicious activity. This quantity of information can be daunting across thousands of devices, hence why many EDR tools employ AI algorithms to uncover meaningful patterns. From there, mitigation and remediation are typically much easier. It\u2019s even possible to automate some of those processes. Alerting is also key in helping specialized team members squash any threats before they spread.\"]}),/*#__PURE__*/e(\"p\",{children:\"While not specifically tied to endpoint detection and response, companies can often employ multiple, supplemental measures to boost security. Firewalls, email filtering, and website filtering combine to solidify endpoint security alongside EDR tools.\"}),/*#__PURE__*/e(\"h2\",{children:\"Leading Endpoint Detection and Response Solutions\"}),/*#__PURE__*/e(\"p\",{children:\"Some popular EDR solutions include:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"CrowdStrike:\"}),\" top ransomware-prevention platform focused on next-generation antivirus (NGAV) and AI-automated threat elimination\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Malwarebytes:\"}),\" surface-level and lower-level threat detection centered on malware and ransomware scanning, alongside device management and isolation capabilities\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"SentinelOne:\"}),\" SentinelOne\u2019s Singularity platform is a well-rounded autonomous EDR solution that has the ability to correlate data across disparate enterprise systems to uncover malicious behavior\"]})})]}),/*#__PURE__*/e(\"h1\",{children:\"3) Mobile Device Management (MDM)\"}),/*#__PURE__*/t(\"p\",{children:[\"Adjacent to endpoint detection and response, mobile device management aims to oversee the content and configurations of numerous devices at once. Admins leverage MDM platforms to trigger \",/*#__PURE__*/e(s,{href:\"https://www.n-able.com/blog/mdm-management-benefits\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"batches of updates, application rollouts, detailed logging, and 24-7 monitoring\"})}),\". Additionally, MDM software provides data protection features. Teams can wipe compromised and stolen devices or even disconnect them from afar. Because of this, companies can mitigate many security risks tied to distributed devices.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.techfunnel.com/information-technology/benefits-mobile-device-management\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"At least 42 percent of companies now view themselves as mobile-first\"})}),\", and the multicloud movement has pushed both employees and resources off-premises. A laptop is stolen every 53 seconds, and data breaches stemming from those thefts (or otherwise) cost employers 80 percent of the cost of a laptop. MDM tools can reduce costs associated with these security failures\u2014if not prevent them altogether. IT teams experience less demand. The ability to isolate personal data from company data in a BYOD environment\u2014characteristic of cash-conscious start-ups\u2014prevents leaks and accidental data manipulation.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Leading Mobile Device Management Solutions\"}),/*#__PURE__*/e(\"p\",{children:\"Some popular MDM solutions include:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Kandji:\"}),\" an Apple-centric MDM platform that unlocks zero-touch deployment among iOS, macOS, iPadOS, and tvOS devices\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Jamf:\"}),\" another Apple MDM platform that also provides behavior detection, threat monitoring, compliance monitoring, and full device visibility\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"ManageEngine:\"}),\" a Windows-focused MDM solution that helps enforce security policies and prevent data leaks\"]})})]}),/*#__PURE__*/e(\"h1\",{children:\"4) Penetration Testing Tools\"}),/*#__PURE__*/t(\"p\",{children:[\"With healthcare and fintech regularly \",/*#__PURE__*/e(s,{href:\"https://innovation.uci.edu/2019/07/top-5-most-popular-startup-sectors\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"appearing on lists of leading start-up sectors\"})}),\", the need to secure internal infrastructure is essential. These systems often house some of the general population\u2019s most sensitive data, including financial records, patient records, and other private, personally identifiable information. These industries are also two of the world\u2019s highest regulated, and security plays a massive role in compliance.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Penetration testing has become an essential toolbox addition for start-ups, especially considering that one large data breach can bring a new organization to its knees. It\u2019s said that \",/*#__PURE__*/e(s,{href:\"https://cybersecurityventures.com/60-percent-of-small-companies-close-within-6-months-of-being-hacked\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"60 percent of small companies close their doors\"})}),\" within six months of a hack. Thankfully, the adoption of pen testing can prevent attacks from succeeding. At worst, this periodic hardening of internal systems helps reduce each attack\u2019s blast radius, controlling the damage done.\"]}),/*#__PURE__*/t(\"p\",{children:[\"This form of testing leverages intentional, simulated assaults against various portions of one\u2019s infrastructure. Each test is designed to uncover glaring weaknesses and obscure vulnerabilities, essentially gauging how successful a true black hat attack might be. Companies review these results and data to strengthen their production systems. Accordingly, \",/*#__PURE__*/e(s,{href:\"https://www.imperva.com/learn/application-security/penetration-testing\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"planning, scanning, access acquisition and maintenance, and analysis\"})}),\" form the testing process. Specific testing solutions allow us to automate and configure the scopes of these approaches as needed. AI often takes things a step further by offering security suggestions. They allow DevOps or cybersecurity teams to perform highly technical actions from within a GUI\u2014simplifying these methods while providing rich, centralized visualizations.\"]}),/*#__PURE__*/e(\"p\",{children:\"Start-ups can perform penetration tests internally (malicious insider simulation), externally (outside attacker), blindly (for broad, real-time analysis), or in a targeted fashion. Pen testing often coexists with added measures, like web application firewalls (WAFs), to boost security. This technology even has fundamental ties to intrusion detection systems (IDSs) and security information and event management (SIEM).\"}),/*#__PURE__*/e(\"h2\",{children:\"Leading Penetration Testing Solutions\"}),/*#__PURE__*/e(\"p\",{children:\"Some popular penetration testing solutions include:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Qualys:\"}),\" a cloud information-security platform designed to mesh with penetration testing software, while providing vulnerability visualization, real-time threat analysis, and patching suggestions\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"AttackForge:\"}),\" a penetration testing management platform that aims to boost security and slash remediation times for companies of all sizes\"]})})]}),/*#__PURE__*/e(\"h1\",{children:\"5) Cloud Security Posture Management\"}),/*#__PURE__*/t(\"p\",{children:[\"Finally, cloud security posture management (CSPM) \",/*#__PURE__*/e(s,{href:\"https://searchcloudsecurity.techtarget.com/definition/Cloud-Security-Posture-Management-CSPM\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"allows IT teams to identify any problematic configurations or cloud compliance risks\"})}),\". Often, services from external vendors are trickier to manage than in-house solutions. Furthermore, many configurations aren\u2019t immediately visible or user-friendly to fine-tune. CSPM provides some added observability here. It also facilitates improved compliance by mapping out configurations, statuses, and infrastructure deployments to security frameworks. Teams can then assess how closely their deployments align with regulatory requirements.\"]}),/*#__PURE__*/e(\"p\",{children:\"CSPM cuts down on data breaches by highlighting any issues seen as low-hanging fruit. Many tools out there are married to specific vendor services or sets of best practices, thus making the selection process somewhat more involved. While many tools might be linked to GCP, AWS, or Azure, some may also be vendor agnostic. Overall, teams can remediate, analyze real-time data, and oversee multiple environments from one centralized interface under CSPM usage.\"}),/*#__PURE__*/e(\"h2\",{children:\"Leading Cloud Security Posture Management Solutions\"}),/*#__PURE__*/e(\"p\",{children:\"Some popular CSPM solutions include:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Orca:\"}),\" a cloud vulnerability management solution that excels at uncovering misconfigurations\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Wiz:\"}),\" another multicloud security platform centered on risk management and toxic configuration conflicts\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Open Raven:\"}),\" a cloud security solution focused on data security, visibility, and compliance\"]})})]}),/*#__PURE__*/e(\"h1\",{children:\"Conclusion\"}),/*#__PURE__*/e(\"p\",{children:\"When it comes to assembling your start-up\u2019s security stack, there are numerous factors to be mindful of. Thankfully, marketplace tools today are plentiful, mature, and well-rounded enough to tackle many security challenges simultaneously. While this isn\u2019t an exhaustive list, we believe it\u2019s a great starting point for any organization serious about maintaining strong security.\"}),/*#__PURE__*/t(\"p\",{children:[\"Secure remote access has specifically been a pillar of ours since our inception. At Twingate, we provide a comprehensive \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust solution\"})}),\" that avoids the pitfalls of aging VPNs. Twingate is delivered as a cloud-based service alongside your existing infrastructure and provides heightened visibility into your unique ecosystem deployment.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Twingate empowers IT professionals to configure and manage user access to critical applications, giving your security strategy a much-needed boost. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=security-stack-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact Twingate\"})}),\" today to learn more.\"]})]})},{index:97,id:\"eUnXC2XDI\",[h]:!0,[d]:!1,[p]:\"Privileged Access Management: Protect High-Risk Accounts\",[u]:\"Protect High-Risk Accounts\",[m]:\"privileged-access-management\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2021-11-10T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/Gez1OjeMVuatSp0C4wjBxWGrxCU.png\",srcSet:\"https://framerusercontent.com/images/Gez1OjeMVuatSp0C4wjBxWGrxCU.png?scale-down-to=512 512w,https://framerusercontent.com/images/Gez1OjeMVuatSp0C4wjBxWGrxCU.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/Gez1OjeMVuatSp0C4wjBxWGrxCU.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/Gez1OjeMVuatSp0C4wjBxWGrxCU.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/Gez1OjeMVuatSp0C4wjBxWGrxCU.png\",srcSet:\"https://framerusercontent.com/images/Gez1OjeMVuatSp0C4wjBxWGrxCU.png?scale-down-to=512 512w,https://framerusercontent.com/images/Gez1OjeMVuatSp0C4wjBxWGrxCU.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/Gez1OjeMVuatSp0C4wjBxWGrxCU.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/Gez1OjeMVuatSp0C4wjBxWGrxCU.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"In a cybercrime environment that constantly targets user credentials, organizations are turning to Privileged Access Management (PAM) to prevent the breaches that could do the most damage. An administrator\u2019s Privileged Account credentials could let hackers \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/lateral-movement\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"roam across a network undetected for months\"})}),\". PAM protects these elevated credentials and enforces best security practices to minimize the attack surface and mitigate successful breaches.\"]}),/*#__PURE__*/e(\"p\",{children:\"We created this article to help you understand what Privileged Access Management is, the kinds of accounts it protects, why they are so vulnerable, and how PAM best practices can improve your organization\u2019s security.\"}),/*#__PURE__*/e(\"h1\",{children:\"What is Privileged Access Management?\"}),/*#__PURE__*/e(\"p\",{children:\"Privileged Access Management comprises a set of policies, processes, and tools designed to protect privileged access credentials from theft. Some people in your organization must be able to configure network routers or use the accounts payable system to keep things running. To do their jobs, these privileged users receive elevated access to networked resources.\"}),/*#__PURE__*/t(\"p\",{children:[\"Unfortunately, too many organizations fail to manage these Privileged Accounts effectively which significantly increases their risk of attack. Cybercriminals love the power they get with compromised privileged credentials. Appearing to be a valid user, they can go anywhere on the network and access any system. A recent survey found that \",/*#__PURE__*/e(s,{href:\"https://www.prnewswire.com/news-releases/more-than-half-of-us-companies-hit-with-privileged-credential-theft-insider-threats-in-last-year-301294644.html\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"most organizations experienced theft of Privileged Account credentials\"})}),\" \u2014 and almost all of them suffered damage from the resulting breach.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Privileged Access Management makes these breaches more difficult to accomplish and mitigates the damage from any breaches that do succeed. Using principles of role-based \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/principle-of-least-privilege\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"least privilege access\"})}),\", PAM limits the scope and duration of a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-models\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"user\u2019s access privileges\"})}),\" to the absolute minimum needed to get a specific job done.\"]}),/*#__PURE__*/t(\"p\",{children:[\"A system administrator, for example, does not need 24x7 \u201Cjust in case\u201A access to an Active Directory server. PAM solutions provide \u201Cjust in time\u201A access when the administrator needs to make a change. The system revokes the user\u2019s access once the task is complete. Other PAM policies may require unique credentials for each resource and eliminate shared accounts. These policies reduce the available attack surface and make \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/lateral-movement\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"lateral movement\"})}),\" more difficult in the event a Privileged Account is compromised.\"]}),/*#__PURE__*/e(\"h1\",{children:\"What are Privileged Accounts?\"}),/*#__PURE__*/e(\"p\",{children:\"Much attention focuses on the IT context of user access, but privileged user accounts exist throughout the organization. Furthermore, the scope of a user\u2019s privilege can range from control over a single device to authority over an entire network.\"}),/*#__PURE__*/e(\"h2\",{children:\"Privileged business user accounts\"}),/*#__PURE__*/e(\"p\",{children:\"Research and development, accounting, customer service, and other departments have systems and databases that must be protected. Hackers gaining access to these accounts can exfiltrate personal information and proprietary company data.\"}),/*#__PURE__*/e(\"h2\",{children:\"Local administrator accounts\"}),/*#__PURE__*/e(\"p\",{children:\"Local administrator privileges let users install software and change operating system settings on a specific device. Should the user fall victim to a phishing attack, then the hacker could change system settings and install malware to establish a foothold on the network.\"}),/*#__PURE__*/e(\"h2\",{children:\"Domain administrator accounts\"}),/*#__PURE__*/t(\"p\",{children:[\"Administrators of Microsoft Active Domain networks need access to systems for managing users and their access permissions. A compromised domain admin account lets cybercriminals create user accounts with escalated privileges. Besides opening backdoors into the network, these new accounts appear to be valid users and let the criminals \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/lateral-movement\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"move laterally unnoticed\"})}),\".\"]}),/*#__PURE__*/e(\"h2\",{children:\"Superuser accounts\"}),/*#__PURE__*/e(\"p\",{children:\"Superuser accounts give administrators complete access to networked systems. If compromised, these superuser privileges let hackers do anything they want anywhere on the network.\"}),/*#__PURE__*/e(\"h2\",{children:\"Privileged system accounts\"}),/*#__PURE__*/e(\"p\",{children:\"People are not the only users with Privileged Accounts. Many applications and services require elevated access to networked resources in order to share data or manage performance. Hackers can hijack these accounts to surveil the network and spread malware.\"}),/*#__PURE__*/e(\"h1\",{children:\"What are the common reasons Privileged Accounts are susceptible to breaches?\"}),/*#__PURE__*/e(\"p\",{children:\"Access management is never a one-and-done task. Employees get promoted, change roles, and leave the company. Contractors come and go. Unfortunately, security too often takes a back seat to other priorities. Overworked, under-resourced IT departments either cannot keep up or take shortcuts to get things done. As a result, Privileged Accounts provide a target-rich environment for cyberattacks.\"}),/*#__PURE__*/e(\"h2\",{children:\"Access churn creates excess privileges\"}),/*#__PURE__*/e(\"p\",{children:\"Each time a user\u2019s access needs to be changed, administrators must provision new permissions and deprovision old permissions. In today\u2019s dynamic business environment, however, this access churn is unrelenting.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Over-provisioning new permissions:\"}),\" Administrators give users more access than is technically needed, thus avoiding the help desk calls and management complaints generated by more limited permissions.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Persistence of old permissions:\"}),\" Employees often need to keep their old permissions as they transition to new roles. But time-pressed administrators cannot follow up with every employee to confirm that it is okay to revoke the old permissions.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Delayed account deactivation:\"}),\" Weeks or months may pass before administrators deactivate the accounts of former employees or contractors. The same thing often happens with the temporary system accounts created during projects.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Bad habits create excess privileges\"}),/*#__PURE__*/e(\"p\",{children:\"Some of the worst security habits are found in IT departments where workers\u2019 technical expertise inspires overconfidence. In under-resourced departments, this cognitive bias leads to bad habits that undermine security.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Privilege creep:\"}),\" To make switching between systems easier, workers accumulate many permissions in a single account.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"24x7 access:\"}),\" Administrators stay logged into their Privileged Accounts to avoid the hassle of logging in and out of different systems.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Password sharing:\"}),\" When many people need access to the same system, a shared password that rarely changes is easier than managing separate Privileged Accounts.\"]}),/*#__PURE__*/e(\"h2\",{children:\"No time for monitoring\"}),/*#__PURE__*/e(\"p\",{children:\"Preventing security issues such as privilege creep and abandoned accounts requires constant vigilance. But administrators are already overwhelmed by the number of alerts their systems generate. Tightening privileged access practices will add to that burden unless it is done in the right way.\"}),/*#__PURE__*/e(\"h1\",{children:\"Best Practices for Privileged Access Management\"}),/*#__PURE__*/e(\"p\",{children:\"Privileged Access Management does not need to be time-consuming nor expensive. Done right, PAM can improve productivity while making networks more secure. Organizations that successfully implement PAM strategies follow these best practices:\"}),/*#__PURE__*/e(\"h2\",{children:\"Audit the state of your access privileges\"}),/*#__PURE__*/e(\"p\",{children:\"Perform a top-to-bottom audit of which users have access to which systems. The audit should extend beyond your employees to include contractors, consultants, and other outside parties. Document any third-party integrations with customers, suppliers, or service providers. By the same token, do not limit the audit to your on-premises resources. Include cloud-hosted assets and X-as-a-Service applications.\"}),/*#__PURE__*/e(\"p\",{children:\"Your non-human users need to be part of the audit, so you understand which applications, automated tools, and other systems have privileged access to company resources. Evaluate the way each application, system, and device handles user credentials and integrates with your PAM solution.\"}),/*#__PURE__*/e(\"h2\",{children:\"Define role-based, least privilege access policies\"}),/*#__PURE__*/e(\"p\",{children:\"A PAM system will grant elevated access permissions, when needed, to the users who need them. This requires clearly-defined policies and processes that minimize exceptions.\"}),/*#__PURE__*/e(\"p\",{children:\"Privileged Accounts, for example, must only be used for privileged activities. To use email and other common applications all executives, network administrators, and interns alike must use a standard, non-privileged user account. Should a standard account be compromised, its limited permissions give attackers fewer resources to establish themselves.\"}),/*#__PURE__*/e(\"p\",{children:\"Privileged Accounts must be limited in scope to a specific resource or task. That means a network administrator will need a unique credential for each resource they access. Single sign-on systems and consistent enforcement will eliminate the convenience and productivity rationalizations that lead to bad security habits.\"}),/*#__PURE__*/e(\"h2\",{children:\"Centrally manage Privileged Accounts\"}),/*#__PURE__*/e(\"p\",{children:\"It is easier to avoid permission creep and over-provisioning by centralizing access management in a PAM solution. Access credentials are stored in a secure, encrypted vault when not used. Privileged users can only get the credentials through the PAM solution and must relinquish their credentials when their session ends.\"}),/*#__PURE__*/e(\"h2\",{children:\"Monitor and review account activity\"}),/*#__PURE__*/t(\"p\",{children:[\"PAM solutions use automation and analytical tools to deal with the constant flow of account activity logs and reduce the flood of alerts administrators deal with. These tools can detect anomalous behavior patterns to speed the response to potential threats. Furthermore, auditing tools let administrators conduct regular reviews to ensure compliance with \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/soc2-compliance\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"SOC 2\"})}),\", HIPAA, and other standards and regulations.\"]}),/*#__PURE__*/e(\"h1\",{children:\"How Twingate can help secure Privileged Accounts\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s solution simplifies Privileged Account Management and the establishment of \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/principle-of-least-privilege\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"least privilege access control policies\"})}),\". We do this by implementing \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust principles\"})}),\" through \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"software-defined perimeters (SDPs)\"})}),\" to support modern, more secure network architectures.\"]}),/*#__PURE__*/e(\"p\",{children:\"Traditional security approaches assume that users and resources within the secured perimeter can be trusted. Credential theft, however, lets hackers traverse networks while appearing to be a valid user. Any resources visible on the network are visible to the hackers.\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate hides each resource behind a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"SDP\"})}),\" and denies all access requests until explicit \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authentication and authorization\"})}),\" processes are complete. Twingate integrates with the \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/introducing-identity-first-networking\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"most popular Identity Providers\"})}),\" so you do not need to change your existing security stack. Our administrative interface lets you implement \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-models\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"role-based access policies\"})}),\" and simplifies the daily churn in user access management.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Manage Privileged Access with Twingate\"}),/*#__PURE__*/t(\"p\",{children:[\"Privileged Accounts are essential to business productivity, yet they create significant security risks. A compromised account lets cybercriminals \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/lateral-movement\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"move laterally through your network undetected\"})}),\", exfiltrate sensitive data, and leave malware behind. Over-privileged and abandoned accounts, combined with poor security practices, expand the attack surface and increase the chances of a damaging security breach.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero-Trust solution\"})}),\" provides a simple path to implementing Privileged Access Management. Least privilege access policies based on users\u2019 roles limit the scope of each Privileged Account and minimize the potential impact of any single compromised account.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=privileged-access-management\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact Twingate\"})}),\" to learn more about using our Zero Trust solution to implement Privileged Access Management.\"]})]})},{index:98,id:\"T_Mf9qRS7\",[h]:!0,[d]:!1,[p]:\"Hacking 101: How to Prevent Lateral Movement\",[u]:\"Prevent Lateral Movement\",[m]:\"lateral-movement\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2021-11-04T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/AeCucg9KaTOi9Yx3rBVbl7ZB5Ss.png\",srcSet:\"https://framerusercontent.com/images/AeCucg9KaTOi9Yx3rBVbl7ZB5Ss.png?scale-down-to=512 512w,https://framerusercontent.com/images/AeCucg9KaTOi9Yx3rBVbl7ZB5Ss.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/AeCucg9KaTOi9Yx3rBVbl7ZB5Ss.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/AeCucg9KaTOi9Yx3rBVbl7ZB5Ss.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/AeCucg9KaTOi9Yx3rBVbl7ZB5Ss.png\",srcSet:\"https://framerusercontent.com/images/AeCucg9KaTOi9Yx3rBVbl7ZB5Ss.png?scale-down-to=512 512w,https://framerusercontent.com/images/AeCucg9KaTOi9Yx3rBVbl7ZB5Ss.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/AeCucg9KaTOi9Yx3rBVbl7ZB5Ss.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/AeCucg9KaTOi9Yx3rBVbl7ZB5Ss.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Most network security breaches go undetected for months. During that time, hackers are busy moving across your network, mapping critical systems, and collecting privileged credentials. This lateral movement sets the stage for their ultimate goal whether that is data exfiltration or ransomware (or both!).\"}),/*#__PURE__*/t(\"p\",{children:[\"We will explain what lateral movement is, how hackers use it to expand their foothold in your network, and how you can use a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust security framework\"})}),\" to keep hackers from exploiting a successful breach.\"]}),/*#__PURE__*/e(\"h1\",{children:\"What is Lateral Movement?\"}),/*#__PURE__*/e(\"p\",{children:\"Lateral movement refers to the tools and techniques hackers use once they penetrate an organization\u2019s external security. Unlike the \u201Csmash-and-grab\u201A techniques of less talented hackers, lateral movement supports sophisticated attacks by organized cybercriminals and other advanced persistent threat (APT) actors. This phase of the attack has three main objectives:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Expand the attackers\u2019 foothold.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Discover critical systems and valuable data.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Collect privileged user credentials.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"While exploring the network, the attackers mask their presence by using valid credentials and the network\u2019s administrative tools. This is why lateral movement is so difficult to detect and why they have so much time to dwell in your network.\"}),/*#__PURE__*/e(\"h2\",{children:\"Expanding the breach\"}),/*#__PURE__*/t(\"p\",{children:[\"The original breach may have a finite window before user passwords change or \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN gateways\"})}),\" get patched. Opening more doors into the network lets the hackers enter at will and helps mask their presence.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Reconnaissance\"}),/*#__PURE__*/e(\"p\",{children:\"Once in, the attackers traverse the compromised network, but they only look around. Conducting reconnaissance helps attackers understand the network\u2019s internal defenses, identify critical systems, and discover the location of valuable information.\"}),/*#__PURE__*/e(\"h2\",{children:\"Escalating credentials\"}),/*#__PURE__*/e(\"p\",{children:\"In most cases, the original breach only gives attackers entry into a low-value system. What they want is access to more critical systems. Stealing the credentials of network administrators and others with privileged access is the ultimate target of lateral movement.\"}),/*#__PURE__*/e(\"h2\",{children:\"Using espionage for profit\"}),/*#__PURE__*/t(\"p\",{children:[\"Lateral movement sounds like something out of a spy novel. In fact, it takes traditional espionage tradecraft and updates it for the cyber age. An early example of \",/*#__PURE__*/e(s,{href:\"https://www.foreignaffairs.com/articles/united-states/2010-09-01/defending-new-domain\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"cyber espionage using lateral movement\"})}),\" happened in 2008. Department of Defense personnel in the Middle East found USB flash drives in the parking lot outside their office. When they connected the drives to their work computers, malware installed by foreign agents spread across unclassified and classified systems.\"]}),/*#__PURE__*/e(\"p\",{children:\"Today, the line separating foreign intelligence operations and criminal activity has blurred. Both advanced persistent threats use the same techniques to penetrate, surveil, and exploit both government and private-sector networks.\"}),/*#__PURE__*/e(\"h2\",{children:\"The long tail of Lateral Movement\"}),/*#__PURE__*/e(\"p\",{children:\"The fact that these breaches are so hard to detect makes them all the more damaging.\"}),/*#__PURE__*/e(\"p\",{children:\"A recent study found that breaches typically go undetected for 212 days \u2014 and are not contained for another 75 days.\"}),/*#__PURE__*/e(\"p\",{children:\"Although state actors are still a threat, criminal organizations use lateral movement to launch ransomware attacks at an accelerating rate. Reports of ransomware attacks increased 20% in 2020 and another 69% in the first half of 2021.\"}),/*#__PURE__*/e(\"p\",{children:\"By using lateral movement, these criminals do more than target systems for encryption. Extended dwell time lets them exfiltrate customer information or proprietary data before triggering the ransomware. The criminals can then demand higher ransoms or sell the data on dark web exchanges.\"}),/*#__PURE__*/e(\"h1\",{children:\"Examples where hackers used lateral movement to gain access to sensitive data\"}),/*#__PURE__*/e(\"p\",{children:\"The highest-profile security breaches of the past few years used lateral movement to make the attacks more successful.\"}),/*#__PURE__*/e(\"h2\",{children:\"Equifax\"}),/*#__PURE__*/t(\"p\",{children:[\"In 2017, hackers \",/*#__PURE__*/e(s,{href:\"https://www.csoonline.com/article/3444488/equifax-data-breach-faq-what-happened-who-was-affected-what-was-the-impact.html\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"penetrated credit agency Equifax\"})}),\" through its dispute-resolution website. \",/*#__PURE__*/e(\"strong\",{children:\"Undetected for more than two months\"}),\", the hackers accessed Equifax\u2019s global network and stole more than 150 million consumer credit records. The consumer data never appeared on dark web exchanges, but Equifax has spent $300 million in fines, fees, and compensation plus billions more upgrading its security systems.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Colonial Pipeline\"}),/*#__PURE__*/t(\"p\",{children:[\"Colonial Pipeline\u2019s network of gasoline pipelines ground to a halt in May 2021 when \",/*#__PURE__*/e(s,{href:\"https://www.bloomberg.com/news/articles/2021-06-04/hackers-breached-colonial-pipeline-using-compromised-password\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"cybercriminals triggered a ransomware attack\"})}),\". The hackers used compromised credentials to get through a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN gateway\"})}),\" and traverse the network undetected.\"]}),/*#__PURE__*/e(\"h2\",{children:\"SolarWinds\"}),/*#__PURE__*/t(\"p\",{children:[\"APT29 (also known as Nobelium, Cozy Bear, and other names) is the suspected nation-state actor behind 2020\u2019s SolarWinds supply chain attack. Their breach of SolarWinds\u2019 security went \",/*#__PURE__*/e(s,{href:\"https://www.securityweek.com/solarwinds-likely-hacked-least-one-year-breach-discovery\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"undetected for more than 12 months\"})}),\", letting the group create backdoors into potentially thousands of organizations. Those backdoors let APT29 \",/*#__PURE__*/e(s,{href:\"https://www.securityweek.com/solarwinds-hackers-used-raindrop-malware-lateral-movement\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"deploy lateral movement tools\"})}),\" for collecting privileged credentials at government agencies and defense contractors. Microsoft reports that \",/*#__PURE__*/e(s,{href:\"https://www.microsoft.com/security/blog/2021/10/25/nobelium-targeting-delegated-administrative-privileges-to-facilitate-broader-attacks\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"APT29 is attacking cloud service providers\"})}),\" to do the same thing.\"]}),/*#__PURE__*/e(\"h1\",{children:\"How do lateral attacks happen?\"}),/*#__PURE__*/e(\"p\",{children:\"The broad attack surface exposed by traditional network security technologies lets hackers launch lateral attacks from many different vectors.\"}),/*#__PURE__*/e(\"h2\",{children:\"Compromised credentials\"}),/*#__PURE__*/e(\"p\",{children:\"Passwords sold on criminal exchanges or stolen through social engineering techniques let attackers access networks with valid user credentials. The Colonial Pipeline breach happened because the password for an unused, but still active, VPN account was sold on the dark web.\"}),/*#__PURE__*/e(\"h2\",{children:\"Unpatched network hardware\"}),/*#__PURE__*/e(\"p\",{children:\"Too many companies take too long to patch their network security systems, opening windows for attackers. Equifax\u2019s IT department failed to patch Apache Struts which let its attackers exploit a months-old vulnerability.\"}),/*#__PURE__*/e(\"h2\",{children:\"Supply chain attacks\"}),/*#__PURE__*/e(\"p\",{children:\"SolarWinds was a target because its customers have to give the SolarWinds Orion software global administrator privileges. APT29 used Orion as a bridge to its ultimate targets in the US government.\"}),/*#__PURE__*/e(\"h2\",{children:\"Malware\"}),/*#__PURE__*/t(\"p\",{children:[\"In 2007, employees at an air conditioner service company inadvertently downloaded malware that hackers used to \",/*#__PURE__*/e(s,{href:\"https://www.zdnet.com/article/anatomy-of-the-target-data-breach-missed-opportunities-and-lessons-learned\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"penetrate Target\u2019s network\"})}),\" and compromise the retailer\u2019s point-of-sale system.\"]}),/*#__PURE__*/e(\"h1\",{children:\"How do hackers move laterally within a network undetected?\"}),/*#__PURE__*/t(\"p\",{children:[\"The seven-month average dwell time of successful breaches is the result of hackers\u2019 live-off-the-land tactics that leverage the network\u2019s own tools. Common techniques identified in \",/*#__PURE__*/e(s,{href:\"https://attack.mitre.org/tactics/TA0008\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"MITRE\u2019s ATT&CK framework\"})}),\" include:\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Internal spear phishing\"}),\" - Hackers use valid accounts to obtain the credentials of privileged users or distribute malware.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Compromised remote services\"}),\" - With valid accounts, hackers can use \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/rdp-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"RDP\"})}),\", SSH, WinRM, SMB, and other remote connection tools.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Alternate authentication material\"}),\" - Without compromising a password, hackers can use session cookies, hashes, Kerberos tickets, and other valid authentication artifacts to access resources.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Tainted shared content\"}),\" - Hackers insert malicious code in files on shared network drives or code repositories. When users open the file, the malware can expand the hackers\u2019 network access.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"IT management tools\"}),\" - With the right credentials, hackers can use an organization\u2019s software deployment tools or automation systems like PowerShell to move across the network.\"]}),/*#__PURE__*/e(\"h1\",{children:\"How can your organization prevent a lateral attack today?\"}),/*#__PURE__*/t(\"p\",{children:[\"A recent study found that organizations incorporating \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" in their network defense strategy reduced the cost of security breaches by 35%. Traditional approaches to network security focus on defending a secure perimeter and assume that the resources, devices, and users within are safe. However, this approach creates a broad attack surface that is difficult to defend. Execution must be perfect because one failure can give hackers the freedom to roam across the network.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" is a modern security framework that always assumes breaches are in progress. That turns every access attempt into a potential attack \u2014 even if the attempt comes from on-premises devices. Rather than defend an indefensible perimeter, Zero Trust solutions require explicit verification of a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/introducing-identity-first-networking\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"user identity\"})}),\" and \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/device-trust-in-a-zero-trust-world\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"device state\"})}),\" with every access attempt. Role-based, least privilege access policies limit access to just the resource a user needs to get their job done.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Twingate implements Zero Trust through \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"software-defined perimeters (SDPs)\"})}),\", an approach that shifts segmentation from the network level to the resource level. Every resource, whether on-premises or in the cloud, is hidden behind the Twingate SDP. Nobody can see the resource from the public internet, crippling common hacker tools. More importantly, nobody on a company\u2019s private network can see the resource either, mitigating a successful breach of the network.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Zero Trust requires \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authentication and authorization\"})}),\" before letting users access a resource. Twingate lets you apply role-based permissions based on contextual factors such as \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/device-trust-in-a-zero-trust-world\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"device posture\"})}),\" and network connection. Permission to access one resource does not extend to any other resource. And all permissions are ephemeral, terminating at the end of each session. As a result, hackers that successfully compromise a user\u2019s device have less freedom to move laterally.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Reducing dwell times is another benefit afforded by Zero Trust solutions such as \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate\"})}),\". Identity-indexed activity logs let security administrators spot unusual user or device behavior. Investigations can reveal the presence of hackers in the system faster and reduce the damage they cause.\"]}),/*#__PURE__*/e(\"h1\",{children:\"How Twingate can help block lateral movement\"}),/*#__PURE__*/e(\"p\",{children:\"Security breaches can happen at any time thanks to the broad attack surface created by traditional network security approaches. Once in, sophisticated attackers can use lateral movement techniques to evade detection while mapping your network and escalating their access. Because they use the network\u2019s own resources to conduct their reconnaissance, threat actors can go undetected for months as they maximize the impact of their attack.\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s modern security solution, based on principles of \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\", can help mitigate lateral attacks. Protecting each resource with software-defined perimeters reduces the attack surface area, constrains lateral movement, and makes hackers\u2019 presence easier to detect.\"]}),/*#__PURE__*/t(\"p\",{children:[\"To find out more about mitigating lateral attacks with Zero Trust, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=lateral-movement\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"contact Twingate\"})}),\" today.\"]})]})},{index:99,id:\"deShENkDg\",[h]:!0,[d]:!1,[p]:\"Zero Trust: A Complete Guide to Remote Access Security\",[u]:\"Zero Trust Security\",[m]:\"zero-trust-security\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2021-11-02T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/VSU0gveNPG6V4AGKTIeDHwCt7E.png\",srcSet:\"https://framerusercontent.com/images/VSU0gveNPG6V4AGKTIeDHwCt7E.png?scale-down-to=512 512w,https://framerusercontent.com/images/VSU0gveNPG6V4AGKTIeDHwCt7E.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/VSU0gveNPG6V4AGKTIeDHwCt7E.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/VSU0gveNPG6V4AGKTIeDHwCt7E.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/VSU0gveNPG6V4AGKTIeDHwCt7E.png\",srcSet:\"https://framerusercontent.com/images/VSU0gveNPG6V4AGKTIeDHwCt7E.png?scale-down-to=512 512w,https://framerusercontent.com/images/VSU0gveNPG6V4AGKTIeDHwCt7E.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/VSU0gveNPG6V4AGKTIeDHwCt7E.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/VSU0gveNPG6V4AGKTIeDHwCt7E.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"If there were any doubts that \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust Network Access\"})}),\" is more than a buzzword, they were erased by the US government\u2019s decision to adopt Zero Trust across all federal agencies. This 21st Century approach to remote access security promises to fix many of the cybersecurity and network management challenges faced by organizations of all sizes.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Traditional access control technologies have an inherent design flaw: \",/*#__PURE__*/e(\"em\",{children:\"they require an assumption of trust\"}),\". Major security breaches happen because cybercriminals can leverage this assumption to penetrate supposedly \u201Csecure\u201A perimeters and exfiltrate company data.\"]}),/*#__PURE__*/t(\"p\",{children:[\"As its name implies, Zero Trust removes trust from the equation to solve modern challenges in cybersecurity and network management. IT leaders recognize the need to replace their old remote access security systems with modern systems. Yet many IT professionals are \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/why-isnt-everyone-using-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"just starting on their Zero Trust journey\"})}),\". It is more than a buzzword, but how do you cut through the hype to understand what Zero Trust could mean for your organization?\"]}),/*#__PURE__*/e(\"p\",{children:\"Twingate\u2019s guide to Zero Trust will introduce this modern approach to remote access security and explain how Zero Trust:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Requires a different way of thinking about network access.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Fixes problems inherent to traditional access control technologies.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Delivers benefits beyond secure remote access.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"We will give you some tips for evaluating Zero Trust providers and dispel the myths holding back Zero Trust adoption. Despite its early reputation, Zero Trust can be simple enough to deploy without re-architecting your entire network.\"}),/*#__PURE__*/e(\"h1\",{children:\"What is Zero Trust?\"}),/*#__PURE__*/t(\"p\",{children:[\"Zero Trust (ZT) is an approach to network security and access control that meets the challenges of 21st Century cybersecurity. Also called \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust Network Access (ZTNA)\"})}),\" this new framework is based on one fundamental assumption:\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Trust does not exist.\"})}),/*#__PURE__*/e(\"p\",{children:\"Under Zero Trust, you never assume that an on-premises network is any safer than the public internet. You never assume that a user\u2019s laptop is any more secure than anything rack-mounted in your server room. You never assume that the incoming access request from your CEO is actually coming from your CEO.\"}),/*#__PURE__*/t(\"p\",{children:[\"ZTNA\u2019s assumption that nothing can be inherently trusted overturns decades of network security practice. Traditional systems rely on the creation of a secure perimeter around trusted, managed networks and devices. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN\"})}),\", \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/rdp-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"RDP\"})}),\", and other remote access technologies open secure, encrypted portals through this perimeter so traveling employees can access company resources.\"]}),/*#__PURE__*/e(\"p\",{children:\"Often compared to the way moats and walls protected medieval castles, the layered defenses of the secure perimeter supplied a safe haven for an organization\u2019s most critical systems. Of course, medieval defenses eventually fell as cultures changed and military technologies breached walls with ease. Our traditional network defenses share a similar fate.\"}),/*#__PURE__*/e(\"h2\",{children:\"Work culture is different\"}),/*#__PURE__*/e(\"p\",{children:\"In the 20th Century, network perimeters existed neatly within the office walls. The distinction between those who could be trusted and everyone else was easy. Most users were employees working at their desks and a relative few traveling employees who needed remote access.\"}),/*#__PURE__*/e(\"p\",{children:\"21st Century computing is completely different. Companies today rely on blended workforces of employees, on-demand freelancers, short-term and long-term contractors, as well as 3rd party service providers.\"}),/*#__PURE__*/e(\"p\",{children:\"While hybrid workforces existed before 2020, the COVID pandemic forced all businesses to adopt work-from-home policies. As the pandemic eased, employees and employers alike questioned the need to go back to the office.\"}),/*#__PURE__*/e(\"p\",{children:\"Modern remote access security systems must be able to handle this varied nature of today\u2019s workforce and the near-universal need for remote access.\"}),/*#__PURE__*/e(\"h2\",{children:\"Devices cannot be controlled\"}),/*#__PURE__*/e(\"p\",{children:\"Security was much easier when on-premises managed devices were the only things accessing the network. This began to change as company-owned laptops and then smartphones made employees more mobile. But then bring-your-own-device (BYOD) policies gained traction. The sudden shift to work-from-home during pandemic shortages made BYOD essential.\"}),/*#__PURE__*/e(\"p\",{children:\"Whether financially motivated or out of necessity, BYOD adoption requires IT departments to deal with a constellation of devices and operating systems over which they have little direct control.\"}),/*#__PURE__*/e(\"h2\",{children:\"Perimeters are fading\"}),/*#__PURE__*/e(\"p\",{children:\"Internet technologies have obliterated our concept of the perimeter. While many companies still use on-premises systems, the cloud is making this less common. Company-owned applications are now cloud-hosted by third-party services. In many cases, the applications themselves are sourced as third-party services.\"}),/*#__PURE__*/e(\"p\",{children:\"The cloud\u2019s business case may be compelling, but it stretches defensive perimeters beyond company property and beyond security administrators\u2019 full control. As a result, a company\u2019s perimeter is only as secure as the partner systems it integrates with.\"}),/*#__PURE__*/e(\"h2\",{children:\"More sophisticated cybercriminals\"}),/*#__PURE__*/e(\"p\",{children:\"Cybercrime is big business with a sophisticated ecosystem of developers, ransomware service providers, and dark web marketplaces. Criminal syndicates give low-level hackers access to automated malware distribution tools for their high-volume phishing campaigns.\"}),/*#__PURE__*/e(\"p\",{children:\"More advanced cybercriminals leverage the trust built into secure perimeters to target networks at scale. Unpatched security systems, third-party networks, vulnerable user credentials, unsecure devices, and the changing workforce give cybercriminals a broad surface to launch their attacks.\"}),/*#__PURE__*/e(\"p\",{children:\"Traditional technologies are not up to this challenge which is why the industry has sought new approaches to remote access security.\"}),/*#__PURE__*/e(\"h2\",{children:\"Google goes BeyondCorp\"}),/*#__PURE__*/t(\"p\",{children:[\"A particularly sophisticated state-sponsored attack on Google\u2019s network in 2009 was a wake-up call for the search giant. Its forensic review of Operation Aurora concluded that traditional security methods were failing. A few years later, Google \",/*#__PURE__*/e(s,{href:\"https://research.google/pubs/pub43231\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"unveiled its BeyondCorp initiative\"})}),\".\"]}),/*#__PURE__*/t(\"p\",{children:[\"Using Zero Trust principles, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/google-beyondcorp\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"BeyondCorp\"})}),\" eliminated the internal network and put all resources behind internet-facing proxies. Strict verification, control over company-issued devices, and role-based authorizations reduce the company\u2019s exposure to attack. Although pioneering, the Google-centric nature of BeyondCorp\u2019s approach to Zero Trust makes it unsuitable for some.\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Cloud-first model\"}),\" - Google\u2019s cloud-centric systems made migrating to an internet-facing architecture easier.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Internet visibility\"}),\" - While Google may be confident with its public-facing proxies, companies in more regulated industries will prefer less visible options.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Legacy systems\"}),\" - Companies cannot rewrite legacy systems for Zero Trust compatibility as Google did with its internally-developed systems.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Google Chrome dependence\"}),\" - BeyondCorp was designed for Google\u2019s Chrome operating system and browser which many companies do not use.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Google Cloud dependence\"}),\" - Since most companies use AWS or Azure, adopting BeyondCorp adds complexity through integration with Google Cloud.\"]})})]}),/*#__PURE__*/t(\"p\",{children:[\"Over the past ten years, trends in computing and cybercrime have driven a consensus that the secure perimeter\u2019s day has passed. Forrester Research analyst John Kindervag \",/*#__PURE__*/e(s,{href:\"https://www.forrester.com/blogs/next-generation-access-and-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"popularized Zero Trust Network Access\"})}),\" around the time Google began developing BeyondCorp. Research was already underway, not surprisingly, at the US Department of Defense and the Defense Information Systems Agency. The National Institute of Standards and Technology issued several \",/*#__PURE__*/e(s,{href:\"https://www.nist.gov/publications/zero-trust-architecture\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"guidelines for implementing Zero Trust\"})}),\" at federal agencies. Finally, a May 2021 \",/*#__PURE__*/e(s,{href:\"https://www.whitehouse.gov/briefing-room/presidential-actions/2021/05/12/executive-order-on-improving-the-nations-cybersecurity\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"executive order\"})}),\" required all federal agencies to adopt Zero Trust.\"]}),/*#__PURE__*/e(\"h1\",{children:\"What are the guiding principles behind Zero Trust?\"}),/*#__PURE__*/e(\"p\",{children:\"The concept of \u201Czero\u201A trust has nothing to do with the emotional, social, and psychological nature of human trust. In the machine-to-machine context, trust is an algorithmically-generated evaluation of an incoming connection. Based on many factors, the value of that evaluation will fall somewhere between complete trust (+1) and complete distrust (-1). \u201CZero\u201A trust is simply the case when the system knows nothing about the incoming connection.\"}),/*#__PURE__*/t(\"p\",{children:[\"Zero Trust Network Access builds upon this algorithmic concept of trust to form three guiding principles: assume breach, verify explicitly, and \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/principle-of-least-privilege\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"least privilege access\"})}),\". Combined, these three principles provide the framework for 21st Century security and access control.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Assume breach\"}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust assumes nothing is safe. Cybercriminals may be roaming freely on the network. Every user device may be hacked. Every user credential may be stolen. Every protected resource may have backdoors or 0-day flaws.\"}),/*#__PURE__*/e(\"p\",{children:\"By contrast, traditional approaches assume that everything within a secure perimeter is safe: trusted employees using secure devices on an uncompromised network. If these old approaches are wrong just once, then the perimeter fails.\"}),/*#__PURE__*/e(\"p\",{children:\"With Zero Trust, the principle of assume breach requires defenses around every resource and assumes any access request is a threat. The only correct response is to lock everything down and deny access by default. If the system is wrong, there is no security breach. A user simply will not get the access they need. Help desks get a phone call, but company resources remain safe.\"}),/*#__PURE__*/e(\"h2\",{children:\"Verify explicitly\"}),/*#__PURE__*/e(\"p\",{children:\"Of course, users need to access protected resources to get their jobs done. But can you trust that they are who they say they are? The Zero Trust principle of verify explicitly requires verification of the user\u2019s identity with every access request \u2014 without exception.\"}),/*#__PURE__*/t(\"p\",{children:[\"Traditional approaches to \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control\"})}),\" grant access permissions too broadly. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN gateways\"})}),\", for example, only control access to a network. The user can have full access to any resources attached to that network for as long as they are connected to the VPN gateway.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Verify explicitly requires \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authentication\"})}),\" with every request to access any resource. In addition, identity verification cannot be a one-time check. Assume breach implies that a user\u2019s credentials could be compromised at any time. One click on an email attachment is all it takes for their identity credentials to fall in the wrong hands.\"]}),/*#__PURE__*/e(\"p\",{children:\"The user could be at the office or working remotely. They could be using a company-managed laptop or their home computer. They could be the CEO or a contractor. Every access request they make requires explicit verification.\"}),/*#__PURE__*/e(\"h2\",{children:\"Least privilege access\"}),/*#__PURE__*/t(\"p\",{children:[\"Even when you verify explicitly, assume breach makes that verification suspect. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/principle-of-least-privilege\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Least privilege access\"})}),\" uses context-sensitive, role-based rules to give users the least amount of access they need to get their jobs done. This approach reduces the impact of the most common security threats. Here are three recent examples of compromised user credentials enabling cyberattacks:\"]}),/*#__PURE__*/t(\"p\",{children:[\"Verizon\u2019s budget cellular service, Visible, recently suffered a \",/*#__PURE__*/e(s,{href:\"https://www.cpomagazine.com/cyber-security/attack-on-verizon-visible-confirmed-to-be-a-credential-stuffing-campaign-hacked-accounts-charged-for-thousands-of-dollars-in-purchases\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"credential stuffing attack\"})}),\" that gave criminals access to customer credit card information. Criminal marketplaces with compromised user passwords let the criminals take over the user accounts.\"]}),/*#__PURE__*/t(\"p\",{children:[\"The Cybersecurity and Infrastructure Security Agency recently warned of a new \",/*#__PURE__*/e(s,{href:\"https://www.computerweekly.com/news/252508402/US-intelligence-agencies-issue-advisory-on-BlackMatter-gang\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"ransomware campaign\"})}),\" against critical infrastructure companies. The BlackMatter extortion group uses already-compromised credentials to penetrate networks and encrypt essential data.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Compromised credentials helped hackers \",/*#__PURE__*/e(s,{href:\"https://threatpost.com/solarwinds-default-password-access-sales/162327\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"launch an attack\"})}),\" through a popular enterprise network management tool. Since SolarWinds Orion requires global administrative access privileges, the cyberattack may have penetrated 18,000 organizations including US government agencies and defense contractors.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Privileged credentials are cybercriminals\u2019 preferred target since they give the hackers direct access to higher-value systems and let them penetrate deeper into networks. A \",/*#__PURE__*/e(s,{href:\"https://www.prnewswire.com/news-releases/more-than-half-of-us-companies-hit-with-privileged-credential-theft-insider-threats-in-last-year-301294644.html\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"2021 survey\"})}),\" found half of all organizations surveyed had privileged credentials compromised. Network administrators were the most common targets of these attacks.\"]}),/*#__PURE__*/e(\"p\",{children:\"Least privilege access mitigates spear-phishing and other targeted attacks by making compromised credentials less useful for cybercriminals. Rather than giving administrators a single credential for multiple systems, least privilege access requires the use of multiple credentials: one set of general permissions for email and productivity apps plus additional credentials for each system. Every attempt to access a resource requires explicit verification. Furthermore, least privilege access ends the use of shared passwords and other bad habits that open security holes.\"}),/*#__PURE__*/t(\"p\",{children:[\"Of the three Zero Trust principles, least privilege access is the most important to get right. You can learn more in our article, \u201C\",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/principle-of-least-privilege\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Principle of Least Privilege: How to Stop Hackers in Their Tracks\"})}),\"\u201A.\"]}),/*#__PURE__*/e(\"h1\",{children:\"What are the benefits of Zero Trust?\"}),/*#__PURE__*/e(\"p\",{children:\"Combining least privilege access, verify explicitly, and assume breach in a Zero Trust framework addresses the security weaknesses of legacy technologies. But the benefits of Zero Trust go much further.\"}),/*#__PURE__*/e(\"h2\",{children:\"Zero Trust performance benefits\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"ZTNA\"})}),\" also improves a company\u2019s network performance and user experience. Traditional remote access solutions such as \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN channel\"})}),\" all remote traffic through a limited number of gateways. This approach works for a few remote users, but not when everyone works from home. In addition, remote users\u2019 traffic passes through the gateway even when they access cloud resources. The resulting backhaul reduces network performance and increases the latency of the user\u2019s connection.\"]}),/*#__PURE__*/t(\"p\",{children:[\"By establishing direct, encrypted tunnels between the user\u2019s device and the resource, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust systems\"})}),\" route user traffic through the most efficient, performant path. Traffic to cloud-based resources passes securely across the internet, freeing private networks to handle traffic for on-premises resources.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Zero Trust manageability benefits\"}),/*#__PURE__*/e(\"p\",{children:\"Managing traditional security technologies is resource-intensive. Gateways, firewalls, and other hardware appliances must be maintained, patched, and replaced on a regular basis. Furthermore, administrators must maintain multiple security systems. Access for remote users requires a separate system from that used for office users. Each cloud service has its own security system that may not integrate with the system protecting on-premises resources.\"}),/*#__PURE__*/t(\"p\",{children:[\"Zero Trust replaces this patchwork with a single security and \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control system\"})}),\". Zero Trust solutions protect resources no matter where resources or users are located. And with detailed, granular activity logs, Zero Trust systems let administrators optimize the performance of their \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/network-architecture\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"network architectures\"})}),\".\"]}),/*#__PURE__*/e(\"h2\",{children:\"Zero Trust cost benefits\"}),/*#__PURE__*/t(\"p\",{children:[\"By cutting capital-intensive infrastructure such as \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN access control systems\"})}),\", companies can reduce the cost of building and maintaining their networks. With software-based Zero Trust systems, security and access can scale dynamically without expensive investments.\"]}),/*#__PURE__*/e(\"p\",{children:\"Still, the most significant savings are the costs companies avoid by preventing the theft of customers\u2019 personal information or their own proprietary data.\"}),/*#__PURE__*/e(\"h2\",{children:\"Zero Trust security benefits\"}),/*#__PURE__*/t(\"p\",{children:[\"Zero Trust systems are much harder to breach due to their smaller attack surfaces. Unlike \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/google-beyondcorp\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"BeyondCorp\"})}),\", most Zero Trust systems hide resources from view on internal and external networks. Rather than using gateways that publish their presence on the internet, Zero Trust systems create direct, ephemeral, and encrypted connections between devices and resources.\"]}),/*#__PURE__*/e(\"p\",{children:\"Because they assume breaches have already occurred, Zero Trust systems reduce the damage hackers can cause. Explicit verification and least privilege authorizations limit hackers\u2019 access to the compromised resource. Micro-segmentation prevents hackers from moving laterally to other resources. Extensive logging lets administrators spot unusual activity sooner so they can take action before the hacker penetrates deeper into the company\u2019s systems.\"}),/*#__PURE__*/e(\"h1\",{children:\"What technology does Zero Trust technology replace?\"}),/*#__PURE__*/t(\"p\",{children:[\"The need for Zero Trust is driven by the failure of traditional access control technologies to keep pace with the way organizations work today. When \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/network-access-control\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Network Access Control (NAC)\"})}),\", \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Virtual Private Networks (VPNs)\"})}),\", \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/what-is-rdp\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Remote Desktop Protocol (RDP)\"})}),\", and similar technologies were developed, the corporate computing landscape was much different.\"]}),/*#__PURE__*/e(\"p\",{children:\"All users were employees who worked within the walls of a company facility. They used company-owned and managed desktop computers to access resources located in on-premises server rooms or company-owned data centers. The castle-and-moat paradigm works in this context. With direct control over their networks, resources, and devices administrators could build a layered defensive perimeter to keep threats at bay.\"}),/*#__PURE__*/e(\"p\",{children:\"Only a relative handful of employees needed to cross that perimeter and access internal resources. NAC, VPN, and RDP solutions provided that access while preserving the perimeter\u2019s integrity.\"}),/*#__PURE__*/e(\"p\",{children:\"In the face of today\u2019s more complex computing environment and the threat of modern cybercriminals, these approaches have become security risks. In addition, these technologies undermine network performance and business productivity.\"}),/*#__PURE__*/e(\"img\",{alt:\"Zero Trust Comparison Table\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,h5ips7xxdRowURvXws3HSuKNUQ.png?originalFilename=zero-trust-comparison-table.png\",src:\"https://framerusercontent.com/images/h5ips7xxdRowURvXws3HSuKNUQ.png\",srcSet:\"https://framerusercontent.com/images/h5ips7xxdRowURvXws3HSuKNUQ.png?scale-down-to=512 512w,https://framerusercontent.com/images/h5ips7xxdRowURvXws3HSuKNUQ.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust Comparison Table\"}),/*#__PURE__*/e(\"h1\",{children:\"What are the key questions to ask when considering a Zero Trust provider?\"}),/*#__PURE__*/e(\"p\",{children:\"What started out as a series of whitepapers a decade ago has become a dynamic, rapidly-evolving Zero Trust ecosystem. Choosing the right solution will deliver all the benefits we discussed earlier. Choosing the wrong approach to Zero Trust leads to wasted money on projects that are ultimately abandoned. Asking the right questions about potential Zero Trust providers can make the difference between success and failure.\"}),/*#__PURE__*/e(\"h2\",{children:\"What client devices does it support?\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/google-beyondcorp\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Google\u2019s BeyondCorp\"})}),\" initiative kept things simple by issuing company-managed Chromebooks to its employees and requiring the Chrome browser on other devices. Companies that keep a similar level of control will need to find Zero Trust providers that support their unique combination of devices and operating systems.\"]}),/*#__PURE__*/t(\"p\",{children:[\"At the other extreme, companies that have embraced BYOD and blended workforces need \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust systems\"})}),\" with more universal cross-platform device support.\"]}),/*#__PURE__*/e(\"h2\",{children:\"What resources can it protect?\"}),/*#__PURE__*/e(\"p\",{children:\"Companies with purely cloud-based network architectures tend to be younger and limited to certain industries. Most companies rely on a mix of internally-developed applications, legacy third-party resources, and cloud-hosted services.\"}),/*#__PURE__*/e(\"p\",{children:\"Before choosing a Zero Trust provider, security administrators must understand how the provider\u2019s solution protects resources. Those solutions that work at the application layer, for example, will have a much more limited range than those that work at the transport layer. A related question is whether the Zero Trust provider offers APIs that let the company integrate policy enforcement and activity logging into its proprietary systems.\"}),/*#__PURE__*/e(\"h2\",{children:\"How does it handle device posture?\"}),/*#__PURE__*/t(\"p\",{children:[\"Unlike a user\u2019s identity, device posture is a constantly-moving target. The device\u2019s operating system status, network connection, geolocation, and other factors can change at any time with a resulting impact on the user\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/principle-of-least-privilege\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"least privilege access\"})}),\".\"]}),/*#__PURE__*/e(\"p\",{children:\"Some Zero Trust solutions handle this by building walled gardens around applications and data on the device. Besides increasing friction for the user, this approach can be administratively intensive. In a BYOD environment, the provider must support every combination of client device and operating system.\"}),/*#__PURE__*/t(\"p\",{children:[\"Other Zero Trust providers take a cross-platform approach that collects factors such as the type of network connection and the device\u2019s state. Combining this \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/device-trust-in-a-zero-trust-world\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"posture assessment\"})}),\" with the type of network request being made, these systems can enforce policies on the device and terminate connections the instant device posture changes.\"]}),/*#__PURE__*/e(\"h2\",{children:\"What security provider integrations does it offer?\"}),/*#__PURE__*/e(\"p\",{children:\"Providers that claim \u201Ccomplete\u201A Zero Trust solutions pitch the efficiencies of an end-to-end integrated system. But implementing such a system requires more time, planning, and resources to replace the company\u2019s substantial investment in its existing security stack.\"}),/*#__PURE__*/e(\"p\",{children:\"When a company uses a third-party identity provider (IdP), for example, the fees paid to the IdP represent a fraction of the total investment. The identity verification system contains detailed user information, role definitions, and policy rules that required substantial effort to create and refine.\"}),/*#__PURE__*/t(\"p\",{children:[\"Zero Trust providers that \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/introducing-identity-first-networking\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"integrate with IdPs\"})}),\" and other security systems let companies take a phased approach to Zero Trust deployment. They can leverage their substantial security infrastructure without having to reinvent the wheel.\"]}),/*#__PURE__*/e(\"h2\",{children:\"How simple is the deployment process?\"}),/*#__PURE__*/t(\"p\",{children:[\"Deploying a Zero Trust solution can be a mega-project on the scale of \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/google-beyondcorp\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Google\u2019s BeyondCorp\"})}),\" that requires:\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Installation of new hardware.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Changes to existing network infrastructure.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Changes to each protected resource.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Changes to each user device.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"The more people are needed to plan, execute, and troubleshoot the deployment, the more expensive and time-consuming the deployment will be.\"}),/*#__PURE__*/t(\"p\",{children:[\"Zero Trust solutions that use \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"software-defined perimeters (SDPs)\"})}),\" to protect resources are much simpler to deploy. A few commands can protect a resource without changing the resource\u2019s settings or reconfiguring network hardware.\"]}),/*#__PURE__*/e(\"p\",{children:\"To simplify user-side deployment, Zero Trust client apps should require no changes to operating system or software settings. Ideally, users should be able to install the app themselves without help desk support.\"}),/*#__PURE__*/e(\"h2\",{children:\"How manageable is the system once deployed?\"}),/*#__PURE__*/t(\"p\",{children:[\"The user experience plays a role in the manageability of Zero Trust solutions. Client apps can run seamlessly in the background and \u201Cjust work\u201A regardless of what resources users access. These solutions will generate fewer help desk calls and improve security compliance. Client apps with more rigid approaches to \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control\"})}),\" may require multiple logins and could be sensitive to system changes.\"]}),/*#__PURE__*/e(\"p\",{children:\"On the back end, administrative consoles and seamless integrations with IdPs and other security systems can make Zero Trust much simpler to manage. Another consideration is the extent and granularity of the Zero Trust system\u2019s activity logs. The more visibility administrators have across all devices and resources, the easier it will be to optimize network performance, adjust least privilege access policies, and spot potential security breaches.\"}),/*#__PURE__*/e(\"h2\",{children:\"What pricing model does the Zero Trust provider use?\"}),/*#__PURE__*/e(\"p\",{children:\"As an alternative to the traditional pricing models established by network hardware vendors, many Zero Trust solutions offer subscription-based services. This Zero Trust-as-a-Service approach converts network security spending from a capital expense to an operational expense. Budgets become easier to forecast and justify. Security budgets also become more flexible and responsive to business needs.\"}),/*#__PURE__*/e(\"h1\",{children:\"Why have companies been slow to adopt the Zero Trust model?\"}),/*#__PURE__*/t(\"p\",{children:[\"Google broke new ground by being the first Zero Trust implementation by a major enterprise. Unfortunately, the \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/google-beyondcorp\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"BeyondCorp\"})}),\" initiative also set expectations that Zero Trust implementations are complicated, time-consuming, and expensive.\"]}),/*#__PURE__*/t(\"p\",{children:[\"That was the only way it could have been at the time. Zero Trust only existed in academic research papers. No vendors offered Zero Trust solutions. Google had to start from scratch by re-engineering its entire \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/network-architecture\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"network architecture\"})}),\". The company had to rewrite its internal applications. Methods to support Zero Trust had to be developed for the Chrome operating system and browser. As a result, Google\u2019s effort was complicated, time-consuming, and expensive.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Google\u2019s pioneering case does not reflect the reality of Zero Trust today. Still, that and other concerns have \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/why-isnt-everyone-using-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"slowed the adoption of Zero Trust Network Access\"})}),\".\"]}),/*#__PURE__*/e(\"h2\",{children:\"Zero Trust is a framework, not a product\"}),/*#__PURE__*/t(\"p\",{children:[\"Ten years ago, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" did not exist beyond academia and consulting firms. The principles and concepts that define the framework were easy to understand. But that did not make Zero Trust a plug-and-play solution. It took Google nearly a decade to develop and fully deploy BeyondCorp. Few other companies have its resources.\"]}),/*#__PURE__*/e(\"p\",{children:\"It took time for vendors to respond to interest in Zero Trust. Some simply reworked and rebranded their existing technologies. Newer companies are Zero Trust-native and offer solutions designed from the ground up to support this modern approach to security.\"}),/*#__PURE__*/e(\"h2\",{children:\"Zero Trust complexity requires Zero Trust expertise\"}),/*#__PURE__*/e(\"p\",{children:\"Few companies want to follow Google\u2019s path by developing their own Zero Trust system. If a complete end-to-end solution did exist, however, many companies would hesitate before locking themselves into a single vendor. But stitching together a complete system using elements from multiple vendors requires internal expertise. That expertise must be developed as the migration happens.\"}),/*#__PURE__*/e(\"p\",{children:\"Simple, easily deployed Zero Trust solutions can accelerate this learning process. IT staff can run initial pilot projects and use the lessons learned to inform later phases of the Zero Trust migration.\"}),/*#__PURE__*/e(\"h2\",{children:\"Legacy systems and technical debt\"}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust solutions that require changes to resources make that migration more difficult. As discussed earlier, few companies have the luxury Google did when migrating to Zero Trust. They have legacy third-party systems and internally-developed applications that are not \u2014 and may never be \u2014 Zero Trust aware.\"}),/*#__PURE__*/t(\"p\",{children:[\"Deploying solutions based on \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"software-defined perimeters\"})}),\" avoids the need to change legacy systems. Zero Trust protections can be applied to existing resources without the expense of reprogramming existing systems.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Combining Zero Trust with digital transformation\"}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust was not the only trend shaping corporate computing over the past decade. The Industrial Internet of Things (IIoT) and other digital transformation technologies have transformed manufacturing, logistics, and other business processes.\"}),/*#__PURE__*/e(\"p\",{children:\"When these technologies have security systems, however, they are designed using the old trust-based paradigm. The same is true of the network technologies they run on. This can make IIoT systems vectors for cyberattacks unless covered by Zero Trust protections.\"}),/*#__PURE__*/e(\"h2\",{children:\"Priorities get in the way\"}),/*#__PURE__*/e(\"p\",{children:\"Migrating to Zero Trust, as with many security initiatives, compete with other business priorities for funding and executive commitment. The past few years of pandemic-generated disruption make the perceived cost and difficulty even harder to justify.\"}),/*#__PURE__*/t(\"p\",{children:[\"Yet, those same disruptions are also forcing business leaders to recognize the need for new approaches to security and access control. The myth that Zero Trust migration is complicated, time-consuming, and expensive is already fading. As more companies focus on cybersecurity, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"ZTNA\"})}),\" implementations will become more common.\"]}),/*#__PURE__*/e(\"h1\",{children:\"How can your organization implement ZTNA today?\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate simplifies ZTNA adoption by offering a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust solution\"})}),\" that organizations can deploy in minutes. Using software-defined perimeters, Twingate hides your critical resources not only from the public internet but from your private networks as well.\"]}),/*#__PURE__*/t(\"p\",{children:[\"The Twingate system evaluates \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/introducing-identity-first-networking\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"identity\"})}),\", \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/device-trust-in-a-zero-trust-world\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"device posture\"})}),\", and connection context to authenticate the user and inform role-based authorization processes. Only then will a direct, encrypted tunnel connect the user\u2019s device to the requested resource.\"]}),/*#__PURE__*/e(\"p\",{children:\"Twingate\u2019s software-based solution scales to meet the needs of small businesses and globe-spanning enterprises alike while providing a range of business benefits.\"}),/*#__PURE__*/e(\"h2\",{children:\"Identity-first networking\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/introducing-identity-first-networking\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"integrates with major IdP\u2019s\"})}),\" including Okta and Azure AD to work with your existing security stack. Compatible with \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"multi-factor authentication systems\"})}),\", Twingate explicitly verifies every access request and lets you apply role-based, least privilege access policies.\"]}),/*#__PURE__*/e(\"h2\",{children:\"No infrastructure changes required\"}),/*#__PURE__*/t(\"p\",{children:[\"As a software-only solution, Twingate lets you deploy a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust Network Access\"})}),\" pilot project within minutes. You do not need to change resource settings or modify your network. And your existing VPN solution can stay in place as you expand ZTNA further.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Improve network performance\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s Zero Trust solution frees bandwidth and reduces latency by eliminating bottlenecks and efficiently routing user traffic. Creating secure, direct connections between users and protected resources does away with \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"traditional VPN gateways\"})}),\". At the same time, split tunneling automatically routes non-essential traffic away from your network to the user\u2019s ISP.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Simple for users and administrators\"}),/*#__PURE__*/e(\"p\",{children:\"Users get a more responsive experience. A simple app store-like process lets users install the Twingate client themselves without changing operating system settings. Once installed, the client app runs seamlessly without the need for further user interaction.\"}),/*#__PURE__*/e(\"p\",{children:\"The simple user experience reduces help desk calls and ensures user compliance with security policies. A single console lets administrators onboard and offboard both remote and office users in the same system. Extensive identity-indexed logs give network administrators detailed insights into user and device activity.\"}),/*#__PURE__*/e(\"h1\",{children:\"Begin the journey to modern remote access security with Twingate\"}),/*#__PURE__*/e(\"p\",{children:\"The modern computing environment has become too complex for traditional remote access security tools. The user space and device space have expanded dramatically. Cloud adoption and X-as-a-Service business models have stretched the network perimeter beyond administrators\u2019 control. On top of these network management challenges, the sophistication of modern cybercrime makes the next big security breach inevitable.\"}),/*#__PURE__*/t(\"p\",{children:[\"Rather than patching 20th Century technologies and hoping for the best, organizations everywhere are turning to Zero Trust Network Access. Assuming your systems have already been breached, explicitly verifying every access request, and only granting \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/principle-of-least-privilege\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"least privilege access\"})}),\" provides a 21st Century framework for protecting your company\u2019s critical resources.\"]}),/*#__PURE__*/e(\"p\",{children:\"Unlike early attempts, migrating to Zero Trust does not have to be complicated, time-consuming, and expensive. Twingate\u2019s Zero Trust solution, based on software-defined perimeters, can get your project up and running in minutes. No need to change your existing network. No need to modify protected resources.\"}),/*#__PURE__*/t(\"p\",{children:[\"Find out how Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"simpler approach to Zero Trust Network Access\"})}),\" can make your networks more secure and performant. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=zero-trust-security\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact us\"})}),\" today to learn more.\"]})]})},{index:100,id:\"CEbP4J9T4\",[h]:!0,[d]:!1,[p]:\"Google BeyondCorp: Top 5 Limitations\",[u]:\"Google BeyondCorp\",[m]:\"google-beyondcorp\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2021-10-29T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/Ds7tKpb4kRUMA8vqsNhSlgAhc4o.png\",srcSet:\"https://framerusercontent.com/images/Ds7tKpb4kRUMA8vqsNhSlgAhc4o.png?scale-down-to=512 512w,https://framerusercontent.com/images/Ds7tKpb4kRUMA8vqsNhSlgAhc4o.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/Ds7tKpb4kRUMA8vqsNhSlgAhc4o.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/Ds7tKpb4kRUMA8vqsNhSlgAhc4o.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/Ds7tKpb4kRUMA8vqsNhSlgAhc4o.png\",srcSet:\"https://framerusercontent.com/images/Ds7tKpb4kRUMA8vqsNhSlgAhc4o.png?scale-down-to=512 512w,https://framerusercontent.com/images/Ds7tKpb4kRUMA8vqsNhSlgAhc4o.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/Ds7tKpb4kRUMA8vqsNhSlgAhc4o.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/Ds7tKpb4kRUMA8vqsNhSlgAhc4o.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"In 2014, Google revealed that it had begun a dramatic change in the way it secured and controlled access to its enterprise resources. The BeyondCorp initiative was the first time a large enterprise had implemented modern \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" concepts at scale. In the years since, Google inspired a new consensus within the security community that \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/why-isnt-everyone-using-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust is the new model\"})}),\" for enterprise network security that organizations should strive for as a way to mitigate the risks and shortcomings of the traditional fixed perimeter security model.\"]}),/*#__PURE__*/t(\"p\",{children:[\"In this article, we will review why Google launched the BeyondCorp initiative, how its \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control\"})}),\" system works, and what limitations organizations considering BeyondCorp should take into account. Fortunately, although BeyondCorp was the first Zero Trust implementation and was built for Google\u2019s scale, organizations have options that are easier to deploy and maintain.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Why did Google create BeyondCorp?\"}),/*#__PURE__*/t(\"p\",{children:[\"\u201CBeyondCorp\u201A is the umbrella term Google applied to its Zero Trust network architecture. By redefining the perimeter from the network to individual users, the company \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"eliminated its traditional VPN-based approach\"})}),\" to remote access. Over the course of a decade, BeyondCorp evolved into a complete, secure access control system. Remote or on-premises, the BeyondCorp system \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/principle-of-least-privilege\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authenticates and authorizes users\u2019 access to Google resources\"})}),\".\"]}),/*#__PURE__*/t(\"p\",{children:[\"A 2009 cyber attack dubbed \u201C\",/*#__PURE__*/e(s,{href:\"https://en.wikipedia.org/wiki/Operation_Aurora\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Operation Aurora\"})}),\"\u201A was the initial spark that drove Google to change its security model. A threat actor with ties to China\u2019s People\u2019s Liberation Army launched a campaign targeting many western companies. In \",/*#__PURE__*/e(s,{href:\"https://googleblog.blogspot.com/2010/01/new-approach-to-china.html\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Google\u2019s case\"})}),\", the hackers\u2019 targets were the Gmail accounts of human rights activists in China, Europe, and the United States. The attack contributed to Google\u2019s decision to withdraw from the China market and set in motion a top-down review of the company\u2019s security and access control strategies.\"]}),/*#__PURE__*/e(\"p\",{children:\"Google assessed that the traditional secure perimeter had become inherently unsecurable. The secure perimeter approach assumes companies have trusted employees working on trusted networks behind layered defenses that keep threats at bay. None of this is true anymore thanks to several trends:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Mobile workforces.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"More varied device usage.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Migration to cloud-based resources.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"More sophisticated threats.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"As a result, the perimeter extends too far beyond the privileged network for organizations to adequately protect. Moreover, companies can no longer assume that the networks inside the perimeter are safe. Google launched the BeyondCorp project to replace the old paradigm with a new philosophy for network security.\"}),/*#__PURE__*/e(\"h1\",{children:\"How does Google BeyondCorp work?\"}),/*#__PURE__*/e(\"p\",{children:\"BeyondCorp is an implementation of Zero Trust principles that leverages Google\u2019s cloud-based network architecture. The company eliminated its private, privileged network and the distinction between remote and on-site access. In its place, BeyondCorp operates on a new set of principles:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Source networks do not influence user access.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Access is based on the context of users and devices.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"All access must be \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authenticated, authorized\"})}),\", and encrypted.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"All Google users now access the company\u2019s resources over the internet. To make this possible, the BeyondCorp system relies on six elements:\"}),/*#__PURE__*/e(\"h2\",{children:\"Device management and identification\"}),/*#__PURE__*/e(\"p\",{children:\"Google only allows users to access company resources through company-managed Chromebooks or devices running the Chrome browser. This lets the company maintain a device inventory database and ensure that all devices are kept updated.\"}),/*#__PURE__*/e(\"h2\",{children:\"User identification\"}),/*#__PURE__*/e(\"p\",{children:\"A user and group database, combined with Google\u2019s internally-developed Single Sign-On system, lets the company issue short-duration tokens that define each user\u2019s current role.\"}),/*#__PURE__*/e(\"h2\",{children:\"Unprivileged networks\"}),/*#__PURE__*/e(\"p\",{children:\"BeyondCorp replaced Google\u2019s privileged, on-premises networks with a more limited network that only connects to the internet. All wired and wireless devices must pass 802.1x authentication to join the unprivileged network.\"}),/*#__PURE__*/e(\"h2\",{children:\"Internet-facing applications and resources\"}),/*#__PURE__*/e(\"p\",{children:\"Whether connected to the unprivileged network or the internet, users do not access resources through a Google network. With the BeyondCorp model, Google uses internet-facing proxies that point to its enterprise applications. These proxies have public DNS entries, making them accessible from anywhere by any Google user.\"}),/*#__PURE__*/e(\"h2\",{children:\"Inventory access control\"}),/*#__PURE__*/e(\"p\",{children:\"Once users are authenticated, they do not automatically get access. The BeyondCorp access control engine uses several variables to infer a level of trust that it assigns to each user and device. Policies based on workgroup, role, and trust level determine whether \u2014 and to what degree \u2014 the user can access a resource.\"}),/*#__PURE__*/t(\"p\",{children:[\"By replacing VPN and other secure perimeter technologies with an approach based on \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\", BeyondCorp delivered several benefits to Google:\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Leverages Google\u2019s cloud infrastructure for scalable, global availability.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Unified \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control\"})}),\" for all users and resources whether on-premises or in the cloud.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Google administrators get more visibility over user and device activity.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"BeyondCorp\u2019s \u201Cit just works\u201A solution is \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/zero-trust-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"easier for users than VPN\"})}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"An improved security posture reduces Google\u2019s vulnerability to constant cyberattacks.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"However, this was not an overnight success. Google launched the BeyondCorp initiative in 2011 and spent most of the decade implementing it across its global operations.\"}),/*#__PURE__*/e(\"h1\",{children:\"What was the reception to Google BeyondCorp?\"}),/*#__PURE__*/t(\"p\",{children:[\"A 2014 \",/*#__PURE__*/e(s,{href:\"https://www.usenix.org/publications/login/dec14/ward\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Google research paper\"})}),\" published in USENIX\u2019s online magazine introduced BeyondCorp to the computing community. The concept of \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" had been floating around for years. Forrester analyst John Kindervag had popularized Zero Trust Architectures, but BeyondCorp was the first time a major company had committed to making Zero Trust happen at scale.\"]}),/*#__PURE__*/t(\"p\",{children:[\"As Google \",/*#__PURE__*/e(s,{href:\"https://research.google/pubs/pub44860\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"shared BeyondCorp\u2019s progress\"})}),\" with the community, the idea that Zero Trust could solve the growing weaknesses of secure perimeter approaches solidified. Vendors that had focused on VPN and similar technologies began offering Zero Trust solutions. CISOs began considering Zero Trust as a path forward for their security strategies. Most recently, the Biden Administration has directed all U.S. federal agencies to \",/*#__PURE__*/e(s,{href:\"https://www.whitehouse.gov/briefing-room/presidential-actions/2021/05/12/executive-order-on-improving-the-nations-cybersecurity\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"adopt Zero Trust\"})}),\".\"]}),/*#__PURE__*/e(\"h1\",{children:\"Main limitations of Google BeyondCorp\"}),/*#__PURE__*/t(\"p\",{children:[\"As Zero Trust establishes itself in enterprise security, BeyondCorp\u2019s role remains an open question. Google now offers a product, \",/*#__PURE__*/e(s,{href:\"https://cloud.google.com/beyondcorp-enterprise\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"BeyondCorp Enterprise\"})}),\", that lets \u201Cvirtually any organization\u201A adopt its flavor of Zero Trust. But many companies will find philosophical and practical disadvantages to adopting Zero Trust with BeyondCorp:\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Relevance of a cloud-first model.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Concerns about internet visibility.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Compatibility with legacy systems.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Google Chrome dependence.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Google Cloud dependence.\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"Relevance of a cloud-first model\"}),/*#__PURE__*/e(\"p\",{children:\"Google\u2019s infrastructure and corporate culture were already cloud-centric. By moving every application to the cloud and delivering access over the internet, BeyondCorp simply accelerated Google along an existing trajectory.\"}),/*#__PURE__*/e(\"p\",{children:\"Other companies rely on a more heterogeneous mix of systems. A similar cloud-centric commitment may never be possible. Financial firms, for example, are not likely to replace their big iron mainframes and on-premises legacy systems with cloud apps anytime soon.\"}),/*#__PURE__*/e(\"h2\",{children:\"Concerns about internet visibility\"}),/*#__PURE__*/e(\"p\",{children:\"Google\u2019s complete, end-to-end control over its BeyondCorp implementation makes it easier to put applications behind internet-facing proxies. But anything with a DNS entry is visible to cybercriminals. That will be a step too far for many security professionals, especially those without the security resources of Google.\"}),/*#__PURE__*/e(\"h2\",{children:\"Compatibility with legacy systems\"}),/*#__PURE__*/e(\"p\",{children:\"Since Google\u2019s Single Sign-On service and enterprise apps are largely developed in-house, its developers could adapt these systems to Zero Trust operating models. Many companies do not have the same resources or development talent at their disposal. In addition, most companies rely on third-party and legacy systems that may not easily integrate with BeyondCorp.\"}),/*#__PURE__*/e(\"h2\",{children:\"Google Chrome dependence\"}),/*#__PURE__*/e(\"p\",{children:\"Google makes operating systems, mobile devices, and browsers which made it easy to create a client-side experience based on the Chrome platform. Furthermore, BeyondCorp required Google\u2019s employees to use managed Chromebooks.\"}),/*#__PURE__*/e(\"p\",{children:\"Most companies, however, have much more diverse ecosystems with fleets of Windows, macOS, and Linux devices. BYOD policies complicate matters even further. Although BeyondCorp Enterprise will work on other devices through the Chrome browser, many companies standardize on other browsers.\"}),/*#__PURE__*/e(\"h2\",{children:\"Google Cloud dependence\"}),/*#__PURE__*/e(\"p\",{children:\"That BeyondCorp Enterprise only works on Google Cloud could be a challenge for many companies. Although Google promises integrations and support that let BeyondCorp work with on-premises and non-Google cloud services, Google Cloud\u2019s single-digit share in the cloud infrastructure market puts it at a disadvantage.\"}),/*#__PURE__*/e(\"h1\",{children:\"Where is the industry headed today?\"}),/*#__PURE__*/e(\"p\",{children:\"In Google\u2019s defense, it was creating a blank-sheet design at a time when Zero Trust was largely theoretical. To solve its security problems at its global scale, Google naturally based BeyondCorp on its own infrastructure. Today, organizations of all sizes have more options.\"}),/*#__PURE__*/t(\"p\",{children:[\"Modern Zero Trust solutions such as Twingate are proven technologies. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate\u2019s approach to Zero Trust\"})}),\" uses \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"software-defined perimeters\"})}),\" to hide resources from view on private networks as well as the internet. As a software-based solution, companies can implement Twingate without replacing their existing network infrastructure. In fact, clients have deployed Twingate globally in as little as fifteen minutes.\"]}),/*#__PURE__*/e(\"p\",{children:\"Twingate is also easy to use and maintain. Users can install Twingate and get up and running without any IT support through a consumer-like experience. An intuitive administrative console makes it simple to quickly onboard and offboard users, and an API lets these and other common management tasks be automated.\"}),/*#__PURE__*/e(\"h1\",{children:\"Go beyond secure perimeters with Twingate Zero Trust solutions\"}),/*#__PURE__*/e(\"p\",{children:\"Google\u2019s BeyondCorp initiative broke new ground by proving a global enterprise could implement Zero Trust. A deep bench of researchers and developers, combined with its own cloud and device infrastructure, let Google create from scratch a replacement for traditional secure perimeter technologies.\"}),/*#__PURE__*/t(\"p\",{children:[\"Thanks to modern \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust solutions like Twingate\"})}),\", overhauling an entire network architecture is not necessary. Organizations can deploy Twingate quickly to start benefiting from Zero Trust\u2019s easier, more secure access control. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=google-beyondcorp\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact Twingate\"})}),\" today to learn more.\"]})]})},{index:101,id:\"hGKU9rnlR\",[h]:!0,[d]:!1,[p]:\"Zero Trust vs. VPNs: It\u2019s Time to Kill Your VPN\",[u]:\"Zero Trust vs. VPNs\",[m]:\"zero-trust-vpn\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2021-10-26T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/iGHVsWjpTmCDlLuyKDOJcteODU.png\",srcSet:\"https://framerusercontent.com/images/iGHVsWjpTmCDlLuyKDOJcteODU.png?scale-down-to=512 512w,https://framerusercontent.com/images/iGHVsWjpTmCDlLuyKDOJcteODU.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/iGHVsWjpTmCDlLuyKDOJcteODU.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/iGHVsWjpTmCDlLuyKDOJcteODU.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/iGHVsWjpTmCDlLuyKDOJcteODU.png\",srcSet:\"https://framerusercontent.com/images/iGHVsWjpTmCDlLuyKDOJcteODU.png?scale-down-to=512 512w,https://framerusercontent.com/images/iGHVsWjpTmCDlLuyKDOJcteODU.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/iGHVsWjpTmCDlLuyKDOJcteODU.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/iGHVsWjpTmCDlLuyKDOJcteODU.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"One of the biggest threats to network security is a company\u2019s own Virtual Private Network (VPN). Based on old network architectures, VPN\u2019s assumption of a secure fixed perimeter surrounding a trusted network is a dated design pattern that undermines security. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" is a framework of security concepts that are better suited to the way business works today.\"]}),/*#__PURE__*/e(\"p\",{children:\"In this article, we will explain how Zero Trust is a better security design paradigm that reverses the assumptions implicit in VPN and similar legacy technologies. Changing the way we look at access controls creates benefits beyond security. We will share these benefits and explain how implementing Zero Trust without additional infrastructure can be a fast, affordable path to improved security.\"}),/*#__PURE__*/e(\"h1\",{children:\"What is Zero Trust?\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/why-isnt-everyone-using-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" is a modern concept of information security based on the assumption that trust can never be implicit.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Within a Zero Trust framework, no user, no device, and no network can be automatically trusted with access to company resources. This mindset relies on three core principles: assume breach, verify explicitly, and \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/principle-of-least-privilege\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"least privilege access\"})}),\". The Zero Trust framework is the opposite design pattern to the VPN. The fact that a local area network is physically in an office does not mean it has not been compromised. Access requests may arrive at the network from the CEO\u2019s laptop, but is it the CEO sending them? Clearly the VPN approach of trust everyone inside the \u201Cmoat\u201A is an old pattern that isn\u2019t recommended for today\u2019s distributed work everywhere and access anything world.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Assume breach\"}),/*#__PURE__*/t(\"p\",{children:[\"The scale and precision of cyberattacks make it impossible to assume your networks are safe. Every day, criminal syndicates and script kiddies alike scan every exposed \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/rdp-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"RDP and VPN\"})}),\" port on the public internet. Spear-phishing and other social engineering attacks target the credentials of specific employees.\"]}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust\u2019s principle of \u201Cassume breach\u201A accepts the fact that, no matter how extensive your security system may be, hackers have already penetrated and are roaming freely on users\u2019 systems and your network. As a result, every connection request is a potential threat until proven otherwise.\"}),/*#__PURE__*/e(\"h2\",{children:\"Verify explicitly\"}),/*#__PURE__*/e(\"p\",{children:\"Verification cannot be a one-time event. One click on a malicious file can compromise a user\u2019s system at any time. Employees wanting a change in scenery may leave their home office to work in a coffee shop. Any change in the context of a user\u2019s access could open a gap in an organization\u2019s security.\"}),/*#__PURE__*/t(\"p\",{children:[\"Zero Trust\u2019s principle of \u201Cverify explicitly\u201A requires verifying every attempt to access resources. That verification should be based on the \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/introducing-identity-first-networking\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"user\u2019s identity\"})}),\", the \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/device-trust-in-a-zero-trust-world\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"device\u2019s posture\"})}),\", and other contextual factors.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Least privilege\"}),/*#__PURE__*/e(\"p\",{children:\"Over-permissioned employees, particularly network administrators, are cybercriminals\u2019 highest-value targets. The more access a compromised user has, the easier it is for criminals to move laterally through a network.\"}),/*#__PURE__*/t(\"p\",{children:[\"Zero Trust\u2019s principle of \u201C\",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/principle-of-least-privilege\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"least privilege\"})}),\"\u201A limits users\u2019 access to only the resources they need to do their jobs. Zero Trust policies may also limit their degree of access based on the context of their connection.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Where did Zero Trust come from?\"}),/*#__PURE__*/t(\"p\",{children:[\"Some of the earliest research into the role of trust in artificial systems was performed by Stephen Paul Marsh in 1994. Now a professor at the University of Ontario Institute of Technology, Marsh coined the term \u201C\",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"zero trust\"})}),\"\u201A and formalized a mathematical approach to evaluating trust from a system perspective.\"]}),/*#__PURE__*/e(\"p\",{children:\"By 2010, thinking about trust\u2019s role in network security had reached a tipping point. Forrester analyst John Kindervag proposed an alternative to traditional concepts of the secure perimeter based on Zero Trust. Within a few years, Google began applying those concepts in its \u201CBeyondCorp\u201A security initiative.\"}),/*#__PURE__*/e(\"p\",{children:\"The pervasive threat from cybercriminals and the changing nature of networking have led security professionals to see Zero Trust as the most promising way to protect information assets. That growing consensus came into sharp focus in early 2021 when the Biden Administration ordered all federal agencies to start adopting a Zero Trust security model.\"}),/*#__PURE__*/e(\"h1\",{children:\"What is a VPN?\"}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust stands in stark contrast to traditional approaches based on the concept of the secure fixed perimeter. Best exemplified by Virtual Private Network remote access technologies, vulnerabilities in the secure perimeter paradigm are the reasons security breaches are so widespread.\"}),/*#__PURE__*/e(\"p\",{children:\"VPNs were originally created as an internet-based wide-area networking solution. Cheaper than the leased line services telecom companies offered, VPN let small and mid-sized businesses link satellite offices and other facilities to their data centers. The technology created an encrypted tunnel over the internet between VPN gateways at the two locations. Over time, the VPN gateway evolved into a path for remote employees to access resources on the company network.\"}),/*#__PURE__*/e(\"p\",{children:\"Under the old security model, the VPN gateway was a portal through the company\u2019s secure perimeter. Much like the way a moat protected a medieval castle, the secure perimeter protected a company\u2019s network and the attached resources. The secure perimeter model assumes everything outside could be a threat and everything inside could be trusted. The VPN gateway verified remote users\u2019 identities and allowed them through to the protected network.\"}),/*#__PURE__*/e(\"h1\",{children:\"Why is Zero Trust a superior solution to VPNs?\"}),/*#__PURE__*/e(\"p\",{children:\"Assumptions of trust have made VPN itself the greatest security risk. Assuming that only trusted users need the information, for example, VPN gateways publish their IP address and device identifiers to the open internet where anyone can see them. Once a VPN gateway has been compromised, cybercriminals can traverse the network within just like any trusted user.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN creates other issues for network administrators\"})}),\" such as the way it undermines network efficiency. Regardless of the resource\u2019s location, all traffic from remote users passes through the VPN gateway by default. The resulting impact on network performance creates poor user experiences that could undermine security compliance: some users simply switch off the VPN because it is slowing down their connection.\"]}),/*#__PURE__*/e(\"img\",{alt:\"Zero Trust vs. VPN Comparison Table\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,FWd1aF94cwwWDrqY3WovX9deouM.png?originalFilename=zero-trust-vpn-comparison-table.png\",src:\"https://framerusercontent.com/images/FWd1aF94cwwWDrqY3WovX9deouM.png\",srcSet:\"https://framerusercontent.com/images/FWd1aF94cwwWDrqY3WovX9deouM.png?scale-down-to=512 512w,https://framerusercontent.com/images/FWd1aF94cwwWDrqY3WovX9deouM.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust vs. VPN Comparison Table\"}),/*#__PURE__*/e(\"h2\",{children:\"Zero Trust benefits\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust solutions\"})}),\", such as those offered by Twingate, eliminate the security and manageability issues of technologies like VPN. Among the benefits Twingate Zero Trust solutions deliver:\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Dramatically smaller attack surfaces.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Limited lateral spread of successful breaches.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Faster deployment and scaling without additional infrastructure.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Unification of all security and access control policies.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Improved network performance.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Improved user experiences.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Easier security compliance.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"In addition, Zero Trust deployments are not all-or-nothing propositions. Taking a phased approach lets you start with less critical resources. Later phases can leverage the lessons learned to protect more sensitive resources.\"}),/*#__PURE__*/e(\"h1\",{children:\"What trends will make VPNs difficult to maintain in the future?\"}),/*#__PURE__*/e(\"p\",{children:\"VPN will only become more difficult to manage in the coming years. The secure perimeter model was developed at a time when companies had fixed perimeters surrounding on-premises, proprietary resources. Furthermore, VPN and other remote access technologies only needed to support the handful of employees working remotely.\"}),/*#__PURE__*/t(\"p\",{children:[\"Today\u2019s world is vastly different. The perimeter itself means less and less. Companies are replacing on-prem resources with cloud-hosted solutions. B2B collaboration and on-demand workforces require \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/third-party-access-using-twingate\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"granting access to non-employees\"})}),\". System administrators have less control over connected devices as BYOD policies become the norm.\"]}),/*#__PURE__*/e(\"p\",{children:\"But it has been the sudden shift to work-from-home that has pushed VPN to the breaking point. The technology does not scale affordably. Throwing more gateways at the problem is an expensive quick fix that adds to network administrators\u2019 maintenance burden.\"}),/*#__PURE__*/e(\"h1\",{children:\"How can your organization implement Zero Trust today?\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate uses \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"software-defined perimeters\"})}),\" to implement Zero Trust security and access control. Twingate\u2019s software solution does not require additional infrastructure or changes to your existing network. Once implemented, Twingate makes breaches much less effective by hiding each protected resource from anyone on the network who doesn\u2019t need to see them.\"]}),/*#__PURE__*/e(\"p\",{children:\"Deploying the first phase of your Twingate implementation is fast and seamless. Within 15 minutes, you can protect resources on your network and in the cloud with modern Zero Trust practices. Simple administrative tools and \u201Cset and forget\u201A client applications make Twingate\u2019s solution as easy to manage as it is to use.\"}),/*#__PURE__*/e(\"h1\",{children:\"Protect your resources with Zero Trust today\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" is a fundamental change in the way we look at secure access. Rather than defending trusted resources and networks from outside attacks, Zero Trust recognizes that there is no \u201Coutside\u201A. Networks and endpoints can be compromised at any time.\"]}),/*#__PURE__*/t(\"p\",{children:[\"This modern approach to secure access assumes that breaches already exist. With that assumption, the only way to protect a resource is by verifying explicitly and granting \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/principle-of-least-privilege\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"least privilege access\"})}),\".\"]}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s software-based solution provides a fast, easy, and effective way to start implementing Zero Trust within your organization. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=zero-trust-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact us\"})}),\" to learn more.\"]})]})},{index:102,id:\"MSuboBGB3\",[h]:!0,[d]:!1,[p]:\"Principle of Least Privilege: How to Stop Hackers in Their Tracks\",[u]:\"Principle of Least Privilege\",[m]:\"principle-of-least-privilege\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2021-10-22T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/5yTAqerG5FXKYE7LrMm88e0cLj8.png\",srcSet:\"https://framerusercontent.com/images/5yTAqerG5FXKYE7LrMm88e0cLj8.png?scale-down-to=512 512w,https://framerusercontent.com/images/5yTAqerG5FXKYE7LrMm88e0cLj8.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/5yTAqerG5FXKYE7LrMm88e0cLj8.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/5yTAqerG5FXKYE7LrMm88e0cLj8.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/5yTAqerG5FXKYE7LrMm88e0cLj8.png\",srcSet:\"https://framerusercontent.com/images/5yTAqerG5FXKYE7LrMm88e0cLj8.png?scale-down-to=512 512w,https://framerusercontent.com/images/5yTAqerG5FXKYE7LrMm88e0cLj8.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/5yTAqerG5FXKYE7LrMm88e0cLj8.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/5yTAqerG5FXKYE7LrMm88e0cLj8.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Cybercriminals love user credentials. Compromising a user\u2019s account can give them the freedom to roam a network undetected. Applying the principle of least privilege limits the damage these cyberattacks can cause. It makes defenses harder to penetrate and makes successful breaches less effective. Even though the concept of least privilege has been around for generations as a best practice, the severity of today\u2019s cyberthreats is making it a necessity for modern security and \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control\"})}),\". While simple in concept, implementation of this ideal in practice often proves to be challenging.\"]}),/*#__PURE__*/e(\"p\",{children:\"In this article, we want to introduce you to the principle of least privilege and explain how it blunts cyberattacks. We will explain the benefits least privilege offers and provide some best practices for deploying least privilege in your organization.\"}),/*#__PURE__*/e(\"h1\",{children:\"What is the principle of least privilege?\"}),/*#__PURE__*/e(\"p\",{children:\"The principle of least privilege limits any entity in an information system to accessing the resources needed to perform authorized functions while that need exists. The entity could be a user, the user\u2019s device, or another resource.\"}),/*#__PURE__*/t(\"p\",{children:[\"In the context of user access, least privilege gives people everything they need to get their jobs done only while they are authorized to do that job. Often paired with \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-models\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"role-based access control\"})}),\", least privilege blocks any unauthorized entity (or an authorized entity accessing resources at unauthorized times). With least privilege, the impact of cyberattacks doesn\u2019t translate across resources or entities.\"]}),/*#__PURE__*/e(\"h2\",{children:\"The origins of least privilege\"}),/*#__PURE__*/t(\"p\",{children:[\"The use of least privilege access dates to the Multics operating system\u2019s development in the 1960s. In addition to other foundational concepts in computer science, the Multics project was the first operating system to make the controlled sharing of information a design requirement. In an \",/*#__PURE__*/e(s,{href:\"https://doi.org/10.1145/361011.361067\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"overview of Multic\u2019s access control design\"})}),\", MIT professor Jerome Saltzer explained that by minimizing the potential interactions in the system, Multics\u2019 use of least access principles prevented unintentional or malicious activity.\"]}),/*#__PURE__*/t(\"p\",{children:[\"The US Department of Defense and the National Institute of Standards and Technology advanced least privilege in the following decades. By the 2010s, Google was incorporating least privilege through its \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" security system, BeyondCorp.\"]}),/*#__PURE__*/t(\"p\",{children:[\"In response to today\u2019s cybersecurity environment, the principle of least privilege is seen as essential to protecting information. All federal agencies must use least privilege to assign access permissions. Private companies are using least privilege to comply with regulations such as HIPAA and \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sox-compliance\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Sarbanes-Oxley\"})}),\".\"]}),/*#__PURE__*/e(\"h1\",{children:\"How do cybercriminals target companies where employees\u2019 access rights are overprivileged?\"}),/*#__PURE__*/t(\"p\",{children:[\"The threat environment keeps getting worse. In the early months of the coronavirus pandemic, researchers saw \",/*#__PURE__*/e(s,{href:\"https://blog.barracuda.com/2020/03/26/threat-spotlight-coronavirus-related-phishing\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"spear-phishing attacks rise by nearly 700%\"})}),\". User credentials are the main target of these attacks because they get a cybercriminal\u2019s foot in the door. Once in a system, even one with no value, criminals can work their way through a network, escalating their access to the point where they can do real damage.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Privileged credentials, in particular, are highly sought after by cybercriminals. These are the \u201Ckeys to the kingdom.\u201A Privileged access lets criminals do whatever they want on a company\u2019s network. More than half of organizations in a recent survey reported the \",/*#__PURE__*/e(s,{href:\"https://www.prnewswire.com/news-releases/more-than-half-of-us-companies-hit-with-privileged-credential-theft-insider-threats-in-last-year-301294644.html\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"theft of privileged credentials\"})}),\" \u2014 most of which resulted in critical system breaches. Although good security hygiene will stop many of these attacks, good security hygiene often seems more like the exception than the rule.\"]}),/*#__PURE__*/e(\"h2\",{children:\"SolarWinds supply chain attack\"}),/*#__PURE__*/t(\"p\",{children:[\"In 2020, network management company SolarWinds was the victim \u2014 and channel \u2014 of a cyberattack that impacted businesses and governments around the world. In the aftermath, reports revealed \",/*#__PURE__*/e(s,{href:\"https://threatpost.com/solarwinds-default-password-access-sales/162327\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"many security weaknesses\"})}),\" including:\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"SolarWinds access credentials being sold on cybercriminal forums as early as 2017.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"SolarWinds advised customers to remove its Orion software from antivirus scans.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Update server passwords (\u201Csolarwinds123\u201A) hardcoded in the Orion software.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"But what made the hack devastating is that SolarWinds Orion required global administrator privileges to function. The attackers may have penetrated networks at the US Treasury Department, NATO, Boeing, and as many as 18,000 other organizations.\"}),/*#__PURE__*/e(\"h2\",{children:\"UN single-factor authentication attack\"}),/*#__PURE__*/t(\"p\",{children:[\"This year, a user of the United Nations\u2019 Umoja project management system did not enable \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"two-factor authentication\"})}),\". Cybercriminals reportedly \",/*#__PURE__*/e(s,{href:\"https://www.bloomberg.com/news/articles/2021-09-09/united-nations-computers-breached-by-hackers-earlier-this-year\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"penetrated the UN\u2019s networks\"})}),\" for at least five months using the stolen credentials. Other UN credentials reportedly compromised by this attack have appeared on cybercrime marketplaces.\"]}),/*#__PURE__*/e(\"h1\",{children:\"What are the benefits of implementing the principle of least privilege?\"}),/*#__PURE__*/e(\"p\",{children:\"Traditional security tools are failing to head off attacks like these. Applying the principle of least privilege to your access control policies strengthens your network defenses and mitigates damage.\"}),/*#__PURE__*/e(\"h2\",{children:\"Smaller attack surface\"}),/*#__PURE__*/e(\"p\",{children:\"Restricting the scope of users\u2019 access permissions, especially administrators\u2019 permissions, reduces the potential vectors cybercriminals can use to penetrate network defenses.\"}),/*#__PURE__*/e(\"p\",{children:\"Understaffing in IT departments leads to over-credentialing, account sharing, and other bad security habits. Enforcing least privilege reduces the number of users with broad access credentials.\"}),/*#__PURE__*/e(\"h2\",{children:\"Minimized blast radius\"}),/*#__PURE__*/e(\"p\",{children:\"Least privilege helps to block attempts to move laterally across a network. A successful security breach may gain access to one resource, but its ability to spread is constrained.\"}),/*#__PURE__*/e(\"p\",{children:\"When a network administrator falls victim to a spear-phishing email, damage is significantly limited if they are using a standard profile that has no privileges beyond email and productivity apps. Requiring separate credentials for the administrator\u2019s access to network infrastructure makes the breach less likely to spread.\"}),/*#__PURE__*/e(\"h2\",{children:\"Faster attack response\"}),/*#__PURE__*/t(\"p\",{children:[\"The smaller attack surface and constraints on lateral movement slow a cybercriminal\u2019s penetration of the network. Suspicious activity becomes easier to identify, especially when using least privilege with \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/why-isnt-everyone-using-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust systems\"})}),\". Security administrators have enough time to identify suspicious behavior and stop the attack before it can do more damage.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Easier compliance\"}),/*#__PURE__*/t(\"p\",{children:[\"Across many industries, regulations require enterprises to demonstrate their control over access to protected data. Many companies have adopted the principle of least privilege to implement and document this control. What they found is that \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sox-compliance\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"least privilege makes compliance with Sarbanes-Oxley\"})}),\" and other regulations much easier.\"]}),/*#__PURE__*/e(\"h1\",{children:\"What are the best practices for implementing least privilege?\"}),/*#__PURE__*/t(\"p\",{children:[\"Changing your \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control strategy\"})}),\" to implement the principle of least privilege is not a trivial task. But the security and compliance benefits make the process worthwhile. To ensure a smooth transition, you should consider these best practices.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Clean up privileges\"}),/*#__PURE__*/e(\"p\",{children:\"This is something you can start doing now. Audit the state of your organization\u2019s permissions and begin tightening user access. Nobody needs privileged device credentials if they\u2019re only using email, PowerPoint, or Facebook. Remove administrator access to all Windows or macOS devices \u2014 even for your IT staff.\"}),/*#__PURE__*/e(\"p\",{children:\"Change your IT staff\u2019s bad habits. Shut down all shared accounts and issue separate credentials to each user. At the same time, limit the scope of each privileged credential to specific resources.\"}),/*#__PURE__*/e(\"p\",{children:\"Review access lists periodically. Set up a standing meeting with the right group of people to regularly review access lists and prune back unnecessary access rights.\"}),/*#__PURE__*/e(\"h2\",{children:\"Create a segmented architecture\"}),/*#__PURE__*/t(\"p\",{children:[\"Segment your network so lateral moves require new \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authentications and authorizations\"})}),\" based on least privilege. The smaller you make each segment, the less exposed your systems will be to breaches.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Of course, traditional network infrastructure makes micro-segmentation expensive. Look to modern Zero Trust solutions that deploy \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"software-defined perimeters\"})}),\" around each resource.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Ignore the perimeter\"}),/*#__PURE__*/e(\"p\",{children:\"The old way of looking at security tries to protect resources inside the perimeter from threats outside the perimeter. But there is no fixed perimeter in today\u2019s cloud-connected, remotely-accessed world.\"}),/*#__PURE__*/t(\"p\",{children:[\"Apply the principle of least privilege with all your resources whether on-premises or in the cloud. Be sure to apply these policies to \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/third-party-access-using-twingate\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"freelancers, contractors, and anyone else\"})}),\" who connects to any part of your network.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Grant ephemeral, just-in-time credentials\"}),/*#__PURE__*/e(\"p\",{children:\"Besides limiting the scope of access permissions, the principle of least privilege also means limiting their duration. Replace just-in-case access policies with just-in-time policies that grant credentials when the user truly needs them.\"}),/*#__PURE__*/t(\"p\",{children:[\"Revoke that access as soon as possible. Set timeout criteria, cap session lengths, and terminate credentials when sessions end. You can go further by monitoring \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/device-trust-in-a-zero-trust-world\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"device posture\"})}),\" and other variables. Any change in context should invalidate the authorization and cut off the user\u2019s access.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\"-based network access technologies can help by time-limiting authorizations to individual sessions and requiring re-authentication and re-authorization for each new session.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Use your activity logs\"}),/*#__PURE__*/e(\"p\",{children:\"Security and access control systems generate detailed logs of user and device activity. Monitor that activity and flag changes in behavior that could be signs of a security breach. You can also use the activity logs to refine least privilege policies while improving user productivity.\"}),/*#__PURE__*/e(\"h1\",{children:\"How can your organization implement least privilege today?\"}),/*#__PURE__*/t(\"p\",{children:[\"Implementing least privilege access does not need to be difficult or expensive. You can deploy Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust solution\"})}),\" in as little as a quarter of an hour. We use \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"software-defined perimeters\"})}),\" to protect your on-premises and cloud resources without additional network infrastructure.\"]}),/*#__PURE__*/e(\"p\",{children:\"Twingate solutions let you apply role-based, least privilege access policies quickly and seamlessly. Whether your users work on-site or from home, are employees or contractors, you can enforce access policies consistently across your organization.\"}),/*#__PURE__*/e(\"h1\",{children:\"Deploy least privilege access and cut hackers off at the source\"}),/*#__PURE__*/e(\"p\",{children:\"The principle of least privilege may have been around for decades, but now its time has come. User credentials \u2014 especially privileged credentials \u2014 are the easiest vector for more pervasive and damaging cyberattacks. By constraining user access to the resources they truly need when they truly need it, least privilege reduces your exposure to malware and data breaches.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=principle-of-least-privilege\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact us\"})}),\" to find out how quickly you can make it easier to apply the principle of least privilege when configuring access rights for all your critical resources.\"]})]})},{index:103,id:\"vfbzHI2aQ\",[h]:!0,[d]:!1,[p]:\"ZTNA: What is Zero Trust Network Access?\",[u]:\"What is ZTNA?\",[m]:\"ztna\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2021-10-19T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/yTd4PWLcbx4L3FpFVtOCmvN90k.png\",srcSet:\"https://framerusercontent.com/images/yTd4PWLcbx4L3FpFVtOCmvN90k.png?scale-down-to=512 512w,https://framerusercontent.com/images/yTd4PWLcbx4L3FpFVtOCmvN90k.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/yTd4PWLcbx4L3FpFVtOCmvN90k.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/yTd4PWLcbx4L3FpFVtOCmvN90k.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/yTd4PWLcbx4L3FpFVtOCmvN90k.png\",srcSet:\"https://framerusercontent.com/images/yTd4PWLcbx4L3FpFVtOCmvN90k.png?scale-down-to=512 512w,https://framerusercontent.com/images/yTd4PWLcbx4L3FpFVtOCmvN90k.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/yTd4PWLcbx4L3FpFVtOCmvN90k.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/yTd4PWLcbx4L3FpFVtOCmvN90k.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust Network Access (ZTNA)\"})}),\" is the future of network security and access control. Our old strategies for defending networks at the perimeter are failing. The very concept of the fixed network perimeter is fading away. Resources, users, devices \u2014 and threats \u2014 could be anywhere, on any network. ZTNA transforms network access control to address this modern reality.\"]}),/*#__PURE__*/e(\"p\",{children:\"We want to help you understand ZTNA, its benefits, and its use cases. We also want to bust one of the myths that have kept organizations from adopting Zero Trust practices: that ZTNA is too difficult, too confusing, or too time-consuming to do right (or at all).\"}),/*#__PURE__*/e(\"h1\",{children:\"What does ZTNA mean?\"}),/*#__PURE__*/t(\"p\",{children:[\"Zero Trust Network Access is a framework of principles and concepts that assumes every user, device, or network may already be compromised. ZTNA eliminates the network-centric perspective of fixating on securing a fixed network perimeter which surrounds a group of corporate resources. In its place, ZTNA adopts a modern, network-agnostic perspective that defends each resource at the network edge - each device, or even each application on a device, essentially has its own individual perimeter. The ZTNA framework can be distilled into several guiding \",/*#__PURE__*/e(s,{href:\"https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-207.pdf\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"principles\"})}),\":\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Assume breach\"}),\" - Resource defenses should assume that any incoming connection is a threat regardless of its source. A device\u2019s location on a network does not grant it any special status.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Verify explicitly\"}),\" - \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Authenticate and authorize\"})}),\" all access requests based on user identity, device posture, source network, and other contextual factors.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Least privilege\"}),\" - Temporarily grant users the lowest level of access that lets them do their jobs. Revoke permissions when sessions end or any trust factor changes.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Monitor everything\"}),\" - Collect information about network activity and the state of resources and infrastructure in order to detect issues and improve overall security posture.\"]}),/*#__PURE__*/e(\"p\",{children:\"As such, ZTNA can be achieved using a variety of different approaches and implementations.\"}),/*#__PURE__*/e(\"p\",{children:\"Over the past year, ZTNA has been everywhere you look in the networking and cybersecurity world. But ZTNA\u2019s popularity is the latest stage in a development cycle spanning three decades:\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"1994\"}),\" - Researcher Stephen Marsh coins \u201Czero trust\u201A in his Ph.D. dissertation.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"2010\"}),\" - Forrester analyst John Kindervag popularizes Zero Trust.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"2014\"}),\" - Google introduces its \u201CBeyondCorp\u201A deployment of ZTNA.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"2020\"}),\" - NIST publishes a ZTNA primer for federal agencies and industry.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"2021\"}),\" - The Biden Administration \",/*#__PURE__*/e(s,{href:\"https://www.whitehouse.gov/briefing-room/presidential-actions/2021/05/12/executive-order-on-improving-the-nations-cybersecurity\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"instructs\"})}),\" all U.S. federal agencies to adopt ZTNA.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Far from an over-hyped buzzword that everyone forgets, Zero Trust Network Access will become the way organizations structure their security and \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control systems\"})}),\".\"]}),/*#__PURE__*/e(\"h1\",{children:\"Why is ZTNA viewed as the future of network security?\"}),/*#__PURE__*/e(\"p\",{children:\"Two forces are driving ZTNA\u2019s momentum and adoption. The strain of industry trends is breaking traditional technologies and pushing government and industry to ZTNA. At the same time, ZTNA\u2019s benefits are pulling networking and security professionals towards a future that promises better security, manageability, and user experience.\"}),/*#__PURE__*/e(\"h2\",{children:\"Trends driving ZTNA adoption\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Fading perimeters\"}),\" - Securing a network perimeter made sense when all resources resided on-premises. Today, critical resources are co-located, cloud-hosted, or sourced from third parties. The network \u201Cperimeter\u201A extends beyond company walls and intersects the networks of other companies, as well as the general internet.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Changing workforces\"}),\" - The world\u2019s sudden shift to working-from-home will never fully reverse. Most users will be part of the hybrid workforce accessing resources remotely. At the same time, blended workforces add freelancers and other on-demand workers to the access control mix.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Device and network diversity\"}),\" - Users access resources from a more diverse set of devices and networks. Administrators have less control as bring-your-own-device policies expand to serve hybrid workforces. As the perimeter fades, more access requests come from beyond managed networks.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Cybercrime\"}),\" - The trust implicit in technologies such as \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/rdp-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN or RDP\"})}),\" makes an organization\u2019s own defenses a security risk. All it takes is one unpatched security hole or phishing attack to compromise an entire network.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Benefits pulling industry to ZTNA\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Minimized attack surface\"}),\" - ZTNA hides all resources from view from the public internet. Contextual authentication makes it easier to identify suspicious access requests.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Controlled blast radius\"}),\" - When (not if) breaches succeed, they are contained within the compromised resource. ZTNA creates a micro-segmented \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/network-architecture\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"network architecture\"})}),\" that requires \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authentication and authorization\"})}),\" to access each node. Cybercriminals must spend more time and effort to cross ZTNA\u2019s resource-centric defenses, increasing security teams\u2019 ability to identify and mitigate the threat.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"More granular control\"}),\" - Using the principle of least privilege lets administrators develop more granular access policies that can also incorporate user roles, the networks they use, their device\u2019s security posture, and many other factors.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Unified management\"}),\" - The network-centric distinctions of on-premises versus cloud, proprietary versus third-party, as well as remote versus on-site requires a fragmented mix of inconsistent security systems. Since ZTNA is network agnostic, security teams can use a single system to apply consistent \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control policies\"})}),\" across all resources.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Lower infrastructure costs\"}),\" - Preserving a secure perimeter requires expensive, ongoing investments in infrastructure and overhead. With a ZTNA system in place, organizations alleviate this burden and can reassign staff to more productive work.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Improved network performance\"}),\" - Allowing remote access through secure perimeters forces traffic through network choke points such as VPN gateways. ZTNA securely connects users to resources using a more direct, performant route, which can dramatically improve connection speeds.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Improved user experience\"}),\" - Improving network performance and unifying fragmented access control processes within a single ZTNA system makes the user experience better. And by making network security simpler and easier, ZTNA improves compliance across the entire company.\"]}),/*#__PURE__*/e(\"h1\",{children:\"What are the major use cases for ZTNA?\"}),/*#__PURE__*/e(\"p\",{children:\"Implementing a Zero Trust Network Access architecture does not need to be an all-or-nothing proposition. Since it does not depend on the network infrastructure, phased deployments of ZTNA are easy to implement. The migration project can prioritize the use cases that offer the most impact on security and productivity.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Securing private resources\"}),\" - A hybrid workforce that skews towards remote working impacts networks cannot be limited by obsolete \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control technologies\"})}),\". ZTNA simplifies security policy enforcement while improving the user experience.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Securing cloud resources\"}),\" - ZTNA routes user traffic to cloud resources through direct, encrypted tunnels over the internet rather than through company networks. In multi-cloud scenarios, administrators can connect cloud providers directly without routing traffic through their networks.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Limit third-party risk\"}),\" - \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/third-party-access-using-twingate\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contractors, visitors, and other third parties\"})}),\" need access to a company\u2019s network. Yet there is no way to know how effectively they keep their devices secure. ZTNA ensures that third parties cannot access resources unless specifically permitted.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Replace obsolete access systems\"}),\" - The security weaknesses inherent to VPN gateways make them prime targets for cybercriminals. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Replacing VPN access control with ZTNA\"})}),\" eliminates this risk while simplifying network management.\"]}),/*#__PURE__*/e(\"h1\",{children:\"How does ZTNA work?\"}),/*#__PURE__*/e(\"p\",{children:\"Whenever a user requests access to a resource, they trigger a five-step process within the ZTNA system.\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Access attempt\"}),\" - No resources are directly accessible by a user\u2019s device unless access is requested via the ZTNA system (typically through an agent installed on that device).\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Identity authentication\"}),\" - The request triggers an \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/introducing-identity-first-networking\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"identity verification process\"})}),\" that is handled by an Identity Provider, preferably using multi-factor authentication.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Contextual authorization\"}),\" - The ZTNA system evaluates the context of the verified user\u2019s request to create a risk profile. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-models\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Role-based policies\"})}),\", device posture, geo-location, network type, and other variables determine whether \u2014 and to what degree \u2014 users receive access to the resource.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"User access\"}),\" - ZTNA creates a secure, encrypted tunnel between the user\u2019s device and the resource. Policies determine when these tunnels pass through managed networks or the public internet.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Ephemeral permissions\"}),\" - Permissions are never permanent and will expire after a set time, after a window of inactivity, or when the session ends. Once access expires, the client app loses access to the resource and must initiate a new request.\"]})})]}),/*#__PURE__*/e(\"h1\",{children:\"How can your organization implement ZTNA today?\"}),/*#__PURE__*/t(\"p\",{children:[\"There are many ways to implement \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"ZTNA\"})}),\", but Twingate offers the simplest path. Our software solution requires no changes to your network infrastructure. In as little as 15 minutes, your entire organization can \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/why-isnt-everyone-using-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"benefit from Zero Trust Network Access\"})}),\".\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Company benefits\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Security risks controlled by reduced attack surface and micro-segmentation.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Eliminating legacy security systems reduces costs while improving security.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"software-defined perimeters\"})}),\" are easier to scale.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Simpler user experience increases security compliance.\"})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Administrator benefits\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Single console for managing role-based access policies.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Unified access control for all on-premises and cloud resources.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Integration with existing security and identity providers.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"User and device-indexed logging for in-depth security and performance monitoring.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Split tunneling routes non-essential traffic through the internet, not your network.\"})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"User benefits\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Consumer-like app installation experience with no device configuration needed.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"More performant connections to resources improve productivity.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Frictionless remote access makes working from home easier and more productive.\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"Adopt ZTNA\u2019s modern approach to secure access\"}),/*#__PURE__*/e(\"p\",{children:\"Traditional approaches to network security and remote access have reached a breaking point. Security administrators cannot protect essential resources using inherently vulnerable technologies. Network administrators cannot manage modern workplaces with technologies based on obsolete business practices.\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust Network Access\"})}),\" solution lets you adopt a modern approach to security and access control. Using ZTNA, you will better protect your organization\u2019s valuable resources while replacing brittle, expensive infrastructure with a simple, easily-managed software solution.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Fifteen minutes is all it takes to deploy Twingate\u2019s modern ZTNA solution. To find out how, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=ztna\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"contact Twingate today\"})}),\".\"]})]})},{index:104,id:\"m94oRuGm7\",[h]:!0,[d]:!1,[p]:\"IPsec: The Complete Guide to How It Works and How to Use It\",[u]:\"IPsec Complete Guide\",[m]:\"ipsec\",[g]:\"\",[w]:\"Shingai Zivuku\",[f]:\"2021-10-15T00:00:00.000Z\",[y]:\"nwIUHELao\",[b]:T({src:\"https://framerusercontent.com/images/V8vQsoXwdnma9OaNV8S4SokFk.png\",srcSet:\"https://framerusercontent.com/images/V8vQsoXwdnma9OaNV8S4SokFk.png?scale-down-to=512 512w,https://framerusercontent.com/images/V8vQsoXwdnma9OaNV8S4SokFk.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/V8vQsoXwdnma9OaNV8S4SokFk.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/V8vQsoXwdnma9OaNV8S4SokFk.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/V8vQsoXwdnma9OaNV8S4SokFk.png\",srcSet:\"https://framerusercontent.com/images/V8vQsoXwdnma9OaNV8S4SokFk.png?scale-down-to=512 512w,https://framerusercontent.com/images/V8vQsoXwdnma9OaNV8S4SokFk.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/V8vQsoXwdnma9OaNV8S4SokFk.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/V8vQsoXwdnma9OaNV8S4SokFk.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"IPsec is a suite of protocols widely used to secure connections over the internet. The three main protocols comprising IPsec are: Authentication Header (AH), Encapsulating Security Payload (ESP), and Internet Key Exchange (IKE). This architectural framework for network data security specifies how to select security protocols, determine security algorithms, and exchange keys between peer layers, in addition to providing services such as \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control\"})}),\", data source authentication, and data encryption.\"]}),/*#__PURE__*/e(\"p\",{children:\"In this article, you\u2019ll learn more about IPsec\u2019s development, features, capabilities, and drawbacks, along with some newer technologies that address these drawbacks.\"}),/*#__PURE__*/e(\"h1\",{children:\"IPsec Encryption\"}),/*#__PURE__*/t(\"p\",{children:[\"IPsec\u2019s network-layer security architecture applies its security protections to each IP packet, effectively securing them with specific forms of safeguarding including data source authentication, integrity verification of connectionless data, confidentiality protection of data content, and more. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ipsec-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"IPsec VPN solutions\"})}),\" are one of the most popular approaches to safeguarding remote access and site-to-site connections since most apps will work with them.\"]}),/*#__PURE__*/t(\"p\",{children:[\"In the early days of the internet, theft of confidential data and attacks on enterprise networks happened often because of security deficiencies in the design of IP protocol. Though the \",/*#__PURE__*/e(s,{href:\"https://www.ietf.org/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"IETF\"})}),\" has now researched and developed a set of security protocols to protect IP communications, IPsec was developed to provide IP-based network layer security, which serves all IP-based network communications and is completely transparent to upper-layer protocol applications.\"]}),/*#__PURE__*/t(\"p\",{children:[\"The AH and ESP protocols used by IPsec protect IP datagrams and upper-layer protocols (such as UDP and TCP) using the two operating modes, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ipsec-tunnel-mode\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"tunnel mode and transport mode\"})}),\". These protocols verify the data source, guarantee data integrity, and prevent successive replays of identical packets. In addition to these services, ESP has the additional feature of guaranteeing data confidentiality and providing limited confidentiality to the data stream.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Depending on how it is deployed and configured, IPsec can ensure confidentiality, integrity, and \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authentication\"})}),\" of IP communications.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Confidentiality\"}),/*#__PURE__*/e(\"p\",{children:\"IPsec protects data from being accessed by unauthorized people by encrypting and decrypting data with a cryptographic method and a secret key\u2014a value that is known only by the two parties exchanging data; only someone with the secret key may decrypt the information. While using IPsec without encryption is conceivable, it is not advised.\"}),/*#__PURE__*/e(\"h2\",{children:\"Integrity\"}),/*#__PURE__*/e(\"p\",{children:\"IPsec also checks whether data has been altered (intentionally or unintentionally) while in transit. The integrity of data can be ensured by generating a message authentication code (MAC) value, which is a cryptographic checksum (hash) of the data generated with a secret key that has been agreed upon (different from the encryption secret key). The MAC\u2019s verification will fail if the data is tampered with.\"}),/*#__PURE__*/e(\"h2\",{children:\"Authentication\"}),/*#__PURE__*/e(\"p\",{children:\"Finally, each IPsec endpoint verifies the identity of the other endpoint it desires to communicate with, ensuring that network traffic and data are only sent to the intended and permitted endpoint.\"}),/*#__PURE__*/e(\"h2\",{children:\"IPsec Drawbacks\"}),/*#__PURE__*/e(\"p\",{children:\"Despite its great utility, IPsec has a few issues worth mentioning. First, direct end-to-end communication (i.e., transmission method) is not always available. Consider the following scenario:\"}),/*#__PURE__*/e(\"p\",{children:\"H1 and H2 are two hosts connected by a direct tunnel, and H1 employs the FW1 firewall. The adoption of various regional security regulations in large-scale distributed systems or inter-domain settings may pose severe issues for end-to-end communication. In this example, assume that FW1 needs to inspect traffic content to detect intrusions and that a policy is set at FW1 to deny all encrypted traffic so as to enforce its content inspection requirements. However, H1 and H2 construct direct tunnels without knowledge of the firewall and its policy rules. As a result, all traffic will be dropped by FW1. Thus, meeting each policy\u2019s corresponding requirements may lead to conflicts.\"}),/*#__PURE__*/t(\"p\",{children:[\"Additionally, one of the biggest disadvantages of IPsec is its complexity. Although IPsec\u2019s flexibility makes it popular, it can also be confusing. Security experts point out that IPsec contains \",/*#__PURE__*/e(s,{href:\"https://doi.org/10.7916/D8BC46FR\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"too many options\"})}),\" and too much flexibility. Most of the flexibility and complexity of IPsec may be attributed to the fact that IPsec was developed through a committee process. Due to the political nature of the committee, additional functions, options, and flexibility were added to the standard to satisfy the various factions of the standardization agency. Complexity can lead to incorrectly implementing or configuring IPsec, leading to unintended security consequences.\"]}),/*#__PURE__*/e(\"h1\",{children:\"IPsec VPNs\"}),/*#__PURE__*/t(\"p\",{children:[\"IPsec is commonly used when implementing \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/ipsec-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPNs\"})}),\" as it offers a high level of protection and allows numerous private networks to connect securely over the internet. IPsec protects all data transferred between terminal sites at the network layer, independent of the kind of network application. Users who use VPNs to remotely access a private business network are placed on the network itself, giving them the same rights and operational capabilities as a user who is connecting from within that network.\"]}),/*#__PURE__*/e(\"p\",{children:\"An IPsec-based VPN may be created in a variety of ways, depending on the needs of the user. In most cases, IPsec is used by a mix of clients, servers, firewalls, and routers. Because these components may originate from various suppliers, interoperability is a must. IPsec VPNs enable smooth access to enterprise network resources, and users do not necessarily need to use web access (access can be non-web); it is therefore a solution for applications that need to automate communication in both ways.\"}),/*#__PURE__*/t(\"p\",{children:[\"IPsec provides a robust, long-lasting foundation for delivering network layer security. Its framework can support today\u2019s cryptographic algorithms \",/*#__PURE__*/e(s,{href:\"https://www.ibm.com/docs/en/i/7.1?topic=concepts-ip-security-protocols\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"as well as more powerful algorithms\"})}),\" as they become available in the future. IPsec is a mandatory component of Internet Protocol Version 6 (IPv6), which companies are actively deploying within their networks, and is strongly recommended for Internet Protocol Version 4 (IPv4) implementations.\"]}),/*#__PURE__*/e(\"h1\",{children:\"IPsec Tunnel Mode vs. Transport Mode\"}),/*#__PURE__*/t(\"p\",{children:[\"IPsec uses two modes to send data\u2014\",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/ipsec-tunnel-mode\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"tunnel mode and transport mode\"})}),\":\"]}),/*#__PURE__*/e(\"img\",{alt:\"IPsec Tunnel\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,hQRORQzKsbaIxlfvnO1gnkbFLbI.svg?originalFilename=BPBcwzYkBtO%3Ftype%3Dsvg.svg\",src:\"https://framerusercontent.com/images/hQRORQzKsbaIxlfvnO1gnkbFLbI.svg\",srcSet:\"https://framerusercontent.com/images/hQRORQzKsbaIxlfvnO1gnkbFLbI.svg?scale-down-to=512 512w,https://framerusercontent.com/images/hQRORQzKsbaIxlfvnO1gnkbFLbI.svg 978w\"}),/*#__PURE__*/t(\"p\",{children:[\"In \",/*#__PURE__*/e(\"em\",{children:\"tunnel mode\"}),\", IPsec uses two dedicated routers, each acting as one end of a virtual \u201Ctunnel\u201A over a public network. In addition to protecting the packet content, the original IP header containing the packet\u2019s final destination is also encrypted in this mode. IPsec introduces a new IP header to notify intermediary routers where to forward traffic.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Pros\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"More compatible with existing VPN gateways\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"No need to implement IPsec on the IPS entity\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Easier to traverse NAT\"})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Cons\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"More overhead\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Smaller maximum transmission unit (MTU)\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"In \",/*#__PURE__*/e(\"em\",{children:\"transport mode\"}),\", each packet\u2019s payload is encrypted, but not the IP header. Unless a separate tunnelling protocol \",/*#__PURE__*/e(s,{href:\"https://docs.nvidia.com/networking-ethernet-software/cumulus-linux-42/Layer-3/GRE-Tunneling\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"such as GRE\"})}),\" is employed, intermediary routers are able to see the final destination of each packet.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Pros\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Provides end-to-end encryption\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Minimal overhead compared to tunnel mode\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Larger MTU\"})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Cons\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Requires IPsec to be implemented on the Intrusion Prevention System (IPS) entities\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"There is greater difficulty with NAT traversal (TCP checksum invalidation)\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"IPsec Passthrough and VPN Passthrough\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/ipsec-passthrough\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"IPsec passthrough\"})}),\" is a technique for allowing IPsec packets to pass through a NAT router. VPN passthrough is a broader term that refers to a technique for allowing various VPN tunnelling protocols (including IPsec, PPTP and L2TP) to successfully traverse NAT; it is essentially a way to support routing of older VPN tunnelling protocols that were not built with that ability.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Conclusion\"}),/*#__PURE__*/e(\"p\",{children:\"IPsec defines a standard set of protocols for securing internet connections, providing for the authentication, confidentiality, and integrity of communications. It provides a transparent end-to-end secure channel for upper-layer protocols, and implementations do not require modifications to those protocols or to applications. While possessing some drawbacks related to its complexity, it is a mature protocol suite that supports a range of encryption and hashing algorithms and is highly scalable and interoperable.\"}),/*#__PURE__*/t(\"p\",{children:[\"The pandemic has changed the way we work and collaborate. Even post-pandemic, remote working will remain a prominent feature of corporate life. While IPsec VPNs are a common and widespread way of enabling workforces to gain access to corporate IT resources, as this article has covered, the technology is complicated to understand, deploy, and maintain. Instead of dealing with this complexity, consider adopting the next generation of technology for secure remote access: \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust Network Access (ZTNA)\"})}),\". ZTNA is a modern approach that fits how organizations operate today while offering stronger security than a VPN. Like VPNs, there are many ways a Zero Trust model can be implemented, but solutions like Twingate make the process significantly simpler than having to wrangle an IPsec VPN. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=ipsec\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact Twingate\"})}),\" today to learn more.\"]})]})},{index:105,id:\"FWEli6mi9\",[h]:!0,[d]:!1,[p]:\"Passwordless Authentication Explained: Why to Make the Move Today\",[u]:\"Passwordless Authentication\",[m]:\"passwordless-authentication\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2021-10-14T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/WJvmY1LnTaXLlkzbrfjhfdL7hc.png\",srcSet:\"https://framerusercontent.com/images/WJvmY1LnTaXLlkzbrfjhfdL7hc.png?scale-down-to=512 512w,https://framerusercontent.com/images/WJvmY1LnTaXLlkzbrfjhfdL7hc.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/WJvmY1LnTaXLlkzbrfjhfdL7hc.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/WJvmY1LnTaXLlkzbrfjhfdL7hc.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/WJvmY1LnTaXLlkzbrfjhfdL7hc.png\",srcSet:\"https://framerusercontent.com/images/WJvmY1LnTaXLlkzbrfjhfdL7hc.png?scale-down-to=512 512w,https://framerusercontent.com/images/WJvmY1LnTaXLlkzbrfjhfdL7hc.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/WJvmY1LnTaXLlkzbrfjhfdL7hc.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/WJvmY1LnTaXLlkzbrfjhfdL7hc.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"The sun is setting on the era of password security. Passwords are too weak and too big a target to keep using them. In their place, companies are adopting passwordless authentication systems that use more secure forms of identity verification.\"}),/*#__PURE__*/e(\"p\",{children:\"We will help you understand why companies need to replace passwords, how passwordless authentication works, and some of the ways companies are using this new technology.\"}),/*#__PURE__*/e(\"h1\",{children:\"What is passwordless authentication?\"}),/*#__PURE__*/t(\"p\",{children:[\"Passwordless \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authentication\"})}),\" gives you a more reliable, affordable, and secure way to prove that the person trying to \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access your company\u2019s resources\"})}),\" is actually who they claim to be. Rather than relying on something the person knows, passwordless authentication relies on more secure factors such as security keys or biometric identification.\"]}),/*#__PURE__*/e(\"p\",{children:\"But why is there so much interest in replacing the password? After all, passwords are easy to implement. Almost everything on your network supports them. Most of your users grew up using them.\"}),/*#__PURE__*/t(\"p\",{children:[\"You can see why passwords are such a problem by analyzing the quarter-billion passwords leaked in 2020\u2019s many security breaches. Despite decades of warnings and password tutorials, the \",/*#__PURE__*/e(s,{href:\"https://www.zdnet.com/article/the-worst-passwords-of-2020-show-we-are-as-lazy-about-security-as-ever\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"five most popular passwords\"})}),\" from last year\u2019s breaches are depressingly familiar:\"]}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"123456\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"123456789\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Picture1\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Password\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"12345678\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"The problem with passwords goes even farther. In its latest investigation of cybercrime, Verizon found that \",/*#__PURE__*/e(s,{href:\"https://www.verizon.com/business/resources/reports/dbir\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"more than 84% of breaches\"})}),\" were due to vulnerable credentials. Here are six ways password-based authentication undermines security:\"]}),/*#__PURE__*/e(\"h2\",{children:\"Weak passwords are easy to guess\"}),/*#__PURE__*/e(\"p\",{children:\"Lists of stolen passwords like these make brute-force attacks easier. They can start with the most common password and move down the list until they find one that works.\"}),/*#__PURE__*/e(\"h2\",{children:\"We hate creating strong passwords\"}),/*#__PURE__*/e(\"p\",{children:\"Remembering strong passwords is a pain. They must be at least 10 characters long with a mix of upper and lower case letters, numbers, and symbols. Even worse, every personal and professional account requires its own, unique password.\"}),/*#__PURE__*/e(\"h2\",{children:\"We share passwords insecurely\"}),/*#__PURE__*/e(\"p\",{children:\"People share passwords all the time. Executives share their passwords with their assistants. Even IT professionals \u2014 who should know better \u2014 share passwords to critical systems.\"}),/*#__PURE__*/e(\"h2\",{children:\"Passwords are easy to steal\"}),/*#__PURE__*/t(\"p\",{children:[\"People are bombarded with \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/defense-in-depth-webinar\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"phishing and other social engineering attacks\"})}),\" every day. Even IT pros can fall for them. More than half of organizations in a recent survey reported that hackers stole privileged credentials \u2014 and most of them suffered significant breaches as a result.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Companies do a poor job protecting passwords\"}),/*#__PURE__*/e(\"p\",{children:\"Users must share their passwords with IT departments. A shared secret is not really a secret \u2014 it is a target. The password database companies maintain, unsalted and unhashed, is pure treasure for cybercriminals.\"}),/*#__PURE__*/e(\"h2\",{children:\"Password markets are big business\"}),/*#__PURE__*/t(\"p\",{children:[\"When cybercriminals can monetize stolen passwords through dark web marketplaces. A recent study found that \",/*#__PURE__*/e(s,{href:\"https://www.zdnet.com/article/the-price-of-stolen-remote-login-passwords-is-dropping-thats-a-bad-sign\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"freshly-stolen RDP credentials\"})}),\" are selling for as much as $25 each.\"]}),/*#__PURE__*/e(\"h1\",{children:\"What are the benefits of passwordless authentication?\"}),/*#__PURE__*/e(\"p\",{children:\"Passwordless authentication offers many benefits beyond security by making networks easier to manage and by improving the user experience.\"}),/*#__PURE__*/e(\"h2\",{children:\"Passwordless streamlines network management\"}),/*#__PURE__*/e(\"p\",{children:\"Passwordless organizations eliminate the costs associated with password management. Help desk calls drop dramatically and there is no password database to protect.\"}),/*#__PURE__*/e(\"h2\",{children:\"Passwordless improves user experiences\"}),/*#__PURE__*/e(\"p\",{children:\"Going passwordless lets users access resources and get to work by doing almost nothing. Letting users swipe their finger or approve a push notification on their phone is much faster and takes less effort than dealing with passwords.\"}),/*#__PURE__*/e(\"h2\",{children:\"Passwordless MFA is more secure\"}),/*#__PURE__*/e(\"p\",{children:\"Using passwordless authentication in a multi-factor authentication system further protects your networks. Replacing SMS with push notifications or security keys eliminates the risk of SIM hacking.\"}),/*#__PURE__*/e(\"h2\",{children:\"Passwordless makes compliance easier\"}),/*#__PURE__*/e(\"p\",{children:\"Many regulatory standards such as HIPAA and NIST\u2019s Digital Identity Guidelines require organizations to document their policies for creating, storing, and protecting passwords. Going passwordless simplifies the compliance process.\"}),/*#__PURE__*/e(\"h1\",{children:\"What are the types of passwordless authentication?\"}),/*#__PURE__*/t(\"p\",{children:[\"In \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"multi-factor authentication\"})}),\", a user must provide two or more proofs of identity. These proofs, or authentication factors, take the form of a device the user possesses, a code or password the user knows, or the user\u2019s physical features. Passwordless authentication identifies the user through a combination of a device or token in their possession and either something they know or their physical features.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Biometric identification\"}),/*#__PURE__*/e(\"p\",{children:\"Biometric technologies such as fingerprint, voice, or facial recognition identify the user directly. In many cases, the biometric sensors are integrated into the user\u2019s laptop and smartphone. This approach works best with managed devices. In a BYOD scenario, you must support a wider range of biometric technologies.\"}),/*#__PURE__*/e(\"h2\",{children:\"Authentication apps\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/introducing-identity-first-networking\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Authenticator apps\"})}),\" are another way to go passwordless. The one-time codes these apps generate are unique to each user, device, and session. Although not quite as convenient for users as biometrics, apps are easier to provision in a mixed-device environment.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Security keys\"}),/*#__PURE__*/e(\"p\",{children:\"Security keys are particularly useful when many users need to access the same workstation. However, users are much more likely to lose a security key than their smartphones.\"}),/*#__PURE__*/e(\"h2\",{children:\"Messages\"}),/*#__PURE__*/t(\"p\",{children:[\"Email and SMS can send users a one-time code or a magic link that lets them access a resource. Tied to the user\u2019s device, these messages are of no use to any criminals who intercept them (although care must still be taken in \",/*#__PURE__*/e(s,{href:\"https://krebsonsecurity.com/2020/04/when-in-doubt-hang-up-look-up-call-back\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"certain social engineering situations\"})}),\"). Organizations may still limit this method to more controlled scenarios such as onboarding new users or provisioning new devices.\"]}),/*#__PURE__*/e(\"h1\",{children:\"How does passwordless authentication work?\"}),/*#__PURE__*/e(\"p\",{children:\"From the user\u2019s perspective, passwordless authentication is an easy, two-step process:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Enter their user ID.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Supply their passwordless credential.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Whether that second step is a swipe of their finger or typing a one-time code, it takes less time or mental effort than remembering their current password. Eventually, it becomes second nature for users who will wonder why everything isn\u2019t passwordless.\"}),/*#__PURE__*/e(\"h2\",{children:\"Replace passwords with public-private keys\"}),/*#__PURE__*/e(\"p\",{children:\"Behind the scenes, passwordless authentication is based on a system of cryptographic key pairs. When a user first registers with the system, their biometric device, security fob, or authenticator app generates a private key and shares a public key with the authentication system. The private key never leaves the device.\"}),/*#__PURE__*/e(\"p\",{children:\"Consider a remote worker who uses a laptop that has a fingerprint reader. When they request access to a company resource, they get a login prompt. The remote worker enters their user ID and swipes the fingerprint reader. This clears the laptop\u2019s Trusted Platform Module to encrypt an identity verification message using the private key. The company\u2019s authentication system decrypts the message with the user\u2019s public key. Identity confirmed, the remote worker can access the resource.\"}),/*#__PURE__*/e(\"p\",{children:\"If you have more stringent security policies or need heightened protections for certain resources, you can make this process the first step in multi-factor authentication. You also get better visibility of network usage since passwordless authentication associates both the user and the device with each session. Sudden changes or unusual behavior become easier to detect.\"}),/*#__PURE__*/e(\"h1\",{children:\"How are modern companies using passwordless authentication?\"}),/*#__PURE__*/e(\"p\",{children:\"The risks passwords create are well-known and the promises of passwordless authentication are enticing. Still, companies usually take a phased approach with their passwordless migrations. There are several ways to use passwordless authentication that may offer more immediate security and efficiency benefits.\"}),/*#__PURE__*/e(\"h2\",{children:\"Accessing personal workstations\"}),/*#__PURE__*/e(\"p\",{children:\"Office workers have access to the company\u2019s most sensitive resources. But when they step away from their desks, their workstations could be accessible to anyone who walks by. Since passwordless authentication is a faster, easier way for users to log in, you can set more aggressive inactivity timeout policies.\"}),/*#__PURE__*/e(\"h2\",{children:\"Shared resources\"}),/*#__PURE__*/e(\"p\",{children:\"System administrators need to support the same servers, factory workers use shared workstations, hospital wards have systems that healthcare workers need to rapidly access. These are scenarios where the convenience and speed of shared passwords undermine security. Fast, passwordless authorization is even easier. And by ensuring every employee authenticates with each access, network administrators get more detailed activity logs.\"}),/*#__PURE__*/e(\"h2\",{children:\"Remote workers\"}),/*#__PURE__*/e(\"p\",{children:\"The rapid shift to working-from-home has led companies on a search for ways to better secure remote connections. Administrators have little control over users\u2019 home networks and family computers. Preventing cybercriminals \u2014 or curious children \u2014 from accessing company resources is much simpler with passwordless authentication.\"}),/*#__PURE__*/e(\"h2\",{children:\"Customer access to public-facing resources\"}),/*#__PURE__*/t(\"p\",{children:[\"Passwordless is not just for a company\u2019s internal use. Over time, companies will eliminate passwords on their public-facing systems. Browser developers and hardware manufacturers have adopted the FIDO2 and WebAuthn standards to provide universal passwordless authentication. Apple\u2019s Safari browser will integrate with iPhone facial and fingerprint recognition systems. Microsoft\u2019s TPM requirement for Windows 11 will make all consumer PCs \u201C\",/*#__PURE__*/e(s,{href:\"https://www.theverge.com/2021/9/15/22675175/microsoft-account-passwordless-no-password-security-feature\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"passwordless by default\"})}),\".\u201A\"]}),/*#__PURE__*/e(\"h1\",{children:\"Passwordless zero trust security\"}),/*#__PURE__*/e(\"p\",{children:\"The time has come to sunset the password. Human nature and the limits of memory make effective password security impossible. Combined with the inherent weakness of shared secrets, passwords and password databases are now cybercriminals\u2019 largest targets.\"}),/*#__PURE__*/e(\"p\",{children:\"Passwordless authentication replaces this outmoded identification factor with more secure approaches that:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Make companies more secure;\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Simplify the user experience; and\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Improve efficiency.\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"Going passwordless has another benefit \u2014 by linking the user, the device, and user identification, passwordless authentication is an ideal match for Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" network access solution.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Twingate seamlessly integrates with your security stack to protect resources behind an invisible \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"software-defined perimeter\"})}),\". Once you match the user and device context with role-based access policies, Twingate seamlessly creates direct, encrypted connections between the user and resource that optimize bandwidth and latency.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=passwordless-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact us\"})}),\" to learn how our modern approach to securing remote work complements your transition to passwordless authentication.\"]})]})},{index:106,id:\"iVmJtJg19\",[h]:!0,[d]:!1,[p]:\"IPsec Encryption: How Secure Is It Really?\",[u]:\"IPsec Encryption\",[m]:\"ipsec-encryption\",[g]:\"\",[w]:\"Tyler Charboneau\",[f]:\"2021-10-07T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/bCseNZ5ihqY2T0kPTjCzf6jEY.png\",srcSet:\"https://framerusercontent.com/images/bCseNZ5ihqY2T0kPTjCzf6jEY.png?scale-down-to=512 512w,https://framerusercontent.com/images/bCseNZ5ihqY2T0kPTjCzf6jEY.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/bCseNZ5ihqY2T0kPTjCzf6jEY.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/bCseNZ5ihqY2T0kPTjCzf6jEY.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/bCseNZ5ihqY2T0kPTjCzf6jEY.png\",srcSet:\"https://framerusercontent.com/images/bCseNZ5ihqY2T0kPTjCzf6jEY.png?scale-down-to=512 512w,https://framerusercontent.com/images/bCseNZ5ihqY2T0kPTjCzf6jEY.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/bCseNZ5ihqY2T0kPTjCzf6jEY.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/bCseNZ5ihqY2T0kPTjCzf6jEY.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Business professionals leverage virtual private networks (VPNs) to protect their online traffic while accessing company resources. Many VPNs utilize a common measure called Internet Protocol Security (IPsec) to encrypt data passing between your machine and the destination machines or servers.\"}),/*#__PURE__*/e(\"p\",{children:\"IPsec enables secure, two-way communication over private\u2014and even public\u2014networks, including public WiFi networks and the broader internet. IPsec effectively scrambles all information in transit, using an algorithm that allows only authorized recipients to decrypt. This shields data from those with malicious intent and boosts privacy by anonymizing your online activity. Employees are telecommuting more than ever before with the move to remote work and hybrid work models, further emphasizing the benefits of IPsec.\"}),/*#__PURE__*/e(\"p\",{children:\"In this guide, we\u2019ll analyze IPsec\u2019s use cases, benefits, mechanisms, and overall level of security.\"}),/*#__PURE__*/e(\"h1\",{children:\"Why IPsec?\"}),/*#__PURE__*/t(\"p\",{children:[\"While IPsec isn\u2019t the only protocol out there, it\u2019s strong in \",/*#__PURE__*/e(s,{href:\"https://www.csoonline.com/article/2117067/data-protection-ipsec.html\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"three scenarios\"})}),\": \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ipsec-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN security\"})}),\", application security, and routing security.\"]}),/*#__PURE__*/e(\"p\",{children:\"VPN security\u2014particularly for businesses\u2014is noteworthy. The IPsec standard comes with baked-in support for multiple cryptographic methodologies. This flexibility allows organizations to tailor their security to their needs. Plus, IPsec, by securely connecting two points via VPN over the internet, makes connecting business units easy. This includes both internal and external communication.\"}),/*#__PURE__*/e(\"p\",{children:\"IPsec\u2019s maturity in handling the secure transmission of data is another key benefit. Data transmission across the internet (including via VPNs) must happen seamlessly. To enable this on a deeper level, IPsec is designed to work with both IPv4 and IPv6 protocols. It\u2019s something of a native security protocol for the internet as we currently know it. IPsec was born out of a need for open standardization in 1992, so it\u2019s an established name in internet security.\"}),/*#__PURE__*/t(\"p\",{children:[\"Two additional benefits of IPsec are \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authentication\"})}),\" and integrity. The former helps ensure that two parties in communication are indeed who they claim to be. Additionally, \",/*#__PURE__*/e(s,{href:\"https://www.ciscopress.com/articles/article.asp?p=24833&seqNum=3\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"data integrity is essential\"})}),\" in a system where information is passed back and forth\u2014whether that\u2019s messages, documents, or other files. The contents of a data packet do not change in an ideal scenario.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Packet loss isn\u2019t uncommon in these situations. However, it\u2019s the joint responsibility of the VPN and protocol to ensure data remains intact between sources. IPsec\u2019s receiver can verify the integrity of these packets from the sender to prevent unforeseen alterations from passing through. Plus, data \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authentication\"})}),\" also verifies the origin of all packets.\"]}),/*#__PURE__*/e(\"h1\",{children:\"How Does IPsec Work?\"}),/*#__PURE__*/e(\"p\",{children:\"IPsec relies on a number of core components. Internet and VPN communication cannot successfully occur without having these pieces in place.\"}),/*#__PURE__*/e(\"h2\",{children:\"Encryption\"}),/*#__PURE__*/e(\"p\",{children:\"Encryption lies at the heart of the IPsec protocol suite. Encryption ensures the confidentiality of communications, even as it passes through third party systems on its way from the sender to the intended recipient.\"}),/*#__PURE__*/t(\"p\",{children:[\"IPsec \",/*#__PURE__*/e(s,{href:\"https://docs.oracle.com/cd/E19683-01/816-7264/ipsec-ov-11/index.html\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"supports multiple encryption protocols\"})}),\", including AES, Blowfish, Triple DES, ChaCha, and DES-CBC. Each method is accompanied by a key, and these keys keep your data scrambled as it travels toward its destination.\"]}),/*#__PURE__*/t(\"p\",{children:[\"IPsec also \",/*#__PURE__*/e(s,{href:\"https://linuxhint.com/what_is_ipsec\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"uses two types of encryptions\"})}),\": symmetric and asymmetric. Symmetric encryption shares one key between users, whereas asymmetric encryption relies on both private and public keys. The asymmetric method is considered safer; many users can share the public key, while security relies on a locked-down private key that does not need to be shared with anyone else (unlike a symmetric key).\"]}),/*#__PURE__*/e(\"p\",{children:\"IPsec uses the asymmetric method to form a secure connection then leverages symmetric methods to boost connection speeds. For communication, IPsec is also compatible with UDP and TCP.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ipsec-tunnel-mode\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"IPsec offers two modes of operation\"})}),\" that can be enabled depending on the context. First, \",/*#__PURE__*/e(\"strong\",{children:\"transport mode\"}),\" is typically used when fast end-to-end communications are required, such as in client-server scenarios.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Second, \",/*#__PURE__*/e(\"strong\",{children:\"tunnel mode\"}),\" is typically used to secure connections between two different networks that are separated by an untrusted network. Tunnel mode enables two IPsec gateways on two different networks to establish a secure \u201Ctunnel\u201A between themselves to facilitate secure communications between those networks.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Authentication\"}),/*#__PURE__*/e(\"p\",{children:\"Ensuring that data comes from trusted sources is critical to IPsec. The protocol makes heavy use of authentication headers to transport important authentication details from host to host. This header essentially acts as a marker, confirming that the information being sent\u2014as well as the actual sender\u2014is trusted. Components, called message authentication codes (MACs), make this possible by providing keyed hash functions within the pipeline.\"}),/*#__PURE__*/e(\"p\",{children:\"The header prevents packet tampering, establishes security between hosts and gateways, and generally contributes to data integrity. Headers are typically paired with encapsulating security payloads and continually change as data moves between hosts and gateways. Payloads reflect how data is accessed, how it is decrypted, and what keys or algorithms are associated with it. IPsec headers are replaced instead of stacked atop one another, saving on processing overhead.\"}),/*#__PURE__*/e(\"p\",{children:\"Public-private authentication keys ensure that senders and receivers communicate with their intended partners. IPsec supports a number of authentication keys, including HMAC-SHA1/SHA2, certificate authorities (CAs), RSA, ECDSA, and pre-shared key (PSK). Each key has unique strengths, benefits, and use cases. Each protocol ensures that data remains safe and trustworthy throughout its journey. For security, the many hashing algorithms available ensure that any transported data is condensed into an easily parsable (yet human unreadable) string of characters.\"}),/*#__PURE__*/t(\"p\",{children:[\"Don\u2019t forget security associations (SAs)\u2014which describe \",/*#__PURE__*/e(s,{href:\"https://docs.oracle.com/cd/E19683-01/817-2694/ipsec-ov-5/index.html\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"specific security properties\"})}),\" shared by two hosts. It\u2019s often necessary to create two SAs within IPsec, since you have to protect bi-directional data between peers, clients, and servers. Security protocols help identify these SAs. From there, an integrity checksum value provides authentication; unauthorized packets are promptly dropped.\"]}),/*#__PURE__*/e(\"p\",{children:\"Additionally, IPsec commonly uses Internet Key Exchange (IKE) to determine how encryptions and algorithms behave. This process is crucial when sharing keys between two actively communicating parties. The IKE SA establishes a secure channel between two IKE peers. Afterward, the key information is generated for IPsec. Successfully establishing IKE protocols helps your VPN authenticate peers using a common security protocol. This is where PSKs, RSA signatures, and RSA nonces (random numbers) come into play. Manual key values, certificates, and encrypted values stem from these processes.\"}),/*#__PURE__*/t(\"p\",{children:[\"Finally, it\u2019s essential to verify that users of an IPsec-backed system are who they say they are. Like many software products, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ipsec-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"IPsec VPNs\"})}),\" can leverage two-factor \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authentication\"})}),\" (2FA) to prevent account hacking and data theft.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Is IPsec Encryption Secure?\"}),/*#__PURE__*/e(\"p\",{children:\"The power of IPsec is its flexibility and maturity compared to other competing protocols. The sheer number of algorithms and sub-protocols that companies can employ allow companies to create a tailor-made communications system for remote users. IPsec VPNs are common due to IPsec\u2019s standards-based approach to security\u2014one that is built off IPv4 and IPv6.\"}),/*#__PURE__*/e(\"p\",{children:\"For example, IPsec supports AES-256 encryption, which is virtually impregnable with today\u2019s computing equipment. Additionally, no successful cryptanalysis has been performed on the Blowfish cipher, making it extremely secure.\"}),/*#__PURE__*/t(\"p\",{children:[\"ChaCha20 also carries a 256-bit level of security. However, Triple DES keys have been obsolete \",/*#__PURE__*/e(s,{href:\"https://cryptosense.com/blog/is-triple-des-secure\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"since 2017\"})}),\", when the key was deprecated due to its short effective length of 80 bits. While Triple DES only provides some level of brute-force protection, it remains relevant today because many electronic payment vendors use 64-bit block sizes within their systems.\"]}),/*#__PURE__*/e(\"p\",{children:\"The configurability of IPsec doesn\u2019t come free, however. The sheer number of configurations and complexity present in IPsec can introduce problems. Administrators and programmers not familiar with the protocol suite can make errors when undertaking a lengthy, intensive deployment process. Strong IPsec relies on sound setups\u2014which is why these setup errors can potentially lead to vulnerabilities. Additionally, vendors offering IPsec-based solutions may incorrectly or inappropriately implement IPsec, leading to security flaws being built into their products.\"}),/*#__PURE__*/e(\"p\",{children:\"Speaking of which, agencies, like the NSA, have famously broken the security measures behind many of today\u2019s VPNs\u2014some of which have adopted IPsec. Remote code execution is a long-standing vulnerability of IPsec software.\"}),/*#__PURE__*/t(\"p\",{children:[\"For example, Cisco PIX firewalls responsible for supporting IPsec VPNs \",/*#__PURE__*/e(s,{href:\"https://www.forbes.com/sites/thomasbrewster/2016/08/19/cisco-nsa-vpn-hack-shadow-brokers-leak?sh=6b4092075277\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"were famously exposed to hackers as recently as 2016\"})}),\". That\u2019s a cause for concern, especially since the committee-based nature of IPsec renders its development less agile in the face of glaring weaknesses.\"]}),/*#__PURE__*/e(\"p\",{children:\"IPsec\u2019s mature blend of strong encryption and authentication processes means that it is a stalwart and widely used suite of protocols. However, nothing is perfect in the software realm, and IPsec\u2019s shortcomings deserve as much attention as its benefits if an objective assessment is to be made.\"}),/*#__PURE__*/e(\"h1\",{children:\"Conclusion\"}),/*#__PURE__*/t(\"p\",{children:[\"In short, IPsec users take the good with the bad. The protocol remains fairly secure, though a strong and specialized technical team is required to extract the most benefit from IPsec. That means either investing in one\u2019s organization or trusting that developers behind VPN products are sufficiently well-versed in IPsec to build secure solutions. Unfortunately, that\u2019s not always the case with \",/*#__PURE__*/e(s,{href:\"https://arstechnica.com/information-technology/2020/01/unpatched-vpn-makes-travelex-latest-victim-of-revil-ransomware\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"vpn gateway vulnerabilities making them a common target in cyberattacks\"})}),\".\"]}),/*#__PURE__*/e(\"p\",{children:\"Configuration issues can cause security issues down the road. IPsec\u2019s core components\u2014from encryption, to authentication, to key exchange and IKE\u2014do, thankfully, provide strong foundational security when managed correctly.\"}),/*#__PURE__*/t(\"p\",{children:[\"Vendors must step up and meet this challenge head-on. At \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/about\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate\"})}),\", we take a modern approach to securing online work.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Our solution replaces antiquated, corporate VPNs with a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"zero-trust access solution\"})}),\" that is more secure and improves network performance. Additionally, our SaaS solution is substantially easier to set up and maintain than traditional IPsec VPNs, with significantly less technical knowledge required for correct deployment.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Whether you\u2019re running on premises or in the cloud, our platform can help you manage secure access to your organization\u2019s vital applications from anywhere. Want to get started? \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=ipsec-encryption\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Give Twingate a try for free\"})}),\" today.\"]})]})},{index:107,id:\"LvgstAxWT\",[h]:!0,[d]:!1,[p]:\"What does SASE Mean? A No-Frills Guide to Cloud Network Security\",[u]:\"What does SASE Mean?\",[m]:\"sase-meaning\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2021-10-05T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/jWRx10BxfWi6dA472kaCZzHBbfM.png\",srcSet:\"https://framerusercontent.com/images/jWRx10BxfWi6dA472kaCZzHBbfM.png?scale-down-to=512 512w,https://framerusercontent.com/images/jWRx10BxfWi6dA472kaCZzHBbfM.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/jWRx10BxfWi6dA472kaCZzHBbfM.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/jWRx10BxfWi6dA472kaCZzHBbfM.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/jWRx10BxfWi6dA472kaCZzHBbfM.png\",srcSet:\"https://framerusercontent.com/images/jWRx10BxfWi6dA472kaCZzHBbfM.png?scale-down-to=512 512w,https://framerusercontent.com/images/jWRx10BxfWi6dA472kaCZzHBbfM.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/jWRx10BxfWi6dA472kaCZzHBbfM.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/jWRx10BxfWi6dA472kaCZzHBbfM.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Secure Access Service Edge, or SASE, is a cloud-based vision for enterprise network security. A term that has only been in existence for the past two years, SASE has become the latest IT industry buzzword. But what is SASE and is there substance behind the hype? Our no-frills guide will:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Explain this new concept in cloud network security.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Identify the trends pushing the industry towards SASE.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Describe the security and network management benefits SASE offers.\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"Of course, such a young concept is still a moving target. We will help you understand why companies have not all jumped on the SASE bandwagon, and we will show you a way to get the immediate benefits of SASE\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/why-isnt-everyone-using-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust Network Access\"})}),\" capabilities.\"]}),/*#__PURE__*/e(\"h1\",{children:\"What does SASE mean?\"}),/*#__PURE__*/e(\"p\",{children:\"Secure Access Service Edge is a framework that describes the future convergence of enterprise networking and security. This framework envisions a stack of security technologies implemented at the network\u2019s edge as a SASE vendor\u2019s unified cloud service. This approach to network access and security replaces the traditional model of building a corporate network inside a fixed, secure perimeter - a model which has become increasingly fragmented, brittle, and expensive due to the increasing prevalence of remote work, BYO devices, and use of cloud-based services.\"}),/*#__PURE__*/e(\"p\",{children:\"As defined, SASE will be a cloud-first solution that can better handle remote workforces, hybrid workforces, and the growing role of cloud architectures in modern networking.\"}),/*#__PURE__*/e(\"p\",{children:\"The five components of a complete SASE solution include:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Software-Defined Wide Area Networking (SD-WAN)\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Firewall-as-a-Service (FWaaS)\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Secure Web Gateway (SWG)\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Cloud Access Security Broker (CASB)\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Zero Trust Network Access (ZTNA)\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"However, no vendor offers a complete, integrated SASE solution today. \",/*#__PURE__*/e(s,{href:\"https://www.gartner.com/en/documents/3953690/market-trends-how-to-win-as-wan-edge-and-security-conver\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"SASE is a technology forecast\"})}),\" created in 2019 by analysts at the research and consulting firm Gartner. These analysts also coined the term Secure Access Service Edge and the \u201Csassy\u201A pronunciation of its acronym.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Why is SASE viewed as the future of network security?\"}),/*#__PURE__*/e(\"p\",{children:\"Put simply, the way we have always protected networks is failing. The concepts and technologies developed to protect centralized information assets have become too brittle, too expensive, and too difficult to manage. Modern network architectures must meet the challenges of such trends as:\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Remote workforces:\"}),\" In the wake of the coronavirus pandemic, businesses must adjust to a new normal. Executives, outside salespeople, and field engineers are not the only ones who need remote access. On any given day, a significant number of users could be connecting from a hotel, coffee shop, or a home network.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Hybrid workforces:\"}),\" Increasingly, the users accessing company networks are not employees but also on-demand gig workers, consultants, and contractors. To one degree or another, they all need secure access to company resources.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Unmanaged devices:\"}),\" Closely related to the previous trends is the adoption of bring-your-own-device (BYOD) policies. Users are connecting to company resources with devices over which network administrators have less control.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Cloud migration:\"}),\" Moving enterprise applications to the cloud improves accessibility, reliability, and performance. Yet, the cloud also makes administration more difficult. Each cloud hosting platform and X-as-a-Service provider has its own \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control\"})}),\" and security systems.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Threat environment:\"}),\" Cybercriminals are getting more sophisticated both in terms of technology and social engineering. Security professionals know that it is not a question of \u201Cif\u201A you will be hacked \u2014 or even \u201Cwhen\u201A you will be hacked \u2014 but whether cybercriminals are already on your network.\"]}),/*#__PURE__*/e(\"p\",{children:\"These trends will push companies to search for better solutions. At the same time, they will be pulled towards SASE\u2019s promised benefits:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Protect resources whether on-premises or in the cloud.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Apply consistent, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-models\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"role-based access policies\"})}),\" across all users.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Simplify security management within a single system.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Simplify \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/network-architecture\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"network architectures\"})}),\" while improving performance.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Protect resources from outside attacks.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Mitigate the damage from successful breaches.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Gartner believes this push and pull will lead nearly two-thirds of enterprises to have formal SASE strategies by 2025, up from only 10% last year.\"}),/*#__PURE__*/e(\"h1\",{children:\"What are the five components of SASE?\"}),/*#__PURE__*/e(\"p\",{children:\"The five capabilities that Gartner assigned to its SASE framework will let an organization push security enforcement and network management to the network\u2019s edge.\"}),/*#__PURE__*/e(\"h2\",{children:\"Software-Defined Wide Area Networking\"}),/*#__PURE__*/e(\"p\",{children:\"SD-WAN technology provides a cheaper alternative to network hardware and carrier MPLS service. SASE vendors will maintain their own SD-WAN infrastructure and point of presence (PoP) networks. A company\u2019s users, branch offices, corporate offices, and cloud resources will connect to their nearest PoP. All traffic then travels directly between PoPs on the SASE vendor\u2019s backbone network or through encrypted internet tunnels.\"}),/*#__PURE__*/e(\"h2\",{children:\"Firewall-as-a-Service\"}),/*#__PURE__*/e(\"p\",{children:\"Firewall-as-a-Service provides cloud-based access control, intrusion prevention, packet inspection, and other security features at the network edge. This virtual FWaaS approach makes it easier to protect both cloud-based and on-premises resources within the same system.\"}),/*#__PURE__*/e(\"h2\",{children:\"Secure Web Gateway\"}),/*#__PURE__*/e(\"p\",{children:\"Users need access to the Web to get their jobs done. But users\u2019 web traffic can be a vector for malicious code. Secure Web Gateways inspect all user traffic and block malware. The SWG can also enforce company security policies by, for example, implementing URL allowlists and denylists. Unlike hardware appliances, a SASE solution\u2019s cloud-based SWG will work wherever the user connects to the internet.\"}),/*#__PURE__*/e(\"h2\",{children:\"Cloud Security Broker\"}),/*#__PURE__*/e(\"p\",{children:\"Cloud service providers that offer security features make you use their system and administrative consoles. These security features may not align with your own and, in many cases, will not integrate with your security stack. Cloud Security Brokers sit between your users and cloud service providers, allowing you to enforce uniform access control policies.\"}),/*#__PURE__*/e(\"h2\",{children:\"Zero Trust Network Access\"}),/*#__PURE__*/t(\"p\",{children:[\"The traditional secure perimeter paradigm assumes that authenticated users can be trusted. VPN Gateways, for example, publish their presence on the internet and grant users full access to the networks they protect. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/is-your-rdp-service-secure\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"RDP servers\"})}),\" are also often visible on the internet and are notorious for attracting attackers seeking an entry point into a corporate network.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/why-isnt-everyone-using-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust Network Access\"})}),\", on the other hand, assumes everything is a threat. All resources are hidden from both public and private networks. A deny-first philosophy assumes every connection attempt is an attack until proven otherwise. ZTNA only grants users access based on risk assessments that include \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/introducing-identity-first-networking\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"user identification\"})}),\", role-based authorization, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/device-trust-in-a-zero-trust-world\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"device-posture\"})}),\" analysis, and context assessment.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Why have companies struggled to implement SASE?\"}),/*#__PURE__*/e(\"p\",{children:\"While Gartner\u2019s analysts believe most enterprises will be migrating to SASE in a few years, their own research shows that only 10% of large firms are looking at it now. The reason is that SASE is very much a work in progress. As a result, companies must overcome barriers such as:\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Industry fragmentation:\"}),\" Each of the five SASE components by itself is an emerging capability offered by different vendors. Those vendors betting on Gartner\u2019s vision are either developing or acquiring the technologies they need, but none of them offer a full SASE stack built from the ground up.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Skills gaps:\"}),\" Few network professionals have experience with all five SASE components which will make overseeing SASE migrations challenging. This is especially true for companies that do not want to be locked into a single-vendor solution.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Strategic priorities:\"}),\" Gartner unveiled its SASE vision months before a global pandemic. While the concept has generated industry buzz, executives have had more urgent priorities to address. At the same time, awareness and understanding of SASE among IT and security professionals is still low.\"]}),/*#__PURE__*/e(\"p\",{children:\"Uncertainty may be the biggest obstacle to SASE\u2019s widespread adoption. Perhaps unsurprisingly, analysts at Gartner\u2019s competitors have expressed skepticism about the concept. And companies considering SASE have many questions to answer:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Will Gartner\u2019s five components fully address the future of networking?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"When will vendors have fully-integrated SASE solutions?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"What will the final technologies look like and how will they interoperate?\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"Even Gartner itself has said that SASE is the \u201C\",/*#__PURE__*/e(s,{href:\"https://blogs.gartner.com/andrew-lerner/2021/03/26/checking-in-on-sase\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"most-hyped term in networking\"})}),\".\u201A When unveiling SASE, Gartner\u2019s analysts advised companies to avoid long-term contracts due to \u201Cinconsistent services, poor manageability and high latency.\u201A\"]}),/*#__PURE__*/e(\"h1\",{children:\"How can your organization achieve SASE?\"}),/*#__PURE__*/e(\"p\",{children:\"So, should your company wait until the dust settles? Only if you have a complete handle on remote working, role-based access control, BYOD, and the other trends making networks so hard to secure. But last year\u2019s rush to the remote workforce proved that the old ways of focusing on securing a fixed perimeter are failing fast.\"}),/*#__PURE__*/e(\"p\",{children:\"Gartner\u2019s SASE roadmap recommends that companies implement the elements of SASE that can have the most immediate impact.\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Start planning the transition from on-premises security appliances to cloud-based security services.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Migrate branch offices from expensive carrier MPLS to cloud-based SD-WAN services.\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"But the first step Gartner advises is to replace VPN and other insecure \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control\"})}),\" technologies with \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/why-isnt-everyone-using-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust Network Access\"})}),\". Requiring all users \u2014 regardless of their location \u2014 to go through ZTNA will immediately strengthen your organization\u2019s threat posture. A phased implementation can focus first on your company\u2019s most critical on-premises and cloud-based resources before rolling out to less sensitive systems.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Start your SASE migration with Twingate Zero Trust Network Access\"}),/*#__PURE__*/e(\"p\",{children:\"While Gartner, the media, and the IT industry have made SASE the buzzword of the day, the underlying concept and lofty vision is sound. The old approach to securing corporate networks is failing as business networking becomes more decentralized. The future of network security may not match Gartner\u2019s vision, but it will include:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Software-defined perimeters\"})}),\" that protect resources on-premises and in the cloud.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Role-based, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" policies that give users least-privilege access to resources.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Secure, performant connections to any device from any location.\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"Whether SASE is part of your company\u2019s future or not, Twingate\u2019s modern approach to securing remote work opens a fast, affordable path to implementing Zero Trust Network Access. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=sase-meaning\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact us to learn more\"})}),\".\"]})]})},{index:108,id:\"AUyE7G8bl\",[h]:!0,[d]:!1,[p]:\"Network Architecture: A Guide for Modern IT Professionals\",[u]:\"Network Architecture\",[m]:\"network-architecture\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2021-09-28T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/4k9TlgigB3gnHcVBowdF68N8.png\",srcSet:\"https://framerusercontent.com/images/4k9TlgigB3gnHcVBowdF68N8.png?scale-down-to=512 512w,https://framerusercontent.com/images/4k9TlgigB3gnHcVBowdF68N8.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/4k9TlgigB3gnHcVBowdF68N8.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/4k9TlgigB3gnHcVBowdF68N8.png 2400w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/4k9TlgigB3gnHcVBowdF68N8.png\",srcSet:\"https://framerusercontent.com/images/4k9TlgigB3gnHcVBowdF68N8.png?scale-down-to=512 512w,https://framerusercontent.com/images/4k9TlgigB3gnHcVBowdF68N8.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/4k9TlgigB3gnHcVBowdF68N8.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/4k9TlgigB3gnHcVBowdF68N8.png 2400w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Network architecture defines how an organization\u2019s information resources communicate internally and externally. An organization\u2019s actual network architecture, however, often evolves through a mix of top-down design and bottom-up decision-making. As a result, network architectures often hinder IT & Security teams.\"}),/*#__PURE__*/e(\"p\",{children:\"Our guide to network architecture will help you understand the issues companies face as they design networks to handle modern complexity. We will review common types of network architectures, the pressure placed on these architectures in today\u2019s IT environment, and discuss the architecture decisions that matter in modern network design.\"}),/*#__PURE__*/e(\"h1\",{children:\"What is network architecture?\"}),/*#__PURE__*/e(\"p\",{children:\"Network architectures set the overarching structure for the way data flows to, from, and between resources. In this context, a \u201Cresource\u201A could be something like a file server, a customer relationship management system, or a user device. Designing a network architecture requires the consideration of various aspects, including:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Logical networks\"}),\" - Logical networks are established by a set of policies that define which resources may connect with each other, how they connect, and any conditions for that access. Manufacturing systems, for instance, may only be limited to managed devices on managed networks. Mail servers, on the other hand, may be accessed by VPN-connected user devices.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Physical networks\"}),\" - Distinct from the logical structure is the hardware that transports data within company boundaries and interfaces to the internet. This structure guides decisions such as when to segment local area networks and when wireless LANs are appropriate.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Performance, reliability, and efficiency standards\"}),\" - These standards help IT professionals design cost-effective networks that support business objectives. Clear guidance on latency and bandwidth requirements, for example, lets them address chokepoints such as VPN gateways early in the network design process.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Security and access control standards\"}),\" - Network architectures balance the accessibility users need with the need to secure proprietary and customer information. To help strike this balance, a network architecture could require that all \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control\"})}),\" investments support \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-models\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"role-based access\"})}),\".\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"Historically, these aspects of network architecture were inextricably linked. That is less true today thanks to trends such as virtualization, software-as-a-service, and remote access.\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Virtualization\"}),\" - With the rise of virtualization, dedicated hardware appliances like routers and firewalls are no longer necessary. Physical networking equipment can now be replaced with software on virtual appliances and servers in the cloud that deliver the same functionality. A company\u2019s physical network must address a virtualized network architecture\u2019s unique requirements.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Software-as-a-Service\"}),\" - Companies are turning away from monolithic applications and on-premises licensed client software to use subscription-based cloud services. This decision, however, impacts the degree of integration between a company\u2019s users, private networks, and the internet.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Remote access\"}),\" - Mobile computing has weakened the idea that employee productivity depended on being in the office. Yet expanding remote access requires changes to networks and security systems.\"]})})]}),/*#__PURE__*/e(\"h1\",{children:\"What are the different types of network architecture?\"}),/*#__PURE__*/e(\"p\",{children:\"Organizations have many different types of networks to choose from. It can be useful to loosely group them as private or internet-based networks.\"}),/*#__PURE__*/e(\"h2\",{children:\"Private networks\"}),/*#__PURE__*/e(\"p\",{children:\"You have the most control over private networks such as your on-premises LANs and how you link networks at other facilities. For example, your network architecture could guide evaluations of the trade space between a telco\u2019s managed WAN services, a vendor\u2019s VPN technology, or emerging Secure Access Service Edge (SASE) solutions.\"}),/*#__PURE__*/e(\"p\",{children:\"However, private networks have a cost. You generally have to manage them yourself. Over time, they become more expensive and difficult to manage. And without constant vigilance, your network could fall prey to cyberattacks.\"}),/*#__PURE__*/e(\"h2\",{children:\"Public networks\"}),/*#__PURE__*/e(\"p\",{children:\"Internet-based services are transforming the way business works. Cloud services can be more capable and performant than traditional software. Better yet, the vendor assumes responsibility for maintaining the underlying computing and networking systems.\"}),/*#__PURE__*/t(\"p\",{children:[\"Administrative overhead, however, may offset some of those savings. Unless cloud services integrate with your security stack, for instance, you will be managing parallel \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control systems\"})}),\".\"]}),/*#__PURE__*/e(\"h2\",{children:\"Architecting trust\"}),/*#__PURE__*/t(\"p\",{children:[\"A new direction in network architecture design is undoing the legacy of trust. Typical corporate networks assume that certain users and devices directly connected to those networks are more trustworthy than others. This is why common technologies such as VPNs, which serve as entry points into those networks, have become vectors for cyberattacks. Traditional architectures mitigate these weaknesses through micro-segmentation, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/defense-in-depth-webinar\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"defense-in-depth\"})}),\", and other expensive measures.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/why-isnt-everyone-using-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero trust network access (ZTNA)\"})}),\" is a more modern approach to network architecture. Rather than defending a trusted network, ZTNA protects each resource individually. No matter who the user is, what device they use, or their method of connection, every attempt to access any resource requires \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authentication and authorization\"})}),\".\"]}),/*#__PURE__*/e(\"h1\",{children:\"Which type of network architecture makes sense for your organization?\"}),/*#__PURE__*/e(\"p\",{children:\"Nobody will ever develop the perfect network architecture, and architectural needs change as organizations and technology evolve. Your organization\u2019s context will determine your optimal network design. Some of the factors you must consider include:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Business stage\"}),\" - Unlike startups, established businesses cannot take clean sheet approaches. Network architectures must factor in legacy systems and business processes.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"User base\"}),\" - The number of users, the mix of employees and contractors, and the degree of remote working profoundly affect network architecture.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Regulations\"}),\" - Defense contractors and banks have stringent requirements for data security. Less regulated industries must still consider GDPR and other data protection rules.\"]})})]}),/*#__PURE__*/e(\"h1\",{children:\"Why has network architecture been under pressure in recent years?\"}),/*#__PURE__*/e(\"p\",{children:\"Increasingly, traditional network architectures are cracking under the strain imposed by trends such as work-from-home, bring-your-own-device, and cybercrime.\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Work-from-home\"}),\" - Pundits speculated that remote working would eventually become the norm. Then the pandemic made work-from-home an overnight reality. Networks designed for office working nearly broke when everyone went home. For too many companies, staying in business meant compromising performance and security.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Bring-your-own-device (BYOD)\"}),\" - This was another slow-burning trend that exploded in 2020. Employees had to use their home computers and networks to get their jobs done (or just felt that it was more convenient). Most companies are still dealing with the performance, productivity, and security issues BYOD systems create.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Cybercrime\"}),\" - The tools criminals use to penetrate networks are simultaneously more sophisticated and easier to use. Syndicates rent ransomware-as-a-service and malware-as-a-service. Advanced actors invest in zero-day vulnerabilities. At the same time, employees remain vulnerable to social engineering attacks.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"These trends, combined with the complexity of modern networking technologies, are making it more difficult to manage networks and keep those networks secure.\"}),/*#__PURE__*/e(\"h1\",{children:\"What network architecture decisions matter for companies today?\"}),/*#__PURE__*/e(\"p\",{children:\"Any evaluation of your network architecture must consider where the business is heading. The decisions you make will either hinder or accelerate that progress.\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Blended workforce\"}),\" - Will the number of employees expand or contract and what role will on-demand freelancers and contractors play?\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Hybrid workforce\"}),\" - Was work-from-home a temporary fix during a crisis or will it be the way a part of your business operates from now on?\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Cloud versus private\"}),\" - Can you replace on-premises systems with cloud solutions? Or does the control you have over private networks matter more?\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Managed devices and services\"}),\" - How far can you take BYOD policies? Can you entrust third-party cloud solutions with business-critical applications? Or do you need the control and security that comes with owning and managing things internally?\"]})})]}),/*#__PURE__*/e(\"h2\",{children:\"Twingate simplifies and secures network architectures\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s modern network access solution uses \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"software-defined perimeters (SDPs)\"})}),\" to implement \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/why-isnt-everyone-using-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"ZTNA\"})}),\". Easy to deploy and manage, Twingate\u2019s features can simplify your network architecture.\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Resource invisibility\"}),\" - Twingate draws a secure SDP around each resource to hide it from public networks. Unlike \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/rdp-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN or RDP\"})}),\", the Twingate connector does not use publicly visible inbound ports that cybercriminals could discover.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Resource compatibility\"}),\" - Twingate can protect any resource located on-premises or in the cloud. As a result, you can apply consistent \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control\"})}),\" policies to office workers and remote workers, managed devices and user devices, automated processes and services, LAN connections and internet connections.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Direct tunnels\"}),\" - Once \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authenticated and authorized\"})}),\", an encrypted tunnel connects the user\u2019s device and the resource. This connection is not impaired by the backhaul and latency bottlenecks inherent in legacy VPN systems. At the same time, split-tunneling routes non-work traffic to the internet to reduce the burden on your networks.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Software implementation\"}),\" - Deploying Twingate does not require additional hardware investments, works on top of your existing network infrastructure, and integrates with your existing security stack.\"]})})]}),/*#__PURE__*/e(\"h1\",{children:\"Adopt simpler, more performant, and more secure network architectures\"}),/*#__PURE__*/e(\"p\",{children:\"Over the past decade, the IT ecosystem\u2019s diversity has exploded. Business resources exist along a spectrum of legacy, on-premises systems, and innovative cloud services. Connections come from myriad managed and user-provided devices. Users may be employees or on-demand workers who access resources from just about anywhere.\"}),/*#__PURE__*/e(\"p\",{children:\"Despite this diversity, your network architecture does not need to be complex, expensive, or difficult to manage. The old ways of managing communications between resources relied too much on physical networks and assumptions of trust.\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s combination of \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"SDP\"})}),\" and \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"ZTNA\"})}),\" is a modern approach to securing information resources. We help you migrate from legacy \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control solutions\"})}),\" to Twingate\u2019s simpler, more performant solution and make it easier to apply role-based access control policies to improve resource security.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=network-architecture\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact us\"})}),\" to learn more about how easy and cost effective implementing a modern zero trust solution can be.\"]})]})},{index:109,id:\"sf6TyNp8y\",[h]:!0,[d]:!1,[p]:\"Zero Trust Infrastructure Automation with Twingate\",[u]:\"Zero Trust Infrastructure Automation with Twingate\",[m]:\"ztna-infra-automation\",[g]:\"\",[w]:\"Alex Marshall\",[f]:\"2021-09-22T00:00:00.000Z\",[y]:\"KI2UGBfh7\",[b]:T({src:\"https://framerusercontent.com/images/ME7XYGdUT54atBKDKwGA10TrAQ.png\",srcSet:\"https://framerusercontent.com/images/ME7XYGdUT54atBKDKwGA10TrAQ.png?scale-down-to=512 512w,https://framerusercontent.com/images/ME7XYGdUT54atBKDKwGA10TrAQ.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/ME7XYGdUT54atBKDKwGA10TrAQ.png 1200w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/ME7XYGdUT54atBKDKwGA10TrAQ.png\",srcSet:\"https://framerusercontent.com/images/ME7XYGdUT54atBKDKwGA10TrAQ.png?scale-down-to=512 512w,https://framerusercontent.com/images/ME7XYGdUT54atBKDKwGA10TrAQ.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/ME7XYGdUT54atBKDKwGA10TrAQ.png 1200w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"One of the challenges with introducing a new technology paradigm like \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/why-isnt-everyone-using-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" into an established organization is the level of change that can be required, from infrastructure to end users. The reason that we founded Twingate is that we firmly believe that with the right combination of thoughtful product design, smart automation, and powerful underlying technology, the migration to a Zero Trust security model can be surprisingly simple. Our team is energized by working on this mission every day, and we\u2019re extremely proud of the trust that \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/customers\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"our customers\"})}),\" have put into our vision of a simpler, human-centric approach to network security and Zero Trust.\"]}),/*#__PURE__*/e(\"p\",{children:\"On the theme of ease of use, we\u2019re excited to announce the availability of several new product developments that our team has been working hard on for the past several months. We know that the Zero Trust journey involves many different teams within companies, and in particular, involves a close collaboration between IT and DevOps.\"}),/*#__PURE__*/e(\"p\",{children:\"Today\u2019s updates not only make collaboration between these teams easier, but also introduce the ability to apply consistent controls across users and automated processes alike. These new features are part of our long-term roadmap to bring powerful automation capabilities to Twingate and make deploying, managing, and maintaining a Zero Trust security posture easy for companies of all sizes.\"}),/*#__PURE__*/e(\"h1\",{children:\"Service accounts: secure access for services\"}),/*#__PURE__*/t(\"p\",{children:[\"One of our top customer requests this year has been for Twingate to support Zero Trust controls for automated processes such as CI/CD pipelines and other unattended tasks. Automated processes often need \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authorization\"})}),\" to privileged resources, which can be both difficult to secure and complex to manage, particularly since rules typically depend on static configurations of network routes and firewalls.\"]}),/*#__PURE__*/t(\"p\",{children:[\"This need for \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access\"})}),\" was previously only solved by either deploying automated processes or applications directly into the privileged network, or by using a legacy VPN connection to achieve the same end goal. Both of these approaches have potential security shortcomings, typically mitigated by complex and brittle rules, which compounds the overhead of maintenance over time. Add the need to authorize third party SaaS applications into this picture, and you have a recipe for both complexity and potential vulnerabilities.\"]}),/*#__PURE__*/e(\"img\",{alt:\"CircleCI Staging Service Account\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,x6Lt3741s3Fq2IQPtvoQEvfEkA.png?originalFilename=serviceAccount.png\",src:\"https://framerusercontent.com/images/x6Lt3741s3Fq2IQPtvoQEvfEkA.png\",srcSet:\"https://framerusercontent.com/images/x6Lt3741s3Fq2IQPtvoQEvfEkA.png?scale-down-to=512 512w,https://framerusercontent.com/images/x6Lt3741s3Fq2IQPtvoQEvfEkA.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"CircleCI Staging Service Account\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate\u2019s service accounts address these issues by solving the primary pain points:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Apply consistent controls across end users and services, all in one place.\"}),\" Service accounts are a first-class citizen in Twingate\u2019s existing \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" architecture, so you can easily assign access to existing resources\u2014or define new ones\u2014in your Twingate admin console, giving you a single view of access across your network and organization.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Easily integrate with existing processes.\"}),\" Twingate\u2019s Linux and Windows clients now support \u201Cheadless\u201A modes, allowing you to connect using service account credentials in a single command line. This allows easy deployment in either proprietary or third party applications such as Github Actions.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Instantly modify access rules as needs change.\"}),\" There is no longer any need to modify firewall rules or re-configure IP allow list configurations. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Authorization\"})}),\" rules can be modified and keys can be rotated and revoked, ensuring that access remains current without needing to deploy potentially disruptive network changes.\"]})})]}),/*#__PURE__*/t(\"p\",{children:[\"To make it easy to get started, we\u2019ve provided \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/services#example-cicd-configurations\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"example configuration profiles\"})}),\" for both \",/*#__PURE__*/e(s,{href:\"https://github.com/Twingate/support/blob/master/.circleci/config.yml\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"CircleCI\"})}),\" and \",/*#__PURE__*/e(s,{href:\"https://github.com/Twingate/support/blob/master/.github/workflows/github-actions-demo.yml\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Github Actions\"})}),\". If you are using either a different CI/CD pipeline or custom automation, these examples can be used as templates to automate starting up Twingate in headless mode and providing programmatic access to protected resources in any scenario.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Service accounts are now available for any Enterprise tier customer, and \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/changelog/clients\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"the latest\"})}),\" Linux and Windows clients both support service account headless modes.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Twingate\u2019s Terraform Provider and Admin API\"}),/*#__PURE__*/t(\"p\",{children:[\"Infrastructure-as-Code has revolutionized the ability to deploy, maintain, and manage complex infrastructure deployments at scale. Infrastructure deployment is primarily concerned with properly supporting core applications and services, with remote access often deployed after infrastructure has been designed. This is often because infrastructure and \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access\"})}),\" are handled by different teams, in conflict with each other\u2019s goals, or both.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Our goal in supporting our \",/*#__PURE__*/e(s,{href:\"https://registry.terraform.io/providers/Twingate/twingate/latest\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Terraform Provider\"})}),\" is to bring Zero Trust access into the infrastructure planning conversation. By making it as simple as adding a few lines of code to your Terraform configuration to deploy a Twingate connector, secure access now becomes an integral part of your configuration, allowing changes to be made seamlessly as your infrastructure changes.\"]}),/*#__PURE__*/e(\"img\",{alt:\"Twingate Terraform\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,h4ltWuXcMajSwkvPybQXv7qRE.png?originalFilename=terraform.png\",src:\"https://framerusercontent.com/images/h4ltWuXcMajSwkvPybQXv7qRE.png\",srcSet:\"https://framerusercontent.com/images/h4ltWuXcMajSwkvPybQXv7qRE.png?scale-down-to=512 512w,https://framerusercontent.com/images/h4ltWuXcMajSwkvPybQXv7qRE.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate Terraform\"}),/*#__PURE__*/e(\"p\",{children:\"Customers are using our Terraform Provider to:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Automatically define and assign Twingate resources as they are deployed in Terraform.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Scale and deploy connectors as usage and needs change.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Ensure that their deployment is up to date with every configuration update.\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"Our Terraform Provider is made possible by our \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/api-overview\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Admin API\"})}),\", which we aim to maintain at parity with our interactive product functionality. Although we spend effort ensuring that our admin console offers high quality experience, we\u2019re delighted to see many of our customers automating their Twingate deployments using both our Admin API and our Terraform Provider.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Powered by our customer community\"}),/*#__PURE__*/t(\"p\",{children:[\"We\u2019ve invested heavily in automation at Blend and Twingate is a powerful platform that allows us to programmatically deploy and maintain a zero trust approach to our infrastructure.\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{}),\"- Paul Guthrie, Information Security Officer at Blend\"]}),/*#__PURE__*/t(\"p\",{children:[\"Since our public launch last year, we\u2019ve been humbled by the reception we\u2019ve received from companies all around the world. With the acceleration of cloud adoption and increasingly distributed workforces, it\u2019s clear that the legacy, perimeter-based models are quickly being left behind in favor of modern \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/why-isnt-everyone-using-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"zero trust\"})}),\" approaches.\"]}),/*#__PURE__*/t(\"p\",{children:[\"One of the most energizing aspects of building Twingate is the opportunity to partner with our customers. We work with some of the most innovative companies in the world, and we pool our expertise with our community to develop our roadmap. In particular, the teams at \",/*#__PURE__*/e(s,{href:\"https://thepillclub.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"The Pill Club\"})}),\" and \",/*#__PURE__*/e(s,{href:\"http://frame.io/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Frame.io\"})}),\" were terrific sounding boards for our approach to service accounts \u2014 huge thanks!\"]}),/*#__PURE__*/e(\"img\",{alt:\"New Customers Logo Wall\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,kpagifTCZtCAVwUlTdwl318taw.png?originalFilename=customers.png\",src:\"https://framerusercontent.com/images/kpagifTCZtCAVwUlTdwl318taw.png\",srcSet:\"https://framerusercontent.com/images/kpagifTCZtCAVwUlTdwl318taw.png?scale-down-to=512 512w,https://framerusercontent.com/images/kpagifTCZtCAVwUlTdwl318taw.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"New Customers Logo Wall\"}),/*#__PURE__*/t(\"p\",{children:[\"The ease of use with the terraform provider really sealed the deal for me.\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{}),\"- One of our favorite quotes from a DevOps engineer\"]}),/*#__PURE__*/e(\"p\",{children:\"We pride ourselves on being customer-driven to help us shape our roadmap and we\u2019re thrilled to welcome some fantastic new members to the Twingate community over the past few months.These companies are some of the fastest-growing, most innovative organizations in their markets and we look forward to partnering with them to bring our vision of simple, human-centric security to life.\"}),/*#__PURE__*/e(\"h1\",{children:\"This is just the beginning\"}),/*#__PURE__*/t(\"p\",{children:[\"We have made a lot of headway in 2021, but we are just getting started and can\u2019t wait to share more capabilities in the months to come. Our mission is to make \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\" easy for companies of all sizes, so give Twingate a \",/*#__PURE__*/e(s,{href:\"https://auth.twingate.com/signup?utm_source=blog&utm_medium=blog&utm_campaign=21q3-product-launch\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"try for free\"})}),\" today. We\u2019d love to \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/contact?utm_source=blog&utm_medium=blog&utm_campaign=21q3-product-launch\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"hear what you think\"})}),\".\"]})]})},{index:110,id:\"raclQCec5\",[h]:!0,[d]:!1,[p]:\"RDP & VPN: Why These Outdated Solutions Are Still Commonly Used\",[u]:\"RDP & VPN: Why These Outdated Solutions Are Still Commonly Used\",[m]:\"rdp-vpn\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2021-09-21T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/pNYnT4X2ICICD5GbL9MRDP5tE0Q.png\",srcSet:\"https://framerusercontent.com/images/pNYnT4X2ICICD5GbL9MRDP5tE0Q.png?scale-down-to=512 512w,https://framerusercontent.com/images/pNYnT4X2ICICD5GbL9MRDP5tE0Q.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/pNYnT4X2ICICD5GbL9MRDP5tE0Q.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/pNYnT4X2ICICD5GbL9MRDP5tE0Q.png 2388w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/pNYnT4X2ICICD5GbL9MRDP5tE0Q.png\",srcSet:\"https://framerusercontent.com/images/pNYnT4X2ICICD5GbL9MRDP5tE0Q.png?scale-down-to=512 512w,https://framerusercontent.com/images/pNYnT4X2ICICD5GbL9MRDP5tE0Q.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/pNYnT4X2ICICD5GbL9MRDP5tE0Q.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/pNYnT4X2ICICD5GbL9MRDP5tE0Q.png 2388w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"The most commonly used methods of remote access are Microsoft\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/what-is-rdp\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Remote Desktop Protocol\"})}),\" and virtual private networks. The first lets users access and control their office desktop computers over the internet. The second lets users access shared network resources while outside the company firewall.\"]}),/*#__PURE__*/t(\"p\",{children:[\"In addition to being the popular choice of businesses, they are also the \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/is-your-rdp-service-secure\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"favored target for cybercriminals\"})}),\". Many of the worst security breaches of the past few years originated from security flaws in these outdated security technologies.\"]}),/*#__PURE__*/e(\"p\",{children:\"In this article, we will explain why companies continue using Remote Desktop Protocol and virtual private networks. Then we will discuss the security flaws inherent to these systems. We will finish by introducing you to more modern access control approaches that are more secure, performant, and simpler to manage.\"}),/*#__PURE__*/e(\"h1\",{children:\"What is Remote Desktop Protocol (RDP)?\"}),/*#__PURE__*/e(\"p\",{children:\"Remote Desktop Protocol lets you access a computer or server over the internet. In its simplest form, an RDP client initiates a connection between a user\u2019s device and a host computer. The remote user can control the computer as if they were physically sitting in front of it.\"}),/*#__PURE__*/e(\"h1\",{children:\"RDP use cases\"}),/*#__PURE__*/e(\"p\",{children:\"Network administrators often use a simple direct RDP connection to manage servers in data centers. Without leaving the office, they can use RDP to perform system maintenance.\"}),/*#__PURE__*/t(\"p\",{children:[\"Small or mid-sized businesses consolidate their RDP traffic through a Remote Desktop Gateway server. Besides being more efficient, the server integrates with the companies\u2019 existing \",/*#__PURE__*/e(s,{href:\"https://twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authentication and authorization\"})}),\" systems.\"]}),/*#__PURE__*/e(\"p\",{children:\"Larger enterprises use RDP with desktop virtualization. They run instances of Windows on a server or in the cloud to avoid the overhead of physical desktops. RDP turns any device into a thin client for the virtual computer.\"}),/*#__PURE__*/e(\"h1\",{children:\"RDP advantages\"}),/*#__PURE__*/e(\"h2\",{children:\"Straightforward remote access\"}),/*#__PURE__*/e(\"p\",{children:\"RDP has a shallow learning curve as it works seamlessly with Microsoft\u2019s network management tools and virtualization solutions.\"}),/*#__PURE__*/e(\"h2\",{children:\"Improved user productivity\"}),/*#__PURE__*/e(\"p\",{children:\"Likewise, employees transitioning to home working have less to learn since they get the same desktop experience they had at the office.\"}),/*#__PURE__*/e(\"h2\",{children:\"Simplify BYOD management\"}),/*#__PURE__*/e(\"p\",{children:\"Bring your own device policies often add administrative overhead. With minimal configuration, Microsoft\u2019s RDP clients run effortlessly on Windows and Mac desktops as well as Android and iOS mobile devices.\"}),/*#__PURE__*/e(\"h2\",{children:\"Data security\"}),/*#__PURE__*/e(\"p\",{children:\"The host computer\u2019s display output is the only data users\u2019 personal devices receive. Applications and files remain on company-controlled systems, so your company\u2019s proprietary data is more secure.\"}),/*#__PURE__*/e(\"h1\",{children:\"RDP disadvantages\"}),/*#__PURE__*/e(\"h2\",{children:\"RDP sensitivity to network performance\"}),/*#__PURE__*/e(\"p\",{children:\"Sending desktop monitor outputs to remote users turns your business into a streaming video service. You may need to invest in additional network hardware to relieve the resulting congestion.\"}),/*#__PURE__*/e(\"h2\",{children:\"RDP visibility to hackers\"}),/*#__PURE__*/e(\"p\",{children:\"RDP relies on publicly visible open ports to enable remote connections. Cybercriminals can easily scan the internet to find any of the over four million visible RDP ports.\"}),/*#__PURE__*/e(\"h2\",{children:\"Weak RDP password policies\"}),/*#__PURE__*/e(\"p\",{children:\"Many RDP configurations control access with existing desktop passwords. Weak or poorly-enforced password policies make simple brute force attacks more effective.\"}),/*#__PURE__*/e(\"h1\",{children:\"What is a Virtual Private Network (VPN)?\"}),/*#__PURE__*/e(\"p\",{children:\"For nearly three decades, virtual private networks have been the preferred solution for remote access. VPN creates encrypted portals through their secure network perimeter to let remote employees access email and other network resources.\"}),/*#__PURE__*/e(\"h1\",{children:\"VPN use cases\"}),/*#__PURE__*/e(\"p\",{children:\"VPN\u2019s original purpose was to create secure wide-area networks over the internet. It was an affordable way for businesses to link their remote offices to central computing resources.\"}),/*#__PURE__*/e(\"p\",{children:\"VPN solution providers adapted this technique to enable remote access for end-users. The encrypted tunnel between the user\u2019s VPN client and the company\u2019s VPN gateway extended the network to the user\u2019s device.\"}),/*#__PURE__*/e(\"h1\",{children:\"VPN advantages\"}),/*#__PURE__*/e(\"h2\",{children:\"Secure remote access\"}),/*#__PURE__*/e(\"p\",{children:\"Given the poor security of public internet connections, sending remote users\u2019 data through encrypted tunnels keeps the company information away from prying eyes.\"}),/*#__PURE__*/e(\"h2\",{children:\"Compatibility with network systems\"}),/*#__PURE__*/e(\"p\",{children:\"Business VPN solutions have been available for many years, making it relatively easy to find a VPN solution that can be integrated with your network\u2019s existing security and administrative systems.\"}),/*#__PURE__*/e(\"h2\",{children:\"Scalable ecosystem\"}),/*#__PURE__*/e(\"p\",{children:\"From small businesses to large enterprises, you can find a VPN solution to meet your users\u2019 needs, security policies, and budgets.\"}),/*#__PURE__*/e(\"h1\",{children:\"VPN disadvantages\"}),/*#__PURE__*/e(\"h2\",{children:\"VPN impact on network performance\"}),/*#__PURE__*/e(\"p\",{children:\"The VPN gateway is a bottleneck for your company\u2019s remote traffic. The only way to address issues of backhaul, bandwidth congestion, and latency is to purchase more gateways or more expensive gateways.\"}),/*#__PURE__*/e(\"h2\",{children:\"VPN costs\"}),/*#__PURE__*/t(\"p\",{children:[\"You can avoid many hardware limitations by implementing VPN solutions in software. However, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/aws-vpn-pricing\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"complicated pricing structures\"})}),\" get expensive quickly.\"]}),/*#__PURE__*/e(\"h2\",{children:\"VPN impact on security\"}),/*#__PURE__*/e(\"p\",{children:\"Like RDP hosts, VPN gateways must be visible on the internet. You risk a security breach unless you can patch your gateways faster than hackers can scan the internet. Since VPN gateways grant full access to the protected network, bad actors can do considerable damage.\"}),/*#__PURE__*/e(\"h2\",{children:\"Deployment challenges\"}),/*#__PURE__*/e(\"p\",{children:\"VPN solutions often require networking expertise to roll out and support in an organization. Secure implementation of a corporate VPN may also require existing network infrastructure to be reconfigured, leading to an intensive deployment process.\"}),/*#__PURE__*/e(\"h1\",{children:\"How are RDP & VPN different?\"}),/*#__PURE__*/e(\"p\",{children:\"Although both RDP and VPN provide remote access, they address different business needs. RDP\u2019s primary purpose is to let users remotely access files and applications kept locally on a computer. VPN\u2019s primary purpose is to give users remote access to shared network resources.\"}),/*#__PURE__*/e(\"h2\",{children:\"VPN is better when\u2026\"}),/*#__PURE__*/e(\"p\",{children:\"Your business follows a network-centric IT philosophy that:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Requires network storage of all files.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Hosts business applications on company servers.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Uses cloud-based applications and X-as-a-Service solutions.\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"RDP is better when\u2026\"}),/*#__PURE__*/e(\"p\",{children:\"Your business follows a desktop-centric IT philosophy that:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Lets employees keep files locally.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Relies on desktop applications.\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"Use both RDP and VPN when\u2026\"}),/*#__PURE__*/e(\"p\",{children:\"You want better RDP security. Although you still have VPN\u2019s drawbacks, you mitigate RDP\u2019s security risks by putting it behind a VPN gateway (albeit by shifting some of the security risk to the VPN gateway itself).\"}),/*#__PURE__*/e(\"p\",{children:\"Frankly, neither technology is a great option compared to more secure modern alternatives.\"}),/*#__PURE__*/e(\"h1\",{children:\"What alternative remote access solutions exist outside of RDP & VPNs?\"}),/*#__PURE__*/t(\"p\",{children:[\"The remote access solution that offers the best combination of security, flexibility, and value is a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/why-isnt-everyone-using-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"zero trust network access (ZTNA)\"})}),\" product that allows a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"software-defined perimeter (SDP)\"})}),\" to be implemented.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Zero trust network access\"}),/*#__PURE__*/e(\"p\",{children:\"Traditional approaches to network security operate on a principle of trust once users, devices, or networks pass initial security criteria. This is the core weakness that opens security holes in technologies like RDP and VPN. Trust is never assumed in a ZTNA access control system which operates on three principles:\"}),/*#__PURE__*/e(\"h2\",{children:\"Never trust, always verify\"}),/*#__PURE__*/e(\"p\",{children:\"ZTNA treats an executive working at the office no differently from a contractor working at an airport. Every user must verify their identity every time they connect \u2014 and no matter what network they use to connect.\"}),/*#__PURE__*/e(\"h2\",{children:\"Assume breaches\"}),/*#__PURE__*/t(\"p\",{children:[\"You can never predict when cyberattacks will work, so assume your defenses are already compromised. Use least privileged, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-models\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"role-based access\"})}),\" permissions to minimize damage from successful attacks.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Verify explicitly\"}),/*#__PURE__*/t(\"p\",{children:[\"Do not rely on a simple username and password for verification. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Authentication and authorization\"})}),\" processes should use multiple criteria including multi-factor authentication, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/device-trust-in-a-zero-trust-world\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"device posture\"})}),\" and user location to determine the degree of access a user receives.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Software-defined perimeters\"}),/*#__PURE__*/t(\"p\",{children:[\"The trouble with traditional secure perimeters is that successful breaches give cybercriminals access to everything on the protected network. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"SDP\"})}),\" refocuses security away from the network to what really matters: a company\u2019s resources. Neither on-premises servers nor cloud applications can be seen, much less accessed, without going through the SDP\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control\"})}),\" system. A well-implemented SDP also allows RDP servers to be truly hidden from prying eyes on the public internet, while not merely shifting the problem to a VPN gateway which itself is visible.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Beyond security: the benefits of SDP + ZTNA\"}),/*#__PURE__*/e(\"p\",{children:\"While security drives much of the interest in SDP and ZTNA, these access solutions offer several other benefits.\"}),/*#__PURE__*/e(\"h2\",{children:\"Unified management\"}),/*#__PURE__*/e(\"p\",{children:\"Traditional security methods only work for certain scenarios. People working on-premises, remote workers, proprietary networks, and cloud-based resources are protected by different systems. Solutions based on SDP and ZTNA support all these scenarios within a unified administrative system.\"}),/*#__PURE__*/e(\"h2\",{children:\"Efficient network architecture\"}),/*#__PURE__*/e(\"p\",{children:\"Network segmentation and other attempts to mitigate the weaknesses of outdated systems require expensive investments and considerable overhead. SDP creates the ultimate segmentation by drawing the secure perimeter around each resource \u2014 without the need for more hardware.\"}),/*#__PURE__*/e(\"h2\",{children:\"Improved network performance\"}),/*#__PURE__*/t(\"p\",{children:[\"Once \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authenticated and authorized\"})}),\", the SDP system creates a direct connection between a resource and a user\u2019s device. This eliminates the bottlenecks imposed by VPN and other network endpoints. SDP systems can also employ split-tunneling to send non-essential traffic directly through the public internet rather than routing it through company networks first.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Scalability\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Access control\"})}),\" systems based on SDP and ZTNA are more responsive to changing business needs than traditional approaches. On-boarding and off-boarding users, changing roles, and other administrative tasks can be performed through simple, centralized consoles.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Why do many companies continue to use RDP and VPNs despite their security flaws?\"}),/*#__PURE__*/e(\"p\",{children:\"Despite modern solutions\u2019 clear advantages, companies have been slow to change. Historically, enterprise solutions were incompatible with existing systems. Migrating to SDP meant investing in a complete architecture before making the switch. With all its resources, even Google took years to implement its zero-trust system.\"}),/*#__PURE__*/t(\"p\",{children:[\"This situation has begun to change. New government policies require \",/*#__PURE__*/e(s,{href:\"https://www.nextgov.com/cybersecurity/2021/09/biden-administration-releases-draft-zero-trust-guidance/185166\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"federal agencies to adopt zero-trust and SDP\"})}),\". The ripple effect of these decisions will extend into the private sector and accelerate the acceptance of zero-trust security.\"]}),/*#__PURE__*/e(\"p\",{children:\"Twingate already offers an access control solution that makes it easy to adopt SDP and ZTNA. Compatible with your existing infrastructure and security stack, you can deploy Twingate in phases. You can protect on-premises and cloud-based resources while making it easier for your users to connect.\"}),/*#__PURE__*/e(\"p\",{children:\"Once deployed, managing user access will require less overhead thanks to Twingate\u2019s simple administrative consoles. User experience will improve as the transparent, always-on Twingate client automatically manages their role-based access.\"}),/*#__PURE__*/e(\"h1\",{children:\"Replace outdated remote access solutions with Twingate\"}),/*#__PURE__*/e(\"p\",{children:\"The most popular remote access solutions, including RDP and VPN, have been around for decades. While that makes them known quantities, both technologies make inherent assumptions that expand your organization\u2019s attack surface. The shift to remote working has exposed these security flaws like never before. And increasingly, companies are looking for a better, more secure way of providing access to sensitive resources.\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s modern solution uses \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust Network Access\"})}),\" and Software Defined Perimeters to improve access to company resources while enhancing security. Our zero trust access solution makes your networks more agile, performant, and scalable. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=rdp-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Find out more today\"})}),\".\"]})]})},{index:111,id:\"fXPVCIw8B\",[h]:!0,[d]:!1,[p]:\"IPsec Passthrough and VPN Passthrough: What Are They?\",[u]:\"IPsec Passthrough\",[m]:\"ipsec-passthrough\",[g]:\"\",[w]:\"Mihir Patel\",[f]:\"2021-09-16T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/eghIsgljdCOpE6ppOH4f9wgys.png\",srcSet:\"https://framerusercontent.com/images/eghIsgljdCOpE6ppOH4f9wgys.png?scale-down-to=512 512w,https://framerusercontent.com/images/eghIsgljdCOpE6ppOH4f9wgys.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/eghIsgljdCOpE6ppOH4f9wgys.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/eghIsgljdCOpE6ppOH4f9wgys.png 2388w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/eghIsgljdCOpE6ppOH4f9wgys.png\",srcSet:\"https://framerusercontent.com/images/eghIsgljdCOpE6ppOH4f9wgys.png?scale-down-to=512 512w,https://framerusercontent.com/images/eghIsgljdCOpE6ppOH4f9wgys.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/eghIsgljdCOpE6ppOH4f9wgys.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/eghIsgljdCOpE6ppOH4f9wgys.png 2388w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"As an IT administrator, you constantly come across Virtual Private Networks (VPNs). One of the major benefits of using a VPN is that it establishes a safeguard to protect the sensitive data\u2014like medical records or financial transactions\u2014of your organization. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ipsec-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPNs are commonly built on IPsec\"})}),\", a technology that helps to ensure the security of communications over a VPN. Let\u2019s quickly define \",/*#__PURE__*/e(s,{href:\"https://vpnpro.com/vpn-basics/what-is-a-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"what VPNs\"})}),\" and IPsec are.\"]}),/*#__PURE__*/t(\"p\",{children:[\"A \",/*#__PURE__*/e(\"em\",{children:\"VPN\"}),\" in a business context allows users to access a private network and share sensitive data remotely via public networks such as the internet.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"em\",{children:\"IPsec\"}),\" is a suite of protocols that is used to establish mutual authentication between computers at the beginning of a communications session and to negotiate cryptographic keys during the session.\"]}),/*#__PURE__*/e(\"p\",{children:\"VPNs are commonly used in small and large enterprises to enable employees to access their corporate network remotely. If your enterprise uses an older protocol such as IPsec or PPTP, a VPN Passthrough is required.\"}),/*#__PURE__*/e(\"p\",{children:\"In this article, you will learn what a VPN Passthrough is and why we need them.\"}),/*#__PURE__*/e(\"h1\",{children:\"What is a VPN Passthrough?\"}),/*#__PURE__*/e(\"p\",{children:\"A VPN Passthrough is a router feature that allows the device connected to your router to establish what\u2019s known as an outbound VPN connection, which is a connection from your office or home out to the internet.\"}),/*#__PURE__*/e(\"p\",{children:\"To understand VPN Passthrough, we need to understand routers first. There are routers that natively support a VPN connection and though it is rare to find nowadays, there are also routers that don\u2019t. In the latter case, a VPN Passthrough is required to allow you to access a remote network.\"}),/*#__PURE__*/e(\"p\",{children:\"A VPN Passthrough is a way to connect two secured networks over the internet. VPN Passthrough helps a system behind a firewall of a router to access a remote network. It quite literally allows the VPN traffic to pass through the router, hence why it\u2019s called VPN Passthrough.\"}),/*#__PURE__*/e(\"p\",{children:\"These days, it\u2019s uncommon to find modern routers without a passthrough feature already built in. You can enable or disable VPN Passthrough in the router\u2019s management interface. Every router has a different interface so be sure to check out the manual. Most routers enable VPN Passthrough by default.\"}),/*#__PURE__*/e(\"p\",{children:\"Before we dig deeper, let\u2019s clarify the difference between a VPN Passthrough and a VPN router, because they\u2019re not the same thing.\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"em\",{children:\"VPN Passthrough\"}),\" is a feature on a router that allows VPN traffic to pass through using old VPN protocols.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"em\",{children:\"VPN router\"}),\" is a router that a VPN client is installed on.\"]})})]}),/*#__PURE__*/e(\"h1\",{children:\"Why Do We Need a VPN Passthrough?\"}),/*#__PURE__*/e(\"p\",{children:\"To understand how passthrough works, we need to understand NAT which stands for Network Address Translation.\"}),/*#__PURE__*/t(\"p\",{children:[\"For our purposes, NAT allows devices to share the same internet connection by translating the IP address space of an internet network with the IP address space of an external network (like the internet) that a router is connected to. NAT is commonly used on modern routers, but VPN protocols such as IPsec and PPTP \",/*#__PURE__*/e(s,{href:\"https://www.computerworld.com/article/2556611/nat-traversal--nat-t--security-issues.html\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"do not work with NAT\"})}),\".\"]}),/*#__PURE__*/e(\"p\",{children:\"VPN protocols encrypt the connection, which prevents NAT from accessing and modifying certain information in IP packet headers to do its job. If you don\u2019t have a passthrough, NAT will effectively block these connections. Routers with VPN Passthrough support two of the most common type of legacy VPN protocols: IPsec and PPTP.\"}),/*#__PURE__*/e(\"h1\",{children:\"What is IPsec Passthrough?\"}),/*#__PURE__*/e(\"p\",{children:\"If your business has sensitive data, security is a major concern. Internet Protocol Security (IPsec) is a suite of protocols used to encrypt data packets to establish secure connections. It is a security layer embedded in the network itself. Most routers connect to the internet using a NAT protocol which is incompatible with IPsec.\"}),/*#__PURE__*/e(\"p\",{children:\"IPsec Passthrough allows IPsec tunnels to pass through the router. Layer 2 Tunneling Protocol (L2TP) is used to enable Point-to-Point sessions through the internet at the Layer 2 level. These networking procedures and protocols establish secure IP connection over gateways and make it compatible with NAT protocol.\"}),/*#__PURE__*/e(\"p\",{children:\"Many routers come with IPsec Passthrough and L2TP Passthrough, which are already enabled by default. For further details, read the manual that comes with your router on how to enable and disable these passthroughs.\"}),/*#__PURE__*/e(\"p\",{children:\"Let\u2019s cover some of the advantages and disadvantages of using IPsec Passthrough.\"}),/*#__PURE__*/e(\"h2\",{children:\"Advantages\"}),/*#__PURE__*/e(\"ol\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The main advantage of enabling IPsec Passthrough is that it will establish and safely maintain IP connections over routers that require NAT.\"})})}),/*#__PURE__*/e(\"h2\",{children:\"Disadvantages\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"All data packets that are passing through the router require encryption and decryption and putting a load on the CPU, which leads to increased computational time.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"By enabling IPsec Passthrough, any vulnerabilities that exist at the IP layer in the remote network could be passed to the corporate network across the IPsec tunnel.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Without IPsec Passthrough enabled, your traffic will be blocked if firewall restrictions are in place. This is not an issue if you have a modern router, but it can be an issue if you have an outdated router.\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"What is PPTP Passthrough?\"}),/*#__PURE__*/e(\"p\",{children:\"Point-to-Point-Tunneling Protocol (PPTP) interconnects different Virtual Private Networks (VPN) together and allows tunneling through an IP network like the internet.\"}),/*#__PURE__*/e(\"p\",{children:\"Most routers facilitate device connections to the internet using NAT which, as mentioned above, is incompatible with PPTP. The PPTP Passthrough feature allows PPTP to pass through a NAT router. This, as a result, allows VPN clients connected to such a router to make outbound PPTP connections.\"}),/*#__PURE__*/e(\"p\",{children:\"This extra layer of implementation along with IPsec can make your networking security more robust.\"}),/*#__PURE__*/e(\"p\",{children:\"Let\u2019s cover some of the advantages and disadvantages of using PPTP Passthrough.\"}),/*#__PURE__*/e(\"h2\",{children:\"Advantages\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Enabling PPTP Passthrough guarantees the fastest VPN speeds via your PPTP connection.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"This extra layer of PPTP Passthrough along with IPsec Passthrough can make your networking security more robust.\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"Disadvantage\"}),/*#__PURE__*/e(\"ol\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The biggest disadvantage to enabling PPTP Passthrough is that it might compromise your security if your PPTP connection goes through your router by accident. This is because PPTP barely provides any security.\"})})}),/*#__PURE__*/e(\"h1\",{children:\"Conclusion\"}),/*#__PURE__*/e(\"p\",{children:\"A VPN Passthrough is a feature that allows your router to support legacy VPN protocols.\"}),/*#__PURE__*/e(\"p\",{children:\"While a growing number of VPNs are implementing more modern VPN protocols like WireGuard, it can be costly for organizations to replace legacy VPN infrastructure. Using VPN Passthrough can help solve one of the shortcomings of IPsec and PPTP, and is an all but necessary part of allowing IPsec and PPTP to be used in networked organizations. Fortunately, most modern routers are embedded with passthrough functionality.\"}),/*#__PURE__*/t(\"p\",{children:[\"All that said, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/why-isnt-everyone-using-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"VPN technology is quickly becoming outdated\"})}),\", with more secure, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust-based technologies\"})}),\" replacing VPNs. Twingate offers a zero trust solution in a SaaS product that is easy to deploy, administer, and use. With Twingate, you don\u2019t need to configure or even know about VPN passthrough. Learn how this is possible with a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=ipsec-passthrough\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"demo request\"})}),\" today!\"]})]})},{index:112,id:\"bsMncSPKW\",[h]:!0,[d]:!1,[p]:\"What is RDP? Remote Desktop Protocol Explained\",[u]:\"What is RDP?\",[m]:\"what-is-rdp\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2021-09-14T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/nkvQdPuVkU1MVTrXTlx1PqOA.png\",srcSet:\"https://framerusercontent.com/images/nkvQdPuVkU1MVTrXTlx1PqOA.png?scale-down-to=512 512w,https://framerusercontent.com/images/nkvQdPuVkU1MVTrXTlx1PqOA.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/nkvQdPuVkU1MVTrXTlx1PqOA.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/nkvQdPuVkU1MVTrXTlx1PqOA.png 2388w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/nkvQdPuVkU1MVTrXTlx1PqOA.png\",srcSet:\"https://framerusercontent.com/images/nkvQdPuVkU1MVTrXTlx1PqOA.png?scale-down-to=512 512w,https://framerusercontent.com/images/nkvQdPuVkU1MVTrXTlx1PqOA.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/nkvQdPuVkU1MVTrXTlx1PqOA.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/nkvQdPuVkU1MVTrXTlx1PqOA.png 2388w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Remote Desktop Protocol (RDP) is a way to access and control a computer over a network. RDP can work as a remote access solution. In effect, it lets users operate their office desktop computer from anywhere in the world. Since RDP is a standard feature of Microsoft\u2019s Windows operating system, RDP was a lifesaver when businesses suddenly told employees to work from home.\"}),/*#__PURE__*/e(\"p\",{children:\"Using RDP as a remote access solution \u2014 at scale \u2014 introduces new challenges and risks. In this article, we will review the technology\u2019s benefits and its limitations. By the end, you will understand why RDP is a problematic remote access solution and what you can do to improve your organization\u2019s security.\"}),/*#__PURE__*/e(\"h1\",{children:\"What is Remote Desktop Protocol (RDP)?\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://news.microsoft.com/1998/06/16/microsoft-releases-windows-nt-server-4-0-terminal-server-edition\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Microsoft introduced Remote Desktop Protocol\"})}),\" in 1998 as part of Windows NT Server 4.0 Terminal Server Edition. Its original purpose was to let companies deploy \u201Cthin client\u201A architectures. Business computers and other devices that could not run Windows software could log into more powerful Windows servers. The server received keyboard and mouse commands from the user\u2019s system, ran the software, and sent the display output back to the user\u2019s device.\"]}),/*#__PURE__*/e(\"p\",{children:\"Network administrators also benefited from RDP as it became a standard feature of Microsoft\u2019s server and desktop operating systems. Updating and troubleshooting no longer meant visiting a computer on another floor, in another building, or on another campus. With Remote Desktop Protocol, administrators could simply log into the computer over the network. Working through RDP was no different from sitting in front of the other computer.\"}),/*#__PURE__*/e(\"p\",{children:\"Over time, Remote Desktop Protocol became a way to give traveling employees access to their work computers. As opposed to a VPN connection\u2019s network-level access, RDP gave employees desktop-level access. This was especially important when desktop software such as Microsoft Access or Excel performed business-critical functions.\"}),/*#__PURE__*/t(\"p\",{children:[\"Microsoft now offers RDP support \",/*#__PURE__*/e(s,{href:\"https://docs.microsoft.com/en-us/windows-server/remote/remote-desktop-services/clients/remote-desktop-clients\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"beyond the Windows ecosystem\"})}),\". Remote client applications can run on systems based on macOS, Android, and iOS. An RDP web client lets users with Linux, macOS, or ChromeOS devices access a Windows desktop through a modern browser.\"]}),/*#__PURE__*/e(\"h1\",{children:\"How does RDP work?\"}),/*#__PURE__*/e(\"p\",{children:\"RDP establishes a dedicated, encrypted network connection between the host system and the remote device. Through this connection, mouse and keyboard data flow upstream from the user while presentation data flow downstream from the host system. Application execution, data storage and processing remain on the host system.\"}),/*#__PURE__*/e(\"p\",{children:\"The host may be a physical desktop computer located on company property. Increasingly, however, companies use on-premises servers or cloud services to run virtual instances of the Windows desktop operating system. RDP gives users access to these virtual desktops whether they are in the office or working remotely.\"}),/*#__PURE__*/e(\"p\",{children:\"This virtual approach is the modern version of thin-client computing. Whether users are in the office, traveling on business, or working from home, they always have access to \u201Ctheir\u201A computer from any device. Especially in regulated industries, businesses like this architecture because they can keep data on protected systems. At the same time, this RDP use case makes bring-your-own-device (BYOD) policies easier to manage.\"}),/*#__PURE__*/t(\"p\",{children:[\"As we mentioned earlier, native Windows support for RDP came in handy when COVID-19 broke out. Companies could let users run RDP client software on their home systems and keep the business running. During the first three months of 2020, \",/*#__PURE__*/e(s,{href:\"https://www.zdnet.com/article/rdp-and-vpn-use-skyrocketed-since-coronavirus-onset\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"the number of RDP endpoints soared by 33%\"})}),\".\"]}),/*#__PURE__*/e(\"h1\",{children:\"What are the benefits of Remote Desktop Protocol (RDP)?\"}),/*#__PURE__*/e(\"p\",{children:\"Today\u2019s Remote Desktop Protocol offers important benefits that improve the remote user experience while serving business needs.\"}),/*#__PURE__*/e(\"h2\",{children:\"Simplifies remote access\"}),/*#__PURE__*/e(\"p\",{children:\"Since RDP is part of Microsoft\u2019s server and desktop operating systems, implementing it as a remote access solution is straightforward. You can use your existing management tools to onboard and offboard users. Microsoft\u2019s cross-platform RDP client and web apps let you tame the complexity of BYOD policies.\"}),/*#__PURE__*/t(\"p\",{children:[\"RDP even works for users, such as game developers or engineers, who rely on high-performance systems. For example, you can \",/*#__PURE__*/e(s,{href:\"https://docs.microsoft.com/en-us/troubleshoot/windows-server/remote/frame-rate-limited-to-30-fps\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"remove RDP\u2019s default 30-frames-per-second limit\"})}),\" on streaming performance. Microsoft-sanctioned workarounds support speeds up to 60 frames per second.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Cost savings\"}),/*#__PURE__*/e(\"p\",{children:\"Microsoft\u2019s integration of RDP into its operating systems made it an affordable way to enable remote access quickly. The software is already on Windows-based office computers. The client app is free to download and distribute to employees working from home. In addition, RDP works within a company\u2019s existing network infrastructure.\"}),/*#__PURE__*/e(\"h2\",{children:\"Data containment\"}),/*#__PURE__*/e(\"p\",{children:\"Remote Desktop Protocol can make sensitive business data more secure. Only control and presentation data pass between company servers and workers\u2019 personal devices. All proprietary data remain on company-controlled systems at all times.\"}),/*#__PURE__*/e(\"h2\",{children:\"Access legacy and restricted resources\"}),/*#__PURE__*/e(\"p\",{children:\"Many businesses have resources that are only accessible from the on-premises network. These may be legacy systems or sensitive systems that require tighter access controls. Pandemic lockdowns prevented employees from accessing these systems and further disrupted business operations. RDP offered a solution by letting workers access restricted resources remotely through their office computers.\"}),/*#__PURE__*/e(\"h1\",{children:\"Why has RDP become problematic as a means for remote access?\"}),/*#__PURE__*/e(\"p\",{children:\"Like anything else, RDP is not perfect. Companies that rushed out an RDP remote access system may not have considered the tradeoffs. These are some of the issues that RDP remote access introduces:\"}),/*#__PURE__*/e(\"h2\",{children:\"Sensitivity to bandwidth and latency\"}),/*#__PURE__*/e(\"p\",{children:\"When you access a Windows desktop remotely, you are streaming a high-definition video of everything that happens on that computer. Bandwidth congestion degrades the RDP client\u2019s \u201Cdisplay\u201A quality. And high latency adds an undesktop-like lag between mouse clicks and events.\"}),/*#__PURE__*/e(\"p\",{children:\"At the user\u2019s home office, the RDP stream competes with Zoom classrooms and mid-afternoon YouTube binges. On-premises, networks may not be ready for the simultaneous high-definition RDP streams from hundreds of workers.\"}),/*#__PURE__*/e(\"p\",{children:\"This is especially true for firewalls and other endpoints. The only fix is to add more hardware which consumes the savings that made RDP an attractive choice in the first place.\"}),/*#__PURE__*/e(\"h2\",{children:\"Security vulnerabilities\"}),/*#__PURE__*/e(\"p\",{children:\"The most significant issue with Remote Data Protocol is the way it expands your network\u2019s attack surface. Cybercriminals love RDP and similar solutions because it is everywhere.\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"In 2020, nearly \",/*#__PURE__*/e(s,{href:\"https://www.computerweekly.com/news/252501122/Malicious-scans-for-at-risk-systems-start-minutes-after-disclosure\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"one out of every three vulnerabilities\"})}),\" were associated with Remote Desktop Protocol.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Cyber actors \",/*#__PURE__*/e(s,{href:\"https://us-cert.cisa.gov/ncas/alerts/aa21-042a\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"exploited an unsecured remote desktop application\"})}),\" to penetrate and manipulate a US water treatment facility.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Even before the pandemic, the Multi-State Information Sharing and Analysis Center warned that a rising wave of \",/*#__PURE__*/e(s,{href:\"https://www.cisecurity.org/white-papers/security-primer-remote-desktop-protocol\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"ransomware was targeting unsecured RDP systems\"})}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Cyber insurer \",/*#__PURE__*/e(s,{href:\"https://www.coalitioninc.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Coalition\"})}),\" calls RDP \u201Cthe critical security exposure that is most often present as a technical and \",/*#__PURE__*/e(s,{href:\"https://www.coalitioninc.com/blog/what-you-need-to-know-about-rdp\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"predictive indicator of ransomware infections\"})}),\".\u201A\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"So significant is the risk posed by RDP, that open RDP ports is something that cyber insurance underwriters now routinely look for during the underwriting process.\"}),/*#__PURE__*/e(\"h2\",{children:\"Exposed ports and weak passwords\"}),/*#__PURE__*/t(\"p\",{children:[\"The first security risk comes from the way RDP accepts incoming connection attempts. Client apps access the host through an open port, usually port 3389. Publicly visible ports are an invitation to cybercriminals. Simple scanning tools easily reveal over \",/*#__PURE__*/e(s,{href:\"https://arstechnica.com/features/2020/11/future-of-collaboration-03\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"four million exposed RDP hosts\"})}),\" on the internet.\"]}),/*#__PURE__*/e(\"p\",{children:\"The second security risk comes from a business\u2019 failure to impose strong password policies. When users log into their desktop through RDP, they enter the same login password they use at the office. Weak passwords on office computers are bad enough. When RDP exposes those computers to the internet, however, companies become fat targets.\"}),/*#__PURE__*/e(\"p\",{children:\"Combine easy visibility with weak passwords and cybercriminals can use simple brute-force attacks to gain access to the desktop. At that point, they have full access to everything on the user\u2019s computer \u2014 and the office network.\"}),/*#__PURE__*/e(\"h1\",{children:\"If your organization uses an RDP solution, what should you do?\"}),/*#__PURE__*/e(\"p\",{children:\"In the near term, you can take several steps to secure an RDP remote access system.\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Hide your RDP ports: Putting everything behind a firewall and VPN gateway hides the RDP systems from cybercriminals\u2019 scanning tools (the VPN gateway, being public, is exposed to the public internet as well, but at least you can reduce the number of exposure points).\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Use access control: \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/whitelisting\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Allowlists\"})}),\" and \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-list\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"access control lists\"})}),\" let you limit the number of IP addresses that may access your RDP system.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Enforce strong passwords: Supply easy-to-use password managers or single sign-on systems to make strong password policies easier to enforce. Use multi-factor authentication for extra protection against brute-force attacks.\"})})]}),/*#__PURE__*/e(\"h1\",{children:\"Replace your RDP system with a modern remote access solution\"}),/*#__PURE__*/t(\"p\",{children:[\"The stopgap measures only go so far. Hiding RDP behind a VPN, for example, simply replaces a weak security system \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"with a slightly less weak security system\"})}),\". The advice that \",/*#__PURE__*/e(s,{href:\"https://www.coalitioninc.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Coalition\"})}),\", the Center for Internet Security, and others give companies is to stop using RDP completely and use more modern and secure remote access solutions \u2013 or, if RDP is essential, then to protect it using more modern solutions.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Modern approaches use \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/why-isnt-everyone-using-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"zero trust network access (ZTNA)\"})}),\" principles to control who can access which resources under what circumstances. Unlike RDP, ZTNA assumes that nobody is trustworthy no matter which device they use or which network they connect from.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Implementing ZTNA through \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"software-defined perimeters (SDPs)\"})}),\" further protects company resources by making them invisible to anyone without need-to-know access privileges.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Replace RDP remote access with Twingate\u2019s modern ZTNA solution\"}),/*#__PURE__*/e(\"p\",{children:\"With little time to prepare, many companies turned to Microsoft\u2019s Remote Desktop Protocol to make the sudden shift to remote working. Employees could use their work computers from whatever personal device they owned. At the same time, network administrators kept sensitive data on company-controlled systems. However, RDP\u2019s convenience also makes it a security risk.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=what-is-rdp\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate\"})}),\" offers a modern way to enable remote workforces through \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"zero trust network access\"})}),\". Easy to deploy and simple to manage, Twingate\u2019s solution protects your most sensitive resources by:\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Hiding resources from the public internet.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Replacing VPN with role-based authentication and authorization.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Enabling robust passwords and multi-factor authentication.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Delivering more performant connections.\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"You can read more about \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/is-your-rdp-service-secure\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate and RDP\"})}),\". Or \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=what-is-rdp\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"contact Twingate\"})}),\" to learn how your company can enhance security while enabling remote desktop access.\"]})]})},{index:113,id:\"LgGROckL2\",[h]:!0,[d]:!1,[p]:\"Access Control: Essentials for Modern IT Teams\",[u]:\"Access Control Essentials\",[m]:\"access-control-essentials\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2021-09-08T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/dBsTVB8uxdY6jfzdNpjJtEk4.png\",srcSet:\"https://framerusercontent.com/images/dBsTVB8uxdY6jfzdNpjJtEk4.png?scale-down-to=512 512w,https://framerusercontent.com/images/dBsTVB8uxdY6jfzdNpjJtEk4.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/dBsTVB8uxdY6jfzdNpjJtEk4.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/dBsTVB8uxdY6jfzdNpjJtEk4.png 2388w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/dBsTVB8uxdY6jfzdNpjJtEk4.png\",srcSet:\"https://framerusercontent.com/images/dBsTVB8uxdY6jfzdNpjJtEk4.png?scale-down-to=512 512w,https://framerusercontent.com/images/dBsTVB8uxdY6jfzdNpjJtEk4.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/dBsTVB8uxdY6jfzdNpjJtEk4.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/dBsTVB8uxdY6jfzdNpjJtEk4.png 2388w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Access control consists of the policies, processes, and technologies that determine who may access an organization\u2019s information resources. An access control system can go further by limiting the extent of that access based on factors such as the characteristics of a user\u2019s device or network connection. With the right strategy, companies can reduce their attack surface while limiting the damage of successful cyberattacks.\"}),/*#__PURE__*/e(\"p\",{children:\"This guide draws the conceptual, technological, and security landscape of modern access control. We will help you understand the trade-offs between different approaches as well as their limitations in the face of the challenges companies face. The topics we will cover include:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"What is Access Control?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"What steps are necessary within an access control system?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"What are the different types of access control?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"What are the technological models for remote access into a network?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"How should you be thinking about Network Access Control in 2021?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Access Control List: how to leverage ACLs within your access control strategy\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Allowlisting: should you be using it in your access control strategy?\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Access control has always evolved in lockstep with changes in technology and the workplace. But the pandemic of 2020 put access control in the spotlight. Old assumptions about productivity and working from home shattered as businesses kept running despite the overnight shift to work-from-home. Now organizations large and small are considering making the hybrid workforce permanent.\"}),/*#__PURE__*/e(\"p\",{children:\"Yet remote working introduces very real risks that organizations must address. IT administrators have less control over the security of users\u2019 devices and home networks. At the same time that VPN-based remote access expanded, cybercriminals\u2019 attacks against vulnerable VPN technologies intensified.\"}),/*#__PURE__*/e(\"p\",{children:\"With a solid understanding of the advantages and disadvantages of each option, IT teams will be better prepared to protect their organizations\u2019 information resources.\"}),/*#__PURE__*/e(\"h1\",{children:\"What is access control?\"}),/*#__PURE__*/e(\"p\",{children:\"To expand on our earlier definition, access control determines who may join a network or use a resource as well as which devices are included in those permissions. Going further, the policies you set will also determine the context under which those permissions are granted, sustained, and revoked.\"}),/*#__PURE__*/e(\"h2\",{children:\"Raising the secure perimeter\"}),/*#__PURE__*/e(\"p\",{children:\"The traditional approaches to access control evolved in a relatively simple age. The only way to access information resources was to be:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"A company employee;\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Using a company-owned and managed device;\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Hardwired to a company-owned and managed network.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"In this environment, access control was as much about controlling physical access as it was about digital access.\"}),/*#__PURE__*/e(\"p\",{children:\"Things became more complicated late in the 20th Century as remote access became essential. Laptops and the internet made it easier for employees to use on-premises company resources while away from the office. But giving people access to a protected network over the internet carried huge risks.\"}),/*#__PURE__*/e(\"p\",{children:\"Over time, companies adopted the concept of the secure perimeter to balance security and access. Secure perimeter approaches focus on locking down access to an organization\u2019s physical network from anyone other than trusted employees. By analogy, this approach is often called a castle-and-moat strategy. Companies build a moat of network defenses around their protected resources, their castle. A guarded drawbridge, typically in the form of virtual private networking (VPN) technology, lets the good people in and keeps the bad people out.\"}),/*#__PURE__*/e(\"h2\",{children:\"Networking in the modern age\"}),/*#__PURE__*/e(\"p\",{children:\"Just as technological and social change made medieval castles obsolete, the traditional secure perimeter has not kept up with 21st Century developments. On the technology side, things have gotten much more complex. On-premises, proprietary resources no longer dominate corporate computing. Company-owned applications may run on hosted servers or cloud instances. However, the company may not actually own the application thanks to the rise of cloud-based X-as-a-Service providers.\"}),/*#__PURE__*/e(\"p\",{children:\"The population of user devices accessing those resources has also diversified. The steady march of Moore\u2019s Law took us from desktops to laptops and now to smartphones and tablets. Making things even more complicated is the rise of bring-your-own-device (BYOD) policies. Rather than tightly managing fleets of company-owned devices, IT departments must accommodate all sorts of user-owned systems.\"}),/*#__PURE__*/e(\"p\",{children:\"Even the question of \u201Cwho is a user?\u201A is much different today. Employees sitting in the office are increasingly the exception rather than the rule. Our sudden shift to remote working is a permanent change in the way business works. Other long-running trends include the blended workforce of employees, freelancers, and consultants. Increasingly, 3rd parties need the kind of access you once limited to employees.\"}),/*#__PURE__*/e(\"h2\",{children:\"Cybercriminals and the human element\"}),/*#__PURE__*/e(\"p\",{children:\"Cybercrime has become just as complicated. Whether in state-sponsored groups or criminal syndicates, black-hat hackers discover and exploit 0-day flaws to penetrate high-value organizations. Less experienced criminals can simply rent sophisticated capabilities from malware-as-a-service providers.\"}),/*#__PURE__*/e(\"p\",{children:\"However, the most common cyber risk is human rather than technological. Why search for 0-day exploits when unpatched security flaws leave the door wide open? Cybercriminals also use the company\u2019s users as attack vectors through phishing and other social engineering attacks. In this complex threat environment, effective access control is more important than ever.\"}),/*#__PURE__*/e(\"h2\",{children:\"Regulating network security\"}),/*#__PURE__*/e(\"p\",{children:\"With each high-profile security breach, governments pay more attention to corporate network security. Across the US in 2020, federal and state legislators considered more than 280 bills to combat cybercrime. These bills addressed issues such as:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Setting up cyber task forces.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Requiring government contractors to have cyber insurance.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Telling agencies to create vulnerability disclosure policies.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Defining data protection regulations for insurance providers.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"At the federal level, legislators often focus on criminals or law enforcement. But holding corporations accountable for security breaches is always somewhere on the agenda. The healthcare industry already deals with data protection regulations \u2014 and penalties \u2014 in the Health Insurance Portability and Accountability Act (HIPAA) and the Health Information Technology for Economic and Clinical Health Act (HITECH). Other industries could follow.\"}),/*#__PURE__*/t(\"p\",{children:[\"To head off aggressive regulations, the business community has begun paying more attention to security. Corporate audits now commonly include \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/soc2-compliance\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"System and Organizational Controls (SOC)\"})}),\" reports that evaluate all aspects of the company\u2019s network security \u2014 including access control.\"]}),/*#__PURE__*/e(\"h1\",{children:\"What steps are necessary within an access control system?\"}),/*#__PURE__*/e(\"p\",{children:\"As we will see, organizations adopt many different approaches to access control. In general, these systems perform the same functions:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Authentication\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Authorization\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Administration\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Audit and Reporting\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Accountability\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"Each of these steps is an essential component without which the entire access control system will fail. The following overview will help you understand how these five steps work. The particular importance of authentication and authorization deserves more attention. You can read our in-depth article \u201C\",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Authorization vs. Authentication: Understand the Difference\"})}),\"\u201A for more complete coverage.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Authentication\"}),/*#__PURE__*/e(\"p\",{children:\"A user trying to access a networked resource must first get through the authentication stage. Here the access control system uses one or more factors to decide whether the user is who they say they are. Authentication factors are often summarized as:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Something you know \u2014 PINs or passwords that the user enters into the access control interface.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Something you have \u2014 Physical identifiers including one-time password security fobs are always in the user\u2019s possession.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Something you are \u2014 fingerprint and face recognition scanners use biometrics to identify the unique characteristics of the user\u2019s body.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Each one of these authentication factors has points of failure that would compromise a network security system. Passwords or key fobs can be stolen, and biometrics can be spoofed. This is why single-factor authentication is not sufficient for an effective access control strategy. Multi-factor authentication requires identity validation using two or more factors.\"}),/*#__PURE__*/e(\"h2\",{children:\"Authorization\"}),/*#__PURE__*/e(\"p\",{children:\"Confirming users\u2019 identities is a necessary first step, but it is not enough to grant users the access they request. Authorization determines whether the user is allowed to access that resource and to what extent.\"}),/*#__PURE__*/e(\"p\",{children:\"Criteria for access to your company\u2019s most sensitive resources may be more restrictive than access to more general systems. For example, access criteria should deny a salesperson\u2019s request to access the R&D division\u2019s servers.\"}),/*#__PURE__*/e(\"p\",{children:\"This is also where the context of the user\u2019s connection comes into play. A research scientist can have full access to R&D resources from the lab. When they travel to a conference, however, their access to company resources over the internet should be more limited.\"}),/*#__PURE__*/e(\"h2\",{children:\"Administration\"}),/*#__PURE__*/t(\"p\",{children:[\"Once users have been \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authenticated and authorized\"})}),\", they can access the network or resource. But those permissions should never be permanent. In short timeframes, sessions should time out. Each new session should require re-authentication and re-authorization before allowing users back in.\"]}),/*#__PURE__*/e(\"p\",{children:\"The system should also monitor context and revoke permissions when anything changes. Someone who moves from their home office to the local coffee shop should not retain their access. Company policies may also reset permissions when new security updates arrive for the user\u2019s device.\"}),/*#__PURE__*/e(\"p\",{children:\"Over longer timeframes, security administrators should monitor authorizations across the user base. As people move within the company and take on new roles, they should not keep their previous authorizations. Layers of old authorizations create opportunities for cybercriminals to dig deeper into the company network. Constant oversight of user permissions requires more resources but is essential for proper access control.\"}),/*#__PURE__*/e(\"h2\",{children:\"Audit and Reporting\"}),/*#__PURE__*/e(\"p\",{children:\"Access control systems automatically log user access requests and network activity. Automated reporting and regular security audits can surface issues before they become critical security risks. These audits of your access control system will produce actionable insights by:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Identifying unusual user behavior.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Flagging privilege abuse.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Measuring compliance with security policies.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Performing forensic analysis of attacks and breaches.\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"Accountability\"}),/*#__PURE__*/e(\"p\",{children:\"All of the reports and audits in the world will mean nothing if your organization fails to act. Letting things slide or making exceptions creates a lax security culture. Users who violate access policies should be coached, cautioned, disciplined, or terminated depending on the degree and frequency of their bad behaviors. Simply knowing that the organization takes access control seriously is enough to keep most people honest.\"}),/*#__PURE__*/e(\"p\",{children:\"Accountability is not just about users. Everyone on the IT team, especially security administrators, must be accountable for their actions. Anyone with privileged credentials must be held to higher standards than users. Sharing passwords or collecting privileges just because it is easier must stop. Any change to access control parameters must be justified, documented, and signed by the person who made the change. And all this activity must be logged, reported, and audited.\"}),/*#__PURE__*/e(\"h1\",{children:\"What are the different types of access control?\"}),/*#__PURE__*/e(\"p\",{children:\"Although access control systems follow the same five steps, they implement these steps in quite different ways. Access control systems generally fall into one of these four categories:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Mandatory Access Control\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Discretionary Access Control\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Role-Based Access Control\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Privileged Access Management\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"The following summary provides a high-level description of these four categories. For more detail, be sure to read our deep dive into the types of access control systems, \u201C\",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-models\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Access Control Models: MAC, DAC, RBAC, & PAM Explained\"})}),\"\u201A.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Mandatory Access Control\"}),/*#__PURE__*/e(\"p\",{children:\"The US military developed mandatory access control (MAC) to protect the highly classified data stored on Pentagon servers and at defense contractors. MAC is a centralized approach to security that removes all policy discretion from the hands of users.\"}),/*#__PURE__*/e(\"p\",{children:\"Users and resources are assigned security labels that define their classification levels and clearances. Security labels also define the boundaries of compartmentalization. Resources security labels include a compartment of authorized users. Each user\u2019s security label includes a compartment of resources they are allowed to access.\"}),/*#__PURE__*/e(\"p\",{children:\"The MAC system compares the user security label and the resource security label. The user only gets access if classifications, clearances, and compartmentalization align. All other access requests are denied and flagged for investigation.\"}),/*#__PURE__*/e(\"p\",{children:\"Mandatory access control maintains the strict security needed by the military. In business settings, however, MAC is inflexible and stifles collaboration. Still, some businesses apply MAC in certain settings. Highly-regulated investment banks, for example, may use MAC to protect their trading platforms while using more flexible security models for their back-office systems.\"}),/*#__PURE__*/e(\"h2\",{children:\"Discretionary Access Control\"}),/*#__PURE__*/e(\"p\",{children:\"Discretionary access control (DAC) is the most widely used approach to network access. Whereas MAC removes policy discretion from users, DAC lets resource owners decide who does and does not get access. Decentralizing security policy in this way makes the organization more responsive to changing business needs and fosters more collaboration between users.\"}),/*#__PURE__*/e(\"p\",{children:\"Administering DAC policies for network access is usually delegated to network administrators within the organization. Compared to MAC, there are security limitations to this decentralized approach. Control over policies is more diffuse which leads to security gaps as policies and enforcement diverge across the organization.\"}),/*#__PURE__*/e(\"h2\",{children:\"Role-Based Access Control\"}),/*#__PURE__*/e(\"p\",{children:\"Typically used in combination with principles of \u201Cleast privilege\u201A, role-based access control (RBAC) goes beyond simply giving a user access to a network. Instead, the user only gets access to the networks and resources they need to fulfill their role in the organization.\"}),/*#__PURE__*/e(\"p\",{children:\"Our earlier example of the R&D department demonstrated RBAC in action. A salesperson and a scientist have distinct roles in the organization. The former\u2019s role does not justify access to R&D systems while the latter\u2019s role requires access in most circumstances.\"}),/*#__PURE__*/e(\"p\",{children:\"RBAC can get complicated, especially in team-based workplaces where people wear many hats and roles change frequently. Yet with the right up-front planning, RBAC dramatically reduces the number of over-privileged users without disrupting business operations.\"}),/*#__PURE__*/e(\"h2\",{children:\"Privileged Access Management\"}),/*#__PURE__*/e(\"p\",{children:\"Privileged access management (PAM) is a special form of role-based access control that holds those with privileged credentials accountable to security standards. Privileged users are a cybercriminal\u2019s preferred target since they hold the \u201Ckeys to the kingdom\u201A. Compromise a privileged account and you can unlock a company\u2019s entire network.\"}),/*#__PURE__*/e(\"p\",{children:\"PAM access control systems use RBAC to determine whether a privileged user needs access to a resource each time they try to connect. Logging, reporting, and auditing systems provide the information security leaders need to enforce PAM policies and eliminate the shared passwords and other insecure practices IT personnel can fall into.\"}),/*#__PURE__*/e(\"h1\",{children:\"What are the technological models for remote access into a network?\"}),/*#__PURE__*/e(\"p\",{children:\"Over the years, companies have adopted various technological models to give employees remote access to the company\u2019s information resources. The most common approaches include:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Virtual Private Networking\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Remote Desktop Protocol\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Software-Defined Perimeter\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Zero Trust Network Access\"})})]}),/*#__PURE__*/e(\"p\",{children:\"The modern incarnations of these approaches offer distinct trade-offs that you should be aware of before adding them to your organization\u2019s access control strategy.\"}),/*#__PURE__*/e(\"h2\",{children:\"Virtual Private Networking\"}),/*#__PURE__*/e(\"p\",{children:\"As we discussed earlier, the castle-and-moat approach requires a way for remote users to cross the network\u2019s secure perimeter. VPN gateways have traditionally provided this portal into the network. The technology is a known quantity with many vendors offering competitively-priced solutions. However, VPN was first developed in the 1990s and shows its age.\"}),/*#__PURE__*/e(\"h3\",{children:\"Business performance\"}),/*#__PURE__*/e(\"p\",{children:\"VPN gateways are bottlenecks through which all remote traffic must flow. When many users share the gateway, bandwidth suffers and impacts business operations.\"}),/*#__PURE__*/e(\"h3\",{children:\"Network backhaul\"}),/*#__PURE__*/e(\"p\",{children:\"User access to company resources must pass through the VPN gateway regardless of geography. A user\u2019s data may travel across the country even if the resource is in the next building. This backhaul impacts network performance and requires expensive upgrades to solve.\"}),/*#__PURE__*/e(\"h3\",{children:\"Network-focused\"}),/*#__PURE__*/e(\"p\",{children:\"VPN was designed to connect networks. As a result, any permissioned user or device will have full access to the network the VPN gateway is supposed to protect. A compromised device exposes the entire network.\"}),/*#__PURE__*/e(\"h3\",{children:\"Publicly visible\"}),/*#__PURE__*/e(\"p\",{children:\"VPN gateways broadcast their presence to the public internet. Simple scanning tools let cybercriminals find VPN gateways to target.\"}),/*#__PURE__*/e(\"h3\",{children:\"Exploits and patches\"}),/*#__PURE__*/e(\"p\",{children:\"Because VPN gateways open a path to company networks, cybercriminals focus on discovering and exploiting VPN security flaws. At the same time, too many companies fail to keep up with VPN vendors\u2019 frequent security updates. Many high-profile security breaches have been the result of unpatched VPN gateways.\"}),/*#__PURE__*/e(\"h2\",{children:\"Remote Desktop Protocol\"}),/*#__PURE__*/t(\"p\",{children:[\"Microsoft developed \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/is-your-rdp-service-secure\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Remote Desktop Protocol (RDP)\"})}),\" to let a Windows computer control another Windows computer remotely. Today, RDP and similar solutions are the modern equivalents of thin clients. They provide users with remote access while keeping all applications and data on secure, managed systems.\"]}),/*#__PURE__*/e(\"p\",{children:\"Users run a client application on their personal devices. In the case of RDP, the client connects to a virtual instance of a Windows desktop environment. This virtual desktop functions just like a physical computer on the company network. From the user\u2019s perspective, they can do everything they could do at the office. However, their device only receives the virtual desktop\u2019s graphical \u201Cmonitor\u201A output. Likewise, the only data the virtual desktop receives from the user are keyboard and mouse inputs.\"}),/*#__PURE__*/e(\"p\",{children:\"Companies in healthcare, insurance, law, and other highly-regulated industries rely on virtual desktop solutions such as RDP to keep protected data secure. However, enabling and managing these solutions is expensive.\"}),/*#__PURE__*/e(\"h2\",{children:\"Software-Defined Perimeter\"}),/*#__PURE__*/e(\"p\",{children:\"Software-defined perimeters (SDPs) emerged from a US Department of Defense IT modernization program. SDP replaces the traditional castle-and-moat approach of the secure perimeter. Rather than defending an organization\u2019s networks, SDP focuses on defending each resource.\"}),/*#__PURE__*/t(\"p\",{children:[\"Redrawing the perimeter around each resource makes SDP solutions network-agnostic. As a result, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"SDP is more effective than VPN technologies\"})}),\" in a modern network environment. You can establish a software-defined perimeter around a cloud-based resource just as easily as you can around an on-premises application.\"]}),/*#__PURE__*/e(\"p\",{children:\"SDP reduces an organization\u2019s attack surface dramatically. Access granted to one resource does not extend to any other resource. Unlike VPN technologies, SDP solutions and the resources they protect can be hidden from the public internet. These and other features make software-defined perimeters more difficult to discover, penetrate, and exploit.\"}),/*#__PURE__*/e(\"p\",{children:\"A software-defined perimeter also provides performance and financial benefits. User-to-resource connections are made directly rather than through a gateway. This eliminates backhaul and competition for bandwidth. In addition, the network-agnostic nature of SDP lets companies adopt less expensive and easier to manage network architectures without sacrificing security.\"}),/*#__PURE__*/e(\"h2\",{children:\"Zero Trust Network Access\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/why-isnt-everyone-using-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero-trust Network Access (ZTNA)\"})}),\" addresses a fundamental weakness of VPN and other approaches to access control: trust. These traditional technologies rely on an assumption that validated users or devices can be trusted as if they were on-site and connected to the company LAN.\"]}),/*#__PURE__*/e(\"p\",{children:\"As its name implies, ZTNA never makes assumptions about the trustworthiness of users, devices, or even networks. ZTNA\u2019s operating paradigm is to never trust anybody \u2014 and if you do, don\u2019t do it for long. That paradigm leads to policies that:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Deny access to all users and devices by default. ZTNA never establishes connections until both have passed security risk assessments.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Regardless of the source, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authenticate and authorize\"})}),\" every connection attempt. This applies to connection attempts on-premises just as much as it does to remote access requests.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Use context to assess each attempt\u2019s risk profile including \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/device-trust-in-a-zero-trust-world\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"device security posture\"})}),\", connection source, and network path. Assume on-premises networks are as risky as airport hotspots.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Use least privilege principles to issue limited, role-based permissions. Users should only be allowed the level of access justified by their roles in the organization. Even then, the session\u2019s context should determine the degree of access granted to the user.\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"Twingate combines \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"SDP\"})}),\" and \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"ZTNA\"})}),\" to provide a modern approach to network access. Establishing hidden, secure perimeters around each resource lets Twingate customers eliminate the inefficiencies and security risks of their old VPN technologies. At the same time, they gain more control over resource access through role-based, least privilege permissions.\"]}),/*#__PURE__*/e(\"h1\",{children:\"How should you be thinking about Network Access Control in 2021?\"}),/*#__PURE__*/t(\"p\",{children:[\"Network access control (NAC) governs admission to and through a network. A feature of enterprise networking hardware, NAC lets you automate policy enforcement within your network infrastructure. NAC adds compliance to the traditional \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authentication and authorization\"})}),\" steps by evaluating the security posture of devices attempting to connect to the network.\"]}),/*#__PURE__*/e(\"p\",{children:\"Network access control systems evaluate and enforce security policies in two situations:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Pre-admission NAC occurs when a user first attempts to connect to a network.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Post-admission NAC occurs after the user connects to a network and whenever that user tries to move through that network.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"In all cases, the NAC system blocks the new connections by default while it performs its authentication, authorization, and compliance assessments.\"}),/*#__PURE__*/e(\"h2\",{children:\"Network access control advantages\"}),/*#__PURE__*/e(\"p\",{children:\"Large corporations often use NAC to manage their segmented networks. Post-admission NAC automates the traffic control between protected sub-networks. In addition, NAC is a common way to implement role-based policies within traditional network architectures.\"}),/*#__PURE__*/e(\"p\",{children:\"NAC\u2019s compliance features protect networks from devices that pose a security risk or have been compromised. Both pre- and post-admission NAC will only grant permission to a device if its security posture complies with company policies.\"}),/*#__PURE__*/e(\"p\",{children:\"Monitoring and automation tools also make NAC a popular choice with enterprise security administrators. The company can observe the status of every device on the network and take action when new risks emerge.\"}),/*#__PURE__*/e(\"h2\",{children:\"Network access control disadvantages\"}),/*#__PURE__*/e(\"p\",{children:\"You will find network access control solutions in place at many large enterprises. But there are several disadvantages to NAC that prevent small and mid-sized businesses from adopting NAC.\"}),/*#__PURE__*/e(\"h3\",{children:\"Expertise\"}),/*#__PURE__*/e(\"p\",{children:\"In-house staff at many businesses do not have the expertise or bandwidth needed to design and manage NAC systems.\"}),/*#__PURE__*/e(\"h3\",{children:\"Scale\"}),/*#__PURE__*/e(\"p\",{children:\"Smaller companies do not have the large user bases and deeply-segmented networks that make NAC beneficial.\"}),/*#__PURE__*/e(\"h3\",{children:\"Simplicity\"}),/*#__PURE__*/e(\"p\",{children:\"NAC is a sophisticated solution that may be overkill for the typical needs of small and mid-sized businesses.\"}),/*#__PURE__*/e(\"h2\",{children:\"Network access control use cases\"}),/*#__PURE__*/e(\"p\",{children:\"Companies with segmented networks and large user populations benefit most from network access control. Enterprises have also found NAC a useful approach for handling newer trends in corporate computing:\"}),/*#__PURE__*/e(\"h3\",{children:\"BYOD policies\"}),/*#__PURE__*/e(\"p\",{children:\"IT departments have less control over the devices connecting to company resources. BYOD policies are convenient for employees and reduce certain expenses. At the same time, user-provisioned devices expose the company to myriad security risks. NAC can ensure that, before connecting to the network, all user devices have the most recent operating system and antivirus updates.\"}),/*#__PURE__*/e(\"h3\",{children:\"Internet of Things\"}),/*#__PURE__*/e(\"p\",{children:\"The number and diversity of devices connecting to the company network are growing. Joining workgroup printers on the network are an array of environmental sensors, smart lighting solutions, and other internet of things (IoT) devices. However, security updates to IoT devices can be haphazard or non-existent. NAC policies limit networked devices to specific subnets and prevent devices with weak security from becoming attack vectors.\"}),/*#__PURE__*/e(\"h3\",{children:\"Blended workforces\"}),/*#__PURE__*/e(\"p\",{children:\"Managing the mix of employees, freelancers, contractors, and consultants accessing an enterprise network is always a challenge. Implementing NAC within the network along with role-based access policies makes managing these blended workforces easier.\"}),/*#__PURE__*/t(\"p\",{children:[\"You can learn more about NAC, its benefits, and its limitations in our article \u201C\",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/network-access-control\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Network Access Control (NAC): Why is It Important?\"})}),\"\u201A\"]}),/*#__PURE__*/e(\"h1\",{children:\"Access Control List: how to leverage ACLs within your access control strategy\"}),/*#__PURE__*/e(\"p\",{children:\"The most commonly used form of access control is the access control list (ACL). These deceptively simple tables consist of an ordered list of rules. Administrators deploy these tables to gateways, routers, and other network hardware to control how traffic flows through the network.\"}),/*#__PURE__*/t(\"p\",{children:[\"You can read our article, \u201C\",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-list\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Access Control Lists (ACLs): How They Work & Best Practices\"})}),\"\u201A, for a more detailed explanation. In its simplest form, the ACL is a table that links a subject with a permission. The subject is usually some property of the data packets entering the hardware. The permissions could be a simple permit/deny statement or they could specify the packet\u2019s next destination.\"]}),/*#__PURE__*/e(\"p\",{children:\"When packets from a user\u2019s device enter the network hardware, they are compared to the list of rules. Those packets that pass the ACL\u2019s rules are routed onwards through the network while those that fail are dropped.\"}),/*#__PURE__*/e(\"p\",{children:\"Organizations can use different types of ACLs to exert more nuanced control over their networks:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Standard access control lists evaluate the source of each packet.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Extended access control lists evaluate the source, destination, port, or protocol of each packet.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Dynamic access control lists make ACLs more responsive by adding temporary rules to the ACL upon user authorization.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Reflexive access control lists create temporary ACL entries that are session-specific.\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"The advantages and disadvantages of access control lists\"}),/*#__PURE__*/e(\"p\",{children:\"By implementing ACLs, organizations gain more control over network traffic. For example, they provide a way to replace general network access with more granular role-based access control policies. The automation enabled by ACLs makes the creation and management of segmented networks easier.\"}),/*#__PURE__*/e(\"p\",{children:\"Network performance can be improved depending on how you implement access control lists. Latency can improve if your network hardware executes access rules in-device rather than querying central control servers. At the same time, network throughput can increase since the hardware drops all packets that fail the ACL rules.\"}),/*#__PURE__*/e(\"p\",{children:\"ACLs provide security benefits beyond controlling access. Internet-facing ACLs make spoofing and denial of service attacks less effective. Internal ACLs can hinder successful breaches and prevent bad actors from jumping to different subnets.\"}),/*#__PURE__*/e(\"p\",{children:\"Despite their many advantages, access control lists have scaling issues. The ACL system you use for an on-premises network only works within the network perimeter. Some cloud service providers do not support ACLs. Those that do use their own systems that you must manage in parallel. The overhead needed to manage ACL also increases with the volume and frequency of permission changes. Blended and hybrid workforces make ACL management challenging.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate makes ACL policies easier to implement and manage. Within the same system, you can incorporate ACLs of your on-premises and cloud-based resources alike \u2014 even if those cloud services do not support ACLs or interoperate with each other. Twingate\u2019s simple administrative console reduces overhead by making it easier to build and update ACLs in one central location.\"}),/*#__PURE__*/e(\"h1\",{children:\"Allowlisting: should you be using it in your access control strategy?\"}),/*#__PURE__*/e(\"p\",{children:\"Allowlisting is a contemporary term for a registry of trusted entities. The entities may be users and devices, or they could specify IP addresses. Security and access policies determine which entities are trustworthy enough to access a resource. Anything not on the list is automatically blocked. As a result, allowlisting significantly reduces the attack surface of an organization\u2019s most sensitive resources.\"}),/*#__PURE__*/t(\"p\",{children:[\"Read more about allowlisting in our article \u201C\",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/whitelisting\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Whitelisting: is it required for secure access control?\"})}),\"\u201A\"]}),/*#__PURE__*/e(\"p\",{children:\"Antivirus and anti-malware vendors take the opposite approach. They maintain lists of known security threats which their applications scan for and block. However, an antivirus application is only as good as its list of known threats. An out-of-date list, or a previously unknown threat, lets attacks go unnoticed.\"}),/*#__PURE__*/e(\"p\",{children:\"Allowlists are much more efficient as they do not need to know about every threat to the networks they protect. They only need to know what they can trust. The system denies access to any device, IP address, or other entity not on the list since, by definition, they must be untrustworthy.\"}),/*#__PURE__*/e(\"h2\",{children:\"How allowlists are used\"}),/*#__PURE__*/e(\"p\",{children:\"The control of applications running on managed devices is a common use case for allowlists. Since malware and user-installed software are not on the allowlist, the system will not let them launch.\"}),/*#__PURE__*/e(\"p\",{children:\"Allowlists also have applications in access control. At the network\u2019s edge, allowlists can block internet traffic that does not come from a regional office. Within the network, allowlists can restrict access to an assembly line\u2019s network. Many cloud-based service providers have allowlisting capabilities of their own.\"}),/*#__PURE__*/e(\"p\",{children:\"As we saw with VPN technologies, however, the assumption of trust inherent to allowlisting creates a security risk. Should an entity on the allowlist be compromised, then the cybercriminal would have free access to whatever networks and resources the allowlist was supposed to protect.\"}),/*#__PURE__*/e(\"h2\",{children:\"Making allowlists stronger\"}),/*#__PURE__*/t(\"p\",{children:[\"Although it appears counter-intuitive, Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"zero-trust\"})}),\" approach protects the integrity of your trust-based allowlist systems. Twingate creates an \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/introducing-identity-first-networking\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"identity-based\"})}),\" list of permissions that organizations can apply to their on-premises and cloud-based resources. Centralized management within Twingate extends allowlists to applications and third-party services that do not have that capability.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Modern IT teams need modern approaches to access control\"}),/*#__PURE__*/e(\"p\",{children:\"The events of the past two years have shown everyone the importance of access control. Top executives who never gave it much thought are now keenly aware of the issues their organizations face. Remote access is essential to keeping their businesses running but they need it done in a way that protects the company\u2019s valuable IT assets.\"}),/*#__PURE__*/e(\"p\",{children:\"Understanding today\u2019s access control landscape is an essential first step towards developing your own strategies. Each technology implementing the main access control approaches has unique advantages and disadvantages.\"}),/*#__PURE__*/e(\"p\",{children:\"Perhaps the most important consideration is how well an access control solution addresses the diversity of modern networking:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Resources are on-prem, off-site, cloud-based, or provided by a third party.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Users access resources through desktops, laptops, tablets, and smartphones.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Devices may be company-owned and managed but are increasingly user-owned.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Users may be company employees but are increasingly \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/third-party-access-using-twingate\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"freelancers, contractors, or employees of other businesses\"})}),\".\"]})})]}),/*#__PURE__*/t(\"p\",{children:[\"Twingate bases its modern approach to access control on principles of \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"zero-trust\"})}),\", least privilege access through \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"software-defined perimeters\"})}),\". As a result, you can improve security and administrative efficiency while improving business operations in an increasingly complex network environment. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=access-control-essentials\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact us to learn more\"})}),\".\"]})]})},{index:114,id:\"hIzQQVMbY\",[h]:!0,[d]:!1,[p]:\"Network Access Control (NAC): Why is It Important?\",[u]:\"Network Access Control\",[m]:\"network-access-control\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2021-08-31T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/6OtdzSYZUGdeTVrBQ3ck8QNXnuk.png\",srcSet:\"https://framerusercontent.com/images/6OtdzSYZUGdeTVrBQ3ck8QNXnuk.png?scale-down-to=512 512w,https://framerusercontent.com/images/6OtdzSYZUGdeTVrBQ3ck8QNXnuk.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/6OtdzSYZUGdeTVrBQ3ck8QNXnuk.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/6OtdzSYZUGdeTVrBQ3ck8QNXnuk.png 2388w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/6OtdzSYZUGdeTVrBQ3ck8QNXnuk.png\",srcSet:\"https://framerusercontent.com/images/6OtdzSYZUGdeTVrBQ3ck8QNXnuk.png?scale-down-to=512 512w,https://framerusercontent.com/images/6OtdzSYZUGdeTVrBQ3ck8QNXnuk.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/6OtdzSYZUGdeTVrBQ3ck8QNXnuk.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/6OtdzSYZUGdeTVrBQ3ck8QNXnuk.png 2388w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Network access control (NAC) provides a way to embed access control and endpoint security policies within your organization\u2019s network infrastructure. Typically adopted by large enterprises, NAC offers substantial benefits to companies with large workforces and device populations.\"}),/*#__PURE__*/e(\"p\",{children:\"However, NAC has been less accessible to small and mid-sized organizations. Moreover, today\u2019s cyber threat environment has eroded the effectiveness of traditional NAC solutions.\"}),/*#__PURE__*/e(\"p\",{children:\"In the face of those issues, can more modern approaches secure sensitive resources while providing seamless, performant network access?\"}),/*#__PURE__*/e(\"p\",{children:\"Let\u2019s find out.\"}),/*#__PURE__*/e(\"h1\",{children:\"What is Network Access Control (NAC)?\"}),/*#__PURE__*/e(\"p\",{children:\"Network access control manages traffic on a network or between parts of a network through authentication and policy enforcement. When a user tries to connect to a network, the NAC system holds the connection while it performs a risk assessment.\"}),/*#__PURE__*/e(\"h2\",{children:\"Pre-admission network access control\"}),/*#__PURE__*/t(\"p\",{children:[\"A NAC system uses two approaches to protect networks. Pre-admission NAC blocks users, devices, and endpoints from making an initial connection to the network. It will only permit access if the attempt passes \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authentication, authorization\"})}),\", and compliance policies.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Rather than the simple validation of authorized users, a NAC system can help implement \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-models\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"role-based access control (RBAC)\"})}),\" strategies by evaluating whether the user\u2019s role justifies access to the network.\"]}),/*#__PURE__*/t(\"p\",{children:[\"At the same time that it authenticates and authorizes users, the NAC system evaluates their \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/device-trust-in-a-zero-trust-world\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"devices\u2019 security posture\"})}),\". If a device is not compliant, the NAC will route its connection to a quarantined network for remediation.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Post-admission network access control\"}),/*#__PURE__*/e(\"p\",{children:\"The access that pre-admission NAC grants to users and devices does not extend to other parts of the network. Post-admission NAC applies the assessment and authorization process to any attempts to move through the network. This feature has made NAC a common way to manage access to segmented networks.\"}),/*#__PURE__*/e(\"h1\",{children:\"What are the benefits of Network Access Control (NAC)?\"}),/*#__PURE__*/e(\"p\",{children:\"Large corporations were among the first to adopt NAC because it simplified the management of their complex networks and user bases. Among the benefits NAC offers:\"}),/*#__PURE__*/e(\"h2\",{children:\"Securing user devices\"}),/*#__PURE__*/e(\"p\",{children:\"NAC solutions block a significant hole in network security by denying network access to non-compliant user devices. NAC client agents \u2014 whether running on a managed laptop or a user\u2019s cellphone \u2014 ensure all devices connected to the network have the latest security updates. The quarantine and remediation systems provide a final line of defense to keep compromised and non-compliant devices off the network.\"}),/*#__PURE__*/e(\"h2\",{children:\"Visibility\"}),/*#__PURE__*/e(\"p\",{children:\"User devices and endpoints are the primary vectors for cyber attacks. NAC solutions give security professionals detailed views of the devices connected to their networks and the security posture of each device. This visibility provides actionable insights into the network\u2019s security risks.\"}),/*#__PURE__*/e(\"h2\",{children:\"Automated policy enforcement\"}),/*#__PURE__*/e(\"p\",{children:\"NAC solutions are built into a company\u2019s network infrastructure which automatically execute NAC policies. As users and devices navigate through a highly segmented network, the NAC solution\u2019s automation reduces administrative overhead.\"}),/*#__PURE__*/e(\"h1\",{children:\"What are the disadvantages of Network Access Control (NAC)?\"}),/*#__PURE__*/e(\"p\",{children:\"While these benefits should appeal to small and mid-sized companies as well, traditional NAC solutions require the resources of larger enterprises. Experienced professionals are needed to implement NAC within a segmented network architecture. In addition, NAC is not a set-it-and-forget-it solution. Dedicated employees must monitor the system, address emerging threats, and respond to business needs.\"}),/*#__PURE__*/e(\"p\",{children:\"Yet even the largest corporations are struggling with NAC. Changing technology and shifts in the nature of the workforce have made access control complicated. Consider these recent survey results:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"70% of IT professionals say employee-owned devices are allowed in the office \u2014 and 20% say the same about contractors\u2019 personal devices. (\",/*#__PURE__*/e(s,{href:\"https://www.techrepublic.com/article/byod-a-trend-rife-with-security-concerns\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"TechRepublic\"})}),\")\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"82% of corporate leaders plan to integrate remote policies with their workforce after the pandemic ends. (\",/*#__PURE__*/e(s,{href:\"https://www.gartner.com/en/newsroom/press-releases/2020-07-14-gartner-survey-reveals-82-percent-of-company-leaders-plan-to-allow-employees-to-work-remotely-some-of-the-time\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Gartner\"})}),\")\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"60% of business leaders expect the use of freelance and other on-demand workers will let them shrink their core employee base. (\",/*#__PURE__*/e(s,{href:\"https://www.hbs.edu/managing-the-future-of-work/research/Pages/building-the-on-demand-workforce.aspx\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Harvard Business School\"})}),\")\"]})})]}),/*#__PURE__*/t(\"p\",{children:[\"The mainstreaming of bring your own device (BYOD) policies pushes NAC solutions to their limits. Consider how hard it is to create consistent policies for users\u2019 smartphones. Practically all iPhone users have simultaneous access to the latest iOS version but the fragmented Android ecosystem \",/*#__PURE__*/e(s,{href:\"https://www.tomsguide.com/news/iphone-just-embarrassed-android-again-heres-why\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"takes months or years to fully secure\"})}),\".\"]}),/*#__PURE__*/t(\"p\",{children:[\"The modern workforce also makes NAC more difficult to manage. In addition to employees, companies rely on a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/third-party-access-using-twingate\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"mix of freelancers, consultants, and other third parties\"})}),\". These people come and go and their roles change frequently. Only a dedicated administrative team can keep up with the constant churn in permissions.\"]}),/*#__PURE__*/e(\"h1\",{children:\"How is Network Access Control (NAC) implemented?\"}),/*#__PURE__*/t(\"p\",{children:[\"A particular weakness of many NAC solutions is their hardware dependence. \",/*#__PURE__*/e(s,{href:\"https://www.ciscopress.com/articles/article.asp?p=680828\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Cisco first rolled out its NAC solution in 2004\"})}),\" by adding enforcement functions to its IOS routers. Cisco switches, concentrators, access points, and other devices followed the next year, pushing NAC to the network edge. Other hardware vendors followed Cisco\u2019s lead and added NAC features to their network infrastructure offerings.\"]}),/*#__PURE__*/e(\"p\",{children:\"Unfortunately, the hardware-centric approach to network security is increasingly problematic. These devices become targets for cybercriminals \u2014 and not just the sophisticated actors with 0-day exploits. Many recent security breaches were the result of known security flaws that went unpatched:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.ibm.com/security/data-breach/threat-intelligence\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"IBM\u2019s Threat Intelligence Index\"})}),\" identified network vulnerabilities as the top attack vector in 2020. Scan-and-exploit techniques accounted for 35% of all cyber attacks.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Citrix hardware was a popular target as exploits found in \",/*#__PURE__*/e(s,{href:\"https://www.citrix.com/blogs/2020/07/07/citrix-provides-context-on-security-bulletin-ctx276688\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"2019\"})}),\" and \",/*#__PURE__*/e(s,{href:\"https://us-cert.cisa.gov/ncas/alerts/aa20-020a\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"2020\"})}),\" required companies to make frequent patches to their access control devices.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Unpatched Pulse Secure VPN systems allowed \",/*#__PURE__*/e(s,{href:\"https://arstechnica.com/information-technology/2020/01/unpatched-vpn-makes-travelex-latest-victim-of-revil-ransomware\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"ransomware attacks on currency exchange service Travelex\"})}),\" in 2020 that sent the company into bankruptcy.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"The relative obscurity of smaller organizations offers no protection. Small businesses are the target of 43% of cyber attacks and most of those successfully attacked shut their doors within six months.\"}),/*#__PURE__*/e(\"h1\",{children:\"Modern NAC approaches address today\u2019s threats\"}),/*#__PURE__*/e(\"p\",{children:\"Given the inherent weakness of hardware-based security approaches, organizations are turning to more modern approaches to network access control.\"}),/*#__PURE__*/t(\"p\",{children:[\"Rather than protecting a fraying physical network, they are adopting \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"software-defined perimeters\"})}),\". SDPs focus on protecting individual resources by separating the logical network from the physical network. This approach offers another advantage: SDP lets companies manage on-premises and remote users within the same system.\"]}),/*#__PURE__*/t(\"p\",{children:[\"The most robust way to address modern security threats is to implement an SDP with a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/why-isnt-everyone-using-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero-Trust Network Access (ZTNA)\"})}),\" solution. As the name implies, ZTNA does not assume that any user or device can be trusted at any time. Users are denied access by default unless they pass a need-to-know assessment. ZTNA also assesses the \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/device-trust-in-a-zero-trust-world\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"security posture of the user\u2019s device\"})}),\" and incoming network connection. The user, device, and network assessments determine what kind of permissions to grant.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Implementing \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"SDP\"})}),\" with a ZTNA-based product lets organizations establish secure, fine-grained perimeters around each resource without expensive investments in brittle hardware infrastructure. Cloud-hosted and X-as-a-Service resources can be protected within the same system.\"]}),/*#__PURE__*/e(\"h1\",{children:\"How to select the right Network Access Control (NAC) product for your organization?\"}),/*#__PURE__*/e(\"p\",{children:\"Knowing your organization is the first step to selecting the right network access control product. You need a solution that can handle the nature of your workforce, the ecosystems of devices they use, as well as the variety of protected resources.\"}),/*#__PURE__*/e(\"h2\",{children:\"Network, device, and user surveys\"}),/*#__PURE__*/e(\"p\",{children:\"Map out the networks and resources you need to protect. Do not limit your survey to on-premises assets. You need to include all of your hybrid-cloud applications and XaaS cloud services as well. With this understanding, you can assess how well access control solutions protect the full scope of your resources.\"}),/*#__PURE__*/t(\"p\",{children:[\"You also need a clear picture of the ecosystem of \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/device-trust-in-a-zero-trust-world\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"devices\"})}),\" \u2014 managed and user-owned \u2014 that connect to your resources. Then you can determine how easy it will be to provision these devices with a network access control solution\u2019s software agents. You also need to consider how transparent those agents are on user-owned systems.\"]}),/*#__PURE__*/e(\"p\",{children:\"Finally, you need to take a look at your user base, flexible working policies, and the degree of contracting your company does. A network access control system should be robust enough to handle diverse, dynamic workplaces. At the same time, it cannot add administrative overhead.\"}),/*#__PURE__*/e(\"h2\",{children:\"Deployment and scalability assessment\"}),/*#__PURE__*/e(\"p\",{children:\"Access control solutions that require extensive infrastructure upgrades could disrupt business operations. Phased implementations make the transition easier. Focus the first phase on workgroups that benefit most from a frictionless, performant access control solution. Migrate the solution out to other groups once the first phase is running smoothly.\"}),/*#__PURE__*/e(\"p\",{children:\"In addition to supporting a phased implementation, consider how a network access control solution will scale with your organization. Is it responsive enough to handle short-term peaks and troughs in the user base? Can it handle rapid, long-term growth?\"}),/*#__PURE__*/e(\"h1\",{children:\"Rely on Twingate for secure network access control\"}),/*#__PURE__*/t(\"p\",{children:[\"Traditional NAC solutions use the capabilities of a company\u2019s physical network to automatically provide access to \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authenticated and authorized\"})}),\" users \u2014 provided their devices\u2019 security posture complies with established policies. For enterprises with the right resources, NAC secures segmented networks and provides actionable visibility over connected devices.\"]}),/*#__PURE__*/e(\"p\",{children:\"However, traditional NAC solutions are less effective in today\u2019s cybersecurity environment. In some cases, NAC hardware is the vector through which cybercriminals breach the network\u2019s secure perimeter.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=nac-importance\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate\"})}),\" offers a modern approach to network security that uses software-defined perimeters and principles of \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust Network Access\"})}),\". Rather than granting access to networks and subnets, Twingate lets you protect each of your individual resources, whether on-prem or in the cloud. Your users can access the resources they need to get their jobs done whether at the office, at home, or on the road. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=nac-importance\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact Twingate\"})}),\" to learn more.\"]})]})},{index:115,id:\"nAnE1zz44\",[h]:!0,[d]:!1,[p]:\"IPsec VPNs: What They Are and How to Set Them Up\",[u]:\"IPsec VPNs\",[m]:\"ipsec-vpn\",[g]:\"\",[w]:\"Mihir Patel\",[f]:\"2021-08-26T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/QkcClBmdJWrEVUtBfcYKHTWmNmU.png\",srcSet:\"https://framerusercontent.com/images/QkcClBmdJWrEVUtBfcYKHTWmNmU.png?scale-down-to=512 512w,https://framerusercontent.com/images/QkcClBmdJWrEVUtBfcYKHTWmNmU.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/QkcClBmdJWrEVUtBfcYKHTWmNmU.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/QkcClBmdJWrEVUtBfcYKHTWmNmU.png 2388w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/QkcClBmdJWrEVUtBfcYKHTWmNmU.png\",srcSet:\"https://framerusercontent.com/images/QkcClBmdJWrEVUtBfcYKHTWmNmU.png?scale-down-to=512 512w,https://framerusercontent.com/images/QkcClBmdJWrEVUtBfcYKHTWmNmU.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/QkcClBmdJWrEVUtBfcYKHTWmNmU.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/QkcClBmdJWrEVUtBfcYKHTWmNmU.png 2388w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"If you\u2019ve ever had to work remotely, you might have used a VPN to securely connect to resources on your company\u2019s private network. Some VPNs use the IPsec protocol to establish secure connections. But what exactly is a VPN and what\u2019s an IPsec VPN?\"}),/*#__PURE__*/e(\"p\",{children:\"In a business context, a VPN establishes a protected connection to a secure network environment that would otherwise be inaccessible by an external user. Importantly, VPNs allow users to establish these connections over a public network, such as the internet, in a manner that protects the security and privacy of those connections.\"}),/*#__PURE__*/e(\"p\",{children:\"Imagine you are meeting a client at a coffee shop and you need to access sensitive data hosted on your company\u2019s private servers. Accessing private servers from insecure public networks such as a Starbucks coffee shop Wi-Fi can put your company at risk.\"}),/*#__PURE__*/e(\"p\",{children:\"VPNs allow users to access a private network and share sensitive data remotely via public networks such as the internet. A secure VPN benefits both small and large companies by protecting their confidential data.\"}),/*#__PURE__*/e(\"p\",{children:\"Following are some of the benefits of using a VPN:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"a VPN protects your data from snooping on untrustworthy Wi-Fi hotspots.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"a VPN can hide private information so bad actors don\u2019t steal your information and try to impersonate you.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"a VPN can also block some sites and services from certain sanctioned countries.\"})})]}),/*#__PURE__*/e(\"img\",{alt:\"Traditional VPN\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,JPmSRhN9GlmuzrK9Jjk9tJgxY.png?originalFilename=NXXXwqB.png\",src:\"https://framerusercontent.com/images/JPmSRhN9GlmuzrK9Jjk9tJgxY.png\",srcSet:\"https://framerusercontent.com/images/JPmSRhN9GlmuzrK9Jjk9tJgxY.png?scale-down-to=512 512w,https://framerusercontent.com/images/JPmSRhN9GlmuzrK9Jjk9tJgxY.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/JPmSRhN9GlmuzrK9Jjk9tJgxY.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/JPmSRhN9GlmuzrK9Jjk9tJgxY.png 2720w\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/introducing-twingate\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:/*#__PURE__*/e(\"em\",{children:\"Traditional perimeter-based network architecture with VPN\"})})})}),/*#__PURE__*/t(\"p\",{children:[\"As illustrated above, a traditional network architecture consists of some combination of \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/whitelisting\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"allowlisting\"})}),\" static IP addresses, subnet mapping for remote users using group policy, firewall, route management and a gateway on the public internet.\"]}),/*#__PURE__*/e(\"p\",{children:\"IPsec stands for Internet Protocol Security. IPsec is a secure network protocol that encrypts and authenticates packets of data to provide secure communication between two devices.\"}),/*#__PURE__*/e(\"p\",{children:\"In this article, you will learn about IPsec VPNs in detail, including how to configure an IPsec VPN. Let\u2019s get started!\"}),/*#__PURE__*/e(\"h2\",{children:\"What Are IPsec VPNs?\"}),/*#__PURE__*/e(\"p\",{children:\"An IPsec VPN is a VPN that uses IPsec as its protocol to establish secure connections between devices. Other protocols used by VPNs include SSL/TLS and L2TP. Let\u2019s explore these different protocols:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Transport Layer Security (TLS), the successor of the Secure Sockets Layer (SSL), is a cryptographic protocol that provides communication security over a computer network. TLS is well known for providing security over HTTPS connections.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Internet Protocol Security (IPsec) is a secure network protocol that is used in VPNs to authenticate and encrypt the packets of data to provide secure communication.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Layer Tunneling Protocol (L2TP) is a tunneling protocol used to support VPNs. L2TP does not provide strong authentication by itself. IPSec is often used to secure L2TP packets. The combination of these two protocols is generally referred to as L2TP/IPsec.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"For the purposes of this article, our main focus will be on IPsec VPNs.\"}),/*#__PURE__*/e(\"p\",{children:\"The IPsec suite of protocols secures data transmitted over the internet or any public network using encryption between two endpoints. IPsec is often used to establish mutual authentication between computers at the beginning of a session and to negotiate cryptographic keys during a session. It can protect data flows between a pair of hosts, networks, or between a network and a host.\"}),/*#__PURE__*/t(\"p\",{children:[\"IPsec can operate in the following \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/ipsec-tunnel-mode\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"two modes\"})}),\":\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Tunneling mode\u2014encrypts the entire data packet.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Transport mode\u2014only encrypts the data packet message.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Using an IPsec VPN provides multiple layers of security\u2014it provides authentication to secure any modification to data packets and it encrypts the payloads within each packet. This ensures the security and integrity of data that is being transmitted through the encrypted tunnel. This allows the integrity of data in transition without being intercepted or modified.\"}),/*#__PURE__*/e(\"p\",{children:\"There are two IPsec VPN modes:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"IPsec Tunnel Mode VPN\u2014this mode encrypts the entire outgoing packet. This is typically implemented on a secure gateway using a firewall or a router port. For example, employees from an enterprise branch can securely connect with systems in the main office via secure gateways. The IPsec tunnel is established between two gateway hosts.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"IPsec Transport Mode VPN\u2014this mode encrypts only IP payload and ESP trailer being sent between two endpoints. This is primarily used during end-to-end communication and does not alter the IP header of the outgoing packet. For example, this type of mode enables a remote IT support staff to log in to a remote server to do maintenance work. Transport mode is used where one host needs to interact with another host.\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"How to Set Up an IPsec VPN Server\"}),/*#__PURE__*/e(\"p\",{children:\"Here, I will show you how to quickly and automatically set up your own IPsec VPN server in CentOS/RHEL, Ubuntu, and Debian Linux distributions.\"}),/*#__PURE__*/e(\"p\",{children:\"To begin, you\u2019ll need a dedicated server or virtual private server (VPS) installed with one of the following OS:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Ubuntu 20.04 (Focal) or 18.04 (Bionic)\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Debian 11 (Bullseye), 10 (Buster) or 9 (Stretch)\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"CentOS 8 or 7\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Rocky Linux 8\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"AlmaLinux OS 8\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Red Hat Enterprise Linux (RHEL) 8 or 7\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Amazon Linux 2\"})})]}),/*#__PURE__*/e(\"p\",{children:\"First, log in to the VPS via SSH and then run the commands for your Linux distribution to set up the VPN server. By default, the script will generate random VPN credentials (pre-shared key, VPN username and password) for you and display them at the end of the installation.\"}),/*#__PURE__*/e(\"p\",{children:\"However, to use your credentials, you will first need to generate a strong password and PSK, respectively, with the following commands:\"}),/*#__PURE__*/t(\"p\",{children:[\" \",/*#__PURE__*/t(\"code\",{children:[/*#__PURE__*/e(\"span\",{children:\">\"}),\" openssl rand \",/*#__PURE__*/e(\"span\",{children:\"-base64\"}),\" \",/*#__PURE__*/e(\"span\",{children:\"106xWSdx0q7hrUAQ==>\"}),\" openssl rand \",/*#__PURE__*/e(\"span\",{children:\"-base64\"}),\" \",/*#__PURE__*/e(\"span\",{children:\"16bcM90acDBKB6qdmsZM63Vg==\"})]})]}),/*#__PURE__*/e(\"p\",{children:\"The output of your first command is your password, and the output from your second command is your PSK.\"}),/*#__PURE__*/e(\"p\",{children:\"Next, set these generated values as described in the following command. All the values must be placed inside single quotes as shown.\"}),/*#__PURE__*/t(\"p\",{children:[\" \",/*#__PURE__*/e(\"code\",{children:\"VPN_IPSEC_PSK: 'Your IPsec pre-shared key'VPN_USER: 'Your VPN user name'VPN_PASSWORD: 'Your VPN password'\"})]}),/*#__PURE__*/e(\"h3\",{children:\"On CentOS/RHEL or Ubuntu/Debian\"}),/*#__PURE__*/t(\"p\",{children:[\" \",/*#__PURE__*/t(\"code\",{children:[/*#__PURE__*/e(\"span\",{children:\"wget\"}),\" https://git.io/vpnsetup \",/*#__PURE__*/e(\"span\",{children:\"-O\"}),\" vpnsetup.sh\",/*#__PURE__*/e(\"span\",{children:\"VPN_IPSEC_PSK='KvLjedUkNzo5gBH72SqkOA=='\"}),\" \",/*#__PURE__*/e(\"span\",{children:\"VPN_USER='bobalice'\"}),\"  \",/*#__PURE__*/e(\"span\",{children:\"VPN_PASSWORD='8DbDiPpGbcr4wQ=='\"}),\" \",/*#__PURE__*/e(\"span\",{children:\"sudo\"}),\" \",/*#__PURE__*/e(\"span\",{children:\"sh\"}),\" vpnsetup.sh\"]})]}),/*#__PURE__*/e(\"p\",{children:\"The main packages to be installed are:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"bind-utils\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"net-tools\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"bison\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"flex\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"gcc\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"libcap-ng-devel\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"libcurl-devel\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"libselinux-devel\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"nspr-devel\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"nss-devel\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"pam-devel xl2tpd\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"iptables-services\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"systemd-devel\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"fipscheck-devel\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"libevent-devel\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"fail2ban\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"Download, compile, and install \",/*#__PURE__*/e(s,{href:\"https://libreswan.org/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Libreswan\"})}),\" from the source code, then enable and start the necessary services.Once the installation is complete, you will see the displayed VPN details in the following format:\"]}),/*#__PURE__*/t(\"p\",{children:[\" \",/*#__PURE__*/e(\"code\",{children:\"Server IP: xxx.xxx.xxx.xxxIPsec PSK: VPN_IPSEC_PSKUsername : VPN_USERPassword : VPN_PASSWORD\"})]}),/*#__PURE__*/e(\"p\",{children:\"With this output, your IPsec VPN server is now ready for use. Now, let\u2019s explore how to set up an IPsec VPN Client on Windows, Linux, and OS X machines.\"}),/*#__PURE__*/e(\"h2\",{children:\"How to Set Up an IPsec VPN Client\"}),/*#__PURE__*/e(\"p\",{children:\"Combining L2TP with IPsec protocols will create a highly secure VPN client. L2TP generates a tunnel since it isn\u2019t capable of encryption. IPsec protocol handles encryption, channel security, and data integrity to ensure all packets are secure and not compromised.\"}),/*#__PURE__*/e(\"h3\",{children:\"Windows 10 and 8.x\"}),/*#__PURE__*/t(\"p\",{children:[\"After setting up your IPsec VPN server, \",/*#__PURE__*/e(s,{href:\"https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/clients.md#windows\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"follow the steps below\"})}),\" to set up an IPsec VPN client on Windows 8.x and 10. IPsec VPN is supported natively on Windows\u2014there is no additional software to install.\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Right-click on the wireless/network icon in your system tray.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Select \",/*#__PURE__*/e(\"strong\",{children:\"Open Network and Sharing Center\"}),\". Or, if using Windows 10 version 1709 or newer, select \",/*#__PURE__*/e(\"strong\",{children:\"Open Network & Internet settings\"}),\", then click \",/*#__PURE__*/e(\"strong\",{children:\"Network and Sharing Center\"}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Click \",/*#__PURE__*/e(\"strong\",{children:\"Set up a new connection or network\"}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Select \",/*#__PURE__*/e(\"strong\",{children:\"Connect to a workplace\"}),\" and click \",/*#__PURE__*/e(\"strong\",{children:\"Next\"}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Click \",/*#__PURE__*/e(\"strong\",{children:\"Use my Internet connection (VPN)\"}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Enter \",/*#__PURE__*/e(\"code\",{children:\"Your VPN Server IP\"}),\" in the \",/*#__PURE__*/e(\"strong\",{children:\"Internet address\"}),\" field.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Enter anything you like in the \",/*#__PURE__*/e(\"strong\",{children:\"Destination name\"}),\" field, and then click \",/*#__PURE__*/e(\"strong\",{children:\"Create\"}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Return to \",/*#__PURE__*/e(\"strong\",{children:\"Network and Sharing Center\"}),\". On the left, click \",/*#__PURE__*/e(\"strong\",{children:\"Change adapter settings\"}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Right-click on the new VPN entry and choose \",/*#__PURE__*/e(\"strong\",{children:\"Properties\"}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Click the \",/*#__PURE__*/e(\"strong\",{children:\"Security\"}),\" tab. Select \",/*#__PURE__*/e(\"strong\",{children:\"Layer 2 Tunneling Protocol with IPsec (L2TP/IPSec)\"}),\" for the type of VPN.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Click \",/*#__PURE__*/e(\"strong\",{children:\"Allow these protocols\"}),\". Check the \",/*#__PURE__*/e(\"strong\",{children:\"Challenge Handshake Authentication Protocol (CHAP)\"}),\" and \",/*#__PURE__*/e(\"strong\",{children:\"Microsoft CHAP Version 2 (MS-CHAP v2)\"}),\" checkboxes.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Click \",/*#__PURE__*/e(\"strong\",{children:\"Advanced settings\"}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Select \",/*#__PURE__*/e(\"strong\",{children:\"Use preshared key for authentication\"}),\" and enter \",/*#__PURE__*/e(\"code\",{children:\"Your VPN IPsec PSK\"}),\" for the key.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Click \",/*#__PURE__*/e(\"strong\",{children:\"OK\"}),\" to close the \",/*#__PURE__*/e(\"strong\",{children:\"Advanced settings\"}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Click \",/*#__PURE__*/e(\"strong\",{children:\"OK\"}),\" to save the VPN connection details.\"]})})]}),/*#__PURE__*/e(\"h3\",{children:\"OS X (macOS)\"}),/*#__PURE__*/t(\"p\",{children:[\"After setting up your VPN server, \",/*#__PURE__*/e(s,{href:\"https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/clients.md#os-x\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"follow the steps below\"})}),\" to set up an IPsec VPN on OS X. IPsec VPN is natively supported on OS X. There is no additional software that needs to be installed.\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Open \",/*#__PURE__*/e(\"strong\",{children:\"System Preferences\"}),\" and go to the \",/*#__PURE__*/e(\"strong\",{children:\"Network\"}),\" section.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Click the \",/*#__PURE__*/e(\"strong\",{children:\"+\"}),\" button in the lower-left corner of the window.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Select \",/*#__PURE__*/e(\"strong\",{children:\"VPN\"}),\" from the \",/*#__PURE__*/e(\"strong\",{children:\"Interface\"}),\" dropdown menu.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Select \",/*#__PURE__*/e(\"strong\",{children:\"L2TP over IPSec\"}),\" from the \",/*#__PURE__*/e(\"strong\",{children:\"VPN Type\"}),\" dropdown menu.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Enter anything you like for the service name.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Click \",/*#__PURE__*/e(\"strong\",{children:\"Create\"}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Enter \",/*#__PURE__*/e(\"code\",{children:\"Your VPN Server IP\"}),\" for the server address.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Enter \",/*#__PURE__*/e(\"code\",{children:\"Your VPN Username\"}),\" for the Account Name.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Click the \",/*#__PURE__*/e(\"strong\",{children:\"Authentication Settings\"}),\" button.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"In the \",/*#__PURE__*/e(\"strong\",{children:\"User Authentication\"}),\" section, select the \",/*#__PURE__*/e(\"strong\",{children:\"Password\"}),\" radio button and enter \",/*#__PURE__*/e(\"code\",{children:\"Your VPN Password\"}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"In the \",/*#__PURE__*/e(\"strong\",{children:\"Machine Authentication\"}),\" section, select \",/*#__PURE__*/e(\"strong\",{children:\"Shared Secret\"}),\" and enter \",/*#__PURE__*/e(\"code\",{children:\"Your VPN IPsec PSK\"}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Click \",/*#__PURE__*/e(\"strong\",{children:\"OK\"}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Check the \",/*#__PURE__*/e(\"strong\",{children:\"Show VPN status in menu\"}),\" bar checkbox.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Click \",/*#__PURE__*/e(\"strong\",{children:\"Advanced\"}),\" and make sure the \",/*#__PURE__*/e(\"strong\",{children:\"Send all traffic over VPN connection\"}),\" checkbox is checked.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Click the \",/*#__PURE__*/e(\"strong\",{children:\"TCP/IP\"}),\" tab and make sure \",/*#__PURE__*/e(\"strong\",{children:\"Link-local only\"}),\" is selected in the \",/*#__PURE__*/e(\"strong\",{children:\"Configure IPv6\"}),\" section.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Click \",/*#__PURE__*/e(\"strong\",{children:\"OK\"}),\", and then click \",/*#__PURE__*/e(\"strong\",{children:\"Apply\"}),\" to save the VPN connection information.\"]})})]}),/*#__PURE__*/e(\"h3\",{children:\"Ubuntu Linux\"}),/*#__PURE__*/t(\"p\",{children:[\"Ubuntu (18.04 and newer) users can install the \",/*#__PURE__*/e(s,{href:\"https://packages.ubuntu.com/search?keywords=network-manager-l2tp-gnome\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"network-manager-l2tp-gnome\"})}),\" packaging using \",/*#__PURE__*/e(\"code\",{children:\"apt\"}),\", then configure the IPsec/L2TP VPN client using the GUI. Follow \",/*#__PURE__*/e(s,{href:\"https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/clients.md#linux\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"these steps\"})}),\":\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Go to \",/*#__PURE__*/e(\"strong\",{children:\"Settings > Network > VPN\"}),\". Click the \",/*#__PURE__*/e(\"strong\",{children:\"+\"}),\" button.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Select \",/*#__PURE__*/e(\"strong\",{children:\"Layer 2 Tunneling Protocol (L2TP)\"}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Enter anything you like in the \",/*#__PURE__*/e(\"strong\",{children:\"Name\"}),\" field.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Enter \",/*#__PURE__*/e(\"code\",{children:\"Your VPN Server IP\"}),\" for the \",/*#__PURE__*/e(\"strong\",{children:\"Gateway\"}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Enter \",/*#__PURE__*/e(\"code\",{children:\"Your VPN Username\"}),\" for the \",/*#__PURE__*/e(\"strong\",{children:\"User name\"}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Right-click the \",/*#__PURE__*/e(\"strong\",{children:\"?\"}),\" in the \",/*#__PURE__*/e(\"strong\",{children:\"Password\"}),\" field and select \",/*#__PURE__*/e(\"strong\",{children:\"Store the password only for this user\"}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Enter \",/*#__PURE__*/e(\"code\",{children:\"Your VPN Password\"}),\" for the \",/*#__PURE__*/e(\"strong\",{children:\"Password\"}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Leave the \",/*#__PURE__*/e(\"strong\",{children:\"NT Domain\"}),\" field blank.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Click the \",/*#__PURE__*/e(\"strong\",{children:\"IPsec Settings\u2026\"}),\" button.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Check the \",/*#__PURE__*/e(\"strong\",{children:\"Enable IPsec tunnel to L2TP host\"}),\" checkbox.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Leave the \",/*#__PURE__*/e(\"strong\",{children:\"Gateway ID\"}),\" field blank.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Enter \",/*#__PURE__*/e(\"code\",{children:\"Your VPN IPsec PSK\"}),\" for the \",/*#__PURE__*/e(\"strong\",{children:\"Pre-shared key\"}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Expand the \",/*#__PURE__*/e(\"strong\",{children:\"Advanced\"}),\" section.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Enter \",/*#__PURE__*/e(\"code\",{children:\"aes128-sha1-modp2048\"}),\" for the \",/*#__PURE__*/e(\"strong\",{children:\"Phase1 Algorithms\"}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Enter \",/*#__PURE__*/e(\"code\",{children:\"aes128-sha1\"}),\" for the \",/*#__PURE__*/e(\"strong\",{children:\"Phase2 Algorithms\"}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Click \",/*#__PURE__*/e(\"strong\",{children:\"OK\"}),\", then click \",/*#__PURE__*/e(\"strong\",{children:\"Add\"}),\" to save the VPN connection information.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Turn the \",/*#__PURE__*/e(\"strong\",{children:\"VPN\"}),\" switch ON.\"]})})]}),/*#__PURE__*/e(\"h2\",{children:\"Conclusion\"}),/*#__PURE__*/e(\"p\",{children:\"A virtual private network (VPN) helps shield your infrastructure from hackers. VPNs are commonly used in business to enable employees to access a corporate network remotely.\"}),/*#__PURE__*/e(\"p\",{children:\"With an IPsec VPN, IP packets are protected as they travel to and from the IPsec gateway. IPsec protocols implement a secure network that protects VPN data from external bad actors.\"}),/*#__PURE__*/e(\"p\",{children:\"However, a VPN can create a false sense of security. For example, your third-party vendors or hackers can exploit vulnerable information thanks to the single entrypoint to your private network. VPNs also aren\u2019t the cheapest solution. They require high support costs\u2014a sudden shift to remote work while maintaining the network infrastructure can put strain on the IT team.\"}),/*#__PURE__*/t(\"p\",{children:[\"Check out Twingate, a modern, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"zero-trust alternative\"})}),\" to VPNs for securing your network. Unlike traditional VPNs, Twingate doesn\u2019t require you to expose a public gateway, and it reduces lateral attack vulnerabilities.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=ipsec-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Request a demo\"})}),\" if you\u2019d like to learn more.\"]})]})},{index:116,id:\"QrLMBrZvR\",[h]:!0,[d]:!1,[p]:\"SDP vs. VPN: Why It\u2019s Time to Move to Software-Defined Perimeters\",[u]:\"SDP vs. VPN\",[m]:\"sdp-vs-vpn\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2021-08-24T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/vDsap9QlupD3Si60n1MOpYZMw.png\",srcSet:\"https://framerusercontent.com/images/vDsap9QlupD3Si60n1MOpYZMw.png?scale-down-to=512 512w,https://framerusercontent.com/images/vDsap9QlupD3Si60n1MOpYZMw.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/vDsap9QlupD3Si60n1MOpYZMw.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/vDsap9QlupD3Si60n1MOpYZMw.png 2388w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/vDsap9QlupD3Si60n1MOpYZMw.png\",srcSet:\"https://framerusercontent.com/images/vDsap9QlupD3Si60n1MOpYZMw.png?scale-down-to=512 512w,https://framerusercontent.com/images/vDsap9QlupD3Si60n1MOpYZMw.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/vDsap9QlupD3Si60n1MOpYZMw.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/vDsap9QlupD3Si60n1MOpYZMw.png 2388w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Software-Defined Perimeters (SDPs) apply a modern approach to network security that avoids the inherent weaknesses of traditional castle-and-moat fixed perimeter security technologies such as Virtual Private Networks (VPNs). Unlike the hardware-centric approaches of the past, SDP\u2019s software-based approach works with today\u2019s hybrid workforces and cloud infrastructures.\"}),/*#__PURE__*/e(\"p\",{children:\"After a brief definition of software-defined perimeters and VPNs, we will explain why SDPs are a better solution for today\u2019s network security challenges and how SDP solutions such as Twingate simplify the implementation of Zero Trust security principles to secure your company\u2019s most sensitive resources.\"}),/*#__PURE__*/e(\"h2\",{children:\"What is a software-defined perimeter (SDP)?\"}),/*#__PURE__*/e(\"p\",{children:\"A software-defined perimeter is a modern approach to network security first developed by the US Department of Defense to address the weaknesses inherent to traditional approaches. The castle-and-moat paradigm tries to protect networked resources by creating a secure perimeter around the network. Hardware or virtualized appliances such as firewalls and gateways are used to secure entry points into the physical network. However, the resulting infrastructure is brittle, expensive, and presents a visible, large attack surface.\"}),/*#__PURE__*/t(\"p\",{children:[\"Adopting SDP security approaches eliminates the costs and vulnerabilities of the traditional appliance-based approach to network security. Rather than trying to defend a physical network, SDP focuses on protecting the logical network connecting a company\u2019s resources to its users. The SDP model further separates the control layer from the data layer, so data connections are not created until the \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authentication and authorization\"})}),\" process is complete.\"]}),/*#__PURE__*/e(\"p\",{children:\"Network security systems based on software-defined perimeters enjoy several advantages over traditional approaches:\"}),/*#__PURE__*/e(\"h3\",{children:\"Granularity\"}),/*#__PURE__*/t(\"p\",{children:[\"Virtualizing the logical network through SDP gives security administrators more control over their networks. Segmenting the network resource by resource does not require investments in hardware infrastructure or changes to network architecture. Creating perimeters around each resource allows the creation of granular access control policies. With modern SDP solutions, security administrators can set policies based on \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/introducing-identity-first-networking\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"user identity\"})}),\", \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/device-trust-in-a-zero-trust-world\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"device state\"})}),\", user location, and more.\"]}),/*#__PURE__*/e(\"h3\",{children:\"Flexibility\"}),/*#__PURE__*/t(\"p\",{children:[\"Being software, SDPs are much less rigid than traditional fixed perimeters. This is particularly important for today\u2019s businesses, where cloud computing, mobile computing, and pandemic trends have resulted in IT resources and people being rarely confined to the same physical building or company-operated datacenter. This dynamic environment demands the flexibility that only a software approach can provide. SDPs enable a tightly fitting perimeter that can encompass each of a company\u2019s resources individually, wherever they may be - and, better still, the perimeter for each employee can be different and confined to only the resources they are \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authorized\"})}),\" to access.\"]}),/*#__PURE__*/e(\"h3\",{children:\"Manageability\"}),/*#__PURE__*/e(\"p\",{children:\"As a software-based security solution, SDP does not require large investments in hardware infrastructure. Companies can avoid the ongoing costs needed to keep that infrastructure both secure and performant. Thanks to standards-based implementations, SDP solutions can integrate with a company\u2019s existing identity providers and other security systems. This makes phased SDP deployments easier to manage with less impact on operations.\"}),/*#__PURE__*/e(\"h3\",{children:\"Security consistency\"}),/*#__PURE__*/e(\"p\",{children:\"Since SDP solutions are network-agnostic, companies can use the same systems to protect on-premises resources, hosted resources, and cloud services. In addition, companies no longer have to manage separate access control systems for on-site workers and remote workers.\"}),/*#__PURE__*/e(\"h3\",{children:\"Minimized attack surface\"}),/*#__PURE__*/e(\"p\",{children:\"Most importantly, SDP reduces a company\u2019s exposure to external threats. Unlike the publicly visible gateways that typically guard entryways into traditional network perimeters, an SDP can hide entry points, creating a \u201Cdark network\u201A that masks a company\u2019s resources from the public internet. Separation of the control and data layers, granular access control policies, and micro-segmentation mitigate denial of service attacks and limit a bad actor\u2019s ability to move laterally between resources.\"}),/*#__PURE__*/e(\"h2\",{children:\"What is a virtual private network (VPN)?\"}),/*#__PURE__*/e(\"p\",{children:\"Virtual private networks lie at the heart of the traditional castle-and-moat security paradigm. VPN gateways serve as the gatehouses through which trusted users and devices may pass through the secure perimeter and access the protected network. But the way this technology was originally developed has made VPN-based security vulnerable to modern cybercriminals.\"}),/*#__PURE__*/e(\"p\",{children:\"At first, virtual private networks solved real business problems. As companies adopted information technology in the 1990s, they needed more affordable network-to-network connections than traditional leased lines.\"}),/*#__PURE__*/e(\"p\",{children:\"Internet-based VPNs met that need, yet simply connecting two locations in a \u201Cvirtual network\u201A over the internet was not enough. Administrators could trust data on their managed networks, but the public internet was another matter. VPNs supplied the needed security by encrypting the data flowing between the networks. In other words, making the connection a virtual \u201Cprivate\u201A network.\"}),/*#__PURE__*/t(\"p\",{children:[\"At the same time, mobile computing created a demand for remote access solutions. VPN vendors responded by turning their technologies into access control solutions. Upon user \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authentication\"})}),\", an encrypted connection between the device and the VPN gateway would give users access to the protected network.\"]}),/*#__PURE__*/e(\"p\",{children:\"Unfortunately, the way VPN security developed created inherent weaknesses that make the technology less suitable for today\u2019s network environment.\"}),/*#__PURE__*/e(\"h3\",{children:\"VPNs impact modern network performance\"}),/*#__PURE__*/e(\"p\",{children:\"VPN technology was designed to connect physical networks in specific locations. As a result, VPNs default to managing remote users\u2019 traffic poorly. Network paths become longer than necessary \u2014 often with significant backhaul \u2014 and latency suffers. Bandwidth also suffers as VPN gateways become chokepoints through which all remote traffic passes.\"}),/*#__PURE__*/e(\"h3\",{children:\"VPNs are expensive to deploy and manage\"}),/*#__PURE__*/t(\"p\",{children:[\"VPN-based security adds to the financial and administrative burden of managing a corporate network. Upgrading a VPN system to support more users is a protracted process that takes resources from other priorities. Over time, the company\u2019s VPN infrastructure becomes a mix of models that require constant attention to keep patched for the \",/*#__PURE__*/e(s,{href:\"https://arstechnica.com/gadgets/2021/07/feds-list-the-top-30-most-exploited-vulnerabilities-many-are-years-old\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"latest security risks\"})}),\".\"]}),/*#__PURE__*/e(\"h3\",{children:\"VPNs are inherently insecure\"}),/*#__PURE__*/e(\"p\",{children:\"As portals through secure perimeters, VPN gateways are popular targets for bad actors. VPN gateways are readily visible to the public internet, along with their model numbers, and other specifications. This visibility, made worse by the slow application of security patches, makes VPN gateways susceptible to attacks from cybercriminals scanning the internet for vulnerable gateways.\"}),/*#__PURE__*/e(\"p\",{children:\"Most importantly, as a network-to-network solution VPN security rests on a foundation of trust. Cybercriminals that successfully compromise a device or VPN gateway gain full access to the network.\"}),/*#__PURE__*/e(\"h2\",{children:\"Why is SDP a better solution than a VPN?\"}),/*#__PURE__*/e(\"p\",{children:\"Even if businesses operated in the computing environment of decades past, software-defined perimeters would be a better solution for network security than VPN technologies. The advantages SDP holds over VPN include:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Network agnostic:\"}),\" Unlike VPN, SDP is not tied to physical infrastructure, so it can protect resources from any private network or public internet connection.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Resource focused:\"}),\" VPN grants access to a protected network and all of the resources on that network. SDP defends each resource.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Small attack surface:\"}),\" Rather than publishing its presence as VPN does, SDP can render a company\u2019s resources invisible to the public internet.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Low overhead:\"}),\" Without the need to deploy, manage, patch, and upgrade physical infrastructure, SDP is more cost-effective and consumes fewer resources than VPN.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"Of course, the modern computing environment is nothing like the past. Today\u2019s businesses operate in more dynamic, heterogeneous conditions than ever before.\"}),/*#__PURE__*/e(\"h3\",{children:\"Decentralization of the corporate network\"}),/*#__PURE__*/e(\"p\",{children:\"The \u201Cmanaged\u201A network is no longer a physical on-premises system. The network encompasses hosted applications, hybrid clouds, cloud-hosted systems, and X-as-a-Service solutions. Another company\u2019s vulnerabilities can create attack vectors through API integrations.\"}),/*#__PURE__*/e(\"h3\",{children:\"Amorphous user populations\"}),/*#__PURE__*/t(\"p\",{children:[\"In the past, companies managed employees\u2019 access to resources. Today\u2019s user base is a mix of employees, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/third-party-access-using-twingate\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"consultants, contractors, and other third parties\"})}),\". Project-based work teams result in constantly shifting user roles and access requirements.\"]}),/*#__PURE__*/e(\"h3\",{children:\"Device diversity\"}),/*#__PURE__*/e(\"p\",{children:\"Users no longer access resources from carefully managed, company-owned computers. The growing adoption of Bring Your Own Device (BYOD) policies and the Industrial Internet of Things (IIOT) require flexible access control policies while maintaining security standards.\"}),/*#__PURE__*/e(\"h3\",{children:\"The new remote workforce\"}),/*#__PURE__*/e(\"p\",{children:\"Although already well underway, the adoption of remote work policies accelerated during the COVID-19 pandemic. Literally overnight, the entire workforce hit VPN gateways designed to support relatively few traveling employees.\"}),/*#__PURE__*/e(\"h3\",{children:\"Chasing cyber threats\"}),/*#__PURE__*/e(\"p\",{children:\"The threat environment constantly changes as cybercriminals quickly adopt new technologies. Cheap, automated systems let bottom-feeders operate indiscriminate, large-scale phishing attacks. Ransomware-as-a-service gives less sophisticated criminals access to the most advanced technologies. Targeted attacks from state-sponsored cybercriminals can leverage vulnerabilities nobody has heard of.\"}),/*#__PURE__*/e(\"p\",{children:\"SDP offers a modern approach to protecting company resources in the face of trends such as these. VPN technologies simply cannot keep up. At the same time, SDP is only one part of the security puzzle.\"}),/*#__PURE__*/e(\"h2\",{children:\"How do SDPs fit into Zero Trust?\"}),/*#__PURE__*/t(\"p\",{children:[\"Companies gain the most security benefits by pairing SDP with \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust\"})}),\".Software-defined perimeters define the methods for creating, managing, and securing connections between users and resources. Zero Trust establishes the principles that determine whether \u2014 and to what degree \u2014 those connections should be created in the first place:\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Trust nothing and nobody:\"}),\" All policies should deny access by default and require both \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authentication and authorization\"})}),\" for every connection attempt.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Authorize on a need-to-know basis:\"}),\" Also known as the principle of least privilege, role-based policies limit users\u2019 access to the resources they need for their jobs.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Context defines permissions:\"}),\" Going beyond identity verification, Zero Trust requires evaluation of everything from device posture to the user\u2019s location before authorizing access.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Make permissions ephemeral:\"}),\" Changes to the context, session limits, inactivity windows, and other measures should ensure that connections to resources never last without reauthentication and reauthorization.\"]})})]}),/*#__PURE__*/t(\"p\",{children:[\"The Cloud Security Alliance, which extended the DoD\u2019s work on SDP to the commercial sector, recently found that \u201C\",/*#__PURE__*/e(s,{href:\"https://cloudsecurityalliance.org/press-releases/2020/05/27/cloud-security-alliance-s-latest-research-examines-symbiotic-relationship-between-software-defined-perimeter-sdp-and-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"SDP is the most effective architecture for adopting a Zero Trust strategy\"})}),\"\u201A.As a software-based approach, SDP provides a low-cost, low-overhead way to implement fine-grained, context-sensitive Zero Trust policies.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s SDP solution makes \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"ZTNA\"})}),\" easier to integrate into your organization\u2019s security strategy. Without changing your existing infrastructure or replacing your current security system, you can deploy Twingate to protect any on-premises or cloud resources. Simple administrative consoles let you easily manage role-based access control policies and define \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/device-trust-in-a-zero-trust-world\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"device posture\"})}),\" criteria.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Now is the time to move to software-defined perimeters\"}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust principles implemented through software-defined perimeter solutions are the best way to secure company resources in the face of today\u2019s dynamic computing environment. Old technologies, such as VPNs, require expensive, brittle infrastructure that increasingly fails to secure the networks they are meant to protect.\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s SDP security solution opens an easy path to deploying ZTNA security within your organization. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=sdp-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact us to learn more\"})}),\".\"]})]})},{index:117,id:\"UqrBFSykl\",[h]:!0,[d]:!1,[p]:\"IPsec Tunnel Mode vs. Transport Mode\",[u]:\"IPsec Tunnel Mode\",[m]:\"ipsec-tunnel-mode\",[g]:\"\",[w]:\"Damaso Sanoja\",[f]:\"2021-08-19T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/idOaXNEWFRDzYGN0iOTY0mSv93M.png\",srcSet:\"https://framerusercontent.com/images/idOaXNEWFRDzYGN0iOTY0mSv93M.png?scale-down-to=512 512w,https://framerusercontent.com/images/idOaXNEWFRDzYGN0iOTY0mSv93M.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/idOaXNEWFRDzYGN0iOTY0mSv93M.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/idOaXNEWFRDzYGN0iOTY0mSv93M.png 2388w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/idOaXNEWFRDzYGN0iOTY0mSv93M.png\",srcSet:\"https://framerusercontent.com/images/idOaXNEWFRDzYGN0iOTY0mSv93M.png?scale-down-to=512 512w,https://framerusercontent.com/images/idOaXNEWFRDzYGN0iOTY0mSv93M.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/idOaXNEWFRDzYGN0iOTY0mSv93M.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/idOaXNEWFRDzYGN0iOTY0mSv93M.png 2388w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://en.wikipedia.org/wiki/IPsec\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"IPsec (Internet Protocol Security)\"})}),\" is a series of protocols that is used to protect IP traffic between two points on a network. It offers confidentiality, data integrity, and a high degree of security through its advanced packet encryption. For these reasons, IPsec is most commonly used for business VPNs.\"]}),/*#__PURE__*/e(\"p\",{children:\"In this article, you\u2019ll learn about the two primary modes of IPsec\u2014tunnel mode and transport mode\u2014and the use cases for each.\"}),/*#__PURE__*/e(\"h2\",{children:\"IPsec Tunnel vs. Transport Mode\"}),/*#__PURE__*/e(\"p\",{children:\"In order to authenticate data packets and guarantee their integrity, IPsec includes two protocols. These are the AH (Authentication Header) protocol and the ESP (Encapsulating Security Payload) protocol. Both protocols, in turn, support two encapsulation modes\u2014tunnel mode and transport mode. Let\u2019s break down their core differences.\"}),/*#__PURE__*/e(\"h3\",{children:\"Tunnel Mode\"}),/*#__PURE__*/e(\"p\",{children:\"In tunnel mode, the entire original IP packet is encapsulated to become the payload of a new IP packet. Additionally, a new IP header is added on top of the original IP packet. Since a new packet is created using the original information, tunnel mode is useful for protecting traffic between different networks. An additional advantage of this mode is that it makes it very easy to establish a \u201Ctunnel\u201A between two secure IPsec gateways.\"}),/*#__PURE__*/e(\"p\",{children:\"These IPsec gateways in turn can connect two different networks securely. Using secure IPsec proxies like the ones shown in the diagram below can be very useful for connecting two distant branches using an encrypted connection.\"}),/*#__PURE__*/e(\"p\",{children:\"The process used by IPsec to encapsulate the original IP header differs depending on whether AH tunnel mode or ESP tunnel mode is used:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The original packet is encapsulated in a new IP packet (both its IP header and its payload).\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"In the case of AH tunnel mode, an AH header and a new IP header are added. For ESP tunnel mode, an ESP header, a new IP header, an ESP trailer, and an ESP authentication trailer are added.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"When AH tunnel mode is used, the entire packet is signed for integrity and authentication. But when ESP tunnel mode is used, the encapsulated packet between the ESP header and the ESP trailer is signed for integrity and authentication. The new packet can also be encrypted for greater security.\"})})]}),/*#__PURE__*/e(\"h3\",{children:\"Transport Mode\"}),/*#__PURE__*/e(\"p\",{children:\"The main difference in transport mode is that it retains the original IP header. In other words, payload data transmitted within the original IP packet is protected, but not the IP header. In transport mode, encrypted traffic is sent directly between two hosts that previously established a secure IPsec tunnel.\"}),/*#__PURE__*/e(\"p\",{children:\"Since a new IP header isn\u2019t created, the process used by transport mode is less complex than tunnel mode:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Depending on the protocol used, a new AH or ESP header is created and inserted just after the original IP header.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"For the ESP protocol, both an ESP trailer and an ESP authentication trailer are created and added after the original package.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"When using AH transport mode, the entire packet is signed for integrity and authentication. For ESP transport mode, the original packet payload is signed by authentication (that is, not including its IP header) and encrypted if required.\"})})]}),/*#__PURE__*/e(\"img\",{alt:\"A diagram showing IPsec encapsulation modes\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,4dJXkmQtM8PqEwcbyzuFi5OO2M.png?originalFilename=ipsec-mode-diagram.png\",src:\"https://framerusercontent.com/images/4dJXkmQtM8PqEwcbyzuFi5OO2M.png\",srcSet:\"https://framerusercontent.com/images/4dJXkmQtM8PqEwcbyzuFi5OO2M.png?scale-down-to=512 512w,https://framerusercontent.com/images/4dJXkmQtM8PqEwcbyzuFi5OO2M.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"A diagram showing IPsec encapsulation modes\"}),/*#__PURE__*/e(\"h2\",{children:\"When to Use IPsec Tunnel Mode\"}),/*#__PURE__*/e(\"p\",{children:\"Tunnel mode is most commonly used for configurations that need a secure connection between two different networks, separated by an intermediate untrusted network (like the Internet).\"}),/*#__PURE__*/e(\"p\",{children:\"Typical tunnel mode use cases are gateway-to-gateway, server-to-gateway, and server-to-server. Here\u2019s a list of various reasons why tunnel mode works best for these use cases:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Tunnel mode protects internal routing information by encrypting the original packet\u2019s IP header by creating a new IP header on top of it. This allows tunnel mode to protect against traffic analysis, since attackers can only determine the tunnel endpoints.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Tunnel mode is mandatory when one of the peers is a security gateway applying IPsec on behalf of another host. In other words, it\u2019s more compatible with existing gateways than transport mode.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Tunnel mode makes it easier to traverse NATs.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Both VPN clients and VPN gateways can use IPsec tunnel mode.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Despite its advantages, tunnel mode has a greater overhead and smaller MTU than transport mode.\"}),/*#__PURE__*/e(\"h2\",{children:\"When to Use IPsec Transport Mode\"}),/*#__PURE__*/e(\"p\",{children:\"Transport mode is commonly used when fast and secure end-to-end communications are required, such as client-server communications (workstation-to-gateway and host-to-host scenarios). Reasons to use transport mode include:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Transport mode provides end-to-end security (authentication, integrity, and anti-replay protection).\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Transport mode has a larger MTU than tunnel mode.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Transport mode has a lower overhead than tunnel mode.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Transport mode is not without its flaws. It has poor compatibility with security gateways, as well as greater difficulty in implementing traversal NATs. For this reason, transport mode can\u2019t be used in protected gateway-to-gateway configurations.\"}),/*#__PURE__*/e(\"h2\",{children:\"Setting Each Mode Up\"}),/*#__PURE__*/e(\"p\",{children:\"To successfully set up each mode, it\u2019s essential to know how IPsec negotiates packet security using the IKE (Internet Key Exchange) protocol.\"}),/*#__PURE__*/e(\"p\",{children:\"During the IPsec tunnel set up, the peers establish security associations (SA), defining which parameters will be used to secure the traffic between them. The process of negotiating such parameters happens in two phases:\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"IKE Phase 1:\"}),\" This phase creates a secure tunnel to protect the negotiation messages peers will exchange in the second phase.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"IKE Phase 2:\"}),\" During this phase, the SA parameters of a second IPsec tunnel are negotiated. While the first tunnel is used to protect SA negotiations, this tunnel protects the data.\"]}),/*#__PURE__*/e(\"p\",{children:\"Once the secure tunnel (IKE Phase 2) has been established, IPsec protects the traffic sent between the two tunnel endpoints. It does this by applying the security parameters defined by the SAs during tunnel configuration. The encapsulation mode is part of these parameters.\"}),/*#__PURE__*/e(\"p\",{children:\"For clarification, IPsec only uses the IKE protocol to build secure tunnels between the two devices and set up SA parameters. Authentication and encryption are handled by the AH and ESP protocols, respectively.\"}),/*#__PURE__*/e(\"p\",{children:\"Regardless of whether you use tunnel mode or transport mode, the encapsulation mode used by the AH and ESP protocols must be set up during IKE Phase 2\u2014before the actual data transmission.\"}),/*#__PURE__*/e(\"h2\",{children:\"Conclusion\"}),/*#__PURE__*/e(\"p\",{children:\"In this article, you\u2019ve learned the main differences between IPsec\u2019s two encapsulation modes: transport mode and tunnel mode. You should also know the pros and cons of both modes, and consequently understand best use cases for each.\"}),/*#__PURE__*/t(\"p\",{children:[\"The intricacy of IPsec connections represents an opportunity to consider alternative ways to securely access your remote data\u2014without falling victim to hacking due to a bad configuration. Cutting-edge solutions like \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/?utm_source=blog&utm_medium=blog&utm_campaign=ipsec-tunnel-mode\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate\"})}),\" enable your business to rapidly implement a modern, zero-trust network that is more secure and maintainable than conventional VPNs.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=ipsec-tunnel-mode\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Request a Twingate demo today\"})}),\" and deploy secure network connections in a matter of minutes.\"]})]})},{index:118,id:\"iS0EzCvQn\",[h]:!0,[d]:!1,[p]:\"Whitelisting: is it required for secure access control?\",[u]:\"Whitelisting\",[m]:\"whitelisting\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2021-08-18T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/MrIZlnt8Pq599w1pSoAyAqQRMk.png\",srcSet:\"https://framerusercontent.com/images/MrIZlnt8Pq599w1pSoAyAqQRMk.png?scale-down-to=512 512w,https://framerusercontent.com/images/MrIZlnt8Pq599w1pSoAyAqQRMk.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/MrIZlnt8Pq599w1pSoAyAqQRMk.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/MrIZlnt8Pq599w1pSoAyAqQRMk.png 2388w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/MrIZlnt8Pq599w1pSoAyAqQRMk.png\",srcSet:\"https://framerusercontent.com/images/MrIZlnt8Pq599w1pSoAyAqQRMk.png?scale-down-to=512 512w,https://framerusercontent.com/images/MrIZlnt8Pq599w1pSoAyAqQRMk.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/MrIZlnt8Pq599w1pSoAyAqQRMk.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/MrIZlnt8Pq599w1pSoAyAqQRMk.png 2388w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Whitelisting is a network security approach that blocks resource access to all but a select few trusted entities. Also referred to as permit lists, allowlists, or passlists, whitelists can contribute to your access control strategy by making highly sensitive resources harder for adversaries to penetrate.\"}),/*#__PURE__*/e(\"p\",{children:\"In this article, we will introduce whitelisting and explain how it differs from blacklists. We will also review common applications of whitelists and the limitations of this security tactic. There are ways, however, to overcome these limitations and make whitelists an effective part of your access control strategy.\"}),/*#__PURE__*/t(\"p\",{children:[\"Before we continue, we wanted to highlight that although the terms \u201Cwhitelist\u201A and \u201Cblacklist\u201A have long been used by the security industry (you probably discovered this article by Googling for one of those words), we believe that these terms carry undesired \",/*#__PURE__*/e(s,{href:\"https://insights.dice.com/2020/07/17/whitelist-blacklist-the-new-debate-over-security-terminology\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"connotations\"})}),\" that we should be sensitive to and, as is the \",/*#__PURE__*/e(s,{href:\"https://www.zdnet.com/article/ibm-microsoft-staff-rally-to-remove-racially-insensitive-language-from-products\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"trend within the technology community\"})}),\", should be replaced with terms such as \u201Callowlist\u201A and \u201Cdenylist.\u201A\"]}),/*#__PURE__*/e(\"h2\",{children:\"What is Whitelisting?\"}),/*#__PURE__*/e(\"p\",{children:\"Whitelists protect resources by creating a registry of the trusted entities that may access that resource. Just as a bouncer lets listed guests into a private party and blocks everyone else, a whitelist denies access to all but the listed entities.\"}),/*#__PURE__*/e(\"p\",{children:\"Depending on the implementation, the entity list may comprise user or device identities, applications, IP addresses, or other criteria.\"}),/*#__PURE__*/e(\"p\",{children:\"What all whitelists have in common is the trust of security administrators. That trust grants certain entities with access and excludes all others. Examples of whitelists in action include:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"An ad blocker\u2019s list of websites that may display ads.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"An access point\u2019s list of MAC addresses determining which devices may connect.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"A firewall\u2019s list of public IP addresses dictating what traffic may pass through.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"The goal of whitelisting is to constrict a resource\u2019s threat surface by preventing all but a few, known, trusted entities from accessing that resource.\"}),/*#__PURE__*/e(\"h2\",{children:\"Whitelisting vs. blacklisting\"}),/*#__PURE__*/e(\"p\",{children:\"Blacklists are registers of known threats that the system specifically stops from accessing a resource. Where a whitelist is like a bouncer at a private party, a blacklist is like a no fly list. People on the list are barred from boarding commercial aircraft, while everyone else is permitted.\"}),/*#__PURE__*/e(\"p\",{children:\"Antivirus and anti-malware applications are the most common blacklisting applications. They compare files on a system to a list of known threats and act against those files.\"}),/*#__PURE__*/e(\"p\",{children:\"Let\u2019s compare the two approaches to access control:\"}),/*#__PURE__*/e(\"img\",{alt:\"Whitelist vs. blacklist comparison chart\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,I9TgHORbHQwRaK4gRhETRCO3br8.png?originalFilename=comparison.png\",src:\"https://framerusercontent.com/images/I9TgHORbHQwRaK4gRhETRCO3br8.png\",srcSet:\"https://framerusercontent.com/images/I9TgHORbHQwRaK4gRhETRCO3br8.png?scale-down-to=512 512w,https://framerusercontent.com/images/I9TgHORbHQwRaK4gRhETRCO3br8.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Whitelist vs. blacklist comparison chart\"}),/*#__PURE__*/e(\"p\",{children:\"In an online context, blacklists document the users, devices, IP addresses, or other entities that cannot be trusted with access to a resource. Of course, you can only create this list if you know what those threats are in the first place. Blacklists will not stop threats that you do not know about yet. On the other hand, you can base a whitelist on something you always know \u2014 who or what you can trust.\"}),/*#__PURE__*/e(\"p\",{children:\"Administrative overhead is another disadvantage of blacklists. The few trusted entities on a whitelist normally do not (or should not) change very often. Blacklists, on the other hand, constantly change. You see this with antivirus and anti-malware software. Vendors must constantly push updates to their blacklists to keep their software effective against the latest threats.\"}),/*#__PURE__*/e(\"h2\",{children:\"What are common use cases for whitelisting?\"}),/*#__PURE__*/e(\"p\",{children:\"We mentioned some simple whitelisting examples earlier. Whitelists are also used to build security into network architectures, control access to cloud-hosted resources and third-party solutions, and protect resources from malicious software.\"}),/*#__PURE__*/e(\"h3\",{children:\"Application management\"}),/*#__PURE__*/e(\"p\",{children:\"System administrators use whitelists to control what software may run on managed devices such as company-issued laptops or application servers. Starting with a clean system, you create a list of all the applications, libraries, and other software needed for the system to function. The deployed application whitelist can now block any other software from running on the managed devices.\"}),/*#__PURE__*/e(\"p\",{children:\"Application whitelisting enhances device security by blocking the execution of malware. System administrators also use application whitelisting to counter shadow IT by preventing users from installing unauthorized software. Locking down a managed system like this prevents users from opening security holes and avoids potential software licensing issues.\"}),/*#__PURE__*/e(\"h3\",{children:\"Network access control\"}),/*#__PURE__*/e(\"p\",{children:\"Whitelists can protect company resources by restricting traffic to a limited number of IP addresses. System administrators often use whitelists to secure network perimeters and reinforce security between subnets.\"}),/*#__PURE__*/t(\"p\",{children:[\"Routers near a network\u2019s perimeter may have whitelists that only allow traffic from firewalls and gateways onto the private network. Likewise, whitelists can \",/*#__PURE__*/e(s,{href:\"https://us-cert.cisa.gov/sites/default/files/documents/Guidelines%20for%20Application%20Whitelisting%20in%20Industrial%20Control%20Systems_S508C.pdf\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"protect industrial control systems\"})}),\" by severely restricting the source of incoming network traffic.\"]}),/*#__PURE__*/e(\"h3\",{children:\"SaaS access control\"}),/*#__PURE__*/t(\"p\",{children:[\"SaaS whitelisting is an extension of network access control that protects a company\u2019s cloud-based resources. Within the SaaS provider\u2019s security settings, you can tell the service which IP addresses to permit access. SaaS whitelisting ensures that traffic to the cloud service only comes from \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authorized\"})}),\" network paths.\"]}),/*#__PURE__*/e(\"p\",{children:\"You should, however, consider the drawbacks of SaaS whitelisting. Each service has its own whitelisting system. And some services do not offer the feature at all. As a result, this whitelisting patchwork will increase your administrative overhead.\"}),/*#__PURE__*/e(\"h2\",{children:\"Is whitelisting required for secure access control?\"}),/*#__PURE__*/e(\"p\",{children:\"Whitelisting can significantly enhance security. They reduce attack surfaces by strictly limiting access sources. Whitelists also minimize the impact of successful security breaches by flagging unauthorized connection attempts and placing more barriers in the adversary\u2019s path.\"}),/*#__PURE__*/e(\"p\",{children:\"But whitelists are not complete security solutions. They have limitations that you should consider before using whitelists for secure access control.\"}),/*#__PURE__*/e(\"h3\",{children:\"Setting up whitelists is resource-intensive\"}),/*#__PURE__*/e(\"p\",{children:\"Creating an effective whitelist system requires an up-front commitment of time and resources. Every entity on the list, whether a user or an IP address, must be carefully considered. If the whitelist is too restrictive, then business operations will suffer. If the whitelist is too permissive, then you lose the security benefits.\"}),/*#__PURE__*/t(\"p\",{children:[\"An example of one approach to mitigate this is in a SaaS access control context. Instead of whitelisting IP addresses for each individual \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authorized\"})}),\" user, a company may choose to whitelist the IP address of a trusted VPN gateway (or a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/whitelisting-traffic-to-public-services\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate Connector\"})}),\"). To access the SaaS application, a user must first sign into the VPN. This allows companies to centralize whitelist management at the VPN level, and reduces the number of IP addresses that must be whitelisted with each SaaS application. (The drawback of this approach is that all traffic must flow through the gateway.)\"]}),/*#__PURE__*/t(\"p\",{children:[\"Whitelist \",/*#__PURE__*/e(s,{href:\"https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-167.pdf\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"best practices\"})}),\" recommend a phased approach to ensure that the rules make resources more secure while giving administrators enough time to minimize or mitigate impacts on business operations.\"]}),/*#__PURE__*/e(\"h3\",{children:\"Whitelists are less convenient and responsive\"}),/*#__PURE__*/e(\"p\",{children:\"Whitelists work best with centrally managed and relatively static systems where users have few expectations of control. In more dynamic environments, whitelists become difficult to manage and may degrade the user experience.\"}),/*#__PURE__*/e(\"p\",{children:\"IP address whitelists, for example, only work when you can count on users to have static IP addresses. Remote workers, traveling executives, and others accessing company resources away from the office may run afoul of the whitelist.\"}),/*#__PURE__*/e(\"p\",{children:\"Whitelists are also difficult to execute well in scenarios where user roles and access needs change frequently. Shared IP addresses become tempting workarounds, but they undermine the security that the whitelist was supposed to provide.\"}),/*#__PURE__*/e(\"h3\",{children:\"Whitelists depend on trust\"}),/*#__PURE__*/e(\"p\",{children:\"As we discussed earlier, whitelists consist of the entities you trust with access to a resource. From that respect, a better word for whitelists would be \u201Ctrustlist\u201A. And that trustlist contains an inherent security weakness:\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"Your resources become exposed when you do not realize that a whitelisted entity is no longer trustworthy.\"})}),/*#__PURE__*/e(\"h2\",{children:\"Make whitelists more secure by removing trust\"}),/*#__PURE__*/e(\"p\",{children:\"A former employee\u2019s unrevoked credentials, a BYOD laptop used without a VPN, or a compromised system on the private network are just as dangerous to whitelists as they are to any other security system.\"}),/*#__PURE__*/e(\"p\",{children:\"Despite their limitations, whitelists can be an element \u2014 but only one element \u2014 of a layered security strategy that includes perimeter defenses, endpoint protections, anti-malware systems, and more.\"}),/*#__PURE__*/t(\"p\",{children:[\"The best way to implement whitelists is to take trust out of the equation. Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust Network Access (ZTNA)\"})}),\" solution lets you benefit from whitelist access control while mitigating their trust-driven limitations.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Furthermore, Twingate enhances whitelist security by applying principles of least-privileged access and tying trust verification to the actual \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/introducing-identity-first-networking\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"identities of users\"})}),\" and their \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/device-trust-in-a-zero-trust-world\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"devices\"})}),\" - rather than IP addresses which are often more loosely tied to individuals. Additionally, rather than always granting access to listed entities, Twingate layers on top context-aware rules to refine evaluation of allow/deny decisions with each connection attempt.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Whitelists secure resources but need help\"}),/*#__PURE__*/e(\"p\",{children:\"Whitelists are powerful tools for protecting a company\u2019s resources. By creating a list of the entities you trust with access to a resource, you can deny access to everything and everyone else. These trust lists significantly constrain access to resources and reduce those resources\u2019 threat surfaces. But whitelists are far from perfect. When not implemented correctly, they disrupt business operations and leave resources open to attack.\"}),/*#__PURE__*/t(\"p\",{children:[\"Removing the risk of trust makes whitelists easier to implement as one layer of your \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/defense-in-depth-webinar\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"defense-in-depth security strategy\"})}),\". Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust Network Access\"})}),\" solution lets you:\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Create a consolidated, identity-based whitelist within your company\u2019s access control system.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Extend whitelists to services and applications that do not natively support whitelists.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Supplement whitelist capabilities with context-sensitive rules.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Twingate\u2019s modern approach to access control lets you easily apply principles of least-privileged access and software-defined perimeters to protect company resources from today\u2019s dynamic threat environment.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=whitelisting\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact Twingate\"})}),\" to learn more about implementing whitelist security in a ZTNA strategy.\"]})]})},{index:119,id:\"BugpRyuG1\",[h]:!0,[d]:!1,[p]:\"The Hidden Cost of AWS VPN and Finding Affordable Alternatives\",[u]:\"AWS VPN Pricing\",[m]:\"aws-vpn-pricing\",[g]:\"\",[w]:\"Stuart Loh\",[f]:\"2021-08-12T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/HGH7jfEFr2KuKrSugUsqHtsaLA.png\",srcSet:\"https://framerusercontent.com/images/HGH7jfEFr2KuKrSugUsqHtsaLA.png?scale-down-to=512 512w,https://framerusercontent.com/images/HGH7jfEFr2KuKrSugUsqHtsaLA.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/HGH7jfEFr2KuKrSugUsqHtsaLA.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/HGH7jfEFr2KuKrSugUsqHtsaLA.png 2388w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/HGH7jfEFr2KuKrSugUsqHtsaLA.png\",srcSet:\"https://framerusercontent.com/images/HGH7jfEFr2KuKrSugUsqHtsaLA.png?scale-down-to=512 512w,https://framerusercontent.com/images/HGH7jfEFr2KuKrSugUsqHtsaLA.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/HGH7jfEFr2KuKrSugUsqHtsaLA.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/HGH7jfEFr2KuKrSugUsqHtsaLA.png 2388w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"h2\",{children:\"What is AWS Client VPN?\"}),/*#__PURE__*/e(\"p\",{children:\"AWS Client VPN is a managed service offered by AWS that lets organizations access AWS resources from remote locations using OpenVPN-based clients. AWS Client VPN is designed to make it easier to deploy a VPN server, as compared to the process of setting up, configuring, and self-hosting your own VPN server.\"}),/*#__PURE__*/t(\"p\",{children:[\"While AWS Client VPN may be simpler to set up in several aspects than a traditional VPN, one thing that is not as simple is its pricing model. Based on a long list of variables, AWS Client VPN\u2019s pricing can be confusing, so in this article we\u2019ll break down exactly how it works, provide a handy \",/*#__PURE__*/e(s,{href:\"https://docs.google.com/spreadsheets/d/1sndHOhm3PglLJ8MFGdkDom_RHGJV01wizYlM1tVIwAc/edit?usp=sharing\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"cost calculator\"})}),\", and review some alternatives to AWS Client VPN.\"]}),/*#__PURE__*/e(\"p\",{children:\"AWS Client VPN should not be confused with AWS Site-to-Site VPN, which is a service that\u2019s used to connect different networks together - namely, an Amazon VPC with a separate remote network (such as an on-premises corporate network) over an IPsec connection.AWS Site-to-Site VPN has a different pricing structure and is not the focus of this article.\"}),/*#__PURE__*/e(\"h2\",{children:\"How AWS Client VPN Pricing Works\"}),/*#__PURE__*/e(\"p\",{children:\"AWS Client VPN is charged based on a time-connected basis for each type of component that is required to use the service: Client VPN endpoint associations, and user connections to an endpoint.\"}),/*#__PURE__*/e(\"h3\",{children:\"Client VPN Endpoint Associations\"}),/*#__PURE__*/e(\"p\",{children:\"The first step to setting up AWS Client VPN is to create a Client VPN endpoint. You can think of the VPN endpoint as equivalent to a VPN gateway in a traditional VPN setup. The second step is to associate that Client VPN endpoint with one or more subnets that are part of the same AWS account, representing the subnets in a VPC that you want to make accessible to people connecting through that Client VPN endpoint. One constraint is that each subnet associated with a VPN endpoint must belong to a different Availability Zone.\"}),/*#__PURE__*/e(\"p\",{children:\"AWS charges an hourly fee for the time each endpoint association exists (remember that an endpoint can have multiple endpoint associations). The fee depends on the VPC region in which your endpoint is located, which generally ranges from $0.10 to $0.15 per hour (charges for partial hours are prorated). The meter starts running as soon as you establish an association.\"}),/*#__PURE__*/e(\"ul\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Each Client VPN Endpoint Association: $0.10-0.15 per hour\"})})}),/*#__PURE__*/e(\"h3\",{children:\"Client VPN Connections\"}),/*#__PURE__*/e(\"p\",{children:\"Once your VPN endpoint and endpoint associations have been set up, you can now connect clients to that endpoint.\"}),/*#__PURE__*/e(\"p\",{children:\"AWS charges an hourly fee for the time each client is connected to a VPN endpoint. Note that an individual user may have multiple clients - for example, if they use multiple devices. The hourly fee generally is $0.05 per hour (charges for partial hours are prorated).\"}),/*#__PURE__*/e(\"ul\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Each client, while connected to a VPN endpoint: $0.05 per hour\"})})}),/*#__PURE__*/e(\"h3\",{children:\"AWS VPN Pricing Calculator\"}),/*#__PURE__*/t(\"p\",{children:[\"Because there are a lot of variables to crunch when working out pricing, to help you estimate AWS Client VPN fees, we\u2019ve made this handy \",/*#__PURE__*/e(s,{href:\"https://docs.google.com/spreadsheets/d/1sndHOhm3PglLJ8MFGdkDom_RHGJV01wizYlM1tVIwAc/edit?usp=sharing\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"AWS VPN Pricing Calculator\"})}),\".\"]}),/*#__PURE__*/e(\"img\",{alt:\"AWS Pricing Calculator\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,m6X7zLBzhwEfNkER5tpYpthiAPU.png?originalFilename=aws-calculator.png\",src:\"https://framerusercontent.com/images/m6X7zLBzhwEfNkER5tpYpthiAPU.png\",srcSet:\"https://framerusercontent.com/images/m6X7zLBzhwEfNkER5tpYpthiAPU.png?scale-down-to=512 512w,https://framerusercontent.com/images/m6X7zLBzhwEfNkER5tpYpthiAPU.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"We note that pricing changes from time to time. The information in this article is accurate to the best of our knowledge at the date of writing, but you should check the AWS website for the most up to date pricing.\"}),/*#__PURE__*/e(\"h3\",{children:\"Additional Costs\"}),/*#__PURE__*/t(\"p\",{children:[\"Data Transfer Charges: One of the costs that\u2019s perhaps obscured is the cost of bandwidth. While AWS Client VPN doesn\u2019t charge for bandwidth sent through the Client VPN endpoint as such, the Client VPN does send traffic into your VPC. This traffic is charged at the prevailing rates for \",/*#__PURE__*/e(s,{href:\"https://aws.amazon.com/vpc/pricing\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"data transfers\"})}),\" for your VPC. AWS doesn\u2019t charge for ingress traffic, but it does charge for egress traffic. This may add \",/*#__PURE__*/e(s,{href:\"https://blog.cloudflare.com/aws-egregious-egress\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"material bandwidth costs\"})}),\" if you are running your Client VPN in full tunnel mode, which sends all network traffic destined for the public internet through the Client VPN and VPC.\"]}),/*#__PURE__*/t(\"p\",{children:[\"NAT Gateway Data Processing Charges: If you are using a NAT gateway in your VPC that handles full tunnel traffic, an extra \",/*#__PURE__*/e(s,{href:\"https://aws.amazon.com/vpc/pricing\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"NAT gateway processing fee\"})}),\" is charged for each gigabyte of data processed through the NAT gateway (on top of the regular NAT gateway hourly charges).\"]}),/*#__PURE__*/e(\"h3\",{children:\"Summary\"}),/*#__PURE__*/e(\"p\",{children:\"In summary, the charges you can expect to pay include:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Hourly fees for each Client VPN Endpoint Association\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Hourly fees for each Client while it is connected to a VPN endpoint\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Bandwidth fees for egress traffic from your VPC (representing an additional charge for full tunnel traffic that otherwise wouldn\u2019t need to flow through your VPC)\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"NAT gateway data processing charges if you use one in your VPC and it handles full tunnel traffic\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"Alternatives to AWS VPN\"}),/*#__PURE__*/e(\"p\",{children:\"AWS Client VPN is not your only option for enabling secure remote access to your AWS VPC environments.\"}),/*#__PURE__*/e(\"h3\",{children:\"AWS Marketplace Products\"}),/*#__PURE__*/e(\"p\",{children:\"The AWS Marketplace contains a wide variety of vendors offering their own VPN solutions that integrate with AWS. Each of these vendors offers their own pricing models. For example, Cisco Adaptive Security Virtual Appliance (ASAv) is a virtual firewall appliance that allows a remote access VPN to be set up. The software is licensed on a time-based model that is also tied to the tier of AWS infrastructure that the software is run on. Administratively, fees for these third party products are charged via AWS, so you can benefit from consolidated billing.\"}),/*#__PURE__*/e(\"h3\",{children:\"Manually Installed Products\"}),/*#__PURE__*/e(\"p\",{children:\"On the other side of the spectrum, you could manually install and configure an open source solution like OpenVPN within your AWS environment. Although there is no software licensing fee associated with this route, it does require a lot more effort and expertise in terms of setup and maintenance. Additionally, support is not provided, so you may have to seek third party help if you run into problems (either paid, or from free sources like community forums).\"}),/*#__PURE__*/e(\"h3\",{children:\"Zero Trust Alternative\"}),/*#__PURE__*/t(\"p\",{children:[\"If you are ultimately looking for a remote access solution, also consider Zero Trust Network Access products that aren\u2019t based on VPN technology, such as Twingate. Twingate can be installed in an AWS VPC with a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/aws-client-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"single line of code\"})}),\".Additionally, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/deployment-semi-automation\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"deployment can be automated\"})}),\" in a variety of ways. Twingate is also available on the \",/*#__PURE__*/e(s,{href:\"https://aws.amazon.com/marketplace/pp/prodview-arv444wdbyvrw?sr=0-1&ref_=beagle&applicationId=AWSMPContessa\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"AWS Marketplace\"})}),\" so organizations can obtain Twingate directly through AWS and benefit from simplified procurement and billing.\"]}),/*#__PURE__*/e(\"p\",{children:\"Another advantage of Twingate is that, unlike VPN technologies, there\u2019s no concept of setting up site-to-site VPN tunnels to establish connectivity to your various network subnets. That reduces deployment complexity, as well as pricing complexity. (As mentioned above, AWS Site-to-Site VPN is its own AWS product that comes with its own pricing model.)\"}),/*#__PURE__*/e(\"h2\",{children:\"Twingate\u2019s Pricing Model\"}),/*#__PURE__*/e(\"p\",{children:\"A key advantage of using Twingate to secure remote access to your AWS environment is that the pricing model is very straightforward. Twingate\u2019s pricing is based on a per user flat fee model. That means costs are predictable - and you don\u2019t need a spreadsheet to work them out!\"}),/*#__PURE__*/e(\"p\",{children:\"The only variables that impact Twingate\u2019s pricing are the number of users you have, the months or years you subscribe to the service (depending on whether you are billed monthly or annually), and the Twingate plan you select (Teams, Business or Enterprise). Twingate does not charge for bandwidth used or time connected.\"}),/*#__PURE__*/e(\"p\",{children:\"If you use Twingate with other non-AWS environments, support for AWS comes at no extra cost. In fact, Twingate secures access to all major types of environments (AWS, GCP, Azure, and on-premises) you may have for the same fee, and the setup process is similar for each environment.\"}),/*#__PURE__*/e(\"h2\",{children:\"Simplify Your AWS Secure Remote Access Needs\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate aims to provide the \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/twingate-vs-vpn\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"security benefits of a non-VPN Zero Trust solution\"})}),\" while making deployment and management of that solution \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/why-isnt-everyone-using-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"as simple as possible\"})}),\".Part of this is providing a simple to understand pricing model that won\u2019t unexpectedly blow out your budget.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=aws-pricing-calculator\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact us\"})}),\" to learn more about how easy and cost effective implementing a modern zero trust solution can be.\"]})]})},{index:120,id:\"iE_KsSsNY\",[h]:!0,[d]:!1,[p]:\"Access Control Lists (ACLs): How They Work & Best Practices\",[u]:\"Access Control Lists\",[m]:\"access-control-list\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2021-08-10T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/qMMrDOfK4nNXepzIuDl2gcpqfc.png\",srcSet:\"https://framerusercontent.com/images/qMMrDOfK4nNXepzIuDl2gcpqfc.png?scale-down-to=512 512w,https://framerusercontent.com/images/qMMrDOfK4nNXepzIuDl2gcpqfc.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/qMMrDOfK4nNXepzIuDl2gcpqfc.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/qMMrDOfK4nNXepzIuDl2gcpqfc.png 2388w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/qMMrDOfK4nNXepzIuDl2gcpqfc.png\",srcSet:\"https://framerusercontent.com/images/qMMrDOfK4nNXepzIuDl2gcpqfc.png?scale-down-to=512 512w,https://framerusercontent.com/images/qMMrDOfK4nNXepzIuDl2gcpqfc.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/qMMrDOfK4nNXepzIuDl2gcpqfc.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/qMMrDOfK4nNXepzIuDl2gcpqfc.png 2388w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Access Control Lists (ACLs) are among the \",/*#__PURE__*/e(s,{href:\"https://www.govinfo.gov/content/pkg/GOVPUB-C13-c259b09b0a792f1b4ec649f11a1d62f8/pdf/GOVPUB-C13-c259b09b0a792f1b4ec649f11a1d62f8.pdf\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"most common forms of network access control\"})}),\".Simple on the surface, ACLs consist of tables that define access permissions for network resources. ACLs are built into network interfaces, operating systems such as Linux and Windows NT, as well as enabled through Windows Active Directory. Despite their apparent simplicity, ACL systems get quite complex as the network architecture and user population grows.\"]}),/*#__PURE__*/e(\"p\",{children:\"This article will help you understand:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"What access control lists are.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"How access control lists work.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The four kinds of access control lists.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"We will also share some best practices that will help you set up ACLs on your network.\"}),/*#__PURE__*/e(\"h2\",{children:\"What is an Access Control List (ACL)?\"}),/*#__PURE__*/e(\"p\",{children:\"At a high level, an Access Control List is simply a table of rules. Each rule defines whether users or devices are allowed to access something. A generalized ACL entry would look like this:\"}),/*#__PURE__*/t(\"p\",{children:[\" \",/*#__PURE__*/e(\"code\",{children:\"rule id: subject, permission\"})]}),/*#__PURE__*/e(\"p\",{children:\"The subject could specify individual or groups of either users or devices. The permission defines what kind of access the subject(s) is allowed or denied. For example, permissions in an operating system\u2019s version of an ACL could permit or deny read/write permissions to files and folders. A network router uses the rules in its ACL to determine how \u2014 or whether \u2014 to route each incoming packet.\"}),/*#__PURE__*/e(\"p\",{children:\"The primary purpose of access control lists is to secure company resources both internally and externally. Beyond security, ACLs can help improve the performance and manageability of a company\u2019s network.\"}),/*#__PURE__*/e(\"p\",{children:\"The advantages of using access control lists include:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Better protection of internet-facing servers.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"More control of access through entry points.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"More control of access to and traffic between internal networks.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"More granular control of user and group permissions.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Better protection from spoofing and denial of service attacks.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Improved network performance and manageability.\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"How does an Access Control List work?\"}),/*#__PURE__*/e(\"p\",{children:\"To help understand how access control lists work, we will look at the way network interfaces such as routers and switches implement ACLs. Network interfaces can implement simple access control rules such as blocking all traffic from the public internet. More advanced ACL rules let the interface control access to network resources based on the packet\u2019s source, destination, and other factors.\"}),/*#__PURE__*/e(\"p\",{children:\"The ACL consists of a sequential list of rules that apply to either incoming or outgoing packets. One rule may allow entry to the interface when it sees incoming packets from a field office\u2019s internet address. A second rule would block any other incoming packets from the public internet. The ACL\u2019s outgoing rules could look at both source and destination by allowing the field office\u2019s packets to access HR resources, but not supply chain resources.\"}),/*#__PURE__*/e(\"p\",{children:\"Active Directory, operating system, and other forms of ACL use similar sequential lists to define access permissions to company resources.\"}),/*#__PURE__*/e(\"p\",{children:\"Depending on the type of ACL, control lists let an organization:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Limit the people and devices allowed in from the internet.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Limit the people and devices allowed to communicate to the internet.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Limit access to internal networks or resources.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Limit access between internal networks or resources.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Reduce the risk of spoofing and denial of service attacks.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"A DMZ\u2019s layered defense, for example, would use more permissive ACLs to allow access to a web server\u2019s public interface. More restrictive ACLs, on the other hand, could protect proprietary resources feeding that web server.\"}),/*#__PURE__*/e(\"p\",{children:\"ACLs are also commonly used to secure segmented networks by controlling access to each network interface. For example, interfaces controlling access to a manufacturing resource would have ACL rules that deny access to anyone in marketing.\"}),/*#__PURE__*/e(\"h2\",{children:\"What are the different types of Access Control Lists?\"}),/*#__PURE__*/e(\"p\",{children:\"When implementing access control through network interfaces, organizations can use combinations of four types of ACL \u2014 Standard, Extended, Dynamic, and Reflexive.\"}),/*#__PURE__*/e(\"h3\",{children:\"Standard ACLs\"}),/*#__PURE__*/e(\"p\",{children:\"Standard access control lists use the packet\u2019s source address as the filter. The source can be as specific or as general as needed. For example, rules may be set to accept traffic from a remote office\u2019s internet address but deny access to all other internet traffic. By only evaluating a packet\u2019s source, however, a standard ACL\u2019s usefulness is limited.\"}),/*#__PURE__*/e(\"h3\",{children:\"Extended ACLs\"}),/*#__PURE__*/e(\"p\",{children:\"Extended access control lists are more flexible. These ACLs can filter packets based on their source, destination, port, or protocol. An extended ACL can have incoming rules that block all UDP traffic while accepting TCP packets. The ACL\u2019s outgoing rules can further filter packets to only pass those that came from certain destinations. Although extended ACLs let you filter a wider range of packets, these lists are static. You must manage changes centrally which limits the responsiveness of your security policies.\"}),/*#__PURE__*/e(\"h3\",{children:\"Dynamic ACLs\"}),/*#__PURE__*/t(\"p\",{children:[\"As the name implies, dynamic access control lists are created in real-time whenever a user accesses an interface. The \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"authentication and authorization\"})}),\" server transmits a user profile that gives the interface a temporary set of extended ACL rules. These dynamic ACL entries determine whether and how the interface should route the user\u2019s packets. You can configure network interfaces with static standard and extended ACLs to enforce general access control policies while using dynamic ACLs to make the network more responsive.\"]}),/*#__PURE__*/e(\"h3\",{children:\"Reflexive ACLs\"}),/*#__PURE__*/e(\"p\",{children:\"Reflexive access control lists add session-filtering capabilities to the packet filtering capabilities of other ACL types. Administrators may set a reflexive ACL rule to only permit incoming packets that are part of a session initiated within the network. When a session-initiating packet arrives at an interface and triggers a rule in the reflexive ACL, the interface creates a temporary ACL entry that applies to all packets associated with that session. Adding to the security of reflexive ACLs, the interface removes any temporary entries once the session ends or after a brief period of inactivity.\"}),/*#__PURE__*/e(\"h2\",{children:\"What are the best practices when setting up an Access Control List?\"}),/*#__PURE__*/e(\"p\",{children:\"Access control lists are essential elements of an effective network security strategy. However, the wrong ACL configuration can severely impact your organization. The wrong denial rule can grind business operations to a halt. A poorly defined permit rule can open security holes.\"}),/*#__PURE__*/e(\"p\",{children:\"Here are some best practices that successful companies apply when setting up access control lists:\"}),/*#__PURE__*/e(\"h3\",{children:\"Use ACLs inside and outside\"}),/*#__PURE__*/e(\"p\",{children:\"Every publicly facing network interface should use ACLs to control access into and out of protected networks. At the same time, ACLs within those protected networks add more layers of security. ACLs let you create granular access control rules to protect your company\u2019s most sensitive resources, minimize the impact of any security breaches, and improve your network\u2019s performance.\"}),/*#__PURE__*/e(\"h3\",{children:\"Pay attention to the order of ACL entries\"}),/*#__PURE__*/e(\"p\",{children:\"Access control lists execute the first rule that applies to the subject and move on to the next subject. Rules entered in the wrong order could deny users legitimate access to resources. Worse still, poorly written rules could leave sensitive resources wide open to attack. Pay careful attention to the order of your ACL\u2019s rules and start with the most specific rules before entering more general rules.\"}),/*#__PURE__*/e(\"h3\",{children:\"Set rules for groups rather than users\"}),/*#__PURE__*/e(\"p\",{children:\"As organizations grow, the user population becomes more dynamic which plays havoc with ACL management. You must update all your user-based access control lists with every new hire, termination, or reassignment. A better approach is to create rules for different groups of users. When the finance department hires another accountant, administrators only need to add them to the accounting group for the rules to apply to that user.\"}),/*#__PURE__*/e(\"h3\",{children:\"Document everything\"}),/*#__PURE__*/e(\"p\",{children:\"Modern ACL systems allow you to enter more detailed information than our simple rule id, subject, permission example from earlier. Use descriptive rule names and include details in the comment field. Having a record of the rule\u2019s purpose, creation date, and author will make ACLs much easier to manage.\"}),/*#__PURE__*/e(\"h3\",{children:\"Use ACL management tools\"}),/*#__PURE__*/e(\"p\",{children:\"ACLs become extremely complex as you add more to the network and as each ACL lengthens. ACL management tools make it easier to deploy updates and ensure rules are ordered correctly. These tools also provide notifications, changelogs, and audit trails that make ACL management more efficient.\"}),/*#__PURE__*/e(\"h3\",{children:\"Use role-based permissions for your ACLs\"}),/*#__PURE__*/t(\"p\",{children:[\"Combining \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/access-control-models\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Role-Based Access Control (RBAC)\"})}),\" with ACLs, lets you go a step beyond the simple workgroup-based access rules we discussed earlier. RBAC lets you create access control rules that reflect the way users\u2019 roles cross organizational boundaries.That new accountant, for example, might be assigned to the planning department. They would need access to departmental resources as well as accounting resources but should not have access to other departments. At scale, coding this kind of access control as user-based ACL rules would be impossible.\"]}),/*#__PURE__*/e(\"p\",{children:\"Combining a dynamic ACL system with RBAC lets your system automatically deploy temporary ACL entries to seamlessly control users\u2019 network access.\"}),/*#__PURE__*/e(\"h2\",{children:\"Twingate\u2019s modern approach to access control\"}),/*#__PURE__*/e(\"p\",{children:\"As we have seen, access control lists are fundamental elements of a company\u2019s network security strategy. These sequential lists of rules let network interfaces and operating systems control which users may access which resources. Although simple in concept, ACL complexity grows with the user population and the network architecture.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate offers a modern approach to access control that makes ACL management more efficient. Zero Trust Network Access (ZTNA) principles such as least privilege access contract the focus of IT security from securing a perimeter to securing each attempt to access each resource \u2014 regardless of network architecture. Twingate\u2019s focus on administrative usability also makes it easy to construct ACLs while reducing the possibility of confusion and misconfiguration.\"}),/*#__PURE__*/e(\"p\",{children:\"Implementing ACLs through Twingate\u2019s software-defined perimeters lets you create highly granular and dynamic role-based access control rules that maximize the security of essential resources whether they are on-premises or hosted in the cloud. Better yet, Twingate\u2019s modern approach to access control goes beyond enhancing security by improving the user experience and reducing administrative overhead.\"}),/*#__PURE__*/t(\"p\",{children:[\"Give Twingate a \",/*#__PURE__*/e(s,{href:\"https://auth.twingate.com/signup\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"try for free\"})}),\" today. We\u2019d love to hear \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/contact\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"what you think\"})}),\".\"]})]})},{index:121,id:\"cSds0JfeM\",[h]:!0,[d]:!1,[p]:\"Authorization vs. Authentication: Understand the Difference\",[u]:\"Authorization vs. Authentication\",[m]:\"authorization-vs-authentication\",[g]:\"\",[w]:\"Erin Risk\",[f]:\"2021-07-27T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/xan6yrBCWsHMNqFhKw7N29NUq0.png\",srcSet:\"https://framerusercontent.com/images/xan6yrBCWsHMNqFhKw7N29NUq0.png?scale-down-to=512 512w,https://framerusercontent.com/images/xan6yrBCWsHMNqFhKw7N29NUq0.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/xan6yrBCWsHMNqFhKw7N29NUq0.png 1600w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/xan6yrBCWsHMNqFhKw7N29NUq0.png\",srcSet:\"https://framerusercontent.com/images/xan6yrBCWsHMNqFhKw7N29NUq0.png?scale-down-to=512 512w,https://framerusercontent.com/images/xan6yrBCWsHMNqFhKw7N29NUq0.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/xan6yrBCWsHMNqFhKw7N29NUq0.png 1600w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Two inseparable sides of the network security coin, authentication and authorization ensure that only the right people access your company\u2019s IT resources. Authentication verifies user identities while authorization ensures authenticated users only gain access to specific permitted resources.\"}),/*#__PURE__*/e(\"p\",{children:\"As network security evolves beyond legacy technologies such as VPN, having a solid understanding of the role each process plays in access control is more important than ever. This article will explain the difference between authorization and authentication and discuss the growing role of each in modern security approaches such as Zero Trust Networking.\"}),/*#__PURE__*/e(\"h2\",{children:\"What is authentication?\"}),/*#__PURE__*/e(\"p\",{children:\"Authentication is a process for verifying identity. It answers the question \u201CIs this person who they claim to be?\u201A\"}),/*#__PURE__*/e(\"p\",{children:\"A key code for an apartment building is an everyday example of authentication. Having a code is proof that a person is a resident of the building. An equivalent example in the network security world would be a password-protected website. The user\u2019s possession of the password verifies the user\u2019s identity.\"}),/*#__PURE__*/e(\"p\",{children:\"Of course, these scenarios depend on individuals keeping their credentials confidential. The authentication process can be compromised if the password is shared with others - for example, if a building\u2019s residents give their codes to the delivery personnel.\"}),/*#__PURE__*/e(\"h3\",{children:\"Authentication factors\"}),/*#__PURE__*/e(\"p\",{children:\"Both scenarios are examples of single-factor authentication where one credential, or factor, is used to verify a user\u2019s identity. Authentication factors can be broken down into three broad categories: knowledge, possession, and inherence. You often hear these factors summarized as something you know, something you have, or something you are.\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Knowledge Factors:\"}),\" Access codes, PINs, and passwords are the most common examples of identity factors based on what people know. Authentication is verified based on unique information a user is aware of vs. the possession of a physical object or certificate. As we have seen, this type of authentication can be compromised easily through poor security practices or carelessness.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Possession Factors:\"}),\" ID badges, security fobs, and authenticator apps can prove identity using something people have. However, they can be lost, stolen, or left behind since they are physical objects. Digital items, such as security certificates, are another type of possession-based authentication that relate verification to unique factors held by the specific user or device.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Inherence Factors:\"}),\" Fingerprint scans, face recognition, and other biometric technologies prove user identities based on what they are. These authentication factors are believed to be more secure due to their uniqueness to the end user; however, it has yet to be proven the effectiveness of these security practices against the growing sophistication of security breaches. In addition, gloves or other common hindrances can prevent inherence authentication from working, making such security features difficult to implement.\"]})})]}),/*#__PURE__*/e(\"h3\",{children:\"Combining authentication factors\"}),/*#__PURE__*/e(\"p\",{children:\"Used in a single-factor authentication system, each type of authentication factor has failure modes that would prevent confirmation of a user\u2019s identity or could allow someone else to pass as the user.\"}),/*#__PURE__*/e(\"p\",{children:\"Therefore, multi-factor authentication (MFA) systems were built to rely on two or more factors, preferably from distinct categories, to confirm a person\u2019s identity.\"}),/*#__PURE__*/e(\"p\",{children:\"A simple example of multi-factor authentication happens whenever you pass through airport security. The TSA officer will ask for your state-issued driver\u2019s license (something you have) and compare the picture on the license to your face (something you are).\"}),/*#__PURE__*/e(\"p\",{children:\"Security-conscious websites will go beyond asking for your password (something you know) by texting a security code to your smartphone (something you have).\"}),/*#__PURE__*/e(\"p\",{children:\"But verifying user identity is not enough. Passing through airport security does not leave you free to roam across the tarmac. Authentication only completes the first step in access control. Next comes Authorization.\"}),/*#__PURE__*/e(\"h2\",{children:\"What is authorization?\"}),/*#__PURE__*/e(\"p\",{children:\"Authorization gives the user permission to access specific resources. It answers the question \u201CWhat is this authenticated person allowed to do?\u201A\"}),/*#__PURE__*/e(\"p\",{children:\"Security policies at the airport or on a website determine what you can access. Passing through the TSA checkpoint gives you permission to wander around the airport\u2019s public areas, but not into restricted areas like the tarmac. Similarly, a website\u2019s 2-Factor Authentication only lets you access information specific to your account.\"}),/*#__PURE__*/e(\"p\",{children:\"Your authorization system determines which users have permission to access specific resources under specified circumstances. The context of a user\u2019s access \u2014 the state of their device or network connection \u2014 is increasingly important as companies adopt work-from-home, bring-your-own-device (BYOD), and blended workforce policies. Developing strategies to dynamically identify the context of a user\u2019s access request is a clear gap in network security today.\"}),/*#__PURE__*/e(\"h3\",{children:\"The collapse of VPN security\"}),/*#__PURE__*/t(\"p\",{children:[\"Combining the public internet with VPN security technologies made remote access easy and affordable for even the smallest business. But VPN security\u2019s core assumptions make the technology a significant \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/managing-cyberattack-risk\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"vector for security breaches\"})}),\".\"]}),/*#__PURE__*/e(\"p\",{children:\"Originally developed to link remote employees to the office network, the VPN paradigm assumes that authenticated connections are authorized to access anything on the network it protects. As a result, compromised user credentials and unpatched VPN firmware have given cybercriminals free access to corporate and government networks around the world.\"}),/*#__PURE__*/e(\"h3\",{children:\"Authorization criteria\"}),/*#__PURE__*/e(\"p\",{children:\"Authorization systems replace the universal access of VPN technologies with a compartmentalized approach. Companies develop policies and criteria that limit users\u2019 access to business resources. These policies should include:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Role-based permissions:\"}),\" Employees should only access the resources they need to do their work, a concept called \u201Cleast privilege access\u201A. Salespeople need access to customer relationship management systems, but they shouldn\u2019t be able to touch a development server.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Device permissions:\"}),\" Thanks to BYOD and work-from-home policies, fewer employees use company-managed, on-prem computers. If users do not install operating system updates and security patches promptly, their devices may become compromised. Evaluations of each \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/device-trust-in-a-zero-trust-world\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"device\u2019s security posture\"})}),\" should constrain the user\u2019s access permissions.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Location permissions:\"}),\" Likewise, the nature of the user\u2019s network connection should also inform access permissions. Letting a human resources administrator access employee records from their home office is one thing. But letting them do so when using a coffee shop\u2019s unsecured public Wi-Fi while traveling abroad is quite another.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Static and dynamic permissions:\"}),\" Ideally, authorizations should expire at the end of every session. In practice, traditional security systems make this too inconvenient for users. That is why a newspaper\u2019s public website authorizes access for as long as a cookie is in the subscriber\u2019s browser. Unfortunately, the same reasoning often applies to corporate networks.\"]})})]}),/*#__PURE__*/e(\"h2\",{children:\"What is the difference between authorization vs. authentication?\"}),/*#__PURE__*/e(\"p\",{children:\"Authentication and authorization are two distinct and required steps in a company\u2019s access control process. You cannot have one without the other and preserve the integrity of your network\u2019s security.\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Authentication\"}),\" does nothing beyond confirming identity. The user cannot access network directories, files, or other resources.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Authorization\"}),\" does nothing without authentication. The authorization system must know who the user is before it can grant access permissions.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"Working together, authentication and authorization give your company more control over who accesses which resources.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,SfvnYwXVLjDCTyiQPAUrghQXT8Q.webp?originalFilename=comparisons.webp\",src:\"https://framerusercontent.com/images/SfvnYwXVLjDCTyiQPAUrghQXT8Q.webp\",srcSet:\"https://framerusercontent.com/images/SfvnYwXVLjDCTyiQPAUrghQXT8Q.webp?scale-down-to=512 512w,https://framerusercontent.com/images/SfvnYwXVLjDCTyiQPAUrghQXT8Q.webp 794w\"}),/*#__PURE__*/e(\"h2\",{children:\"How do I implement authorization and authentication?\"}),/*#__PURE__*/e(\"p\",{children:\"You will find a diverse ecosystem of vendors and service providers ready to enhance your organization\u2019s identity-based authentication management today. However, easily tying this authentication data to dynamic authorization rights is the next \u201Cgiant leap\u201A for IT teams. Authentication-focused vendors commonly target the below niches:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Cloud-first authentication vendors:\"}),\" Okta and Auth0 provide authentication solutions for cloud-first enterprise infrastructures.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Traditional networking vendors:\"}),\" Cisco and Aruba Networks offer access control solutions optimized for companies standardized on their hardware.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Cloud service providers:\"}),\" Microsoft Azure and Amazon Web Services offer their own identity management systems and work with third-party providers.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Mixed authentication solutions:\"}),\" Yubico and RSA Security develop hardware and software authentication solutions.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Social single sign-on providers:\"}),\" through OpenID and proprietary systems, users are authenticated through Facebook, Twitter, and other social media accounts.\"]})})]}),/*#__PURE__*/e(\"h3\",{children:\"Identity and permissions in Zero Trust Networking\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/why-isnt-everyone-using-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Zero Trust Networking (ZTN)\"})}),\" is a modern approach to network security that addresses the failures of traditional security technologies, such as VPN. As we touched on earlier, VPN technologies protect access to a network but permit universal access to resources on that network. Mitigating this inherent security weakness requires layers of infrastructure. Combined, these workarounds make network security brittle, expensive to manage, and difficult to scale.\"]}),/*#__PURE__*/e(\"p\",{children:\"As its name implies, ZTN is based on the premise that nothing about a network can ever be trusted. Since no user is ever trustworthy, ZTN treats an IT executive sitting at a desktop in the data center no differently from a service rep connected to hotel Wi-Fi on their laptop. No matter who they are, how they connect, or what device they use, ZTN requires fresh authentication every time a user tries to access any resource.\"}),/*#__PURE__*/e(\"p\",{children:\"Unlike VPN solutions, ZTN security systems do not give users unfettered authorization to all resources within a company network. ZTN creates a secure perimeter around every resource. Once authenticated by a ZTN system, users can only see the resources they are authorized to access based on requirements set by the IT team. Each access attempt expires at the end of every session and must be renewed when the user reconnects.\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s ZTN solution replaces the overhead of legacy VPN systems through a simplified, yet more secure access control system. Twingate integrates with \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/introducing-identity-first-networking\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"identity providers\"})}),\" (IdP) such as Okta and OneLogin making least privilege access policies easy to implement within existing company infrastructure.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Modern security depends on authentication and authorization\"}),/*#__PURE__*/e(\"p\",{children:\"Authentication and authorization are essential pieces of your network security strategy. Implementing a solid MFA policy that balances user experience with the security of a dynamic access control system is essential to minimize your organizations risk of a security breach. Users should have access to the resources they need, but only in situations where it is considered safe to do so.\"}),/*#__PURE__*/e(\"p\",{children:\"Neither authentication nor authorization can securely function on their own but, together, they are a powerful tool. Twingate protects your company\u2019s resources, whether on-prem or in the cloud, and integrates with your preferred IdP, to provide an easy to deploy zero trust solution.\"}),/*#__PURE__*/t(\"p\",{children:[\"Give Twingate a \",/*#__PURE__*/e(s,{href:\"https://auth.twingate.com/signup\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"try for free\"})}),\" today. We\u2019d love to hear \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/contact\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"what you think\"})}),\".\"]})]})},{index:122,id:\"ItJvdtokj\",[h]:!0,[d]:!1,[p]:\"SOX Compliance: How IT Helps When You\u2019re Going Public\",[u]:\"SOX Compliance\",[m]:\"sox-compliance\",[g]:\"\",[w]:\"Stuart Loh\",[f]:\"2021-07-20T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/UCWZZpDVYfjUmZjhIkDXA0Xf04o.png\",srcSet:\"https://framerusercontent.com/images/UCWZZpDVYfjUmZjhIkDXA0Xf04o.png?scale-down-to=512 512w,https://framerusercontent.com/images/UCWZZpDVYfjUmZjhIkDXA0Xf04o.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/UCWZZpDVYfjUmZjhIkDXA0Xf04o.png 1200w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/UCWZZpDVYfjUmZjhIkDXA0Xf04o.png\",srcSet:\"https://framerusercontent.com/images/UCWZZpDVYfjUmZjhIkDXA0Xf04o.png?scale-down-to=512 512w,https://framerusercontent.com/images/UCWZZpDVYfjUmZjhIkDXA0Xf04o.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/UCWZZpDVYfjUmZjhIkDXA0Xf04o.png 1200w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"em\",{children:\"This article is part of the \"}),/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/intro-to-infosec-compliance-for-it-teams\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:/*#__PURE__*/e(\"em\",{children:\"Twingate Infosec Compliance Series\"})})}),/*#__PURE__*/e(\"em\",{children:\". Written for security ops, IT admins, and anyone tasked with implementing infosec requirements imposed by compliance standards, this series explains common standards and how they relate to information security. This article discusses a law but is not legal advice. Consult a qualified advisor to understand how SOX may apply specifically to your organization.\"})]}),/*#__PURE__*/e(\"h2\",{children:\"What is SOX and who does it apply to?\"}),/*#__PURE__*/t(\"p\",{children:[\"In the wake of several high profile accounting fraud scandals, including \",/*#__PURE__*/e(s,{href:\"https://blog.cymulate.com/sox-compliance-now-includes-cybersecurity\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Enron and WorldCom\"})}),\", the Sarbanes-Oxley Act (SOX) was passed in 2002 to \u201Cprotect investors by improving the accuracy and reliability of corporate disclosures.\u201A SOX is primarily concerned with measures that are designed to ensure the integrity of financial records and financial reporting. Most relevantly from an infosec perspective, companies are required to maintain internal controls to prevent fraud and errors relating to financial records.\"]}),/*#__PURE__*/e(\"p\",{children:\"SOX applies to all public companies in the U.S. and their wholly-owned subsidiaries, and all non-U.S. public companies that do business in the U.S.\"}),/*#__PURE__*/e(\"p\",{children:\"As such, SOX is highly relevant to private companies preparing for an IPO as well, and they typically start SOX readiness projects many months in advance. SOX compliance is a large driver of work as a company prepares to go public.\"}),/*#__PURE__*/e(\"h2\",{children:\"Why SOX matters\"}),/*#__PURE__*/e(\"p\",{children:\"SOX compliance is mandatory. SOX requires annual audits to be performed by independent auditors (typically accounting firms) to verify a company\u2019s financial statements and opine on whether internal controls meet SOX standards. Results are then reported to the Securities and Exchange Commission (SEC).\"}),/*#__PURE__*/e(\"p\",{children:\"Under section 302 of SOX, a company\u2019s principal officers (typically the CEO and CFO) must personally certify financial reports as \u201Ccomplete and accurate\u201A and affirm they\u2019ve reviewed internal controls at least once in the past 90 days. Non-compliance (whether intentional or not) can result in company officers personally facing criminal liability in the form of jail time and monetary penalties. Because of this, SOX compliance has visibility at the highest levels of an organization.\"}),/*#__PURE__*/e(\"p\",{children:\"SOX may also require a data breach to be publicly reported, particularly if it resulted from a failure of internal controls or the compromise of financial records.\"}),/*#__PURE__*/e(\"h2\",{children:\"Who\u2019s responsible for SOX compliance?\"}),/*#__PURE__*/e(\"p\",{children:\"Typically, the finance department of a company, spearheaded by the CFO, will be primarily responsible for managing and ensuring SOX compliance. Legally speaking, both the CEO and CFO typically bear responsibility for the organization\u2019s compliance with SOX.\"}),/*#__PURE__*/e(\"h2\",{children:\"SOX & Infosec Compliance\"}),/*#__PURE__*/e(\"p\",{children:\"Section 404 of SOX requires a company to assess its internal controls and report this assessment to the SEC each year. The assessment must also be evaluated by an independent auditor. Section 404 arguably produces the lion\u2019s share of work when attaining SOX compliance. While information security is not specifically discussed by SOX, and SOX does not prescribe which controls must be assessed, it is generally understood that given the reliance on technology systems to process and maintain financial records, a review of internal controls must cover infosec controls. Technology systems represent a point of vulnerability for potential manipulation, fabrication, or loss of financial records.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://pcaobus.org/Rulemaking/Docket008/2004-03-09_Release_2004-001-all.pdf\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Guidance\"})}),\" from the \",/*#__PURE__*/e(s,{href:\"https://pcaobus.org/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Public Company Accounting Oversight Board\"})}),\" identifies information technology general controls (ITGC) as foundational, in particular. The guidance is not very prescriptive, but acknowledges that internal controls are not \u201Cone-size-fits-all,\u201A giving companies the flexibility to select controls that match the size and complexity of the company.\"]}),/*#__PURE__*/t(\"p\",{children:[\"That said, frameworks such as \",/*#__PURE__*/e(s,{href:\"https://www.isaca.org/cobit\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"COBIT\"})}),\" can provide a structured approach to establishing internal IT controls. Common control areas include:\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Security policies\"}),\": Maintaining this documentation is important to set rules and expectations within the organization, and also to provide evidence of such rules and expectations to auditors.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Access and authentication\"}),\": Financial systems should only be accessible by authorized personnel, so controls to properly authorize and authenticate appropriate individuals need to be implemented.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"User account management\"}),\": This area includes controls relating to onboarding and offboarding processes for users, requesting and approving account change requests, and regular reviews of access rights.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Network security\"}),\": Securing network infrastructure, such as with firewalls, IDS/IPS, malware detection, encryption, and running penetration testing are all common controls.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Monitoring\"}),\": Logs should be kept and monitored for anomalous events that are then actioned as appropriate.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Segregation of duties\"}),\": This requires both mapping out a clear delineation of duties, and enforcing them via creation of appropriate access controls and permissions.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Data backups\"}),\": This includes both making and testing of backups.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Physical security\"}),\": Ensuring tangible security measures are in place to protect from physical and environmental threats.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"Companies already should have an infosec program in place when SOX becomes relevant, so IT departments normally don\u2019t start from scratch when attaining SOX compliance. Compliance readiness is more a mix of ensuring that existing security practices are documented and working consistently, and that any control gaps are remediated.\"}),/*#__PURE__*/e(\"h2\",{children:\"How Twingate helps with SOX compliance\"}),/*#__PURE__*/e(\"p\",{children:\"Because preserving the integrity of financial records and other financial data is critical, access management controls are a linchpin in the context of SOX. However, traditional access technologies like corporate VPNs have failed to meet the growing challenge of keeping track of who is allowed to access what, and of who is accessing what. This is because modern businesses are no longer confined to a physical office building: apps, data, servers, and networks have moved to the cloud, and workers commonly work remotely using a variety of devices. VPNs rely on securing a fixed network perimeter that no longer neatly contains everything, and granting access to everything within that perimeter, which is too coarse an approach.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate is a secure access solution that is built on modern Zero Trust principles, enabling companies to implement and enforce least privilege access to private network resources, including financial systems and the data that feeds into them. In relation to SOX, Twingate simplifies and automates the process of implementing modern and secure access controls:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Identity-First Networking\"}),\": Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/introducing-identity-first-networking\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Identity-First Networking\"})}),\" approach attributes every access request to a specific user, device, and context (such as time and location), giving a clear line of sight into who is accessing what and whether they should be allowed to do so.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Least privilege access\"}),\": The granularity provided by least privilege access allows true segregation of duties to be implemented between different users.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Zero Trust\"}),\": Every request from an end user\u2019s device to a network resource is authenticated and authorized by Twingate. A device is not trusted simply because it has gained access to a network. This model also prevents lateral movement of a malicious actor who is already \u201Con the network\u201A and reduces the blast radius of any damage they can cause.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Logging and monitoring\"}),\": Every access request is logged, allowing traffic to be monitored and unusual events to be inspected and acted upon.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Quick to deploy\"}),\": Deploying Twingate does not require changes to network infrastructure, so it is simple enough to be deployed in minutes, giving more time for IT admins to focus on other SOX requirements.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Easy to maintain\"}),\": Sustaining SOX compliance quarter-after-quarter is a lower maintenance task with Twingate. Because network access controls for the entire enterprise are centralized and managed through one intuitive admin console, periodic tasks like access reviews and onboarding/offboarding users become easier.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Hide private networks\"}),\": Twingate hides your network and its internal resources from the public internet. This means fewer servers for attacks to probe and a reduced attack surface area.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"Becoming a publicly listed company typically involves a frenzy of activity as teams implement the changes needed to support that transition. Anything that makes that process easier, faster, and more efficient adds value to the business.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Attend a demo session\"})}),\" with our team and learn how Twingate can make preparing for an IPO less work and less stressful.\"]})]})},{index:123,id:\"RJoirsftS\",[h]:!0,[d]:!1,[p]:\"Device Trust in a Zero Trust World\",[u]:\"Device Trust in a Zero Trust World\",[m]:\"device-trust-in-a-zero-trust-world\",[g]:\"\",[w]:\"Alex Marshall\",[f]:\"2021-06-02T00:00:00.000Z\",[y]:\"KI2UGBfh7\",[b]:T({src:\"https://framerusercontent.com/images/k01wYKNYtWCnQI4TT8I8gi5Rq4E.png\",srcSet:\"https://framerusercontent.com/images/k01wYKNYtWCnQI4TT8I8gi5Rq4E.png?scale-down-to=512 512w,https://framerusercontent.com/images/k01wYKNYtWCnQI4TT8I8gi5Rq4E.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/k01wYKNYtWCnQI4TT8I8gi5Rq4E.png 1600w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/k01wYKNYtWCnQI4TT8I8gi5Rq4E.png\",srcSet:\"https://framerusercontent.com/images/k01wYKNYtWCnQI4TT8I8gi5Rq4E.png?scale-down-to=512 512w,https://framerusercontent.com/images/k01wYKNYtWCnQI4TT8I8gi5Rq4E.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/k01wYKNYtWCnQI4TT8I8gi5Rq4E.png 1600w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"When we introduced our vision for identity-first networking last quarter, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/introducing-identity-first-networking\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"we explained why\"})}),\" we\u2019re challenging the decades-old assumptions baked into the networks we use today. One of the core assumptions is that connecting to a network gives users the \",/*#__PURE__*/e(\"em\",{children:\"right\"}),\" to access network resources. For decades the industry has been unable to shake this thinking, which is rooted in network design decisions that pre-date the modern Internet. Twingate enables \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/customers\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"our customers\"})}),\" to begin to move beyond this paradigm, and today we\u2019re unveiling the next foundational cornerstone towards building a modern network.\"]}),/*#__PURE__*/e(\"p\",{children:\"Attaching stable user identity to every network packet is an essential part of that foundation, but the device the user connects with is an equally important part of securing and authorizing network access. Unlike identity\u2014which is inherently a portable concept and has spawned a wide range of technologies to evaluate identity across systems from LDAP to OAuth\u2014device trust is a more fluid concept that requires a different approach.\"}),/*#__PURE__*/e(\"h3\",{children:\"Device trust is a dynamic state, but rarely treated as such\"}),/*#__PURE__*/t(\"p\",{children:[\"User identity has the benefit of being a focused problem: establishing that a single person can prove their identity to a high level of confidence. Establishing whether a particular device is sufficiently trustworthy at a particular point in time, however, is a more complex problem. A user may use many different types of devices in different circumstances, and the state of any device will change over time, too. This makes device trust a process of dynamic evaluation rather than a static designation. The question that admins should be asking isn\u2019t, \u201CCan I trust this device?\u201A, but rather, \u201CCan I trust this device \",/*#__PURE__*/e(\"em\",{children:\"right now and for this network connection\"}),\"?\u201A\"]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,NU0ah05L4SRDGQ5ekr9ZonI0j24.webp?originalFilename=connection.webp\",src:\"https://framerusercontent.com/images/NU0ah05L4SRDGQ5ekr9ZonI0j24.webp\",srcSet:\"https://framerusercontent.com/images/NU0ah05L4SRDGQ5ekr9ZonI0j24.webp?scale-down-to=512 512w,https://framerusercontent.com/images/NU0ah05L4SRDGQ5ekr9ZonI0j24.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/NU0ah05L4SRDGQ5ekr9ZonI0j24.webp 1200w\"}),/*#__PURE__*/e(\"p\",{children:\"These are some of the challenges with evaluating device trust today:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Device state changes constantly.\"}),\" To name just a few examples, a new OS security patch may be made available, a user may connect to an unsecured network, or a device may move to a new geography. Any of these events are triggers to re-evaluate device trust.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Different internal resources require different levels of trust.\"}),\" Most existing solutions to device trust are an all-or-nothing affair. Either use an approved device, or lose access to all resources in your network, regardless of sensitivity.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Existing approaches are rarely operating system agnostic\"}),\". The majority of our customers support users on at least three different operating systems and have neither a single view into devices being used nor a framework for auditing and enforcing access.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"Solutions to date have focused on building walled gardens where a subset of applications and data are partitioned off from the device\u2019s native environment. You\u2019ll notice that this approach derives from the same all-or-nothing thought process that permeates existing networking security. While effective in theory, this approach increases user friction, adds significant admin overhead, and is rarely implemented without significant compromise.\"}),/*#__PURE__*/e(\"h3\",{children:\"Twingate\u2019s device trust framework\"}),/*#__PURE__*/e(\"p\",{children:\"A forward-looking solution that acknowledges the messy user-device-resource reality of today\u2019s workforce needs to satisfy the following requirements:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Provide visibility across any operating system and platform\"}),\". If your users use it, you need to know about it and have access to that information from a single location.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Collect device context from as many sources as possible\"}),\". Device trust depends on many factors, so it\u2019s important that the system evaluating trust has access to as much data as possible. This can range from EDR assessment data to geolocation to whether a company-issued certificate has been deployed to the device.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Treat device trust as a dynamic, calculated status\"}),\". Device trust assessment must not only react to changes in device context, but also to the specific network request being made. Device context sufficient for access to your company\u2019s wiki is unlikely to be acceptable for access to production systems.\"]})})]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,5uHwkXvhdkdjDgFOlhQBoaQ3C0.webp?originalFilename=connection-detailed.webp\",src:\"https://framerusercontent.com/images/5uHwkXvhdkdjDgFOlhQBoaQ3C0.webp\",srcSet:\"https://framerusercontent.com/images/5uHwkXvhdkdjDgFOlhQBoaQ3C0.webp?scale-down-to=512 512w,https://framerusercontent.com/images/5uHwkXvhdkdjDgFOlhQBoaQ3C0.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/5uHwkXvhdkdjDgFOlhQBoaQ3C0.webp 1200w\"}),/*#__PURE__*/e(\"p\",{children:\"Because Twingate runs on any platform and authorizes network routing decisions directly on users\u2019 devices, we\u2019re in a unique position to both provide fully centralized network and device visibility and implement the controls to keep your network safe. We do this with virtually no user friction and straightforward admin management.\"}),/*#__PURE__*/e(\"h3\",{children:\"Device Details: What you can\u2019t see can hurt you\"}),/*#__PURE__*/t(\"p\",{children:[\"The first step is understanding what devices are being used to access your network. With Twingate, you can already ensure that only known identities are accessing protected resources on your network, and our \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/managing-devices\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Device Details\"})}),\" functionality now supplements this information with rich device information across all platforms.\"]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,ERyIFc9YYsWcUbDfljVKsnFGLE.webp?originalFilename=device-details.webp\",src:\"https://framerusercontent.com/images/ERyIFc9YYsWcUbDfljVKsnFGLE.webp\",srcSet:\"https://framerusercontent.com/images/ERyIFc9YYsWcUbDfljVKsnFGLE.webp?scale-down-to=512 512w,https://framerusercontent.com/images/ERyIFc9YYsWcUbDfljVKsnFGLE.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/ERyIFc9YYsWcUbDfljVKsnFGLE.webp 1200w\"}),/*#__PURE__*/e(\"p\",{children:\"At a glance, you are now also able to see what devices are connected to Twingate, detailed information about devices, and whether the device is trusted. This information can also be sorted, exported, and summarized in a new Devices table view in the Twingate Admin console.\"}),/*#__PURE__*/t(\"p\",{children:[\"Over time we will be expanding the range of device information that we collect, both via the Twingate client application and from 3rd party integrations with MDM and EDR products our customers already have deployed. We will also be enriching our existing identity-based \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/exporting-network-traffic\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"network analytics\"})}),\" information with collected device information to continue to provide our customers with the most complete picture of network activity.\"]}),/*#__PURE__*/e(\"h3\",{children:\"Security Policies: One identity, many trust contexts\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/security-policy-guide\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Security Policies framework\"})}),\" is our next step towards providing increasingly refined controls for user access to your network resources. Security Policies currently give you granular control over the identity provider to use for authentication, authentication session lifetime, 2FA requirements, and operating system restrictions. This product area is one that we will be making significant investments in going forwards, and we\u2019ll talk about the latest extension to this functionality, Trusted Devices, in the next section.\"]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,kRvJhLcqns0jyWBBCv2i6FUfCzw.webp?originalFilename=add-requirement.webp\",src:\"https://framerusercontent.com/images/kRvJhLcqns0jyWBBCv2i6FUfCzw.webp\",srcSet:\"https://framerusercontent.com/images/kRvJhLcqns0jyWBBCv2i6FUfCzw.webp?scale-down-to=512 512w,https://framerusercontent.com/images/kRvJhLcqns0jyWBBCv2i6FUfCzw.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/kRvJhLcqns0jyWBBCv2i6FUfCzw.webp 1200w\"}),/*#__PURE__*/e(\"p\",{children:\"Because device context information can be pulled from many sources including EDR, MDM, and via the Twingate client app itself, you will see the Security Policy framework start to incorporate controls that take these systems into account. Our status as a neutral collection point for this information will not only allow Twingate to provide you with the most complete picture of your environment across any device in any location, but also allow you to create custom policies for your environment that take this dynamic information into account.\"}),/*#__PURE__*/e(\"h3\",{children:\"Trusted Devices: When identity isn\u2019t sufficient\"}),/*#__PURE__*/e(\"p\",{children:\"The Trusted Device functionality that we\u2019re launching today is a very first step towards building the dynamic trust status that we defined in our device trust framework.\"}),/*#__PURE__*/e(\"p\",{children:\"Starting today, admins will now be able to mark devices as trusted, which will allow defining Security Policies that take this status into account. This policy requirement can be enforced for any device, on any platform, and in any location with nothing but the Twingate client app required.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,eKVaZp1cGjMRQ1QYJfivdnfApIQ.webp?originalFilename=trusted-device-required.webp\",src:\"https://framerusercontent.com/images/eKVaZp1cGjMRQ1QYJfivdnfApIQ.webp\",srcSet:\"https://framerusercontent.com/images/eKVaZp1cGjMRQ1QYJfivdnfApIQ.webp?scale-down-to=512 512w,https://framerusercontent.com/images/eKVaZp1cGjMRQ1QYJfivdnfApIQ.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/eKVaZp1cGjMRQ1QYJfivdnfApIQ.webp 1200w\"}),/*#__PURE__*/e(\"p\",{children:\"While this trusted/untrusted status is suitable for many scenarios where access must be restricted to known devices, we see this functionality as a fundamental building block for more nuanced policies in the future. We will soon be extending this concept to make device trusted status be conditional on a number of factors, including the destination resource that is being accessed, 3rd party reporting from MDM and EDR systems, and additional context collected from the Twingate client application itself.\"}),/*#__PURE__*/e(\"h3\",{children:\"Our newest customers\"}),/*#__PURE__*/t(\"p\",{children:[\"We\u2019ve invested heavily in automation at Blend and Twingate is a powerful platform that allows us to programmatically deploy and maintain a zero trust approach to our infrastructure.\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{}),\"- Paul Guthrie, Information Security Officer at Blend\"]}),/*#__PURE__*/t(\"p\",{children:[\"We\u2019re excited to welcome a number of great companies to the \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/customers\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate customer family\"})}),\". Since our launch, we\u2019ve been humbled by the reception we\u2019ve received from some of the most innovative, fastest-growing companies around the world.\"]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,hrXiNrvfmJF0Sc9wTeQupse5wQw.webp?originalFilename=customers.webp\",src:\"https://framerusercontent.com/images/hrXiNrvfmJF0Sc9wTeQupse5wQw.webp\",srcSet:\"https://framerusercontent.com/images/hrXiNrvfmJF0Sc9wTeQupse5wQw.webp?scale-down-to=512 512w,https://framerusercontent.com/images/hrXiNrvfmJF0Sc9wTeQupse5wQw.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/hrXiNrvfmJF0Sc9wTeQupse5wQw.webp 1200w\"}),/*#__PURE__*/e(\"p\",{children:\"Companies like Blend, bitpanda, Hippo, and others are quickly recognizing the value of a modern zero-trust architecture based on Twingate\u2019s model of Identity-First Networking. Our customers report increased user satisfaction, seamless deployment and administration, and a markedly improved security posture. As an added bonus, most of our customers also realize significant cost-savings with Twingate versus their existing VPN, especially when considering the amount of time spent managing and troubleshooting VPN problems.\"}),/*#__PURE__*/t(\"p\",{children:[\"In addition, one of our recent product launches that our customers are most excited about is our new \",/*#__PURE__*/e(s,{href:\"https://registry.terraform.io/providers/Twingate/twingate/latest\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate Terraform Provider\"})}),\". We\u2019ll be covering this in more detail in a future blog post, but this integration now allows our customers to deploy and update their Twingate configuration at the same time that they make changes to their internal network. It\u2019s no longer necessary to manually deploy and update your Twingate configuration to stay up to date with infrastructure changes. All of this is taken care of automatically via our Provider, which uses our public Admin API.\"]}),/*#__PURE__*/e(\"h3\",{children:\"Stay tuned\"}),/*#__PURE__*/e(\"p\",{children:\"Today\u2019s product launch is just the tip of the iceberg around what we see as an incredibly rich product area around device trust that has long been underserved. We\u2019re moving quickly, and we can\u2019t wait to show you what we\u2019re working on next.\"}),/*#__PURE__*/t(\"p\",{children:[\"Give Twingate a \",/*#__PURE__*/e(s,{href:\"https://auth.twingate.com/signup\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"try for free\"})}),\" today. We\u2019d love to hear \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/contact\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"what you think\"})}),\".\"]})]})},{index:124,id:\"oQx7m25M_\",[h]:!0,[d]:!1,[p]:\"The Definitive Guide to SOC 2 Compliance\",[u]:\"SOC 2 Compliance Guide\",[m]:\"soc2-compliance\",[g]:\"\",[w]:\"Stuart Loh\",[f]:\"2021-05-03T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/9689cmJ8DYZir6lir1vZOe6reI.png\",srcSet:\"https://framerusercontent.com/images/9689cmJ8DYZir6lir1vZOe6reI.png?scale-down-to=512 512w,https://framerusercontent.com/images/9689cmJ8DYZir6lir1vZOe6reI.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/9689cmJ8DYZir6lir1vZOe6reI.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/9689cmJ8DYZir6lir1vZOe6reI.png?scale-down-to=4096 4096w,https://framerusercontent.com/images/9689cmJ8DYZir6lir1vZOe6reI.png 4776w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/9689cmJ8DYZir6lir1vZOe6reI.png\",srcSet:\"https://framerusercontent.com/images/9689cmJ8DYZir6lir1vZOe6reI.png?scale-down-to=512 512w,https://framerusercontent.com/images/9689cmJ8DYZir6lir1vZOe6reI.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/9689cmJ8DYZir6lir1vZOe6reI.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/9689cmJ8DYZir6lir1vZOe6reI.png?scale-down-to=4096 4096w,https://framerusercontent.com/images/9689cmJ8DYZir6lir1vZOe6reI.png 4776w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"em\",{children:\"This article is part of the \"}),/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/intro-to-infosec-compliance-for-it-teams\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:/*#__PURE__*/e(\"em\",{children:\"Twingate Infosec Compliance Series\"})})}),/*#__PURE__*/e(\"em\",{children:\".\"})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"Written for IT admins, security ops, and anyone else tasked with\"})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"implementing infosec requirements imposed by compliance standards, this\"})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"series explains common standards, how they relate to information\"})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"security, and how to get started with attaining compliance.\"})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"If you provide technology products or services to other businesses, you\u2019ll\"}),/*#__PURE__*/e(\"p\",{children:\"likely have encountered SOC 2. This article provides a comprehensive\"}),/*#__PURE__*/e(\"p\",{children:\"guide to SOC 2: what it is, why it\u2019s important, and the process behind\"}),/*#__PURE__*/e(\"p\",{children:\"achieving SOC 2 compliance.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h3\",{children:\"What is SOC and who does it apply to?\"}),/*#__PURE__*/e(\"p\",{children:\"SOC stands for System and Organization Controls, and it refers to a suite\"}),/*#__PURE__*/e(\"p\",{children:\"of three reports known as SOC 1, SOC 2, and SOC 3. SOC reports are\"}),/*#__PURE__*/e(\"p\",{children:\"written by independent auditors at the request of a \u201Cservice\"}),/*#__PURE__*/e(\"p\",{children:\"organization,\u201A which is an organization that provides information\"}),/*#__PURE__*/e(\"p\",{children:\"systems to other organizations as a service (SaaS companies are a common\"}),/*#__PURE__*/e(\"p\",{children:\"example). The report describes internal security and other types of\"}),/*#__PURE__*/e(\"p\",{children:\"controls over those information systems that the service organization\"}),/*#__PURE__*/e(\"p\",{children:\"has implemented.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"SOC reports are issued by an auditor after the completion of an audit conducted in\"}),/*#__PURE__*/e(\"p\",{children:\"accordance with frameworks established by the American Institute of\"}),/*#__PURE__*/e(\"p\",{children:\"Certified Public Accountants (AICPA) for reporting on the internal\"}),/*#__PURE__*/e(\"p\",{children:\"controls implemented in an organization.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"When organizations say they are \u201CSOC compliant,\u201A what they really mean is\"}),/*#__PURE__*/e(\"p\",{children:\"that they have completed a SOC audit and have had a SOC report issued.\"}),/*#__PURE__*/e(\"p\",{children:\"It does not necessarily mean they have adequate security controls, or\"}),/*#__PURE__*/e(\"p\",{children:\"even that they have properly implemented all of those controls. SOC\"}),/*#__PURE__*/e(\"p\",{children:\"compliance is not a binary pass/fail concept.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h3\",{children:\"Why should you care about SOC 2?\"}),/*#__PURE__*/e(\"p\",{children:\"Because your customers likely care about it, particularly if you sell B2B\"}),/*#__PURE__*/e(\"p\",{children:\"services. Companies need to maintain appropriate information security\"}),/*#__PURE__*/e(\"p\",{children:\"practices across their own organizations, as well as ensuring that their\"}),/*#__PURE__*/e(\"p\",{children:\"supply chain is doing so too. To do this, companies perform vendor\"}),/*#__PURE__*/e(\"p\",{children:\"security risk assessments of prospective vendors. To assist with this\"}),/*#__PURE__*/e(\"p\",{children:\"process, it is commonplace for customers to collect security information\"}),/*#__PURE__*/e(\"p\",{children:\"by asking their service providers for a SOC 2 report.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"A SOC 2 report helps customers understand the security-related controls\"}),/*#__PURE__*/e(\"p\",{children:\"that the vendor has established to support the delivery of its services\"}),/*#__PURE__*/e(\"p\",{children:\"in a secure and compliant manner. Because the report is produced and\"}),/*#__PURE__*/e(\"p\",{children:\"certified by a qualified auditor, it can provide independent assurance\"}),/*#__PURE__*/e(\"p\",{children:\"that a vendor\u2019s security practices meet a customer\u2019s requirements.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h3\",{children:\"What are the differences between SOC 1, 2, and 3?\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"SOC 1\"}),\" focuses on internal controls over \",/*#__PURE__*/e(\"em\",{children:\"financial reporting\"}),\".\"]}),/*#__PURE__*/e(\"p\",{children:\"A customer might typically request a SOC 1 report from a service\"}),/*#__PURE__*/e(\"p\",{children:\"organization if that organization\u2019s services impact the customer\u2019s\"}),/*#__PURE__*/e(\"p\",{children:\"financial data (particularly if the customer is a public company).\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"SOC 2\"})}),/*#__PURE__*/e(\"p\",{children:\"is more general than SOC 1 and focuses on internal controls with\"}),/*#__PURE__*/e(\"p\",{children:\"respect to 5 areas called Trust Services Criteria (TSC). The five areas\"}),/*#__PURE__*/e(\"p\",{children:\"are: security, availability, confidentiality, processing integrity, and\"}),/*#__PURE__*/e(\"p\",{children:\"privacy. All SOC 2 reports must cover the security TSC, and may\"}),/*#__PURE__*/e(\"p\",{children:\"optionally cover any combination of the other 4 TSC. The report is\"}),/*#__PURE__*/e(\"p\",{children:\"usually obtained by an organization such as a SaaS company and provided\"}),/*#__PURE__*/e(\"p\",{children:\"to its customers and prospective customers who want to review the\"}),/*#__PURE__*/e(\"p\",{children:\"organization\u2019s security posture.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"SOC 3\"})}),/*#__PURE__*/e(\"p\",{children:\"is a condensed version of the SOC 2 report that provides less detail\"}),/*#__PURE__*/e(\"p\",{children:\"than the SOC 2 report. The SOC 3 report is intended for more general use\"}),/*#__PURE__*/e(\"p\",{children:\"and circulation. You\u2019ll sometimes see companies make a SOC 3 report\"}),/*#__PURE__*/e(\"p\",{children:\"publicly available on their website, but require you to write in to\"}),/*#__PURE__*/e(\"p\",{children:\"obtain their SOC 2 report.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h3\",{children:\"What is a Type 1 and Type 2 report?\"}),/*#__PURE__*/t(\"p\",{children:[\"Each SOC report comes in a \",/*#__PURE__*/e(\"strong\",{children:\"Type 1\"}),\" and \",/*#__PURE__*/e(\"strong\",{children:\"Type 2\"})]}),/*#__PURE__*/e(\"p\",{children:\"variant. A Type 1 report is based on an audit conducted at a single\"}),/*#__PURE__*/e(\"p\",{children:\"point in time (i.e. the service organization had these controls in place\"}),/*#__PURE__*/e(\"p\",{children:\"on this specific date). A Type 2 report is based on an audit conducted\"}),/*#__PURE__*/e(\"p\",{children:\"over a period of time, and attest to the maintenance of those controls\"}),/*#__PURE__*/e(\"p\",{children:\"by a service period throughout that period.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"Type 2 reports are typically conducted on an annual basis, but when a\"}),/*#__PURE__*/e(\"p\",{children:\"company is getting their first Type 2 report done, they may choose a\"}),/*#__PURE__*/e(\"p\",{children:\"shorter period like 3 or 6 months in order to obtain a report that they\"}),/*#__PURE__*/e(\"p\",{children:\"can provide to customers sooner.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h3\",{children:\"Which SOC report do you need? Should you get a Type 1 or Type 2?\"}),/*#__PURE__*/e(\"p\",{children:\"In general, the most common report for technology providers is SOC 2, and\"}),/*#__PURE__*/e(\"p\",{children:\"that is typically the report that customers prefer to see. A Type 2\"}),/*#__PURE__*/e(\"p\",{children:\"report should be the goal.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"Type 2 reports are more desirable because they provide more assurance to\"}),/*#__PURE__*/e(\"p\",{children:\"customers. Type 1 reports only provide a snapshot of compliance at a\"}),/*#__PURE__*/e(\"p\",{children:\"point in time, and do not provide evidence that compliance is\"}),/*#__PURE__*/e(\"p\",{children:\"consistently maintained (kind of like driving at the speed limit only\"}),/*#__PURE__*/e(\"p\",{children:\"when there are cops around).\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"To get a Type 2 report, you have to wait for at least a few months for the audit\"}),/*#__PURE__*/e(\"p\",{children:\"period to be completed. A common question is whether it\u2019s worth getting a\"}),/*#__PURE__*/e(\"p\",{children:\"Type 1 report before getting a Type 2? Maybe - this is a question of\"}),/*#__PURE__*/e(\"p\",{children:\"cost and opportunity.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"Getting a Type 1 report will add to your costs. We\u2019ve found that the audit fee for a\"}),/*#__PURE__*/e(\"p\",{children:\"Type 1 report is about 80% of the cost of a Type 2 report. Your auditor\"}),/*#__PURE__*/e(\"p\",{children:\"may be able to give you a discount for doing both, but don\u2019t expect it\"}),/*#__PURE__*/e(\"p\",{children:\"to be significant.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"On the other hand, if you are going to lose a customer opportunity unless you can provide\"}),/*#__PURE__*/e(\"p\",{children:\"them with a SOC report quickly, then the extra expense may be worth it.\"}),/*#__PURE__*/e(\"p\",{children:\"However, in our experience, customers may be willing to accept a letter\"}),/*#__PURE__*/e(\"p\",{children:\"from an auditor that states you are currently going through a Type 2\"}),/*#__PURE__*/e(\"p\",{children:\"audit period, with an indication of when it\u2019s due to be completed, plus\"}),/*#__PURE__*/e(\"p\",{children:\"an assurance that you will provide the report once it\u2019s available.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"Another argument for doing a Type 1 before a Type 2 is that it lets you see if\"}),/*#__PURE__*/e(\"p\",{children:\"your compliance is in good shape upfront, rather than waiting 6 months\"}),/*#__PURE__*/e(\"p\",{children:\"only to find out that you have deficiencies. While true, there may be a\"}),/*#__PURE__*/e(\"p\",{children:\"better approach. You should check with your auditor whether they can\"}),/*#__PURE__*/e(\"p\",{children:\"perform a readiness check before you start the Type 2 audit period.\"}),/*#__PURE__*/e(\"p\",{children:\"These can be conducted at significantly lower prices since they don\u2019t\"}),/*#__PURE__*/e(\"p\",{children:\"need to write a report with their name on it. A readiness check will\"}),/*#__PURE__*/e(\"p\",{children:\"give you an idea of whether there are any gaps you need to remediate\"}),/*#__PURE__*/e(\"p\",{children:\"before embarking on a Type 2.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h3\",{children:\"Which TSC should you get?\"}),/*#__PURE__*/e(\"p\",{children:\"As noted above, SOC 2 audits can cover up to five TSCs. Security is the\"}),/*#__PURE__*/e(\"p\",{children:\"only mandatory TSC and you can select any combination of other TSCs to\"}),/*#__PURE__*/e(\"p\",{children:\"get audited against. Each TSC comes with its own set of controls that\"}),/*#__PURE__*/e(\"p\",{children:\"auditors will inspect (and therefore result in a higher audit cost).\"}),/*#__PURE__*/e(\"p\",{children:\"Whether you should select additional TSCs will be driven by your\"}),/*#__PURE__*/e(\"p\",{children:\"customers\u2019 expectations and the type of service you offer. For example,\"}),/*#__PURE__*/e(\"p\",{children:\"if you offer a mission critical system where downtime has a severe\"}),/*#__PURE__*/e(\"p\",{children:\"impact on customers, then you might consider adding the availability\"}),/*#__PURE__*/e(\"p\",{children:\"TSC. It is relatively uncommon for a service to be audited against all\"}),/*#__PURE__*/e(\"p\",{children:\"five TSCs.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"When starting out, consider just auditing the security TSC. This will keep your scope of work down,\"}),/*#__PURE__*/e(\"p\",{children:\"as well as audit fees. For future audits, you can consider adding new\"}),/*#__PURE__*/e(\"p\",{children:\"TSCs, which will, at that point, only result in incremental work. In the\"}),/*#__PURE__*/e(\"p\",{children:\"meantime, you can provide customers with reassurance regarding the\"}),/*#__PURE__*/e(\"p\",{children:\"areas that other TSCs cover through other means. For example, the SLAs\"}),/*#__PURE__*/e(\"p\",{children:\"you offer and your availability of track record (e.g. as demonstrated\"}),/*#__PURE__*/e(\"p\",{children:\"via a status monitoring page) may offer customers sufficient comfort\"}),/*#__PURE__*/e(\"p\",{children:\"regarding availability. Ask your auditors if they have a view on what\"}),/*#__PURE__*/e(\"p\",{children:\"TSCs they\u2019d recommend for your business.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h3\",{children:\"Who\u2019s responsible for SOC 2 compliance?\"}),/*#__PURE__*/e(\"p\",{children:\"SOC 2 is heavily focused on information security, so IT teams perform a lot\"}),/*#__PURE__*/e(\"p\",{children:\"of the heavy lifting and are commonly tasked with overseeing SOC\"}),/*#__PURE__*/e(\"p\",{children:\"compliance in a company. However, SOC involves other teams as well, such\"}),/*#__PURE__*/e(\"p\",{children:\"as HR, Legal and Procurement.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h3\",{children:\"Twingate\u2019s SOC 2 journey in brief: what the process looks like\"}),/*#__PURE__*/t(\"p\",{children:[\"Now that you have decided to obtain a SOC 2 audit, here\u2019s what an initial audit process could look like, based on \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/announcing-soc2\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"our own experience of completing our first SOC 2 Type 2 audit\"})}),\":\"]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,EbYJDZTBDUvh782FrL47fzgJ2c.webp?originalFilename=timeline.webp\",src:\"https://framerusercontent.com/images/EbYJDZTBDUvh782FrL47fzgJ2c.webp\",srcSet:\"https://framerusercontent.com/images/EbYJDZTBDUvh782FrL47fzgJ2c.webp?scale-down-to=512 512w,https://framerusercontent.com/images/EbYJDZTBDUvh782FrL47fzgJ2c.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/EbYJDZTBDUvh782FrL47fzgJ2c.webp 1200w\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"em\",{children:\"Step 1. Auditor Selection\"})}),/*#__PURE__*/e(\"p\",{children:\"SOC is an accounting framework so you can expect your SOC auditor to be an\"}),/*#__PURE__*/e(\"p\",{children:\"accounting firm. As at the time of writing, the cost for a SOC 2 audit\"}),/*#__PURE__*/e(\"p\",{children:\"ranges from approximately $10,000-40,000. The main factor that will\"}),/*#__PURE__*/t(\"p\",{children:[\"drive cost is who you select to be your auditor. At the top end are the \u201C\",/*#__PURE__*/e(s,{href:\"https://en.wikipedia.org/wiki/Big_Four_accounting_firms\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Big 4\"})}),\"\u201A\"]}),/*#__PURE__*/e(\"p\",{children:\"accounting firms, and at the lower end are regional accounting firms.\"}),/*#__PURE__*/e(\"p\",{children:\"The scope of your audit (Type 1 or 2, TSCs selected, nature of your\"}),/*#__PURE__*/e(\"p\",{children:\"services to be audited) will also impact cost.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"Companies sometimes choose to go with a larger firm for brand name recognition,\"}),/*#__PURE__*/e(\"p\",{children:\"and potentially if they have a very large scope of work that a larger\"}),/*#__PURE__*/e(\"p\",{children:\"firm will be better resourced to handle. However, audit reports produced\"}),/*#__PURE__*/e(\"p\",{children:\"by smaller firms can be just as effective at meeting customer\"}),/*#__PURE__*/e(\"p\",{children:\"requirements. In fact, there are some smaller firms that have done SOC\"}),/*#__PURE__*/e(\"p\",{children:\"reports for some very well known and established internet companies.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"Some questions you should consider asking prospective auditors:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"What are your fees and what factors impact them?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"What TSCs would you recommend for my service?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"What controls will you evaluate against?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"What does the process look like after you sign the engagement letter?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"What does the audit process look like?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"How long will it take to receive the audit report after the audit is completed?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Who should we involve from our side?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Who is the team on your side who will be involved, and who is the day-to-day POC?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"What are other companies you\u2019ve audited in the past? In our industry?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"How many companies do you audit each year?\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Once we signed up with our auditor, we had a series of scoping calls before\"}),/*#__PURE__*/e(\"p\",{children:\"the audit period started where they familiarized themselves with our\"}),/*#__PURE__*/e(\"p\",{children:\"services and environment. Together, we tailored a set of a controls\"}),/*#__PURE__*/e(\"p\",{children:\"adapted for our company that we would be audited against. These calls\"}),/*#__PURE__*/e(\"p\",{children:\"also gave us an opportunity to ask questions about their thoughts on\"}),/*#__PURE__*/e(\"p\",{children:\"different approaches to implementing certain controls and the types of\"}),/*#__PURE__*/e(\"p\",{children:\"evidence they would request during the audit.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"SOC audits are also service-oriented and service-specific, meaning that if\"}),/*#__PURE__*/e(\"p\",{children:\"your organization offers multiple services to customers, you can select\"}),/*#__PURE__*/e(\"p\",{children:\"which services you want to be covered by the SOC audit and report.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"One key thing to note about SOC 2 compliance is that organizations get to\"}),/*#__PURE__*/e(\"p\",{children:\"design their own controls. Auditors aren\u2019t so much evaluating the\"}),/*#__PURE__*/e(\"p\",{children:\"adequacy of controls as they are evaluating whether a company has\"}),/*#__PURE__*/e(\"p\",{children:\"actually implemented the controls the company claims they have. It is up\"}),/*#__PURE__*/e(\"p\",{children:\"to your customers to review your controls list and evaluate if those\"}),/*#__PURE__*/e(\"p\",{children:\"controls are sufficient for their purposes.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"em\",{children:\"Step 2. Audit Readiness: Attaining & Maintaining Compliance\"})}),/*#__PURE__*/e(\"p\",{children:\"Our auditor provided us with a spreadsheet containing the list of controls\"}),/*#__PURE__*/e(\"p\",{children:\"we\u2019d be audited against and now it was a matter of working through them\"}),/*#__PURE__*/e(\"p\",{children:\"line by line. The basic steps we followed were:\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Team formation:\"}),\" We identified the main team at Twingate that needed to be involved andassigned project management responsibilities to one individual.\"]})}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Initial review:\"}),\" The main team held an initial meeting over Zoom and then worked through each row of the spreadsheet. For each row, we assigned a DRI (directly\"]}),/*#__PURE__*/e(\"p\",{children:\"responsible individual) and, if work was needed to implement the\"}),/*#__PURE__*/e(\"p\",{children:\"control, we pencilled in a due date. We then scheduled regular status\"}),/*#__PURE__*/e(\"p\",{children:\"check ins, and each of us went off to work on our assigned tasks.\"})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Implementation work\"}),\": Over the period of several weeks, each team member worked on\"]}),/*#__PURE__*/e(\"p\",{children:\"implementing the controls they were responsible for (i.e. the \u201Cattaining compliance\u201A phase) and would meet regularly for the status check ins.\"}),/*#__PURE__*/e(\"p\",{children:\"We also created a SOC compliance channel in Slack that we used to\"}),/*#__PURE__*/e(\"p\",{children:\"progress things between meetings and to coordinate cross-functional\"}),/*#__PURE__*/e(\"p\",{children:\"work.\"})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Audit window start\"}),\": Once we felt we were\"]}),/*#__PURE__*/e(\"p\",{children:\"in a good position, we alerted our auditor when our audit period should\"}),/*#__PURE__*/e(\"p\",{children:\"start. The start of the period marked when we needed to have all our\"}),/*#__PURE__*/e(\"p\",{children:\"controls in operation (i.e. the \u201Cmaintaining compliance\u201A phase).\"})]}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Audit window end\"}),\": About a month before the end of our audit window, we reached out to our auditor to start scheduling the audit work they would need to perform.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"One tip: If your initial audit period is for less than a year, make sure\"}),/*#__PURE__*/e(\"p\",{children:\"you conduct any annual tasks within that audit period. Otherwise, your\"}),/*#__PURE__*/e(\"p\",{children:\"auditors will be unable to verify that control. For example, if you do\"}),/*#__PURE__*/e(\"p\",{children:\"annual risk assessments and conduct one just before your audit period,\"}),/*#__PURE__*/e(\"p\",{children:\"then you will have to perform another risk assessment within your window\"}),/*#__PURE__*/e(\"p\",{children:\"in order for the auditors to be able to verify that control.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"em\",{children:\"Step 3. The Audit Process: Ascertaining Compliance\"})}),/*#__PURE__*/e(\"p\",{children:\"The audit process primarily involved auditors collecting evidence that we\"}),/*#__PURE__*/e(\"p\",{children:\"were complying with the controls (this is referred to by auditors as\"}),/*#__PURE__*/e(\"p\",{children:\"\u201Cfieldwork\u201A). Evidence was collected through three main methods: (1)\"}),/*#__PURE__*/e(\"p\",{children:\"interviews, (2) screenshots and documents, and (3) inspection of Vanta,\"}),/*#__PURE__*/e(\"p\",{children:\"which is a system we used to help automate aspects of SOC compliance.\"}),/*#__PURE__*/e(\"p\",{children:\"The process for us was iterative, with our auditors following up on a\"}),/*#__PURE__*/e(\"p\",{children:\"few items to request further information or clarifications. We ended up\"}),/*#__PURE__*/e(\"p\",{children:\"sitting through over 4 hours of live interviews.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"Screenshots were often requested to verify system configurations - sometimes we\"}),/*#__PURE__*/e(\"p\",{children:\"uploaded them to a secure shared folder, and other times we would show\"}),/*#__PURE__*/e(\"p\",{children:\"our systems over a Zoom screenshare and the auditors would take their\"}),/*#__PURE__*/e(\"p\",{children:\"own screenshots. Sampling was also an approach used in some cases to\"}),/*#__PURE__*/e(\"p\",{children:\"verify compliance. For example, if you have a control that requires you\"}),/*#__PURE__*/e(\"p\",{children:\"to perform annual performance reviews of employees, your auditor may\"}),/*#__PURE__*/e(\"p\",{children:\"pick a few random names and request to see their reviews (the details of\"}),/*#__PURE__*/e(\"p\",{children:\"which can be redacted).\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"After the fieldwork was completed, our auditor finished a draft of the audit\"}),/*#__PURE__*/e(\"p\",{children:\"report. During that time, they also asked us to supply some text for\"}),/*#__PURE__*/e(\"p\",{children:\"Section 3 of the report, which includes a company overview and a\"}),/*#__PURE__*/e(\"p\",{children:\"description of the service being audited.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"Our auditor let us review the draft so that we could correct any factual\"}),/*#__PURE__*/e(\"p\",{children:\"inaccuracies and typos. If there are any deficiencies in the way that\"}),/*#__PURE__*/e(\"p\",{children:\"you have implemented your controls, the auditor will identify them as\"}),/*#__PURE__*/e(\"p\",{children:\"exceptions in your SOC 2 report (happily, we didn\u2019t have any). Finally,\"}),/*#__PURE__*/e(\"p\",{children:\"the auditor will issue the SOC 2 report. If you made it this far,\"}),/*#__PURE__*/e(\"p\",{children:\"congratulations!\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"em\",{children:\"Step 4. Now that you have a SOC report, what do you do with it?\"})}),/*#__PURE__*/e(\"p\",{children:\"Tell people you have it!\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Write a blog post announcing the availability of your SOC report.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"If you have a public webpage with infosec security or compliance information, mention your SOC report.\"})}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/e(\"p\",{children:\"Make sure your sales and customer support teams are armed with it, so they\"}),/*#__PURE__*/e(\"p\",{children:\"can provide it to customers on request. (Some customers may request a\"}),/*#__PURE__*/e(\"p\",{children:\"refreshed SOC report each year.)\"})]})]}),/*#__PURE__*/e(\"p\",{children:\"One common question about SOC 2 reports is whether you should make them\"}),/*#__PURE__*/e(\"p\",{children:\"publicly available for download, or whether you should require an NDA to\"}),/*#__PURE__*/e(\"p\",{children:\"be signed first?\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"Unless your auditor is requiring otherwise, this is really a matter of personal preference.\"}),/*#__PURE__*/e(\"p\",{children:\"On the one hand, requiring an NDA may make it seem like a company is\"}),/*#__PURE__*/e(\"p\",{children:\"trying to hide a sub-optimal report (even if it\u2019s a perfectly good\"}),/*#__PURE__*/e(\"p\",{children:\"report). On the other hand, SOC 2 reports are supposed to be for\"}),/*#__PURE__*/e(\"p\",{children:\"customers and prospective customers only, and releasing them under NDA\"}),/*#__PURE__*/e(\"p\",{children:\"is common practice. In the latter case, you might wish to obtain a SOC 3\"}),/*#__PURE__*/e(\"p\",{children:\"report and make that freely available, since SOC 3 reports are intended\"}),/*#__PURE__*/e(\"p\",{children:\"for public consumption.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"Additionally, it\u2019s common to make non-customers fill out a sales lead form in order\"}),/*#__PURE__*/e(\"p\",{children:\"to obtain a SOC 2 report. After all, interest in your SOC 2 report is\"}),/*#__PURE__*/e(\"p\",{children:\"often a good signal of purchase intent.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"Finally, even though you now have your SOC 2 report in hand, your work is not\"}),/*#__PURE__*/e(\"p\",{children:\"over. You\u2019ll likely have transitioned straight into your next audit\"}),/*#__PURE__*/e(\"p\",{children:\"period and so you\u2019ll need to continue maintaining compliance in order to\"}),/*#__PURE__*/e(\"p\",{children:\"obtain a clean audit in 12 months.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h3\",{children:\"Infosec requirements under SOC 2\"}),/*#__PURE__*/e(\"p\",{children:\"As mentioned above, the controls audited by a SOC 2 audit are technically\"}),/*#__PURE__*/e(\"p\",{children:\"up to an organization to define. However, in reality if you compare the\"}),/*#__PURE__*/e(\"p\",{children:\"SOC reports of two different organizations you are going to find\"}),/*#__PURE__*/e(\"p\",{children:\"similarities. This is mainly because organizations don\u2019t come up with a\"}),/*#__PURE__*/t(\"p\",{children:[\"list of controls in a vacuum, but start off with a framework (such as \",/*#__PURE__*/e(s,{href:\"https://www.coso.org/Pages/ic.aspx\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"COSO\"})}),\")\"]}),/*#__PURE__*/e(\"p\",{children:\"from which controls are derived in a structured manner. Additionally,\"}),/*#__PURE__*/e(\"p\",{children:\"in order to have a credible infosec program, there are a base set of\"}),/*#__PURE__*/e(\"p\",{children:\"categories of controls that you need to implement.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"Typical examples of categories of controls for the security TSC include:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Access controls\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Code management and environments\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Communications\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Incident response\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Network security\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Organizational security\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Policies\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Risk assessment\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Vendor management\"})})]}),/*#__PURE__*/e(\"h3\",{children:\"How Twingate helps with SOC 2 compliance\"}),/*#__PURE__*/e(\"p\",{children:\"Access controls are an extremely common category of controls that SOC 2 audits\"}),/*#__PURE__*/e(\"p\",{children:\"cover. After all, ensuring that only authorized individuals have access\"}),/*#__PURE__*/e(\"p\",{children:\"to the approprate resources is fundamental to security. It won\u2019t come\"}),/*#__PURE__*/e(\"p\",{children:\"as a surprise that at Twingate, we use our own product to meet these\"}),/*#__PURE__*/e(\"p\",{children:\"requirements.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"Here are five ways that Twingate helps businesses to meet SOC 2 access control (and other control) requirements:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Implementation of granular access controls.\"}),\" Twingate enables access controls to be applied to all manner of private corporate resources on a very granular, least privileged basis.\"]}),/*#__PURE__*/e(\"p\",{children:\"Twingate also enables minimum password complexity requirements and\"}),/*#__PURE__*/t(\"p\",{children:[\"two-factor authentication to be applied to all types of applications and services, even ones that do not natively support them, such as SSH. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/protect-legacy-apps-with-multi-factor-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Learn more\"})}),\".\"]})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Facilitation of personnel offboarding.\"}),\" When an employee or contractor leaves your company, it\u2019s common that\"]}),/*#__PURE__*/e(\"p\",{children:\"their access needs to be revoked in a timely manner. Because Twingate\"}),/*#__PURE__*/e(\"p\",{children:\"overlays access controls over all your private resources in combination\"}),/*#__PURE__*/e(\"p\",{children:\"with your identity provider, disabling an individual\u2019s SSO account will\"}),/*#__PURE__*/e(\"p\",{children:\"disable access to all resources secured by Twingate - even if the\"}),/*#__PURE__*/t(\"p\",{children:[\"resource has a separate account for logging in. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/vendor-and-contractor-access-management\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Learn more\"})}),\".\"]})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Facilitation of access reviews.\"}),\" Another common control is regularly reviewing access control lists\"]}),/*#__PURE__*/e(\"p\",{children:\"(quarterly reviews are a typical cadence). Because the responsibilities\"}),/*#__PURE__*/e(\"p\",{children:\"of personnel change over time, this is an important exercise to ensure\"}),/*#__PURE__*/e(\"p\",{children:\"that users\u2019 access rights to resources remain relevant and continue to\"}),/*#__PURE__*/e(\"p\",{children:\"adhere to the principle of least privilege. By centralizing users\u2019\"}),/*#__PURE__*/e(\"p\",{children:\"access rights in one location, Twingate makes access reviews quicker and easier, as well as enabling on-the-spot changes to access rights. No\"}),/*#__PURE__*/t(\"p\",{children:[\"longer do you need to review multiple, disparate systems. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/groups\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Learn more\"})}),\".\"]})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Extensive logging of network activity.\"}),\" Twingate\u2019s logging and analytics capabilities provide visibility into\"]}),/*#__PURE__*/e(\"p\",{children:\"network access activity across your entire enterprise network. This\"}),/*#__PURE__*/e(\"p\",{children:\"helps you to meet SOC controls regarding the monitoring of anomalous or\"}),/*#__PURE__*/t(\"p\",{children:[\"suspicious network activity for security purposes. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/exporting-network-traffic\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Learn more\"})}),\".\"]})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Facilitation of audits.\"}),\" Centralization of access controls in a single system makes it easy for\"]}),/*#__PURE__*/e(\"p\",{children:\"you to provide evidence of compliance with access controls to SOC\"}),/*#__PURE__*/e(\"p\",{children:\"auditors.\"})]})]}),/*#__PURE__*/t(\"p\",{children:[\"A number of our customers have deployed Twingate to help with SOC 2 compliance. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact us\"})}),\" to learn more about how Twingate can help you to get ready for a SOC 2 audit.\"]})]})},{index:125,id:\"hJXI14rjb\",[h]:!0,[d]:!1,[p]:\"Is Your RDP Service Secure?\",[u]:\"Is Your RDP Service Secure?\",[m]:\"is-your-rdp-service-secure\",[g]:\"\",[w]:\"Jay Chen\",[f]:\"2021-03-15T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/eCv3SIocg2PJ9M5J8C9PxJGwvE.png\",srcSet:\"https://framerusercontent.com/images/eCv3SIocg2PJ9M5J8C9PxJGwvE.png?scale-down-to=512 512w,https://framerusercontent.com/images/eCv3SIocg2PJ9M5J8C9PxJGwvE.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/eCv3SIocg2PJ9M5J8C9PxJGwvE.png 1200w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/eCv3SIocg2PJ9M5J8C9PxJGwvE.png\",srcSet:\"https://framerusercontent.com/images/eCv3SIocg2PJ9M5J8C9PxJGwvE.png?scale-down-to=512 512w,https://framerusercontent.com/images/eCv3SIocg2PJ9M5J8C9PxJGwvE.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/eCv3SIocg2PJ9M5J8C9PxJGwvE.png 1200w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Microsoft\u2019s Remote Desktop Protocol (RDP) is one of the most popular tools for both system admins and end users to gain remote access to a host computer.  As companies shifted to remote work in 2020, many turned to RDP as a solution to provide work-from-home access for their remote workforces.  While this was a relatively simple and readily available solution for Windows users, its widespread use has also made it a major target for cyberattacks, exposing companies to significant risk in the process.\"}),/*#__PURE__*/t(\"p\",{children:[\"According to the \",/*#__PURE__*/e(s,{href:\"https://www.aspeninstitute.org/blog-posts/combatting-cybercrime-during-covid-19\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"FBI\u2019s Cyber Division\"})}),\", cybercrime increased 300% in 2020, and several \",/*#__PURE__*/e(s,{href:\"https://www.zdnet.com/article/top-exploits-used-by-ransomware-gangs-are-vpn-bugs-but-rdp-still-reigns-supreme\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"security studies\"})}),\" have shown that RDP was the single most common source of ransomware incidents in these attacks. In a \",/*#__PURE__*/e(s,{href:\"https://info.coalitioninc.com/download-2020-cyber-claims-report.html\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"2020 study\"})}),\" from Coalition, a leading cyber insurance provider, it was found that the severity of cyber-incident losses also increased dramatically by 65% year over year.  Despite all these risks, many companies continue to rely on RDP, often out of necessity.  So what makes RDP such a popular target for cybercriminals and what can you do to minimize the risk to your organization?\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Challenges with RDP\"})}),/*#__PURE__*/e(\"p\",{children:\"RDP was first introduced by Microsoft in the late 90s, in the early days of the public internet, as a way for a limited number of authorized admins and users to remotely access a machine on the local corporate network. It was not originally designed to meet the diverse set of security and privacy requirements we expect today, with the proliferation of devices, networks, cloud services, and of course remote work.  As a result, RDP has consistently been a favorite target of cyber criminals throughout its history and continues to suffer from several significant security weaknesses, including these most significant ones:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Exposed default ports:\"}),\" RDP uses port 3389 by default to enable inbound connection attempts. Because this is widely known, this is also one of the most common attack vectors for any corporate network, as this port is constantly being scanned by cybercriminals. This makes an RDP service vulnerable to password stuffing attempts and other brute force attacks.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Password complexity enforcement:\"}),\" One way to make it more difficult for attackers to access RDP systems is to enforce password complexity requirements. Unfortunately, not everyone does this, as it can often lead to frustrated users overwhelming IT teams with password recovery requests. \",/*#__PURE__*/e(s,{href:\"https://www.mcafee.com/blogs/other-blogs/mcafee-labs/rdp-security-explained\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"A McAfee report\"})}),\" found that the most common passwords to vulnerable RDP systems included easily guessable strings, such as \u201C123456\u201A and \u201Cpassword.\u201A\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"MFA support for RDP is limited:\"}),\" Another common way to provide additional protection against unwanted access is to implement an MFA (multi-factor authentication) requirement for RDP access. Unfortunately, this typically requires additional third party software or deploying a Remote Desktop Gateway to broker the connection, introducing additional complexity for admins.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Known security vulnerabilities:\"}),\" RDP was never designed to run over the public internet. Its original intent was for use within a secure LAN. As a result, RDP is simply not secure by design, and has suffered more than its fair share of security flaws throughout its history. For instance, the now-infamous \",/*#__PURE__*/e(s,{href:\"https://us-cert.cisa.gov/ncas/alerts/AA19-168A\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Bluekeep vulnerability\"})}),\" was a serious flaw that allowed attackers to perform remote code execution on the affected system. While Microsoft has been consistent in its ongoing support to address known issues, it is always up to admins to apply these patches. This can present additional challenges, as disruptions to service and other system risks may sometimes prevent critical patches from being applied promptly. In addition to known vulnerabilities in Microsoft\u2019s RDP server, there have also been \",/*#__PURE__*/e(s,{href:\"https://www.itnews.com.au/news/remote-desktop-clients-analysed-and-found-vulnerable-518908\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"numerous weaknesses found in RDP clients\"})}),\", further exacerbating the security risks involved.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"VPNs help, but are not perfect:\"}),\" Putting your RDP server behind a VPN is often recommended as a more secure way to provide remote access. Although this would certainly be an improvement over exposed public RDP ports, this would not protect from an attacker who was somehow able to gain access to the VPN itself.In addition, VPNs introduce their own set of problems. Besides the additional complexity and cost of implementing the VPN itself, there are also significant user experience and productivity questions to consider. RDP is relatively bandwidth intensive. If RDP is intended to be a longer-term solution for remote work, then performance and user satisfaction are important considerations. For instance, VPN gateways tend to be a traffic bottleneck during peak times, which means higher latencies between the end user and the RDP server. This, in turn, can mean an extremely frustrating experience for the user and significant lost productivity for the organization.\"]})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"How to simplify RDP security with Twingate\"})}),/*#__PURE__*/t(\"p\",{children:[\"Twingate is a modern Zero Trust Network Access solution built on the concept of \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/introducing-identity-first-networking\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Identity-First Networking\"})}),\".  With Twingate, we can address all of these more important security risks with no hardware to install, easy integration with your existing infrastructure, and no performance impact to your end users.  Deploying Twingate in your RDP server environment helps with the following:\"]}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"No publicly exposed RDP ports. Ever.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Fully encrypted tunnel between client and server.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Security without password fatigue. Use the same identity as your main IdP.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Protect RDP with multi-factor authentication.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"No bottlenecks through VPN gateways.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"No performance impact to users.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Software only solution. Works with your existing infrastructure.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Reduce likelihood of ransomware attacks.\"})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"4 steps to making RDP more secure with Twingate\"})}),/*#__PURE__*/e(\"p\",{children:\"Once you have a Twingate admin account set up, just follow these simple steps to protect your RDP system and easily implement multi-factor authentication.\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Install the lightweight \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/provision-the-new-access-node\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate connector\"})}),\" on a Linux VM on the same subnet as your RDP server.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Add the local DNS name or the local IP address of the RDP server as a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/create-a-new-resource\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Resource\"})}),\" from the Twingate admin console.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Add this newly created RDP Resource to a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/groups\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Group\"})}),\" for which you wish to grant access.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Enable \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/two-factor-authentication-security-policies\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"two-factor authentication\"})}),\" for this Group.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"That\u2019s it.  Congratulations!  In less than 10 minutes, you have effectively secured your Remote Desktop service from would-be attackers and implemented MFA without any additional hardware deployment.\"}),/*#__PURE__*/t(\"p\",{children:[\"If you would like to learn more about how Twingate can help your organization protect itself from unauthorized access and other cyber threats, while providing admins and users a consumer-grade user experience, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"drop us a line\"})}),\".  We\u2019d be happy to give you a demo and walk you through our product.\"]})]})},{index:126,id:\"McIgWBCPD\",[h]:!0,[d]:!1,[p]:\"Why Isn't Everyone Using Zero Trust Networking?\",[u]:\"Zero Trust Networking\",[m]:\"why-isnt-everyone-using-zero-trust\",[g]:\"\",[w]:\"Jay Chen\",[f]:\"2021-03-09T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/uLc01Xm5F8UbWLea3TIhxesPCs.png\",srcSet:\"https://framerusercontent.com/images/uLc01Xm5F8UbWLea3TIhxesPCs.png?scale-down-to=512 512w,https://framerusercontent.com/images/uLc01Xm5F8UbWLea3TIhxesPCs.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/uLc01Xm5F8UbWLea3TIhxesPCs.png 1200w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/uLc01Xm5F8UbWLea3TIhxesPCs.png\",srcSet:\"https://framerusercontent.com/images/uLc01Xm5F8UbWLea3TIhxesPCs.png?scale-down-to=512 512w,https://framerusercontent.com/images/uLc01Xm5F8UbWLea3TIhxesPCs.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/uLc01Xm5F8UbWLea3TIhxesPCs.png 1200w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"In the wake of the COVID pandemic, CIOs and CISOs around the world now find remote workforce security becoming a top priority. Expanding their businesses\u2019 existing VPN (virtual private network) or \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/is-your-rdp-service-secure\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"RDP (remote desktop protocol)\"})}),\" infrastructure - necessary in the immediate crisis - has made their security systems potential vectors for cybercriminals and other bad actors.  The challenge of providing secure access for remote users while protecting sensitive data has not been easy to solve for most organizations.\"]}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust Network Access (ZTNA) is an alternative approach for securing remote network access first introduced in 2009. Unfortunately, misperceptions and marketing hype have made Zero Trust Network Access seem more like a buzzword than a realistic solution. Yet, the truth beneath the hype is that a Zero Trust security model can, in fact, make resources more secure while simplifying your network infrastructure.\"}),/*#__PURE__*/e(\"h2\",{children:\"How Does Zero Trust Network Access Work?\"}),/*#__PURE__*/t(\"p\",{children:[\"First \",/*#__PURE__*/e(s,{href:\"https://en.wikipedia.org/wiki/BeyondCorp\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"implemented by Google\"})}),\" in 2009, the zero trust model is based on a simple premise: never trust, always verify.  ZTNA solutions create secure perimeters around each individual resource, rather than around each network, and deny access by default. Authenticated and authorized users only get access to the resources they need - and only from devices that meet access control requirements. This approach better reflects the fact that company resources are no longer all contained in a trusted company network, but may be distributed in the cloud, and that workers commonly connect to those resources from non-office environments.\"]}),/*#__PURE__*/e(\"p\",{children:\"Under zero trust, the network that users connect through does not confer additional trust. Someone connecting through an on-premise ethernet port is no more trusted than someone connecting over the internet from their home office. Even resources on the same network aren\u2019t trusted. They must pass through the ZTNA authorization process to communicate with each other.\"}),/*#__PURE__*/e(\"p\",{children:\"Zero trust makes resources more secure by closing security gaps, making attacks less effective, and preventing a breach from spreading beyond a single resource.\"}),/*#__PURE__*/e(\"h2\",{children:\"Why Isn\u2019t ZTNA Widely Adopted?\"}),/*#__PURE__*/e(\"p\",{children:\"As the first company to implement zero trust access policies, Google is often held up as a model example of zero trust architecture done right. However, even with all of the resources at its disposal and with consistent C-level commitment, Google took almost a decade to fully implement and refine its zero trust approach. Such a large-scale IT transformation project is not what most companies are looking for, especially given tight budgets and limited resources.\"}),/*#__PURE__*/e(\"p\",{children:\"Another factor hindering ZTNA adoption is that zero trust is a set of principles rather than a specific implementation or industry standard. As a result, companies face two choices when they consider any ZTNA solution. Enterprise vendors offer ZTNA options, but they are often expensive, complicated to deploy, and work best only when integrated with an infrastructure based on that vendor\u2019s products. The other choice is to stitch together solutions from multiple vendors with custom middleware, patches, and workarounds, creating a system that is often brittle and difficult to maintain.\"}),/*#__PURE__*/e(\"p\",{children:\"The actual and perceived complexity and expense of replacing entire security frameworks with existing ZTNA solutions have kept zero trust security off many companies\u2019 IT roadmaps. Traditional VPNs and other existing approaches to remote access security are known quantities so companies assume they are less risky and require less effort.\"}),/*#__PURE__*/e(\"h2\",{children:\"2020, Remote Work, and Unsecure Networks\"}),/*#__PURE__*/e(\"p\",{children:\"Unfortunately, the traditional network security approach to remote access has become increasingly outdated and, in this COVID age, is subject to cybersecurity weaknesses that create more risks for companies everywhere. First created at the dawn of the internet when people generally all worked in the office and network security was simpler, VPNs grant a user or device privileged access to everything within those networks. This conflicts with the security principle of \u201Cleast privileged,\u201A where individual users should not have access to more than they need, and provides attackers with the ability to move laterally within an internal network once the VPN is breached.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,SqI2A37AZfn4HTlp9mK7QpwEUg.webp?originalFilename=before.webp\",src:\"https://framerusercontent.com/images/SqI2A37AZfn4HTlp9mK7QpwEUg.webp\",srcSet:\"https://framerusercontent.com/images/SqI2A37AZfn4HTlp9mK7QpwEUg.webp?scale-down-to=512 512w,https://framerusercontent.com/images/SqI2A37AZfn4HTlp9mK7QpwEUg.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/SqI2A37AZfn4HTlp9mK7QpwEUg.webp 1600w\"}),/*#__PURE__*/e(\"p\",{children:\"Moreover, VPN gateways are exposed to the public internet, making them a prime attack surface for cyber criminals. As a result, the most sophisticated attackers target VPNs to penetrate networks, deploy ransomware, and exfiltrate data. Over the past year, companies that failed to patch vulnerabilities in VPN servers offered by major vendors have fallen victim to ransomware and other attacks.\"}),/*#__PURE__*/e(\"p\",{children:\"Beyond the security risks, VPNs make network infrastructure more brittle. Using subnets to control the risk of network breaches adds more complexity to network maintenance and increases the risk of misconfiguration. VPNs struggle with the fact that the corporate network perimeter is no longer a neatly defined boundary.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Twingate Eases ZTNA Adoption\"})}),/*#__PURE__*/e(\"p\",{children:\"Providing the benefits of a Zero Trust solution while making deployment and management of that solution as simple as possible has always been Twingate\u2019s priority. We originally designed Twingate for developers and DevOps teams who needed secure remote access but may not have had network security experts in-house. With today\u2019s work-from-home mandates, Twingate has become a simple, effective way for organizations to accelerate their zero trust journey.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,hh2Ve4FQJtJ840rQ5bgpNCm74.webp?originalFilename=docker-cli.webp\",src:\"https://framerusercontent.com/images/hh2Ve4FQJtJ840rQ5bgpNCm74.webp\",srcSet:\"https://framerusercontent.com/images/hh2Ve4FQJtJ840rQ5bgpNCm74.webp?scale-down-to=512 512w,https://framerusercontent.com/images/hh2Ve4FQJtJ840rQ5bgpNCm74.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/hh2Ve4FQJtJ840rQ5bgpNCm74.webp 1270w\"}),/*#__PURE__*/e(\"p\",{children:\"Deployable in 15 minutes, a Twingate implementation does not require changes to your network infrastructure or any of your resources. In fact, a single Docker command is all it takes to deploy Twingate in a network. Provisioning users\u2019 devices, whether managed or BYOD, is just as easy. Users can self-provision by downloading a client from an app store, and they do not need to change their devices\u2019 operating system settings.\"}),/*#__PURE__*/e(\"p\",{children:\"Once deployed, Twingate handles access control and device posture management rules seamlessly in conjunction with the authentication provided by your SSO or identity provider. Your administrators can on-board and off-board users automatically, and apply multi-factor authentication to any individual resource on the protected network, making it easier to manage least-privilege access policies across all resources. With extensive logging and analytics, Twingate also provides network visibility across the entire network through a single view, regardless of how many subnets you have.\"}),/*#__PURE__*/t(\"p\",{children:[\"Forget the hype and misperceptions. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/demo\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Contact Twingate\"})}),\" to learn more about the reality of how easy and cost effective implementing a modern zero trust framework can be.\"]})]})},{index:127,id:\"TEC4RSLOk\",[h]:!0,[d]:!1,[p]:\"How-To Guide: Use Twingate to Provide Limited Access to Contractors and Third Parties\",[u]:\"Third Party Access using Twingate\",[m]:\"third-party-access-using-twingate\",[g]:\"\",[w]:\"Stuart Loh\",[f]:\"2021-03-02T00:00:00.000Z\",[y]:\"Q0hjKFNAz\",[b]:T({src:\"https://framerusercontent.com/images/HHYhbtonOXcm9ziv0XMyda8HvQ.png\",srcSet:\"https://framerusercontent.com/images/HHYhbtonOXcm9ziv0XMyda8HvQ.png?scale-down-to=512 512w,https://framerusercontent.com/images/HHYhbtonOXcm9ziv0XMyda8HvQ.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/HHYhbtonOXcm9ziv0XMyda8HvQ.png 1600w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/HHYhbtonOXcm9ziv0XMyda8HvQ.png\",srcSet:\"https://framerusercontent.com/images/HHYhbtonOXcm9ziv0XMyda8HvQ.png?scale-down-to=512 512w,https://framerusercontent.com/images/HHYhbtonOXcm9ziv0XMyda8HvQ.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/HHYhbtonOXcm9ziv0XMyda8HvQ.png 1600w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"When working from outside of the office, employees traditionally rely on VPNs to access private applications and servers on their organization\u2019s corporate network. However, third parties like consultants, contractors, and other vendors often need temporary access to those resources as well. For example, an auditing firm may need access to on-premises financial systems for a few months, or a QA contractor may need access to a development environment for the duration of a project.\"}),/*#__PURE__*/e(\"p\",{children:\"Unfortunately, provisioning access for third parties is typically a cumbersome process that is difficult to maintain and poses security risks. Read on to find out why, and learn how Twingate can help.\"}),/*#__PURE__*/e(\"p\",{children:\"Firstly, setting up a user with VPN is often a lengthy, multi-step process requiring the assistance of IT support. This can be complicated when third parties bring their own equipment that is neither standard nor controlled by a company\u2019s IT team, requiring one-off setup procedures to be developed. That equipment may also not meet the company\u2019s security standards, meaning that it becomes a vector for threats once it obtains access to a company network.\"}),/*#__PURE__*/e(\"p\",{children:\"Secondly, a new VPN account has to be provisioned for that user, and that means someone needs to remember to deprovision it when the user no longer needs access (along with any application-specific accounts that were created for the user). When there are many third parties, keeping track of who is meant to have access to what, and for how long, becomes a challenge and a security risk when things inevitably slip through the cracks.\"}),/*#__PURE__*/e(\"p\",{children:\"Thirdly, VPNs grant users with access to entire networks, which may be more access than a user actually requires. This is inconsistent with the principle of least privileged access and is a less secure approach.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"How Twingate Makes Controlling Access for Contractors Better\"})}),/*#__PURE__*/t(\"p\",{children:[\"In contrast, \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/vendor-and-contractor-access-management\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"providing limited access to third parties with Twingate\"})}),\" is quicker, easier to keep track of, and more secure:\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"User setup involves simply installing an app from the Twingate website or an app store, with no configuration necessary.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"On the administrative side, provisioning a user account is as simple as sending an invitation to a third party user\u2019s email address. The user can then use a social SSO provider like G Suite to sign into Twingate.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Because Twingate controls access at a granular resource level, very specific access to applications can be granted, so that third parties have access to the minimum number of private resources necessary to do their job. Users don\u2019t receive direct access to entire networks.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Twingate provides one central place for admins to review access controls across the enterprise, making it easy to perform periodic audits of access lists and policies. Also, deprovisioning an account in Twingate disables access to everything, even if you forget to deprovision any app-specific accounts.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Because Twingate controls access at the network layer, it is possible to protect all resources with \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/two-factor-authentication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"multi-factor authentication\"})}),\" - even for applications that don\u2019t natively support it.\"]})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Two Step Guide to Providing Access to a Contractor\"})}),/*#__PURE__*/e(\"p\",{children:\"In this guide, we show how easy it is to use Twingate to give a third party access to a private resource, and nothing more. For the purposes of this guide, we will use the hypothetical example of a company called Autoco that has hired a marketing consulting firm. The firm has an analyst who provides their services remotely and needs access to an on-premises installation of Tableau, which is a visual analytics tool.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,PX4bnCwG8YW2LOixZzlgHU1bl8.webp?originalFilename=connection.webp\",src:\"https://framerusercontent.com/images/PX4bnCwG8YW2LOixZzlgHU1bl8.webp\",srcSet:\"https://framerusercontent.com/images/PX4bnCwG8YW2LOixZzlgHU1bl8.webp?scale-down-to=512 512w,https://framerusercontent.com/images/PX4bnCwG8YW2LOixZzlgHU1bl8.webp 800w\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"1. Add the Contractor to Twingate.\"}),\" Sign into your Twingate account and go to the Users page. Click \",/*#__PURE__*/e(\"strong\",{children:\"+Add\"}),\" and provide the email address of the contractor. The contractor will receive an email with instructions on how to register for a Twingate account. They can then download, install and sign in to the Twingate client app. However, the contractor will not be able to access anything until you give them the permissions in the next step.\"]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,9b0fhzkf2q5fwuNZ2l8xBXJf0V4.webp?originalFilename=invite-user.webp\",src:\"https://framerusercontent.com/images/9b0fhzkf2q5fwuNZ2l8xBXJf0V4.webp\",srcSet:\"https://framerusercontent.com/images/9b0fhzkf2q5fwuNZ2l8xBXJf0V4.webp?scale-down-to=512 512w,https://framerusercontent.com/images/9b0fhzkf2q5fwuNZ2l8xBXJf0V4.webp 800w\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"2. Create a New Group for the Contractor.\"}),\" Access to private resources is granted to specific Groups, and Groups are made up of Users. Because in our example Autoco doesn\u2019t already have a Group which has access only to Tableau, we need to create a new Group. Go to the Groups page and click \",/*#__PURE__*/e(\"strong\",{children:\"+Add\"}),\". Name the Group, select \u201CSocial\u201A as the access policy, add the User you created in Step 1, and finally add the resource they need access to. In our example, you would use the following details, and then click \",/*#__PURE__*/e(\"strong\",{children:\"Done\"}),\":\"]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,YAaouAK6AG41z9z1AMsDjWBVB0.webp?originalFilename=add-user.webp\",src:\"https://framerusercontent.com/images/YAaouAK6AG41z9z1AMsDjWBVB0.webp\",srcSet:\"https://framerusercontent.com/images/YAaouAK6AG41z9z1AMsDjWBVB0.webp?scale-down-to=512 512w,https://framerusercontent.com/images/YAaouAK6AG41z9z1AMsDjWBVB0.webp 800w\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"3. You\u2019re done!\"}),\" It\u2019s literally that simple. When the contractor signs into the Twingate client app, they will automatically have access to Tableau at `tableau.autoco.int`.\"]}),/*#__PURE__*/e(\"p\",{children:\"When the marketing firm\u2019s project ends, you can either delete the Group and User or, if the firm may come back for a future project, simply change the Group\u2019s status to \u201CDisabled\u201A and the contractor will automatically lose access until you\u2019re ready to enable them again.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Try It For Yourself\"})}),/*#__PURE__*/t(\"p\",{children:[\"If you\u2019ve ever faced the burden of provisioning access for third parties and keeping track of who\u2019s who, see how Twingate can make your life easier. \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/pricing\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Sign up for a free trial today\"})}),\"!\"]})]})},{index:128,id:\"G6rtKTnFj\",[h]:!0,[d]:!1,[p]:\"Introducing Identity-First Networking\",[u]:\"Introducing Identity-First Networking\",[m]:\"introducing-identity-first-networking\",[g]:\"\",[w]:\"Alex Marshall\",[f]:\"2021-02-24T00:00:00.000Z\",[y]:\"KI2UGBfh7\",[b]:T({src:\"https://framerusercontent.com/images/jO0sh8rWmD3aodP3DpBwoLBv9rQ.jpg\",srcSet:\"https://framerusercontent.com/images/jO0sh8rWmD3aodP3DpBwoLBv9rQ.jpg?scale-down-to=512 512w,https://framerusercontent.com/images/jO0sh8rWmD3aodP3DpBwoLBv9rQ.jpg?scale-down-to=1024 1024w,https://framerusercontent.com/images/jO0sh8rWmD3aodP3DpBwoLBv9rQ.jpg 1600w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/jO0sh8rWmD3aodP3DpBwoLBv9rQ.jpg\",srcSet:\"https://framerusercontent.com/images/jO0sh8rWmD3aodP3DpBwoLBv9rQ.jpg?scale-down-to=512 512w,https://framerusercontent.com/images/jO0sh8rWmD3aodP3DpBwoLBv9rQ.jpg?scale-down-to=1024 1024w,https://framerusercontent.com/images/jO0sh8rWmD3aodP3DpBwoLBv9rQ.jpg 1600w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"If there\u2019s anything we\u2019ve learned since we \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/introducing-twingate\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"founded Twingate\"})}),\", it\u2019s that companies jump through extraordinary hoops to grant, manage, and secure access to their networks. Whether it\u2019s whitelisting ever-changing IP addresses; maintaining complex subnet assignments and VLAN segments; or manually piecing together network events across hybrid networks, these heroic tasks all have something in common: making up for the shortcomings of TCP/IP.\"]}),/*#__PURE__*/e(\"p\",{children:\"Where open, trusted access made sense at the inception of computer networking almost 50 years ago, the exact opposite is true today. Trust can no longer be assumed based on being physically hardwired to a network, and devices may have multiple IP addresses and hop across many networks in a single day. New layers of authentication, anomaly detection, and monitoring are continually being added to every layer of the network stack, but these approaches do not address the foundational shortcomings.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate turns this model on its head by rethinking these base assumptions around networking. Rather than attempting to filter every network session looking for anomalies or performing additional checks on every network connection that arrives at a destination, Twingate starts by asking a simple question: should a network request even be allowed to leave a device? And if so, whose identity should be attached to it?\"}),/*#__PURE__*/t(\"p\",{children:[\"Once you start to think about every connection on your network as \",/*#__PURE__*/e(\"em\",{children:\"requiring\"}),\" an identity that just \",/*#__PURE__*/e(\"em\",{children:\"happens\"}),\" to have a source IP address, it makes setting parameters and understanding network activity a lot easier. Because network connections are never allowed to enter your network without an identity attached to an explicit authorization, there is no longer any question of who a network connection belongs to and why it was authorized.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Our \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/customers\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"customers\"})}),\" have been thrilled with the experience of throwing out their clunky VPN and replacing it with Twingate\u2019s new approach to managing network access, which we call \",/*#__PURE__*/e(\"strong\",{children:\"Identity-First Networking\"}),\". Today we\u2019re proud to announce the launch of this foundational approach with the following new product features and partnerships.\"]}),/*#__PURE__*/e(\"h3\",{children:\"Major identity provider support & SCIM-based synchronization\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,ASipjLijyCOEX6UJtZjXauikMQ.webp?originalFilename=scim-based-sync.webp\",src:\"https://framerusercontent.com/images/ASipjLijyCOEX6UJtZjXauikMQ.webp\",srcSet:\"https://framerusercontent.com/images/ASipjLijyCOEX6UJtZjXauikMQ.webp?scale-down-to=512 512w,https://framerusercontent.com/images/ASipjLijyCOEX6UJtZjXauikMQ.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/ASipjLijyCOEX6UJtZjXauikMQ.webp 1200w\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/t(\"em\",{children:[\"Twingate is pushing the boundaries of security and usability in the world of Zero Trust. They have created a product that starts with identity at the center. OneLogin is proud to partner with Twingate to bring Identity-First Network security to the most demanding and innovative companies in the world.\",/*#__PURE__*/e(\"br\",{}),\"\u2014 Chelsea Wadsworth, Director of Global Alliances, OneLogin\"]})}),/*#__PURE__*/e(\"p\",{children:\"Modern organizations\u2014with a myriad of applications used by a distributed workforce\u2014depend on centralizing user identity to ease management and improve security. Given the benefits, user identity as a primitive has been applied across virtually every application that enterprises use today, but the network layer has been left behind.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate enables the benefits of identity at the network transport level (any TCP or UDP connection), allowing our customers to unify both network and application access centrally. Now every resource on your network\u2014including databases, servers, k8s clusters, etc.\u2014that are typically very difficult (if not impossible!) to integrate with your identity provider natively can be managed in one place. If a user is not entitled to access a network destination, their traffic will never traverse your network.\"}),/*#__PURE__*/e(\"p\",{children:\"User authentication is only part of the story. Equally important is ensuring that user lifecycle state and applicable group membership is synchronized promptly and accurately. Twingate supports SCIM for user and group synchronization, extending automatic onboarding and offboarding to every resource on your network. Twingate integrates with the major identity providers including Okta, OneLogin, Google Workspace, and Microsoft Azure AD.\"}),/*#__PURE__*/e(\"h3\",{children:\"Universal Two-Factor Authentication\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,xJsMVh3oo5N3xbhzMmcIDZV310I.webp?originalFilename=two-factor-authentication.webp\",src:\"https://framerusercontent.com/images/xJsMVh3oo5N3xbhzMmcIDZV310I.webp\",srcSet:\"https://framerusercontent.com/images/xJsMVh3oo5N3xbhzMmcIDZV310I.webp?scale-down-to=512 512w,https://framerusercontent.com/images/xJsMVh3oo5N3xbhzMmcIDZV310I.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/xJsMVh3oo5N3xbhzMmcIDZV310I.webp 1200w\"}),/*#__PURE__*/t(\"p\",{children:[\"Today we\u2019re launching \",/*#__PURE__*/e(\"strong\",{children:\"native two-factor authentication\"}),\" to our Business and Enterprise customers, which will allow more fine-grained controls independent of your chosen identity provider and independent of the destination. We call this experience \",/*#__PURE__*/e(\"strong\",{children:\"Universal 2FA\"}),\" because it can be applied to any type of resource with zero application changes.\"]}),/*#__PURE__*/e(\"p\",{children:\"One of the \u201Cwow\u201A moments for our customers is using Twingate\u2019s Universal 2FA to apply discretionary security levels to resources according to their sensitivity. For example, admins can ensure that users with production network SSH access are subject to an additional 2FA challenge. The lack of application changes, and flexibility to work with any protocol or resource, means that security changes can be made immediately. The user experience is also seamless, operating in-line with the user\u2019s workflow thanks to Twingate\u2019s transport-level network routing.\"}),/*#__PURE__*/e(\"h3\",{children:\"Identity-indexed network flow logs and analytics\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,YzU2aA7O6YU8T4W95LElYxmr4.webp?originalFilename=identity-indexed-network.webp\",src:\"https://framerusercontent.com/images/YzU2aA7O6YU8T4W95LElYxmr4.webp\",srcSet:\"https://framerusercontent.com/images/YzU2aA7O6YU8T4W95LElYxmr4.webp?scale-down-to=512 512w,https://framerusercontent.com/images/YzU2aA7O6YU8T4W95LElYxmr4.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/YzU2aA7O6YU8T4W95LElYxmr4.webp 1200w\"}),/*#__PURE__*/e(\"p\",{children:\"With every network connection authenticated against a central user identity and authorized by security policies defined in Twingate, for the first time ever, our customers now have an identity-first view of their private network flow. All private traffic is always directly associated with user identity, including the authorization rule that allowed the connection, network path information, data volume transferred, and port details.\"}),/*#__PURE__*/e(\"p\",{children:\"Identity-indexed network analytics make it straightforward to not only determine who accessed internal resources, but to quickly identify usage patterns, trends, and spot anomalous behavior. For forensic investigations, gone are the days of piecing together time-stamped network logs and IP addresses from disparate systems to try to understand a sequence of events. Identity ties all access information together, regardless of location, device, operating system, or network.\"}),/*#__PURE__*/e(\"h3\",{children:\"Secure your internet traffic with DNSFilter\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,EtbvrvgIhsF4tWIgAeGNsfvDivE.webp?originalFilename=dns-filter.webp\",src:\"https://framerusercontent.com/images/EtbvrvgIhsF4tWIgAeGNsfvDivE.webp\",srcSet:\"https://framerusercontent.com/images/EtbvrvgIhsF4tWIgAeGNsfvDivE.webp?scale-down-to=512 512w,https://framerusercontent.com/images/EtbvrvgIhsF4tWIgAeGNsfvDivE.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/EtbvrvgIhsF4tWIgAeGNsfvDivE.webp 1200w\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/t(\"em\",{children:[\"In 2020 we saw a huge increase in the number of online threats targeting companies who have transitioned to a remote work environment. Our partnership with Twingate allows these companies to, through the use of our products, have access to true end-to-end threat protection while connecting from anywhere on earth. We\u2019re excited to partner with a Zero Trust solution like Twingate that provides an alternative to traditional VPNs.\",/*#__PURE__*/e(\"br\",{}),\"\u2014 Ken Carnesi, CEO, DNSFilter\"]})}),/*#__PURE__*/e(\"p\",{children:\"Twingate secures your private network traffic, but we also recognize the risk that public internet access introduces to company devices, particularly as the prevalence of ransomware and phishing attacks has surged in our work-from-anywhere reality. Working from home, without the protection of a corporate firewall, has left devices more vulnerable. DNS filtering is a critical component in protecting employees from these threats.\"}),/*#__PURE__*/e(\"p\",{children:\"Since our inception we\u2019ve made it an explicit product goal to ensure that we \u201Cplay nice\u201A with other network security products. Our belief is that a combination of specialized products, with the companies behind them focused on solving their problem space in depth, presents the best possible outcome for customers.\"}),/*#__PURE__*/e(\"p\",{children:\"As we\u2019ve gotten to know the team at DNSFilter, they couldn\u2019t embody this spirit of focus in depth more fully, and we\u2019re excited to partner with them to offer a complete solution to protect employees. With DNSFilter\u2019s AI-powered content filtering solution and multi-platform roaming client, admins can now deploy DNSFilter and Twingate side by side to fully protect both private and public user traffic, no matter where they are and what device they\u2019re on.\"}),/*#__PURE__*/e(\"h3\",{children:\"The most innovative companies are adopting Twingate\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,guj8ZYOrnDcIMSGCCGy5cnxbs.webp?originalFilename=customers.webp\",src:\"https://framerusercontent.com/images/guj8ZYOrnDcIMSGCCGy5cnxbs.webp\",srcSet:\"https://framerusercontent.com/images/guj8ZYOrnDcIMSGCCGy5cnxbs.webp?scale-down-to=512 512w,https://framerusercontent.com/images/guj8ZYOrnDcIMSGCCGy5cnxbs.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/guj8ZYOrnDcIMSGCCGy5cnxbs.webp 1200w\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/t(\"em\",{children:[\"From our company Zoom call after rolling out Twingate:\u201CAlready changed my entire life. Run, don\u2019t walk, to Twingate!\u201A\",/*#__PURE__*/e(\"br\",{}),\"\u2014 Neal Harris, Director of Security, Persona\"]})}),/*#__PURE__*/t(\"p\",{children:[\"Since we launched Twingate, we have been fortunate to partner with some of the most innovative, fastest-growing companies around the world. Most of \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/customers\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"our customers\"})}),\" are facing similar challenges\u2014juggling efforts to rapidly scale their teams while dealing with the realities and limitations of remote work using outdated technology.\"]}),/*#__PURE__*/e(\"p\",{children:\"Most notably, our customers have found tremendous value in moving away from their existing piecemeal network access solutions built on top of VPNs, which have become brittle and difficult to manage after years of accumulating tech debt. Fast-growing companies like Human Interest, Frame.io, and Persona have been able to simplify access for employees, contractors, and admins, while achieving a more robust security posture by transitioning to Twingate.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate customers report that they often reduce deployment time by 80% and ongoing client setup and support load by 90% compared to their previous VPN, all while expanding their distributed workforces in a more secure way.\"}),/*#__PURE__*/e(\"h3\",{children:\"This is just the beginning\"}),/*#__PURE__*/e(\"p\",{children:\"We have an ambitious 2021 product roadmap that will continue to build on the foundation that we\u2019ve laid out above. We\u2019re proud of our focus on ease of use, which has allowed our customers to adopt our vision of Identity-First Networking with minimal effort.\"}),/*#__PURE__*/t(\"p\",{children:[\"Give Twingate a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"try for free\"})}),\" today. We\u2019d love to hear \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/contact\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"what you think\"})}),\".\"]})]})},{index:129,id:\"p3TH_sjzA\",[h]:!0,[d]:!1,[p]:\"Twingate: the Anti-VPN for the Work from Anywhere era\",[u]:\"Twingate Series A\",[m]:\"twingate-series-a-announcement\",[g]:\"\",[w]:\"Tony Huie\",[f]:\"2020-10-28T00:00:00.000Z\",[y]:\"KI2UGBfh7\",[b]:T({src:\"https://framerusercontent.com/images/7Ked8U2RxghXPKZRks98Dsh4VQ.png\",srcSet:\"https://framerusercontent.com/images/7Ked8U2RxghXPKZRks98Dsh4VQ.png?scale-down-to=512 512w,https://framerusercontent.com/images/7Ked8U2RxghXPKZRks98Dsh4VQ.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/7Ked8U2RxghXPKZRks98Dsh4VQ.png 1201w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/7Ked8U2RxghXPKZRks98Dsh4VQ.png\",srcSet:\"https://framerusercontent.com/images/7Ked8U2RxghXPKZRks98Dsh4VQ.png?scale-down-to=512 512w,https://framerusercontent.com/images/7Ked8U2RxghXPKZRks98Dsh4VQ.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/7Ked8U2RxghXPKZRks98Dsh4VQ.png 1201w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"When I started Twingate with my co-founders Alex and Lior in 2019, our core hypothesis was that the secure access problem (aka the \u201CVPN problem\u201A) was more than just a technology problem.  It was a \",/*#__PURE__*/e(\"strong\",{children:\"usability\"}),\" problem.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Alex and I first saw the power of treating usability as a first-class citizen when we helped take Dropbox to the business market a decade ago.  Back then, we saw how the simplicity and ease-of-use of Dropbox could revolutionize outdated workflows and clunky, legacy products like file servers.  When we dug into the secure access problem, it was clear that the same patterns existed.  There was a decades-old technology in VPN that was causing friction and frustration for end-users and IT teams, but alternatives were too hard to adopt.  More than that, VPNs created structural security problems that were resulting in \",/*#__PURE__*/e(s,{href:\"https://arstechnica.com/information-technology/2020/01/unpatched-vpn-makes-travelex-latest-victim-of-revil-ransomware\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"massive security breaches\"})}),\" and \",/*#__PURE__*/e(s,{href:\"https://us-cert.cisa.gov/ncas/current-activity/2019/10/07/nsa-releases-advisory-mitigating-recent-vpn-vulnerabilities\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"urgent security advisories\"})}),\" from the NSA.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Over the last 18 months, we\u2019ve assembled a team uniquely suited to solve this problem.  We paired an engineering team with deep expertise in networking and large scale systems, with the product design DNA necessary to build a product that can be easily deployed by companies of all sizes. Of course, it wasn\u2019t easy. We\u2019ve had to overcome a number of interesting technical hurdles to architect and build a flexible, high-performance service that \u201Cjust works\u201A no matter where your users are (read more \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/how-twingate-works\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"here\"})}),\").\"]}),/*#__PURE__*/t(\"p\",{children:[\"The result is Twingate\u2014 the first zero trust access solution with the ease of use and deployment you expect from a modern technology product. Since our \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/introducing-twingate\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"soft-launch\"})}),\" in May, we\u2019ve been blown away by the feedback we\u2019ve received from users and customers all over the world (and even ended up \",/*#__PURE__*/e(s,{href:\"https://www.producthunt.com/posts/twingate\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"#1 on ProductHunt\"})}),\"!). The \u201CFuture of Work\u201A arrived early due to COVID-19, and we\u2019re excited to announce that Twingate has reached general availability to meet this moment. If you\u2019re using a VPN at your company, Twingate replaces it with a faster, more secure, and easier-to-manage alternative designed for today\u2019s world of distributed work.\"]}),/*#__PURE__*/e(\"p\",{children:\"We\u2019re also excited to share that we\u2019ve raised $17 million in Series A funding from leading venture capital firms WndrCo, 8VC, Green Bay Ventures, SignalFire, and Dropbox founders Drew Houston and Arash Ferdowsi. These are investors we\u2019ve had the pleasure of working with for a decade and they share our product philosophy.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"VPNs were designed for a bygone era\"})}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,OLE2dDOW740rElbdn7uuVXAJdmY.webp?originalFilename=vpn-design.webp\",src:\"https://framerusercontent.com/images/OLE2dDOW740rElbdn7uuVXAJdmY.webp\",srcSet:\"https://framerusercontent.com/images/OLE2dDOW740rElbdn7uuVXAJdmY.webp?scale-down-to=512 512w,https://framerusercontent.com/images/OLE2dDOW740rElbdn7uuVXAJdmY.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/OLE2dDOW740rElbdn7uuVXAJdmY.webp 1201w\"}),/*#__PURE__*/e(\"p\",{children:\"Corporate networks were designed for a world where everyone worked in an office and all the apps and data were hosted on-premise. In the 10% case where employees traveled or worked from home, legacy products such as VPNs were deployed to allow remote work.\"}),/*#__PURE__*/e(\"p\",{children:\"Today, employees work from everywhere and anywhere, and the apps and data they need access to live in multiple locations and on multiple networks. Legacy tools like VPN that worked two decades ago now result in laggy Zoom calls, sluggish collaboration tools, and frustration for end-users and IT admins alike.\"}),/*#__PURE__*/t(\"p\",{children:[\"More importantly, these legacy tools have structural security vulnerabilities that have led to \",/*#__PURE__*/e(s,{href:\"https://www.sciencetimes.com/articles/26768/20200806/new-breach-leaks-900-enterprise-credentials.htm\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"countless security breaches\"})}),\". Over the last 18 months, nearly \",/*#__PURE__*/e(s,{href:\"https://www.kroll.com/en/insights/publications/cyber/monitor/vpn-vulnerabilities-rising-data-exposure-ransomware#:~:text=The%20known%20vulnerabilities%20include%20Pulse,authentication%20to%20a%20VPN%20appliance.\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"every major corporate VPN provider\"})}),\" has disclosed a serious vulnerability, and VPNs are now the \",/*#__PURE__*/e(s,{href:\"https://www.zdnet.com/article/top-exploits-used-by-ransomware-gangs-are-vpn-bugs-but-rdp-still-reigns-supreme\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"#2 most common entry point\"})}),\" for ransomware attacks.\"]}),/*#__PURE__*/e(\"p\",{children:\"The time has come for corporate VPNs to go the way of the fax machine.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"A modern alternative designed for today\u2019s world\"})}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,vcTFJL1xOpAYw834cwI0V343TM.webp?originalFilename=alternative.webp\",src:\"https://framerusercontent.com/images/vcTFJL1xOpAYw834cwI0V343TM.webp\",srcSet:\"https://framerusercontent.com/images/vcTFJL1xOpAYw834cwI0V343TM.webp?scale-down-to=512 512w,https://framerusercontent.com/images/vcTFJL1xOpAYw834cwI0V343TM.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/vcTFJL1xOpAYw834cwI0V343TM.webp 1500w\"}),/*#__PURE__*/t(\"p\",{children:[\"We designed Twingate to make access to your company\u2019s private resources and networks simple, fast, and secure. With Twingate, you get usability \",/*#__PURE__*/e(\"em\",{children:/*#__PURE__*/e(\"strong\",{children:\"and\"})}),\" security for everyone in your company:\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"For IT admins, we\u2019ve invested a ton of energy in making Twingate easy to deploy. IT teams were already stretched thin when the pandemic hit. Twingate alleviates the heavy burden of securing your remote workers with a seamless deployment process designed to take 15 minutes or less. Twingate deploys over your existing network to minimize change management and integrates with your current identity provider to simplify user management.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"For end-users, Twingate works in the background without the need for constant babysitting. Our apps intelligently segregate traffic before it leaves your device and directly routes connections to the right destination. The result is a snappy internet experience for your remote workers and no more dropped Zoom calls.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"For security teams, Twingate makes moving to a \u201Czero trust\u201A security model accessible. With all the hype surrounding the \u201Cwhy\u201A of zero trust, we believe not enough attention is focused on the \u201Chow\u201A of that model. Without easing the friction, zero trust projects inevitably stall. With Twingate, zero trust concepts like continuous authorization, least-privilege access, and visibility are built natively into the product.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Our team worked obsessively to make Twingate a strictly better alternative to your company\u2019s VPN - easier to set up, easier to manage, and easier to use while significantly up-leveling your security posture.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Don\u2019t just take our word for it\"})}),/*#__PURE__*/e(\"p\",{children:\"We\u2019ve been humbled by the opportunity to partner with a fantastic group of early customers who are some of the fastest-growing companies in their industries.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,BrmwgQkLWPEC9XWi7HMgTJiWc8.webp?originalFilename=feedback.webp\",src:\"https://framerusercontent.com/images/BrmwgQkLWPEC9XWi7HMgTJiWc8.webp\",srcSet:\"https://framerusercontent.com/images/BrmwgQkLWPEC9XWi7HMgTJiWc8.webp?scale-down-to=2048 693w,https://framerusercontent.com/images/BrmwgQkLWPEC9XWi7HMgTJiWc8.webp?scale-down-to=4096 1386w,https://framerusercontent.com/images/BrmwgQkLWPEC9XWi7HMgTJiWc8.webp 1600w\"}),/*#__PURE__*/e(\"p\",{children:\"\u2026and we\u2019re just getting started!\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Try Twingate today\"})}),/*#__PURE__*/e(\"p\",{children:\"The world is being re-wired for remote & distributed work. We\u2019re helping companies re-wire their internal networks for this reality.\"}),/*#__PURE__*/t(\"p\",{children:[\"Give Twingate a \",/*#__PURE__*/e(s,{href:\"https://auth.twingate.com/signup\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"try for free\"})}),\". You\u2019ll love how easy it is.\"]})]})},{index:130,id:\"PYpXWHk1O\",[h]:!0,[d]:!1,[p]:\"New Linux Client & Designing Twingate for Developers\",[u]:\"Designing Twingate for Developers\",[m]:\"designing-remote-access-for-developers\",[g]:\"\",[w]:\"Lior Rozner\",[f]:\"2020-08-19T00:00:00.000Z\",[y]:\"KI2UGBfh7\",[b]:T({src:\"https://framerusercontent.com/images/z6rkHs7n8nIYg1EM8TK2U8XL5fE.webp\",srcSet:\"https://framerusercontent.com/images/z6rkHs7n8nIYg1EM8TK2U8XL5fE.webp?scale-down-to=512 512w,https://framerusercontent.com/images/z6rkHs7n8nIYg1EM8TK2U8XL5fE.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/z6rkHs7n8nIYg1EM8TK2U8XL5fE.webp 2048w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/z6rkHs7n8nIYg1EM8TK2U8XL5fE.webp\",srcSet:\"https://framerusercontent.com/images/z6rkHs7n8nIYg1EM8TK2U8XL5fE.webp?scale-down-to=512 512w,https://framerusercontent.com/images/z6rkHs7n8nIYg1EM8TK2U8XL5fE.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/z6rkHs7n8nIYg1EM8TK2U8XL5fE.webp 2048w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"We\u2019re delighted to announce the release of our \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/linux?utm_source=twingate&utm_medium=blog&utm_campaign=developer_post\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Twingate client app for Linux\"})}),\"! With this release, Twingate now supports all major desktop and mobile operating systems, including Android, iOS, macOS, and Windows.\"]}),/*#__PURE__*/e(\"img\",{alt:\"Twingate client for Linux\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,Ss2gf8Y1C93xYjU5MbSApTq6JzA.webp?originalFilename=linux-client.webp\",src:\"https://framerusercontent.com/images/Ss2gf8Y1C93xYjU5MbSApTq6JzA.webp\",srcSet:\"https://framerusercontent.com/images/Ss2gf8Y1C93xYjU5MbSApTq6JzA.webp?scale-down-to=512 512w,https://framerusercontent.com/images/Ss2gf8Y1C93xYjU5MbSApTq6JzA.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/Ss2gf8Y1C93xYjU5MbSApTq6JzA.webp 1600w\"}),/*#__PURE__*/e(\"p\",{children:\"We\u2019re particularly excited about this because of its relevance to the group of users who we had in mind when we started building Twingate: developers.\"}),/*#__PURE__*/e(\"p\",{children:\"We wanted to share our thinking behind designing secure, remote access for developers. While companies have trended towards remote work for everyone - something accelerated by the COVID-19 pandemic - remote access is not new for engineering organizations. We focus on developers for several reasons:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"They\u2019re the group in an organization that often relies the most on remote access to perform their jobs.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"As more developer workloads move to the cloud, developers are essentially always working remotely and often have complex access needs across multiple cloud platforms.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"We are developers ourselves and would love never to have to wrangle with VPNs again!\"})})]}),/*#__PURE__*/e(\"h3\",{children:\"No one loves their VPN, especially developers\"}),/*#__PURE__*/t(\"p\",{children:[\"When we were designing Twingate, we interviewed over fifty IT, security, and networking professionals to understand the existing pain with remote access. While everyone we spoke to viewed the remote access experience as broken, we consistently heard that the experience for developers was particularly painful. Unlike non-developers who usually interact primarily with public-facing SaaS applications, most of the resources that developers access are protected behind closed, private networks. And this is for good reason: these resources are some of the most sensitive assets in a company. Databases, servers, production networks, etc. all require a higher level of protection. However, the challenge is that the existing VPN + perimeter-based model for providing secure remote access to these resources is broken, as we covered in \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/blog/introducing-twingate?utm_source=twingate&utm_medium=blog&utm_campaign=developer_post\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"an earlier post\"})}),\".\"]}),/*#__PURE__*/e(\"p\",{children:\"For developers, the problems with remote access primarily manifest in these ways:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Poor end-user experience with slow connections and unreliable clients\"}),\" VPNs are primarily set up as \u201Cfull tunnel,\u201A which means that all the traffic from your device is routed through a central VPN gateway when your VPN is turned on. This is particularly problematic when your VPN forces high-bandwidth apps like video conferencing (e.g. Zoom, Google Meet) through a VPN tunnel to your central network, adding unnecessary latency and network congestion. Some VPN clients can be set up to \u201Csplit tunnel\u201A traffic but are \",/*#__PURE__*/e(s,{href:\"https://documentation.meraki.com/MX/Client_VPN/Configuring_Split_Tunnel_Client_VPN\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"overly complex\"})}),\" to set up. Moreover, VPN clients are often unreliable, regularly disconnecting when you move WiFi networks, close your laptop lid, etc. It\u2019s like suffering from death by a thousand cuts.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Complex to set up and maintain due to network restructuring requirements\"}),\" Setting up remote access is complex because it requires you to restructure your network to enable remote access: creating a DMZ, dedicated subnets, routing rules, firewall settings, etc. Many developers spend hours or days wrangling VPNs to work correctly, and parsing the \",/*#__PURE__*/e(s,{href:\"https://openvpn.net/community-resources/how-to#openvpn-quickstart\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"set up instructions\"})}),\" can be tedious, error-prone, and time-consuming. Furthermore, if anything changes on the network or if you need to add a new VPC or network segment, you have to do this all over again. For organizations with even a small team of developers, this becomes a large burden to carry.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Difficult to implement modern security practices given this complexity\"}),\" Because of all this friction, it\u2019s extremely challenging to implement important security practices like proper network and resource segmentation, least-privileged user access permissions, and SSO/MFA policies for developer resources. Most development teams end up over-provisioning access so users have much broader access than they actually need, and have to manage multiple systems that hold credentials, keys, etc. This is particularly challenging for onboarding and offboarding users, and many companies end up spending inordinate amounts of time provisioning accounts and setting up devices for users.\"]})})]}),/*#__PURE__*/e(\"h3\",{children:\"Remote access that \u201Cjust works\u201A\"}),/*#__PURE__*/t(\"p\",{children:[\"When we designed Twingate, we made it our mission to create a modern solution for remote access that \u201Cjust works\u201A for users, reduces management overhead for IT/DevOps, and significantly upgrades your security posture out of the box. One of our primary product goals was to design Twingate to be \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/twingate-configuration?utm_source=twingate&utm_medium=blog&utm_campaign=developer_post\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"set up in 15 minutes or less\"})}),\", and we also designed a rich feature set to address the specific pain points for developers.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Twingate operates as a \u201Cremote access\u201A overlay on your existing network that authorizes each connection request and routes it directly to the right destination. This means Twingate requires no changes to your network infrastructure, no changes to your apps and services, and no changes to your devices to get up and running. Just add our network \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/understanding-access-nodes?utm_source=twingate&utm_medium=blog&utm_campaign=developer_post\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"connectors\"})}),\" to any number of network segments (on-prem, cloud, multi-cloud, doesn\u2019t matter!), define user access permissions by \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/resources-and-access-nodes#resource-definition\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"destination address\"})}),\", and install the Twingate \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/download?utm_source=twingate&utm_medium=blog&utm_campaign=developer_post\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"client app\"})}),\" to access. No complicated firewall rules, routing rule changes, or complex proxy settings.\"]}),/*#__PURE__*/e(\"img\",{alt:\"Twingate overlays on existing networks without requiring infrastructure changes\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,9x83LtssrQxTexialSI2Txv57Uk.webp?originalFilename=twingate.webp\",src:\"https://framerusercontent.com/images/9x83LtssrQxTexialSI2Txv57Uk.webp\",srcSet:\"https://framerusercontent.com/images/9x83LtssrQxTexialSI2Txv57Uk.webp?scale-down-to=512 512w,https://framerusercontent.com/images/9x83LtssrQxTexialSI2Txv57Uk.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/9x83LtssrQxTexialSI2Txv57Uk.webp 1600w\"}),/*#__PURE__*/e(\"p\",{children:\"Also, unlike other \u201Cmesh\u201A private network products, we don\u2019t require you to remap every destination resource to new IP addresses. Users connect to their resources using the existing destination addresses they\u2019ve always used and Twingate does all the heavy lifting in the background to route traffic appropriately to the right destination.\"}),/*#__PURE__*/e(\"p\",{children:\"We\u2019ve invested in a number of features designed specifically to remove the friction for developer workflows:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Always-on smart routing that segregates traffic automatically\"}),\" Our client apps are designed to automatically route traffic to the right destination with minimum latency. Authorized connections bound for private resources are routed directly to the destination network, unauthorized access attempts never even leave the device, and public internet traffic exits over default routes of the device to minimize any performance hit for the user. Our clients are lightweight and have a minimal CPU and memory footprint, and we\u2019ve spent years of R&D and field testing our client technology across virtually every type of network environment to ensure high performance.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Protocol agnostic so every service works out of the box\"}),\" With Twingate, every service works out of the box. RDP, SSH, and (of course) HTTPS all work without requiring any configuration changes to devices or destination services. No proxy settings, SAML configuration, or PAM module configuration required. Twingate intelligently forwards any authorized connections to the right destination, regardless of the application. Even private DNS names are resolved correctly without changes to local device DNS settings!\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Deployment automation to integrate into existing CI/CD pipelines\"}),\" We know that modern development teams automate everything (or at least try to!), and Twingate is designed to seamlessly integrate with \u201Cinfrastructure as code\u201A processes. Twingate can be fully managed via our API that allows access policies to be applied as services and resources are spun up and down. Our network connectors are also fully containerized and can be integrated into Terraform templates and Helm charts.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Extend SSO & MFA checks to any arbitrary service\"}),\" Twingate delegates authentication to your existing Identity Provider, and provides an extra layer of authorization for every connection based on defined access policies. Because Twingate operates as a network authorization extension to your IDP policies, this allows you to set identity-based access policies that tie to your central IDP without requiring any modifications to the end resource. This is particularly helpful for resources like databases, servers, and clusters that don\u2019t play nicely with your IDP or in some cases don\u2019t provide an interface for user authentication at all. Twingate can enable your IDP to fully function as a central service that can be used to easily on/offboard developers and reduce the overhead of managing multiple authentication systems for access to your developer resources.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"\u201CZero trust\u201A security without the hassle\"}),\" Finally, Twingate provides the easiest path to achieving a \u201Czero trust\u201A security posture. Least privilege access policies can be narrowly defined by resource to roles and groups, users never \u201Cjoin the network\u201A which prevents lateral movement by potential attackers, and the lack of public VPN gateways eliminates a major entry point for attacks. Detailed analytics also provide newfound visibility into access patterns to identify potential security issues. Twingate has been designed to restore the balance between security and usability, and provide a strictly improved security posture compared to traditional VPN-based approaches to remote access.\"]})})]}),/*#__PURE__*/e(\"h3\",{children:\"Get started for free today\"}),/*#__PURE__*/e(\"p\",{children:\"As developers ourselves, we know the pain of securing remote access. We were motivated to solve this problem because every solution on the market presented a tradeoff between security and usability. We believe this was a false choice because security practices and products only work if they are embraced by users!\"}),/*#__PURE__*/t(\"p\",{children:[\"If you\u2019re a developer considering deploying a VPN or are already using one, we\u2019d love for you to try Twingate and see the experience yourself. \",/*#__PURE__*/e(s,{href:\"https://auth.twingate.com/signup?utm_source=twingate&utm_medium=blog&utm_campaign=developer_post\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Sign up for free here\"})}),\".\"]}),/*#__PURE__*/t(\"p\",{children:[\"We also invite you to read more about \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/how-twingate-works?utm_source=twingate&utm_medium=blog&utm_campaign=developer_post\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"our technology\"})}),\" at our \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs?utm_source=twingate&utm_medium=blog&utm_campaign=developer_post\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"documentation site\"})}),\".\"]})]})},{index:131,id:\"LQySvAizq\",[h]:!0,[d]:!1,[p]:\"Introducing Twingate\",[u]:\"Introducing Twingate\",[m]:\"introducing-twingate\",[g]:\"\",[w]:\"Alex Marshall\",[f]:\"2020-05-27T00:00:00.000Z\",[y]:\"KI2UGBfh7\",[b]:T({src:\"https://framerusercontent.com/images/ba1fdEEuhQR3Jy5YoNA7AqxEYk.png\",srcSet:\"https://framerusercontent.com/images/ba1fdEEuhQR3Jy5YoNA7AqxEYk.png?scale-down-to=512 512w,https://framerusercontent.com/images/ba1fdEEuhQR3Jy5YoNA7AqxEYk.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/ba1fdEEuhQR3Jy5YoNA7AqxEYk.png 1201w\"},\"\"),[v]:T({src:\"https://framerusercontent.com/images/ba1fdEEuhQR3Jy5YoNA7AqxEYk.png\",srcSet:\"https://framerusercontent.com/images/ba1fdEEuhQR3Jy5YoNA7AqxEYk.png?scale-down-to=512 512w,https://framerusercontent.com/images/ba1fdEEuhQR3Jy5YoNA7AqxEYk.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/ba1fdEEuhQR3Jy5YoNA7AqxEYk.png 1201w\"},\"\"),[k]:/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Today we are proud to announce the launch of Twingate, a modern remote access solution designed to markedly improve your security posture without introducing compromise and headaches around deployment and ease of use. If you are a developer, work in DevOps, or are a network administrator, Twingate has been designed with your needs in mind.\"}),/*#__PURE__*/t(\"p\",{children:[\"We first decided to build Twingate when we were doing customer research almost 18 months ago. It was abundantly clear that remote access was broken. VPN\u2014a technology that is almost 30 years old\u2014has remained a de facto standard for remote access despite serving user needs poorly, introducing additional complexity into infrastructure decisions, and being the weakness behind \",/*#__PURE__*/e(s,{href:\"https://arstechnica.com/information-technology/2020/01/unpatched-vpn-makes-travelex-latest-victim-of-revil-ransomware\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"multi-million dollar security breaches\"})}),\". Given these serious flaws, and our own negative experiences using VPN as employees, we were baffled as to why a new product had not emerged to replace it. We moved on from Windows 95 long ago, so why hasn\u2019t remote access caught up?\"]}),/*#__PURE__*/e(\"h3\",{children:\"Underestimating the threat of an outdated model\"}),/*#__PURE__*/e(\"p\",{children:\"After speaking to nearly fifty IT, security, and networking professionals at companies of widely varying sizes across multiple industries, a few trends became apparent, repeated in almost every conversation. The most surprising of these is that most people we spoke to are aware that a more secure approach to remote access exists, but they think that it\u2019s far too complex and costly to implement. Summarizing our customer conversations, these are the main trends that drove the approach we took with Twingate:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"The traditional \u201C\",/*#__PURE__*/e(s,{href:\"https://medium.com/@lee2b/a-tale-of-two-enterprise-security-architectures-replacing-a-derelict-castle-and-moat-with-the-fb84158204f3\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"castle and moat\"})}),\"\u201A approach to network security persists, despite monumental changes to how we work over the past 20 years.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"The security risks inherent to \",/*#__PURE__*/e(s,{href:\"https://en.wikipedia.org/wiki/Network_Lateral_Movement\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"lateral movement\"})}),\" and attack \u201Cblast radius\u201A are significantly underestimated and broadly unmitigated\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Most people are aware that a much more secure approach exists, with Google\u2019s \",/*#__PURE__*/e(s,{href:\"https://cloud.google.com/beyondcorp\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"BeyondCorp\"})}),\" proprietary implementation cited frequently\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"However, the \",/*#__PURE__*/e(s,{href:\"https://www.techrepublic.com/article/why-many-security-pros-lack-confidence-in-their-implementation-of-zero-trust\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"level of complexity\"})}),\" involved in implementing an equivalent solution is perceived to be insurmountable\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"Reflecting on the above trends, the diagram below likely illustrates a network architecture very close to what you regularly access, administer, or both. Access involves some brittle combination of static IP whitelisting, subnet mapping for remote users, a vulnerable gateway on the public internet, firewall rule management, and routing rule management. That level of management overhead doesn\u2019t even start to account for how vulnerable this general network architecture is to lateral movement and the resulting potential for serious business losses and impact.\"}),/*#__PURE__*/e(\"img\",{alt:\"Traditional perimeter-based network architecture with VPN\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,UFqdTh41LQfEcvLSQeRf36zGE.png?originalFilename=traditional-network.png\",src:\"https://framerusercontent.com/images/UFqdTh41LQfEcvLSQeRf36zGE.png\",srcSet:\"https://framerusercontent.com/images/UFqdTh41LQfEcvLSQeRf36zGE.png?scale-down-to=512 512w,https://framerusercontent.com/images/UFqdTh41LQfEcvLSQeRf36zGE.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Traditional perimeter-based network architecture with VPN\"}),/*#__PURE__*/e(\"p\",{children:\"The reason that this architecture persists is grounded in a gradual creep outwards from an outdated perimeter-based approach to securing networks. However, with the dislocation of user devices, users, and applications alike, an entirely new approach is clearly needed to secure access.\"}),/*#__PURE__*/e(\"h3\",{children:\"Restoring the balance between security and ease of use\"}),/*#__PURE__*/t(\"p\",{children:[\"\u201CTwingate is the perfect product for the future of remote work. Business VPNs are a hassle - they get overloaded and cause problems for users working from home.\u201A\",/*#__PURE__*/e(\"br\",{}),\"\u2013 Matthew Hall, CTO at SpringboardVR\"]}),/*#__PURE__*/e(\"p\",{children:\"When designing Twingate, we knew that we would need to take a \u201Cno compromises\u201A approach to security, but the challenge was ensuring that the product would still be both easy to use and\u2014critically\u2014easy to adopt for end users and administrators alike. We\u2019re exceptionally proud of what we\u2019ve built, and like the customer quoted above, we think you\u2019ll find it surprisingly easy to both virtually eliminate your network\u2019s attack surface and improve users\u2019 experience at the same time.\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate\u2019s design and development are driven by the following core principles:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Undeniably more secure.\"}),\" Twingate uses standards-based cryptographic techniques to encrypt and authorize network traffic, but we take \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/architecture-overview\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"a unique approach\"})}),\" to the level of decentralized agreement that must exist to authorize network connections. (In fact, the name Twingate is derived from the multiple cryptographic checks that every network connection must pass.)\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Simple to deploy.\"}),\" Over and over again, we\u2019ve seen business products fail because they don\u2019t take into account the importance of minimizing the pain surrounding change management. Whether it\u2019s integrating with an \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/okta-configuration\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"existing identity provider\"})}),\", deploying infrastructure with a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/provision-the-new-access-node\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"one-line Docker command\"})}),\", or enabling \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/download\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"self-service deployment\"})}),\" for end users, we\u2019ve focused on making Twingate easy to use.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Designed for how we actually work today.\"}),\" Users access applications hosted in multiple environments from multiple devices, in multiple locations, and from multiple networks. These scenarios are not future trends authored by an industry analyst; this is the reality of working in 2020. Add to that the greatly expanded range and sophistication of cybersecurity threats, and it\u2019s clear that the old perimeter-based model is no longer adequate.\"]})})]}),/*#__PURE__*/e(\"img\",{alt:\"Simplified network architecture with Twingate\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,LcyRk1myNtDGNaRsEvw78F6dqY.png?originalFilename=twingate-architecture.png\",src:\"https://framerusercontent.com/images/LcyRk1myNtDGNaRsEvw78F6dqY.png\",srcSet:\"https://framerusercontent.com/images/LcyRk1myNtDGNaRsEvw78F6dqY.png?scale-down-to=512 512w,https://framerusercontent.com/images/LcyRk1myNtDGNaRsEvw78F6dqY.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Simplified network architecture with Twingate\"}),/*#__PURE__*/e(\"h3\",{children:\"Twingate\u2019s deployment model is incredibly simple:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Deploy a \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/understanding-access-nodes\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"connector\"})}),\" behind the firewall on any network that you need to provide remote access to.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Define any number of \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/resources-and-access-nodes#resource-definition\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"destination resources\"})}),\". Only these specific destinations will be accessible, and nothing more, resulting in a least-privileged access model by default.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Have users self-install the Twingate \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/download\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"client app\"})}),\" and authenticate using their existing credentials.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"That\u2019s it. Users continue to access resources using their existing addresses, using any application as they did before. No changes to the underlying applications or resources are required to allow Twingate to authorize access. Networks can also be completely segregated, minimizing the complexity of any routing or firewall rules. The right approach to network security can be implemented independently of any access needs.\"}),/*#__PURE__*/e(\"h3\",{children:\"Give yourself the network security you deserve (without the pain)\"}),/*#__PURE__*/t(\"p\",{children:[\"Though we never could have predicted the changes the world has seen since those first customer interviews, the security problems inherent to remote access are now \",/*#__PURE__*/e(s,{href:\"https://www.forbes.com/sites/stephenmcbride1/2020/05/14/why-the-largest-cyberattack-in-history-will-happen-within-six-months\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"more pressing than ever before\"})}),\", with remote work becoming an overnight necessity. The \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/about\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"whole team\"})}),\" has put a huge amount of effort into creating Twingate over the past 18 months, and we\u2019re confident that what we\u2019ve built represents a step function departure from today\u2019s typical experience and outdated technology.\"]}),/*#__PURE__*/t(\"p\",{children:[\"We invite you to \",/*#__PURE__*/e(s,{href:\"https://auth.twingate.com/signup\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"experience Twingate\"})}),\" for yourself and read more about \",/*#__PURE__*/e(s,{href:\"https://www.twingate.com/docs/how-twingate-works\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"the technology\"})}),\" behind our product.\"]})]})}];for(let e of S)Object.freeze(e);r(S,{xT_4SVBSB:{defaultValue:!0,title:\"Published\",type:o.Boolean},WRWHbDdVF:{defaultValue:!1,title:\"Featured\",type:o.Boolean},puRBDtdWy:{defaultValue:\"\",placeholder:\"Announcing Twingate's partnership with NextDNS\",title:\"Title\",type:o.String},htIvfYBOu:{defaultValue:\"\",placeholder:\"Keep it under 20 char so it looks good in the nav\",title:\"Short Title\",type:o.String},KppWsNgH6:{title:\"Slug\",type:o.String},T0RLCFXgR:{defaultValue:\"\",title:\"Subtitle\",type:o.String},NKOuDS7O_:{defaultValue:\"\",placeholder:\"Emily Lehman\",title:\"Author\",type:o.String},BOY5LSewc:{title:\"Date\",type:o.Date},sgpwe4L0J:{options:[\"KI2UGBfh7\",\"Q0hjKFNAz\",\"nwIUHELao\"],optionTitles:[\"News\",\"Insights\",\"Tutorials\"],title:\"Category\",type:o.Enum},YnwyMK7wB:{title:\"Image\",type:o.ResponsiveImage},BkRMOcYdn:{title:\"Social Image\",type:o.ResponsiveImage},HHZApOdSa:{defaultValue:\"\",title:\"Content\",type:o.RichText}}),S.displayName=\"Blog\";export default S;export const sgpwe4L0JToDisplayName=(e,t)=>{switch(null==t||t.fallback,e){case\"KI2UGBfh7\":return\"News\";case\"Q0hjKFNAz\":return\"Insights\";case\"nwIUHELao\":return\"Tutorials\";default:return\"\";}};export const enumToDisplayNameFunctions={sgpwe4L0J:sgpwe4L0JToDisplayName};export const utils={async getSlugByRecordId(e,t){var r;return null===(r=S.find(t=>t.id===e))||void 0===r?void 0:r[m];},async getRecordIdBySlug(e,t){var r;return null===(r=S.find(t=>t[m]===e))||void 0===r?void 0:r.id;}};\nexport const __FramerMetadata__ = {\"exports\":{\"utils\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"data\",\"name\":\"data\",\"annotations\":{\"framerCollectionUtils\":\"1\",\"framerRecordIdKey\":\"id\",\"framerRecordIndexKey\":\"index\",\"framerData\":\"\",\"framerEnumToDisplayNameUtils\":\"2\",\"framerRecordIncludedLocalesKey\":\"includedLocales\",\"framerCollectionId\":\"wtyR92LHZ\",\"framerSlug\":\"KppWsNgH6\",\"framerContractVersion\":\"1\"}},\"enumToDisplayNameFunctions\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"sgpwe4L0JToDisplayName\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}", "import{fontStore}from\"framer\";fontStore.loadWebFontsFromSelectors([\"CUSTOM;TT Hoves Medium\"]);export const fonts=[{family:\"TT Hoves Medium\",moduleAsset:{localModuleIdentifier:\"local-module:css/PihfgTAR5:default\",url:\"assets/M4cAr8oQzbyO9Ynb0WkinOqcoI.woff2\"},url:new URL(\"assets/M4cAr8oQzbyO9Ynb0WkinOqcoI.woff2\",\"https://framerusercontent.com/modules/udB93xVEVWDRpZADqEsc/tBcUI4ZQoOghAwZB22C8/PihfgTAR5.js\").href}];export const css=['.framer-Yr5fN .framer-styles-preset-137gzas:not(.rich-text-wrapper), .framer-Yr5fN .framer-styles-preset-137gzas.rich-text-wrapper p, .framer-Yr5fN .framer-styles-preset-137gzas.rich-text-wrapper [data-preset-tag=\"p\"] { --framer-font-family: \"TT Hoves Medium\", serif; --framer-font-size: 13px; --framer-font-style: normal; --framer-font-weight: 400; --framer-letter-spacing: 0.15px; --framer-line-height: 1.5em; --framer-paragraph-spacing: 0px; --framer-text-alignment: start; --framer-text-color: var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, #ffffff); --framer-text-decoration: none; --framer-text-transform: none; }','@media (max-width: 1199px) and (min-width: 810px) { .framer-Yr5fN .framer-styles-preset-137gzas:not(.rich-text-wrapper), .framer-Yr5fN .framer-styles-preset-137gzas.rich-text-wrapper p, .framer-Yr5fN .framer-styles-preset-137gzas.rich-text-wrapper [data-preset-tag=\"p\"] { --framer-font-family: \"TT Hoves Medium\", serif; --framer-font-size: 13px; --framer-font-style: normal; --framer-font-weight: 400; --framer-letter-spacing: 0.15px; --framer-line-height: 1.5em; --framer-paragraph-spacing: 0px; --framer-text-alignment: start; --framer-text-color: var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, #ffffff); --framer-text-decoration: none; --framer-text-transform: none; } }','@media (max-width: 809px) and (min-width: 0px) { .framer-Yr5fN .framer-styles-preset-137gzas:not(.rich-text-wrapper), .framer-Yr5fN .framer-styles-preset-137gzas.rich-text-wrapper p, .framer-Yr5fN .framer-styles-preset-137gzas.rich-text-wrapper [data-preset-tag=\"p\"] { --framer-font-family: \"TT Hoves Medium\", serif; --framer-font-size: 13px; --framer-font-style: normal; --framer-font-weight: 400; --framer-letter-spacing: 0.15px; --framer-line-height: 1.5em; --framer-paragraph-spacing: 0px; --framer-text-alignment: start; --framer-text-color: var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, #ffffff); --framer-text-decoration: none; --framer-text-transform: none; } }'];export const className=\"framer-Yr5fN\";\nexport const __FramerMetadata__ = {\"exports\":{\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}", "import{fontStore}from\"framer\";fontStore.loadWebFontsFromSelectors([\"CUSTOM;TT Hoves Regular\"]);export const fonts=[{family:\"TT Hoves Regular\",moduleAsset:{localModuleIdentifier:\"local-module:css/xoAKFFJ8r:default\",url:\"assets/wgABDVIWK1vZ3ZH97n7INv3AEY.woff2\"},url:new URL(\"assets/wgABDVIWK1vZ3ZH97n7INv3AEY.woff2\",\"https://framerusercontent.com/modules/zTb2QvSvmhj3xmBSumVl/FxvjjbX0AxqllYQv4Tdf/xoAKFFJ8r.js\").href}];export const css=['.framer-hGpuW .framer-styles-preset-1btjufx:not(.rich-text-wrapper), .framer-hGpuW .framer-styles-preset-1btjufx.rich-text-wrapper p, .framer-hGpuW .framer-styles-preset-1btjufx.rich-text-wrapper [data-preset-tag=\"p\"] { --framer-font-family: \"TT Hoves Regular\", serif; --framer-font-size: 15px; --framer-font-style: normal; --framer-font-weight: 400; --framer-letter-spacing: 0px; --framer-line-height: 1.5em; --framer-paragraph-spacing: 15px; --framer-text-alignment: start; --framer-text-color: var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, #ffffff); --framer-text-decoration: none; --framer-text-transform: none; }','@media (max-width: 1199px) and (min-width: 810px) { .framer-hGpuW .framer-styles-preset-1btjufx:not(.rich-text-wrapper), .framer-hGpuW .framer-styles-preset-1btjufx.rich-text-wrapper p, .framer-hGpuW .framer-styles-preset-1btjufx.rich-text-wrapper [data-preset-tag=\"p\"] { --framer-font-family: \"TT Hoves Regular\", serif; --framer-font-size: 15px; --framer-font-style: normal; --framer-font-weight: 400; --framer-letter-spacing: 0px; --framer-line-height: 1.5em; --framer-paragraph-spacing: 15px; --framer-text-alignment: start; --framer-text-color: var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, #ffffff); --framer-text-decoration: none; --framer-text-transform: none; } }','@media (max-width: 809px) and (min-width: 0px) { .framer-hGpuW .framer-styles-preset-1btjufx:not(.rich-text-wrapper), .framer-hGpuW .framer-styles-preset-1btjufx.rich-text-wrapper p, .framer-hGpuW .framer-styles-preset-1btjufx.rich-text-wrapper [data-preset-tag=\"p\"] { --framer-font-family: \"TT Hoves Regular\", serif; --framer-font-size: 15px; --framer-font-style: normal; --framer-font-weight: 400; --framer-letter-spacing: 0px; --framer-line-height: 1.5em; --framer-paragraph-spacing: 15px; --framer-text-alignment: start; --framer-text-color: var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, #ffffff); --framer-text-decoration: none; --framer-text-transform: none; } }'];export const className=\"framer-hGpuW\";\nexport const __FramerMetadata__ = {\"exports\":{\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}", "// Generated by Framer (8857874)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,getFontsFromSharedStyle,Image,Link,RichText,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import EasingGradient from\"https://framerusercontent.com/modules/TqPeWj5f410fFZQ7gAgf/qKhK4bnhsmwaenV1TcQz/EasingGradient.js\";import*as sharedStyle1 from\"https://framerusercontent.com/modules/udB93xVEVWDRpZADqEsc/tBcUI4ZQoOghAwZB22C8/PihfgTAR5.js\";import*as sharedStyle from\"https://framerusercontent.com/modules/zTb2QvSvmhj3xmBSumVl/FxvjjbX0AxqllYQv4Tdf/xoAKFFJ8r.js\";import GraphicsButtonArrow from\"https://framerusercontent.com/modules/k2LXqFXKLfH5xo6YMaO2/WNzbIRtDtprBjkAcMlG0/pRemd4fMu.js\";const EasingGradientFonts=getFonts(EasingGradient);const GraphicsButtonArrowFonts=getFonts(GraphicsButtonArrow);const enabledGestures={iM5NBbyMm:{hover:true},Y5wUo8S7g:{hover:true}};const cycleOrder=[\"iM5NBbyMm\",\"Y5wUo8S7g\",\"hrDHi9fIu\"];const serializationHash=\"framer-mE3Px\";const variantClassNames={hrDHi9fIu:\"framer-v-1whgxu5\",iM5NBbyMm:\"framer-v-1yyqiic\",Y5wUo8S7g:\"framer-v-1dgrutt\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants===null||variants===void 0?void 0:variants.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const toResponsiveImage=value=>{if(typeof value===\"object\"&&value!==null&&typeof value.src===\"string\"){return value;}return typeof value===\"string\"?{src:value}:undefined;};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value!==null&&value!==void 0?value:config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion(React.Fragment);const humanReadableVariantMap={\"Variant 3\":\"hrDHi9fIu\",Default:\"iM5NBbyMm\",New:\"Y5wUo8S7g\"};const getProps=({height,id,image,link,subtitle,subtitleVisiblity,title,width,...props})=>{var _ref,_ref1,_ref2,_humanReadableVariantMap_props_variant,_ref3;return{...props,FCJjotThg:(_ref=title!==null&&title!==void 0?title:props.FCJjotThg)!==null&&_ref!==void 0?_ref:\"WebAuthn 2FA\",gXZzLrrxC:(_ref1=subtitle!==null&&subtitle!==void 0?subtitle:props.gXZzLrrxC)!==null&&_ref1!==void 0?_ref1:\"Feb 13, 2023\",j_lkVn6wH:(_ref2=subtitleVisiblity!==null&&subtitleVisiblity!==void 0?subtitleVisiblity:props.j_lkVn6wH)!==null&&_ref2!==void 0?_ref2:true,variant:(_ref3=(_humanReadableVariantMap_props_variant=humanReadableVariantMap[props.variant])!==null&&_humanReadableVariantMap_props_variant!==void 0?_humanReadableVariantMap_props_variant:props.variant)!==null&&_ref3!==void 0?_ref3:\"iM5NBbyMm\",W8QKdoWYc:image!==null&&image!==void 0?image:props.W8QKdoWYc,xB6GQkGqy:link!==null&&link!==void 0?link:props.xB6GQkGqy};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,FCJjotThg,gXZzLrrxC,W8QKdoWYc,xB6GQkGqy,j_lkVn6wH,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"iM5NBbyMm\",enabledGestures,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const ref1=React.useRef(null);const isDisplayed=()=>{if(baseVariant===\"hrDHi9fIu\")return false;return true;};const defaultLayoutId=React.useId();const sharedStyleClassNames=[sharedStyle.className,sharedStyle1.className];const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId!==null&&layoutId!==void 0?layoutId:defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(Link,{href:xB6GQkGqy,openInNewTab:false,smoothScroll:true,children:/*#__PURE__*/_jsxs(motion.a,{...restProps,...gestureHandlers,className:`${cx(serializationHash,...sharedStyleClassNames,\"framer-1yyqiic\",className,classNames)} framer-1d9ykku`,\"data-border\":true,\"data-framer-name\":\"Default\",layoutDependency:layoutDependency,layoutId:\"iM5NBbyMm\",ref:ref!==null&&ref!==void 0?ref:ref1,style:{\"--border-bottom-width\":\"0.5px\",\"--border-color\":\"var(--token-66d0cf7b-9eb8-4245-b770-5d2d61dad950, rgba(255, 255, 255, 0.1))\",\"--border-left-width\":\"0.5px\",\"--border-right-width\":\"0.5px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0.5px\",backgroundColor:\"rgba(255, 255, 255, 0)\",borderBottomLeftRadius:12,borderBottomRightRadius:12,borderTopLeftRadius:12,borderTopRightRadius:12,...style},variants:{\"iM5NBbyMm-hover\":{\"--border-color\":\"var(--token-66d0cf7b-9eb8-4245-b770-5d2d61dad950, rgba(245, 245, 255, 0.1))\"},\"Y5wUo8S7g-hover\":{\"--border-bottom-width\":\"0px\",\"--border-left-width\":\"0px\",\"--border-right-width\":\"0px\",\"--border-top-width\":\"0px\",borderBottomLeftRadius:0,borderBottomRightRadius:0,borderTopLeftRadius:0,borderTopRightRadius:0},hrDHi9fIu:{\"--border-bottom-width\":\"0px\",\"--border-left-width\":\"0px\",\"--border-right-width\":\"0px\",\"--border-top-width\":\"0px\",borderBottomLeftRadius:0,borderBottomRightRadius:0,borderTopLeftRadius:0,borderTopRightRadius:0},Y5wUo8S7g:{\"--border-bottom-width\":\"0px\",\"--border-left-width\":\"0px\",\"--border-right-width\":\"0px\",\"--border-top-width\":\"0px\",borderBottomLeftRadius:0,borderBottomRightRadius:0,borderTopLeftRadius:0,borderTopRightRadius:0}},...addPropertyOverrides({\"iM5NBbyMm-hover\":{\"data-framer-name\":undefined},\"Y5wUo8S7g-hover\":{\"data-framer-name\":undefined},hrDHi9fIu:{\"data-framer-name\":\"Variant 3\"},Y5wUo8S7g:{\"data-framer-name\":\"New\"}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-huexrl\",\"data-framer-name\":\"Hover fade\",layoutDependency:layoutDependency,layoutId:\"kBzgrT9Po\",style:{\"--border-bottom-width\":\"0px\",\"--border-color\":\"rgba(0, 0, 0, 0)\",\"--border-left-width\":\"0px\",\"--border-right-width\":\"0px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0px\",background:\"linear-gradient(180deg, rgba(84, 84, 84, 0) 0%, rgba(0, 0, 0, 0.65) 100%)\",borderBottomLeftRadius:12,borderBottomRightRadius:12,borderTopLeftRadius:12,borderTopRightRadius:12,opacity:.27},variants:{\"iM5NBbyMm-hover\":{\"--border-bottom-width\":\"1px\",\"--border-color\":\"var(--token-66d0cf7b-9eb8-4245-b770-5d2d61dad950, rgba(245, 245, 255, 0.1))\",\"--border-left-width\":\"1px\",\"--border-right-width\":\"1px\",\"--border-style\":\"solid\",\"--border-top-width\":\"1px\",opacity:1},\"Y5wUo8S7g-hover\":{opacity:1},hrDHi9fIu:{\"--border-bottom-width\":\"1px\",\"--border-color\":\"var(--token-2b080329-29ba-481c-ac92-832881069b36, rgba(255, 255, 255, 0.1))\",\"--border-left-width\":\"1px\",\"--border-right-width\":\"1px\",\"--border-style\":\"solid\",\"--border-top-width\":\"1px\",opacity:0},Y5wUo8S7g:{\"--border-bottom-width\":\"1px\",\"--border-color\":\"var(--token-2b080329-29ba-481c-ac92-832881069b36, rgba(255, 255, 255, 0.1))\",\"--border-left-width\":\"1px\",\"--border-right-width\":\"1px\",\"--border-style\":\"solid\",\"--border-top-width\":\"1px\",opacity:0}},...addPropertyOverrides({\"iM5NBbyMm-hover\":{\"data-border\":true},hrDHi9fIu:{\"data-border\":true},Y5wUo8S7g:{\"data-border\":true}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(Image,{background:{alt:\"\",fit:\"fill\",sizes:(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\",...toResponsiveImage(W8QKdoWYc)},className:\"framer-jjzjjx\",\"data-framer-name\":\"Image\",layoutDependency:layoutDependency,layoutId:\"C9R3om0ZD\",style:{\"--border-bottom-width\":\"0px\",\"--border-color\":\"rgba(0, 0, 0, 0)\",\"--border-left-width\":\"0px\",\"--border-right-width\":\"0px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0px\",borderBottomLeftRadius:0,borderBottomRightRadius:0,borderTopLeftRadius:0,borderTopRightRadius:0,filter:\"grayscale(0)\",WebkitFilter:\"grayscale(0)\"},variants:{hrDHi9fIu:{\"--border-bottom-width\":\"0.5px\",\"--border-color\":\"var(--token-2b080329-29ba-481c-ac92-832881069b36, rgba(255, 255, 255, 0.1))\",\"--border-left-width\":\"0.5px\",\"--border-right-width\":\"0.5px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0.5px\",borderBottomLeftRadius:12,borderBottomRightRadius:12,borderTopLeftRadius:12,borderTopRightRadius:12},Y5wUo8S7g:{\"--border-bottom-width\":\"0.5px\",\"--border-color\":\"var(--token-2b080329-29ba-481c-ac92-832881069b36, rgba(255, 255, 255, 0.1))\",\"--border-left-width\":\"0.5px\",\"--border-right-width\":\"0.5px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0.5px\",borderBottomLeftRadius:12,borderBottomRightRadius:12,borderTopLeftRadius:12,borderTopRightRadius:12}},...addPropertyOverrides({hrDHi9fIu:{\"data-border\":true,background:{alt:\"\",fit:\"fill\",sizes:`max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 8px) / 2, 1px)`,...toResponsiveImage(W8QKdoWYc)}},Y5wUo8S7g:{\"data-border\":true}},baseVariant,gestureVariant)}),isDisplayed()&&/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1hrc4p6-container\",layoutDependency:layoutDependency,layoutId:\"iZ7cabcp2-container\",style:{opacity:.5},variants:{Y5wUo8S7g:{opacity:0}},children:/*#__PURE__*/_jsx(EasingGradient,{angle:0,easeCustom:\"0.645, 0.045, 0.355, 1\",easeString:true,easing:\"ease-in-out\",from:\"rgb(14, 15, 17)\",height:\"100%\",id:\"iZ7cabcp2\",layoutId:\"iZ7cabcp2\",mode:\"husl\",radius:0,stops:5,style:{height:\"100%\",width:\"100%\"},to:\"rgba(14, 15, 17, 0)\",width:\"100%\"})})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1xukpme\",layoutDependency:layoutDependency,layoutId:\"bFj5uEN72\",children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-jozprn\",\"data-framer-name\":\"Title\",layoutDependency:layoutDependency,layoutId:\"LndUGrOMs\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1btjufx\",\"data-styles-preset\":\"xoAKFFJ8r\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255)))\"},children:\"WebAuthn 2FA\"})}),className:\"framer-5r0qvu\",\"data-framer-name\":\"Title\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"e8LdUUAu7\",style:{\"--extracted-r6o4lv\":\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\",textShadow:\"0px 1px 3px rgba(0, 0, 0, 0.1)\"},text:FCJjotThg,verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1ks1do9-container\",layoutDependency:layoutDependency,layoutId:\"YCyVy13Z9-container\",style:{opacity:0},variants:{\"Y5wUo8S7g-hover\":{opacity:1}},children:/*#__PURE__*/_jsx(GraphicsButtonArrow,{height:\"100%\",id:\"YCyVy13Z9\",layoutId:\"YCyVy13Z9\",style:{height:\"100%\",width:\"100%\"},variant:\"Ez6AL2vTh\",width:\"100%\",...addPropertyOverrides({\"iM5NBbyMm-hover\":{variant:\"EjrLISIop\"},\"Y5wUo8S7g-hover\":{variant:\"EjrLISIop\"}},baseVariant,gestureVariant)})})})]}),j_lkVn6wH&&/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-137gzas\",\"data-styles-preset\":\"PihfgTAR5\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, rgba(255, 255, 255, 0.7))\"},children:\"Feb 13, 2023\"})}),className:\"framer-1ewfumh\",\"data-framer-name\":\"Subtitle\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"KDdbbHraj\",style:{\"--extracted-r6o4lv\":\"rgba(255, 255, 255, 0.7)\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\",textShadow:\"0px 1px 3px rgba(0, 0, 0, 0.1)\"},text:gXZzLrrxC,verticalAlignment:\"top\",withExternalLayout:true})]})]})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-mE3Px.framer-1d9ykku, .framer-mE3Px .framer-1d9ykku { display: block; }\",\".framer-mE3Px.framer-1yyqiic { align-content: flex-start; align-items: flex-start; cursor: pointer; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: 216px; justify-content: flex-end; overflow: hidden; padding: 16px; position: relative; text-decoration: none; width: 244px; will-change: var(--framer-will-change-override, transform); }\",\".framer-mE3Px .framer-huexrl { flex: none; height: 100%; left: 0px; overflow: visible; position: absolute; top: 0px; width: 100%; z-index: 1; }\",\".framer-mE3Px .framer-jjzjjx { bottom: 0px; flex: none; left: 0px; overflow: hidden; position: absolute; right: 0px; top: 0px; z-index: 0; }\",\".framer-mE3Px .framer-1hrc4p6-container { bottom: 0px; flex: none; left: 0px; position: absolute; right: 0px; top: 0px; z-index: 0; }\",\".framer-mE3Px .framer-1xukpme { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 212px; }\",\".framer-mE3Px .framer-jozprn { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 4px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-mE3Px .framer-5r0qvu { flex: 1 0 0px; height: auto; pointer-events: none; position: relative; white-space: pre-wrap; width: 1px; word-break: break-word; word-wrap: break-word; z-index: 1; }\",\".framer-mE3Px .framer-1ks1do9-container { flex: none; height: 20px; position: relative; width: 10px; }\",\".framer-mE3Px .framer-1ewfumh { flex: none; height: auto; position: relative; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; z-index: 1; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-mE3Px.framer-1yyqiic, .framer-mE3Px .framer-1xukpme, .framer-mE3Px .framer-jozprn { gap: 0px; } .framer-mE3Px.framer-1yyqiic > *, .framer-mE3Px .framer-1xukpme > * { margin: 0px; margin-bottom: calc(0px / 2); margin-top: calc(0px / 2); } .framer-mE3Px.framer-1yyqiic > :first-child, .framer-mE3Px .framer-1xukpme > :first-child { margin-top: 0px; } .framer-mE3Px.framer-1yyqiic > :last-child, .framer-mE3Px .framer-1xukpme > :last-child { margin-bottom: 0px; } .framer-mE3Px .framer-jozprn > * { margin: 0px; margin-left: calc(4px / 2); margin-right: calc(4px / 2); } .framer-mE3Px .framer-jozprn > :first-child { margin-left: 0px; } .framer-mE3Px .framer-jozprn > :last-child { margin-right: 0px; } }\",\".framer-mE3Px.framer-v-1dgrutt.framer-1yyqiic { gap: 8px; padding: 0px; }\",\".framer-mE3Px.framer-v-1dgrutt .framer-huexrl { bottom: 30px; height: unset; right: 0px; width: unset; }\",\".framer-mE3Px.framer-v-1dgrutt .framer-jjzjjx { bottom: unset; flex: 1 0 0px; height: 1px; left: unset; position: relative; right: unset; top: unset; width: 100%; will-change: var(--framer-will-change-override, transform); }\",\".framer-mE3Px.framer-v-1dgrutt .framer-1xukpme { width: 100%; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-mE3Px.framer-v-1dgrutt.framer-1yyqiic { gap: 0px; } .framer-mE3Px.framer-v-1dgrutt.framer-1yyqiic > * { margin: 0px; margin-bottom: calc(8px / 2); margin-top: calc(8px / 2); } .framer-mE3Px.framer-v-1dgrutt.framer-1yyqiic > :first-child { margin-top: 0px; } .framer-mE3Px.framer-v-1dgrutt.framer-1yyqiic > :last-child { margin-bottom: 0px; } }\",\".framer-mE3Px.framer-v-1whgxu5.framer-1yyqiic { cursor: unset; flex-direction: row; gap: 8px; height: min-content; padding: 0px; }\",\".framer-mE3Px.framer-v-1whgxu5 .framer-huexrl { bottom: 0px; height: unset; right: 126px; width: unset; }\",\".framer-mE3Px.framer-v-1whgxu5 .framer-jjzjjx { bottom: unset; flex: 1 0 0px; height: 108px; left: unset; position: relative; right: unset; top: unset; width: 1px; will-change: var(--framer-will-change-override, transform); }\",\".framer-mE3Px.framer-v-1whgxu5 .framer-1xukpme { flex: 1 0 0px; width: 1px; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-mE3Px.framer-v-1whgxu5.framer-1yyqiic { gap: 0px; } .framer-mE3Px.framer-v-1whgxu5.framer-1yyqiic > * { margin: 0px; margin-left: calc(8px / 2); margin-right: calc(8px / 2); } .framer-mE3Px.framer-v-1whgxu5.framer-1yyqiic > :first-child { margin-left: 0px; } .framer-mE3Px.framer-v-1whgxu5.framer-1yyqiic > :last-child { margin-right: 0px; } }\",\".framer-mE3Px.framer-v-1yyqiic.hover .framer-huexrl { order: 0; }\",\".framer-mE3Px.framer-v-1yyqiic.hover .framer-jjzjjx { order: 1; }\",\".framer-mE3Px.framer-v-1yyqiic.hover .framer-1hrc4p6-container { order: 2; }\",\".framer-mE3Px.framer-v-1yyqiic.hover .framer-1xukpme { order: 3; }\",\".framer-mE3Px.framer-v-1dgrutt.hover .framer-huexrl { height: unset; width: unset; }\",\".framer-mE3Px.framer-v-1dgrutt.hover .framer-jjzjjx { bottom: unset; left: unset; right: unset; top: unset; }\",...sharedStyle.css,...sharedStyle1.css,'.framer-mE3Px[data-border=\"true\"]::after, .framer-mE3Px [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; pointer-events: none; }'];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 216\n * @framerIntrinsicWidth 244\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"Y5wUo8S7g\":{\"layout\":[\"fixed\",\"fixed\"]},\"hrDHi9fIu\":{\"layout\":[\"fixed\",\"auto\"]},\"m0LKLfGPj\":{\"layout\":[\"fixed\",\"fixed\"]},\"MoPRka0lr\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerVariables {\"FCJjotThg\":\"title\",\"gXZzLrrxC\":\"subtitle\",\"W8QKdoWYc\":\"image\",\"xB6GQkGqy\":\"link\",\"j_lkVn6wH\":\"subtitleVisiblity\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramergXk6dU62K=withCSS(Component,css,\"framer-mE3Px\");export default FramergXk6dU62K;FramergXk6dU62K.displayName=\"Nav / Tray \u2013 Card (Changelog)\";FramergXk6dU62K.defaultProps={height:216,width:244};addPropertyControls(FramergXk6dU62K,{variant:{options:[\"iM5NBbyMm\",\"Y5wUo8S7g\",\"hrDHi9fIu\"],optionTitles:[\"Default\",\"New\",\"Variant 3\"],title:\"Variant\",type:ControlType.Enum},FCJjotThg:{defaultValue:\"WebAuthn 2FA\",title:\"Title\",type:ControlType.String},gXZzLrrxC:{defaultValue:\"Feb 13, 2023\",displayTextArea:false,title:\"Subtitle\",type:ControlType.String},W8QKdoWYc:{title:\"Image\",type:ControlType.ResponsiveImage},xB6GQkGqy:{title:\"Link\",type:ControlType.Link},j_lkVn6wH:{defaultValue:true,title:\"Subtitle Visiblity\",type:ControlType.Boolean}});addFonts(FramergXk6dU62K,[{explicitInter:true,fonts:[{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/5vvr9Vy74if2I6bQbJvbw7SY1pQ.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/EOr0mi4hNtlgWNn9if640EZzXCo.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/Y9k9QrlZAqio88Klkmbd8VoMQc.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/OYrD2tBIBPvoJXiIHnLoOXnY9M.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/JeYwfuaPfZHQhEG8U5gtPDZ7WQ.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/vQyevYAyHtARFwPqUzQGpnDs.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/b6Y37FthZeALduNqHicBT6FutY.woff2\",weight:\"400\"}]},...EasingGradientFonts,...GraphicsButtonArrowFonts,...getFontsFromSharedStyle(sharedStyle.fonts),...getFontsFromSharedStyle(sharedStyle1.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramergXk6dU62K\",\"slots\":[],\"annotations\":{\"framerVariables\":\"{\\\"FCJjotThg\\\":\\\"title\\\",\\\"gXZzLrrxC\\\":\\\"subtitle\\\",\\\"W8QKdoWYc\\\":\\\"image\\\",\\\"xB6GQkGqy\\\":\\\"link\\\",\\\"j_lkVn6wH\\\":\\\"subtitleVisiblity\\\"}\",\"framerIntrinsicWidth\":\"244\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"Y5wUo8S7g\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"hrDHi9fIu\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"m0LKLfGPj\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"MoPRka0lr\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerImmutableVariables\":\"true\",\"framerIntrinsicHeight\":\"216\",\"framerContractVersion\":\"1\",\"framerDisplayContentsDiv\":\"false\",\"framerComponentViewportWidth\":\"true\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./gXk6dU62K.map", "// Generated by Framer (575e68f)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,SVG,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";const enabledGestures={BTMyLjB5l:{hover:true},PAHXpgsmX:{hover:true},vYM7kRVFX:{hover:true}};const cycleOrder=[\"kOKVZMv3e\",\"bJQdBKSqu\",\"BTMyLjB5l\",\"PAHXpgsmX\",\"vYM7kRVFX\",\"efAxaIdFV\",\"YZkileseO\",\"RWYVlvI4_\",\"nOFe8WcIU\"];const serializationHash=\"framer-VvJuN\";const variantClassNames={bJQdBKSqu:\"framer-v-2oly1o\",BTMyLjB5l:\"framer-v-1qwvq4h\",efAxaIdFV:\"framer-v-vm59sd\",kOKVZMv3e:\"framer-v-1va6rvz\",nOFe8WcIU:\"framer-v-ml5qfb\",PAHXpgsmX:\"framer-v-1j3x69m\",RWYVlvI4_:\"framer-v-6t3398\",vYM7kRVFX:\"framer-v-ccy517\",YZkileseO:\"framer-v-1i75rut\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants===null||variants===void 0?void 0:variants.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const transformTemplate1=(_,t)=>`translateY(-50%) ${t}`;const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value!==null&&value!==void 0?value:config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion(React.Fragment);const humanReadableVariantMap={\"API - Hover\":\"nOFe8WcIU\",\"Device controls\":\"vYM7kRVFX\",\"HIW \u2013\\xa0Hover\":\"bJQdBKSqu\",\"Quick start- Hover\":\"YZkileseO\",\"Quick Start\":\"efAxaIdFV\",\"VPN Replacement\":\"BTMyLjB5l\",API:\"RWYVlvI4_\",HIW:\"kOKVZMv3e\",Infrastructure:\"PAHXpgsmX\"};const getProps=({height,id,width,...props})=>{var _humanReadableVariantMap_props_variant,_ref;return{...props,variant:(_ref=(_humanReadableVariantMap_props_variant=humanReadableVariantMap[props.variant])!==null&&_humanReadableVariantMap_props_variant!==void 0?_humanReadableVariantMap_props_variant:props.variant)!==null&&_ref!==void 0?_ref:\"kOKVZMv3e\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"kOKVZMv3e\",enabledGestures,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const ref1=React.useRef(null);const isDisplayed=()=>{if([\"BTMyLjB5l-hover\",\"PAHXpgsmX-hover\",\"vYM7kRVFX-hover\"].includes(gestureVariant))return false;if([\"BTMyLjB5l\",\"PAHXpgsmX\",\"vYM7kRVFX\",\"efAxaIdFV\",\"YZkileseO\",\"RWYVlvI4_\",\"nOFe8WcIU\"].includes(baseVariant))return false;return true;};const isDisplayed1=()=>{if([\"efAxaIdFV\",\"YZkileseO\"].includes(baseVariant))return true;return false;};const isDisplayed2=()=>{if(baseVariant===\"YZkileseO\")return true;return false;};const isDisplayed3=()=>{if(gestureVariant===\"BTMyLjB5l-hover\")return true;if(baseVariant===\"BTMyLjB5l\")return true;return false;};const isDisplayed4=()=>{if(gestureVariant===\"BTMyLjB5l-hover\")return true;return false;};const isDisplayed5=()=>{if(gestureVariant===\"PAHXpgsmX-hover\")return true;if(baseVariant===\"PAHXpgsmX\")return true;return false;};const isDisplayed6=()=>{if(gestureVariant===\"vYM7kRVFX-hover\")return true;if(baseVariant===\"vYM7kRVFX\")return true;return false;};const isDisplayed7=()=>{if([\"RWYVlvI4_\",\"nOFe8WcIU\"].includes(baseVariant))return true;return false;};const defaultLayoutId=React.useId();const sharedStyleClassNames=[];const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId!==null&&layoutId!==void 0?layoutId:defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(serializationHash,...sharedStyleClassNames,\"framer-1va6rvz\",className,classNames),\"data-framer-name\":\"HIW\",layoutDependency:layoutDependency,layoutId:\"kOKVZMv3e\",ref:ref!==null&&ref!==void 0?ref:ref1,style:{...style},...addPropertyOverrides({\"BTMyLjB5l-hover\":{\"data-framer-name\":undefined},\"PAHXpgsmX-hover\":{\"data-framer-name\":undefined},\"vYM7kRVFX-hover\":{\"data-framer-name\":undefined},bJQdBKSqu:{\"data-framer-name\":\"HIW \u2013\\xa0Hover\"},BTMyLjB5l:{\"data-framer-name\":\"VPN Replacement\"},efAxaIdFV:{\"data-framer-name\":\"Quick Start\"},nOFe8WcIU:{\"data-framer-name\":\"API - Hover\"},PAHXpgsmX:{\"data-framer-name\":\"Infrastructure\"},RWYVlvI4_:{\"data-framer-name\":\"API\"},vYM7kRVFX:{\"data-framer-name\":\"Device controls\"},YZkileseO:{\"data-framer-name\":\"Quick start- Hover\"}},baseVariant,gestureVariant),children:[isDisplayed()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1kksvet\",\"data-framer-name\":\"HIW\",layoutDependency:layoutDependency,layoutId:\"C1HTwLiQY\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-1mo9d4m\",\"data-framer-name\":\"Rectangle 628\",layoutDependency:layoutDependency,layoutId:\"BOv5TEyLR\",style:{backgroundColor:\"rgb(255, 255, 255)\",borderBottomLeftRadius:4,borderBottomRightRadius:4,borderTopLeftRadius:4,borderTopRightRadius:4,opacity:1},variants:{bJQdBKSqu:{backgroundColor:\"var(--token-9cd45774-fe90-4931-bc24-bcdad47dc54c, rgb(123, 102, 255))\",opacity:.5}}}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-tfcmh\",\"data-framer-name\":\"Rectangle 632\",layoutDependency:layoutDependency,layoutId:\"fPSfA3lqI\",style:{backgroundColor:\"rgb(255, 255, 255)\",borderBottomLeftRadius:4,borderBottomRightRadius:4,borderTopLeftRadius:4,borderTopRightRadius:4,opacity:.5},variants:{bJQdBKSqu:{backgroundColor:\"var(--token-9cd45774-fe90-4931-bc24-bcdad47dc54c, rgb(123, 102, 255))\",opacity:1}}}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-sfy0o8\",\"data-framer-name\":\"Rectangle 631\",layoutDependency:layoutDependency,layoutId:\"nhRW2wVvs\",style:{backgroundColor:\"rgb(255, 255, 255)\",borderBottomLeftRadius:4,borderBottomRightRadius:4,borderTopLeftRadius:4,borderTopRightRadius:4,opacity:.5},variants:{bJQdBKSqu:{backgroundColor:\"var(--token-9cd45774-fe90-4931-bc24-bcdad47dc54c, rgb(123, 102, 255))\",opacity:1}}}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-4szk2v\",\"data-framer-name\":\"Rectangle 633\",layoutDependency:layoutDependency,layoutId:\"kn7o6uqZ7\",style:{backgroundColor:\"rgb(255, 255, 255)\",borderBottomLeftRadius:4,borderBottomRightRadius:4,borderTopLeftRadius:4,borderTopRightRadius:4,opacity:1},variants:{bJQdBKSqu:{backgroundColor:\"var(--token-9cd45774-fe90-4931-bc24-bcdad47dc54c, rgb(123, 102, 255))\",opacity:.5}}})]}),isDisplayed1()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1fqvnd6\",\"data-framer-name\":\"Quick start\",layoutDependency:layoutDependency,layoutId:\"Sa3E8rAeG\",children:[isDisplayed2()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1worn9k\",layoutDependency:layoutDependency,layoutId:\"XCcx0KYRg\",style:{backgroundColor:\"var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95))\",borderBottomLeftRadius:26,borderBottomRightRadius:26,borderTopLeftRadius:26,borderTopRightRadius:26,opacity:.5},transformTemplate:transformTemplate1}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-r2vul\",layoutDependency:layoutDependency,layoutId:\"OBvg00GZx\",style:{backgroundColor:\"rgb(255, 255, 255)\",borderBottomLeftRadius:26,borderBottomRightRadius:26,borderTopLeftRadius:26,borderTopRightRadius:26,opacity:.5},variants:{YZkileseO:{backgroundColor:\"var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95))\"}}}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1ta0a2z\",\"data-framer-name\":\"Upper\",layoutDependency:layoutDependency,layoutId:\"AVYsx6VmR\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-aww3vv\",layoutDependency:layoutDependency,layoutId:\"f_sBSJio1\",style:{backgroundColor:\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\",borderBottomLeftRadius:40,borderBottomRightRadius:40,borderTopLeftRadius:40,borderTopRightRadius:40}}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1tf57hw\",layoutDependency:layoutDependency,layoutId:\"BBQFvnLgR\",style:{backgroundColor:\"rgb(255, 255, 255)\",borderBottomLeftRadius:40,borderBottomRightRadius:40,borderTopLeftRadius:40,borderTopRightRadius:40},variants:{YZkileseO:{backgroundColor:\"var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95))\"}}}),/*#__PURE__*/_jsx(SVG,{className:\"framer-3c9rja\",\"data-framer-name\":\"icon\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:20,intrinsicWidth:12,layoutDependency:layoutDependency,layoutId:\"I458:51986;125:425\",style:{opacity:0},svg:'<svg width=\"12\" height=\"20\" viewBox=\"0 0 12 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M0 8.51618V17.2C0 17.2 1.2983 16.3091 2.75 15.2908V10.5162C2.75 8.1692 3.45659 7.41208 5.36974 5.98986C6.01224 5.51223 7.02198 4.76243 7.99356 4.04114V0C7.99356 0 4.1983 2.81637 2.61974 3.98986C0.70659 5.41208 0 6.1692 0 8.51618ZM4 20V11.3162C4 8.9692 4.70659 8.21208 6.61974 6.78986C8.1983 5.61637 11.9936 2.8 11.9936 2.8V10.3774C11.9936 10.5949 11.9953 10.8023 11.997 11.001C12.0147 13.0995 12.0241 14.2192 9.87762 15.8425C8.10426 17.1836 4 20 4 20Z\" fill=\"#121315\"/>\\n</svg>\\n',variants:{YZkileseO:{opacity:1}},withExternalLayout:true})]})]}),isDisplayed3()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1yddn6q\",\"data-framer-name\":\"VPN replacement\",layoutDependency:layoutDependency,layoutId:\"pEHYzD7J3\",children:[isDisplayed3()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-zfzgt7\",\"data-framer-name\":\"TG\",layoutDependency:layoutDependency,layoutId:\"vP6mPAHdH\",style:{opacity:.5},variants:{\"BTMyLjB5l-hover\":{opacity:1}},children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-131tiqy\",layoutDependency:layoutDependency,layoutId:\"mE24YrFC9\",style:{backgroundColor:\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\",borderBottomLeftRadius:7,borderBottomRightRadius:7,borderTopLeftRadius:7,borderTopRightRadius:7}}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-xloxal\",layoutDependency:layoutDependency,layoutId:\"tSOOKlkWL\",style:{backgroundColor:\"rgb(255, 255, 255)\",borderBottomLeftRadius:4,borderBottomRightRadius:4,borderTopLeftRadius:4,borderTopRightRadius:4},variants:{\"BTMyLjB5l-hover\":{backgroundColor:\"rgb(87, 135, 255)\"}}}),isDisplayed4()&&/*#__PURE__*/_jsx(SVG,{className:\"framer-10sqcir\",\"data-framer-name\":\"icon\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:20,intrinsicWidth:12,layoutDependency:layoutDependency,layoutId:\"fFM0HdP7Q\",svg:'<svg width=\"12\" height=\"20\" viewBox=\"0 0 12 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M0 8.51618V17.2C0 17.2 1.2983 16.3091 2.75 15.2908V10.5162C2.75 8.1692 3.45659 7.41208 5.36974 5.98986C6.01224 5.51223 7.02198 4.76243 7.99356 4.04114V0C7.99356 0 4.1983 2.81637 2.61974 3.98986C0.70659 5.41208 0 6.1692 0 8.51618ZM4 20V11.3162C4 8.9692 4.70659 8.21208 6.61974 6.78986C8.1983 5.61637 11.9936 2.8 11.9936 2.8V10.3774C11.9936 10.5949 11.9953 10.8023 11.997 11.001C12.0147 13.0995 12.0241 14.2192 9.87762 15.8425C8.10426 17.1836 4 20 4 20Z\" fill=\"#121315\"/>\\n</svg>\\n',withExternalLayout:true})]}),isDisplayed3()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-3elyom\",\"data-framer-name\":\"VPN\",layoutDependency:layoutDependency,layoutId:\"ssvASpJU_\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-1ymdzvs\",layoutDependency:layoutDependency,layoutId:\"PlpeM5DlW\",style:{backgroundColor:\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\",borderBottomLeftRadius:40,borderBottomRightRadius:40,borderTopLeftRadius:40,borderTopRightRadius:40}}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-2xw3kh\",layoutDependency:layoutDependency,layoutId:\"ZxAWfYNqV\",style:{backgroundColor:\"rgb(255, 255, 255)\",borderBottomLeftRadius:40,borderBottomRightRadius:40,borderTopLeftRadius:40,borderTopRightRadius:40,opacity:1},variants:{\"BTMyLjB5l-hover\":{backgroundColor:\"rgb(87, 135, 255)\",opacity:.5}}})]})]}),isDisplayed5()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-onkt0j\",\"data-framer-name\":\"Infrastructure\",layoutDependency:layoutDependency,layoutId:\"bAB5j38vF\",children:[isDisplayed5()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-zrtb2p\",layoutDependency:layoutDependency,layoutId:\"GP_ey4iew\",style:{backgroundColor:\"rgb(255, 255, 255)\",borderBottomLeftRadius:50,borderBottomRightRadius:50,borderTopLeftRadius:50,borderTopRightRadius:50,opacity:1},variants:{\"PAHXpgsmX-hover\":{backgroundColor:\"rgb(247, 163, 0)\",opacity:.5}}}),isDisplayed5()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1nnhf5f\",layoutDependency:layoutDependency,layoutId:\"ZhrzeL0RW\",style:{backgroundColor:\"rgb(255, 255, 255)\",borderBottomLeftRadius:50,borderBottomRightRadius:50,borderTopLeftRadius:50,borderTopRightRadius:50,opacity:1},variants:{\"PAHXpgsmX-hover\":{backgroundColor:\"rgb(247, 163, 0)\",opacity:.5}}}),isDisplayed5()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-svydvm\",layoutDependency:layoutDependency,layoutId:\"moXuqzUTv\",style:{backgroundColor:\"rgb(255, 255, 255)\",borderBottomLeftRadius:50,borderBottomRightRadius:50,borderTopLeftRadius:50,borderTopRightRadius:50,opacity:.5},variants:{\"PAHXpgsmX-hover\":{backgroundColor:\"rgb(247, 163, 0)\",opacity:1}}}),isDisplayed5()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-16uttgo\",layoutDependency:layoutDependency,layoutId:\"ZSlN8OF5q\",style:{backgroundColor:\"rgb(255, 255, 255)\",borderBottomLeftRadius:50,borderBottomRightRadius:50,borderTopLeftRadius:50,borderTopRightRadius:50,opacity:.5},variants:{\"PAHXpgsmX-hover\":{backgroundColor:\"rgb(247, 163, 0)\",opacity:1}}})]}),isDisplayed6()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1ue4mlw\",\"data-framer-name\":\"Device\",layoutDependency:layoutDependency,layoutId:\"qVWu73YZH\",children:[isDisplayed6()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-bkyxxz\",\"data-framer-name\":\"phone\",layoutDependency:layoutDependency,layoutId:\"uOXB8smKi\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-p5z90u\",layoutDependency:layoutDependency,layoutId:\"Ig9x7vV0t\",style:{backgroundColor:\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\",borderBottomLeftRadius:7,borderBottomRightRadius:7,borderTopLeftRadius:7,borderTopRightRadius:7}}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-ycf8f8\",layoutDependency:layoutDependency,layoutId:\"L9KLdXFnX\",style:{backgroundColor:\"rgb(255, 255, 255)\",borderBottomLeftRadius:4,borderBottomRightRadius:4,borderTopLeftRadius:4,borderTopRightRadius:4,opacity:.5},variants:{\"vYM7kRVFX-hover\":{backgroundColor:\"rgb(0, 183, 144)\",opacity:1}},children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-eholp7\",layoutDependency:layoutDependency,layoutId:\"nBSM0DuDg\",style:{backgroundColor:\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\",borderBottomLeftRadius:4,borderBottomRightRadius:4,borderTopLeftRadius:4,borderTopRightRadius:4}})})]}),isDisplayed6()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1hb6ygm\",\"data-framer-name\":\"laptop\",layoutDependency:layoutDependency,layoutId:\"R2ijHqCsd\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-1ps96fv\",layoutDependency:layoutDependency,layoutId:\"gLdtEXcOS\",style:{backgroundColor:\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\",borderTopLeftRadius:7,borderTopRightRadius:7}}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1vqu7yr\",layoutDependency:layoutDependency,layoutId:\"w8cXO2n3Z\",style:{backgroundColor:\"rgb(255, 255, 255)\",borderTopLeftRadius:4,borderTopRightRadius:4,opacity:1},variants:{\"vYM7kRVFX-hover\":{backgroundColor:\"rgb(0, 183, 144)\",opacity:.5}}}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-19w3dvb\",layoutDependency:layoutDependency,layoutId:\"m6ZKUMila\",style:{backgroundColor:\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\",borderBottomLeftRadius:10,borderBottomRightRadius:10,borderTopLeftRadius:10,borderTopRightRadius:10}}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1qapn8a\",layoutDependency:layoutDependency,layoutId:\"dfvyBdSB_\",style:{backgroundColor:\"rgb(255, 255, 255)\",borderBottomLeftRadius:4,borderBottomRightRadius:4,borderTopLeftRadius:4,borderTopRightRadius:4,opacity:1},variants:{\"vYM7kRVFX-hover\":{backgroundColor:\"rgb(0, 183, 144)\",opacity:.5}}})]})]}),isDisplayed7()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1smkbn5\",\"data-framer-name\":\"API\",layoutDependency:layoutDependency,layoutId:\"EcrMyDgKA\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-5x02p\",\"data-framer-name\":\"Lower\",layoutDependency:layoutDependency,layoutId:\"NP4iM7jFa\",style:{backgroundColor:\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\",borderBottomLeftRadius:4,borderBottomRightRadius:4,borderTopLeftRadius:4,borderTopRightRadius:4,opacity:.5},variants:{nOFe8WcIU:{backgroundColor:\"var(--token-2bb3d2e7-6d68-4c74-8042-6cbb6412c976, rgb(0, 203, 170))\"}}}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-5o1ab7\",\"data-framer-name\":\"Upper\",layoutDependency:layoutDependency,layoutId:\"x4mS_9uZ3\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-ikg10r\",layoutDependency:layoutDependency,layoutId:\"eNHjABP8D\",style:{backgroundColor:\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\",borderBottomLeftRadius:6,borderBottomRightRadius:6,borderTopLeftRadius:6,borderTopRightRadius:6}}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-12a8fk\",layoutDependency:layoutDependency,layoutId:\"KIyRDLl60\",style:{backgroundColor:\"rgb(255, 255, 255)\",borderBottomLeftRadius:4,borderBottomRightRadius:4,borderTopLeftRadius:4,borderTopRightRadius:4},variants:{nOFe8WcIU:{backgroundColor:\"var(--token-2bb3d2e7-6d68-4c74-8042-6cbb6412c976, rgb(17, 190, 153))\"}}}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1fzs0g9\",\"data-framer-name\":\"Rectangle 576\",layoutDependency:layoutDependency,layoutId:\"fuNwTPNca\",style:{backgroundColor:\"rgb(18, 19, 21)\"}}),/*#__PURE__*/_jsx(SVG,{className:\"framer-1v9kg80\",\"data-framer-name\":\"Vector\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:18,intrinsicWidth:17,layoutDependency:layoutDependency,layoutId:\"cBuTKEQUp\",svg:'<svg width=\"17\" height=\"18\" viewBox=\"-2 -2 17 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path d=\"M6.33606 13.1639L12.6722 6.82782L6.33606 0.491699\" stroke=\"#121315\" stroke-width=\"3\"/>\\n</svg>\\n',withExternalLayout:true})]})]})]})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-VvJuN.framer-nm59r1, .framer-VvJuN .framer-nm59r1 { display: block; }\",\".framer-VvJuN.framer-1va6rvz { height: 35px; overflow: visible; position: relative; width: 35px; }\",\".framer-VvJuN .framer-1kksvet { aspect-ratio: 1 / 1; flex: none; height: var(--framer-aspect-ratio-supported, 35px); left: 0px; overflow: visible; position: absolute; right: 0px; top: 0px; }\",\".framer-VvJuN .framer-1mo9d4m { bottom: 0px; flex: none; height: 19px; position: absolute; right: 0px; width: 26px; }\",\".framer-VvJuN .framer-tfcmh { flex: none; height: 14px; position: absolute; right: 0px; top: 0px; width: 19px; }\",\".framer-VvJuN .framer-sfy0o8 { bottom: 0px; flex: none; height: 19px; left: 0px; position: absolute; width: 7px; }\",\".framer-VvJuN .framer-4szk2v { flex: none; height: 14px; left: 0px; position: absolute; top: 0px; width: 14px; }\",\".framer-VvJuN .framer-1fqvnd6, .framer-VvJuN .framer-onkt0j { bottom: 0px; flex: none; left: 0px; overflow: visible; position: absolute; right: 0px; top: 0px; }\",\".framer-VvJuN .framer-1worn9k { aspect-ratio: 1 / 1; flex: none; height: var(--framer-aspect-ratio-supported, 20px); left: 0px; overflow: hidden; position: absolute; top: 51%; width: 20px; will-change: var(--framer-will-change-override, transform); }\",\".framer-VvJuN .framer-r2vul { flex: none; height: 20px; overflow: hidden; position: absolute; right: -6px; top: calc(51.428571428571445% - 20px / 2); width: 20px; will-change: var(--framer-will-change-override, transform); }\",\".framer-VvJuN .framer-1ta0a2z { bottom: 0px; flex: none; left: 0px; overflow: visible; position: absolute; right: 0px; top: 0px; z-index: 1; }\",\".framer-VvJuN .framer-aww3vv { flex: none; height: 33px; left: calc(48.78048780487807% - 33px / 2); overflow: hidden; position: absolute; top: calc(48.78048780487807% - 33px / 2); width: 33px; will-change: var(--framer-will-change-override, transform); }\",\".framer-VvJuN .framer-1tf57hw { flex: none; height: 29px; left: calc(48.78048780487807% - 29px / 2); overflow: hidden; position: absolute; top: calc(48.78048780487807% - 29px / 2); width: 29px; will-change: var(--framer-will-change-override, transform); }\",\".framer-VvJuN .framer-3c9rja { flex: none; height: 17px; left: calc(51.21951219512197% - 10px / 2); position: absolute; top: calc(48.78048780487807% - 17px / 2); width: 10px; }\",\".framer-VvJuN .framer-1yddn6q { bottom: -8px; flex: none; left: 0px; overflow: visible; position: absolute; right: -7px; top: 0px; }\",\".framer-VvJuN .framer-zfzgt7 { bottom: 0px; flex: none; height: 25px; overflow: visible; position: absolute; right: 0px; width: 26px; }\",\".framer-VvJuN .framer-131tiqy { flex: none; height: 26px; left: 0px; overflow: visible; position: absolute; top: -1px; width: 26px; }\",\".framer-VvJuN .framer-xloxal { flex: none; height: 20px; left: 3px; overflow: visible; position: absolute; top: 2px; width: 20px; }\",\".framer-VvJuN .framer-10sqcir { flex: none; height: 17px; left: calc(48.71794871794874% - 11px / 2); position: absolute; top: calc(48.71794871794874% - 17px / 2); width: 11px; }\",\".framer-VvJuN .framer-3elyom { flex: none; height: 38px; left: 0px; overflow: visible; position: absolute; top: 0px; width: 38px; }\",\".framer-VvJuN .framer-1ymdzvs { bottom: -1px; flex: none; left: 0px; overflow: hidden; position: absolute; right: -1px; top: 0px; will-change: var(--framer-will-change-override, transform); }\",\".framer-VvJuN .framer-2xw3kh { flex: none; height: 33px; left: calc(50.00000000000002% - 33px / 2); overflow: hidden; position: absolute; top: calc(50.00000000000002% - 33px / 2); width: 33px; will-change: var(--framer-will-change-override, transform); }\",\".framer-VvJuN .framer-zrtb2p { aspect-ratio: 1 / 1; flex: none; height: var(--framer-aspect-ratio-supported, 25px); left: 0px; overflow: visible; position: absolute; top: 0px; width: 25px; }\",\".framer-VvJuN .framer-1nnhf5f { aspect-ratio: 1 / 1; bottom: 0px; flex: none; height: var(--framer-aspect-ratio-supported, 19px); overflow: visible; position: absolute; right: 0px; width: 19px; }\",\".framer-VvJuN .framer-svydvm { aspect-ratio: 1 / 1; flex: none; height: var(--framer-aspect-ratio-supported, 12px); overflow: visible; position: absolute; right: 0px; top: 0px; width: 12px; }\",\".framer-VvJuN .framer-16uttgo { aspect-ratio: 1 / 1; bottom: 0px; flex: none; height: var(--framer-aspect-ratio-supported, 9px); left: 0px; overflow: visible; position: absolute; width: 9px; }\",\".framer-VvJuN .framer-1ue4mlw { bottom: 0px; flex: none; left: 0px; overflow: visible; position: absolute; right: -11px; top: 0px; }\",\".framer-VvJuN .framer-bkyxxz { bottom: 0px; flex: none; overflow: visible; position: absolute; right: -3px; top: 0px; width: 21px; }\",\".framer-VvJuN .framer-p5z90u { flex: none; height: 35px; left: -1px; overflow: visible; position: absolute; right: 0px; top: calc(50.00000000000002% - 35px / 2); }\",\".framer-VvJuN .framer-ycf8f8 { flex: none; height: 29px; left: calc(47.61904761904764% - 16px / 2); overflow: visible; position: absolute; top: calc(50.00000000000002% - 29px / 2); width: 16px; }\",\".framer-VvJuN .framer-eholp7 { bottom: 5px; flex: none; height: 3px; left: calc(50.00000000000002% - 10px / 2); overflow: visible; position: absolute; width: 10px; }\",\".framer-VvJuN .framer-1hb6ygm { bottom: 0px; flex: none; left: -1px; overflow: visible; position: absolute; top: 0px; width: 48px; }\",\".framer-VvJuN .framer-1ps96fv { flex: none; height: 26px; left: calc(50.00000000000002% - 36px / 2); overflow: visible; position: absolute; top: 4px; width: 36px; }\",\".framer-VvJuN .framer-1vqu7yr { flex: none; height: 21px; left: calc(50.00000000000002% - 30px / 2); overflow: visible; position: absolute; top: 7px; width: 30px; }\",\".framer-VvJuN .framer-19w3dvb { bottom: 3px; flex: none; height: 11px; left: 0px; overflow: visible; position: absolute; right: -1px; }\",\".framer-VvJuN .framer-1qapn8a { bottom: 6px; flex: none; height: 5px; left: calc(50.00000000000002% - 44px / 2); overflow: visible; position: absolute; width: 44px; }\",\".framer-VvJuN .framer-1smkbn5 { bottom: -7px; flex: none; left: -3px; overflow: visible; position: absolute; right: 0px; top: 0px; }\",\".framer-VvJuN .framer-5x02p { flex: none; height: 27px; overflow: visible; position: absolute; right: 0px; top: 0px; width: 23px; }\",\".framer-VvJuN .framer-5o1ab7 { bottom: 0px; flex: none; height: 34px; left: 1px; overflow: visible; position: absolute; width: 30px; }\",\".framer-VvJuN .framer-ikg10r { bottom: 0px; flex: none; height: 34px; left: 0px; overflow: visible; position: absolute; right: 0px; }\",\".framer-VvJuN .framer-12a8fk { flex: none; height: 30px; left: calc(50.00000000000002% - 26px / 2); overflow: visible; position: absolute; top: calc(50.00000000000002% - 30px / 2); width: 26px; }\",\".framer-VvJuN .framer-1fzs0g9 { bottom: 8px; flex: none; height: 2px; position: absolute; right: 6px; width: 10px; }\",\".framer-VvJuN .framer-1v9kg80 { bottom: 7px; flex: none; height: 12px; left: 2px; position: absolute; width: 11px; }\",\".framer-VvJuN.framer-v-2oly1o .framer-1mo9d4m { height: 13px; width: 19px; }\",\".framer-VvJuN.framer-v-2oly1o .framer-tfcmh { height: 20px; width: 13px; }\",\".framer-VvJuN.framer-v-2oly1o .framer-sfy0o8 { height: 13px; width: 14px; }\",\".framer-VvJuN.framer-v-2oly1o .framer-4szk2v { height: 20px; width: 19px; }\",\".framer-VvJuN.framer-v-1qwvq4h.framer-1va6rvz, .framer-VvJuN.framer-v-1j3x69m.framer-1va6rvz, .framer-VvJuN.framer-v-ccy517.framer-1va6rvz { cursor: pointer; }\",\".framer-VvJuN.framer-v-1i75rut .framer-r2vul { right: -12px; }\",\".framer-VvJuN.framer-v-1i75rut .framer-1ta0a2z { left: unset; right: -6px; width: 35px; }\",\".framer-VvJuN.framer-v-6t3398 .framer-5o1ab7 { bottom: unset; left: 2px; top: calc(52.38095238095241% - 34px / 2); }\",\".framer-VvJuN.framer-v-ml5qfb .framer-5x02p { bottom: 4px; left: 3px; right: unset; top: unset; }\",\".framer-VvJuN.framer-v-ml5qfb .framer-5o1ab7 { bottom: unset; left: unset; right: 0px; top: 0px; }\",\".framer-VvJuN.framer-v-1qwvq4h.hover .framer-zfzgt7 { bottom: unset; height: 39px; left: 0px; right: unset; top: 0px; width: 39px; z-index: 1; }\",\".framer-VvJuN.framer-v-1qwvq4h.hover .framer-131tiqy { bottom: 0px; height: unset; right: 0px; top: 0px; width: unset; }\",\".framer-VvJuN.framer-v-1qwvq4h.hover .framer-xloxal { height: 33px; left: calc(48.71794871794874% - 33px / 2); top: calc(48.71794871794874% - 33px / 2); width: 33px; }\",\".framer-VvJuN.framer-v-1qwvq4h.hover .framer-3elyom { bottom: -2px; left: unset; right: -2px; top: unset; }\",\".framer-VvJuN.framer-v-1qwvq4h.hover .framer-1ymdzvs { height: 29px; left: unset; top: unset; width: 29px; }\",\".framer-VvJuN.framer-v-1qwvq4h.hover .framer-2xw3kh { bottom: 2px; height: 23px; left: unset; right: 2px; top: unset; width: 23px; }\",\".framer-VvJuN.framer-v-1j3x69m.hover .framer-zrtb2p, .framer-VvJuN.framer-v-1j3x69m.hover .framer-1nnhf5f, .framer-VvJuN.framer-v-1j3x69m.hover .framer-svydvm, .framer-VvJuN.framer-v-1j3x69m.hover .framer-16uttgo { height: var(--framer-aspect-ratio-supported, 17px); width: 17px; }\",\".framer-VvJuN.framer-v-ccy517.hover .framer-bkyxxz { right: 6px; width: 22px; z-index: 1; }\",\".framer-VvJuN.framer-v-ccy517.hover .framer-p5z90u { bottom: 0px; height: unset; left: 0px; right: -4px; top: 0px; }\",\".framer-VvJuN.framer-v-ccy517.hover .framer-ycf8f8 { height: 36px; left: unset; right: -1px; top: calc(50.00000000000002% - 36px / 2); width: 20px; }\",\".framer-VvJuN.framer-v-ccy517.hover .framer-eholp7 { bottom: 4px; left: calc(50.00000000000002% - 14px / 2); width: 14px; }\",\".framer-VvJuN.framer-v-ccy517.hover .framer-1hb6ygm { left: -10px; }\",\".framer-VvJuN.framer-v-ccy517.hover .framer-1ps96fv { height: 22px; left: unset; right: 6px; top: calc(45.23809523809526% - 22px / 2); width: 28px; }\",\".framer-VvJuN.framer-v-ccy517.hover .framer-1vqu7yr { height: 17px; left: unset; right: 9px; top: calc(45.23809523809526% - 17px / 2); width: 22px; }\",\".framer-VvJuN.framer-v-ccy517.hover .framer-19w3dvb { bottom: 4px; height: 10px; left: unset; width: 40px; }\",\".framer-VvJuN.framer-v-ccy517.hover .framer-1qapn8a { bottom: 7px; height: 4px; left: unset; right: 4px; width: 32px; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 35\n * @framerIntrinsicWidth 35\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"bJQdBKSqu\":{\"layout\":[\"fixed\",\"fixed\"]},\"BTMyLjB5l\":{\"layout\":[\"fixed\",\"fixed\"]},\"PAHXpgsmX\":{\"layout\":[\"fixed\",\"fixed\"]},\"vYM7kRVFX\":{\"layout\":[\"fixed\",\"fixed\"]},\"efAxaIdFV\":{\"layout\":[\"fixed\",\"fixed\"]},\"YZkileseO\":{\"layout\":[\"fixed\",\"fixed\"]},\"RWYVlvI4_\":{\"layout\":[\"fixed\",\"fixed\"]},\"nOFe8WcIU\":{\"layout\":[\"fixed\",\"fixed\"]},\"Vocog3gLu\":{\"layout\":[\"fixed\",\"fixed\"]},\"wNPkEqWrx\":{\"layout\":[\"fixed\",\"fixed\"]},\"AL7quEj7L\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const Framerikk_McnKH=withCSS(Component,css,\"framer-VvJuN\");export default Framerikk_McnKH;Framerikk_McnKH.displayName=\"Nav / Tray \u2013 Icon\";Framerikk_McnKH.defaultProps={height:35,width:35};addPropertyControls(Framerikk_McnKH,{variant:{options:[\"kOKVZMv3e\",\"bJQdBKSqu\",\"BTMyLjB5l\",\"PAHXpgsmX\",\"vYM7kRVFX\",\"efAxaIdFV\",\"YZkileseO\",\"RWYVlvI4_\",\"nOFe8WcIU\"],optionTitles:[\"HIW\",\"HIW \u2013\\xa0Hover\",\"VPN Replacement\",\"Infrastructure\",\"Device controls\",\"Quick Start\",\"Quick start- Hover\",\"API\",\"API - Hover\"],title:\"Variant\",type:ControlType.Enum}});addFonts(Framerikk_McnKH,[{explicitInter:true,fonts:[]}],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"Framerikk_McnKH\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"35\",\"framerDisplayContentsDiv\":\"false\",\"framerImmutableVariables\":\"true\",\"framerIntrinsicHeight\":\"35\",\"framerComponentViewportWidth\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"bJQdBKSqu\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"BTMyLjB5l\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"PAHXpgsmX\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"vYM7kRVFX\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"efAxaIdFV\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"YZkileseO\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"RWYVlvI4_\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"nOFe8WcIU\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"Vocog3gLu\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"wNPkEqWrx\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"AL7quEj7L\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ikk_McnKH.map", "// Generated by Framer (575e68f)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,getFontsFromSharedStyle,getPropertyControls,Link,RichText,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import*as sharedStyle from\"https://framerusercontent.com/modules/zTb2QvSvmhj3xmBSumVl/FxvjjbX0AxqllYQv4Tdf/xoAKFFJ8r.js\";import NavTrayIcon from\"https://framerusercontent.com/modules/bTVdvcC85P0NRmwm9HNf/Xvz3FK8dbaStzUwFRjjC/ikk_McnKH.js\";const NavTrayIconFonts=getFonts(NavTrayIcon);const NavTrayIconControls=getPropertyControls(NavTrayIcon);const enabledGestures={rS16mv8bj:{hover:true}};const cycleOrder=[\"rS16mv8bj\",\"GobthPXov\"];const serializationHash=\"framer-ulFqs\";const variantClassNames={GobthPXov:\"framer-v-2vnvlj\",rS16mv8bj:\"framer-v-1538id8\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants===null||variants===void 0?void 0:variants.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value!==null&&value!==void 0?value:config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion(React.Fragment);const humanReadableEnumMap={\"API - Hover\":\"nOFe8WcIU\",\"Device controls\":\"vYM7kRVFX\",\"HIW \u2013\\xa0Hover\":\"bJQdBKSqu\",\"Quick start- Hover\":\"YZkileseO\",\"Quick Start\":\"efAxaIdFV\",\"VPN Replacement\":\"BTMyLjB5l\",API:\"RWYVlvI4_\",HIW:\"kOKVZMv3e\",Infrastructure:\"PAHXpgsmX\"};const humanReadableVariantMap={Desktop:\"rS16mv8bj\",Phone:\"GobthPXov\"};const getProps=({height,icon,iconHover,id,link,title,width,...props})=>{var _humanReadableEnumMap_iconHover,_ref,_ref1,_humanReadableEnumMap_icon,_ref2,_ref3,_humanReadableVariantMap_props_variant,_ref4,_ref5;return{...props,EoiUdnIrn:(_ref1=(_ref=(_humanReadableEnumMap_iconHover=humanReadableEnumMap[iconHover])!==null&&_humanReadableEnumMap_iconHover!==void 0?_humanReadableEnumMap_iconHover:iconHover)!==null&&_ref!==void 0?_ref:props.EoiUdnIrn)!==null&&_ref1!==void 0?_ref1:\"bJQdBKSqu\",TuXUBRiOh:(_ref3=(_ref2=(_humanReadableEnumMap_icon=humanReadableEnumMap[icon])!==null&&_humanReadableEnumMap_icon!==void 0?_humanReadableEnumMap_icon:icon)!==null&&_ref2!==void 0?_ref2:props.TuXUBRiOh)!==null&&_ref3!==void 0?_ref3:\"kOKVZMv3e\",TXl3JifQz:link!==null&&link!==void 0?link:props.TXl3JifQz,variant:(_ref4=(_humanReadableVariantMap_props_variant=humanReadableVariantMap[props.variant])!==null&&_humanReadableVariantMap_props_variant!==void 0?_humanReadableVariantMap_props_variant:props.variant)!==null&&_ref4!==void 0?_ref4:\"rS16mv8bj\",WDE61Js6q:(_ref5=title!==null&&title!==void 0?title:props.WDE61Js6q)!==null&&_ref5!==void 0?_ref5:\"Quick Start\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,TXl3JifQz,WDE61Js6q,TuXUBRiOh,EoiUdnIrn,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"rS16mv8bj\",enabledGestures,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const ref1=React.useRef(null);const defaultLayoutId=React.useId();const sharedStyleClassNames=[sharedStyle.className];const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId!==null&&layoutId!==void 0?layoutId:defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(Link,{href:TXl3JifQz,openInNewTab:false,smoothScroll:true,children:/*#__PURE__*/_jsx(motion.a,{...restProps,...gestureHandlers,className:`${cx(serializationHash,...sharedStyleClassNames,\"framer-1538id8\",className,classNames)} framer-ewan1l`,\"data-border\":true,\"data-framer-name\":\"Desktop\",layoutDependency:layoutDependency,layoutId:\"rS16mv8bj\",ref:ref!==null&&ref!==void 0?ref:ref1,style:{\"--border-bottom-width\":\"0.5px\",\"--border-color\":\"var(--token-66d0cf7b-9eb8-4245-b770-5d2d61dad950, rgba(255, 255, 255, 0.1))\",\"--border-left-width\":\"0.5px\",\"--border-right-width\":\"0.5px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0.5px\",backgroundColor:\"rgba(255, 255, 255, 0)\",borderBottomLeftRadius:12,borderBottomRightRadius:12,borderTopLeftRadius:12,borderTopRightRadius:12,...style},variants:{\"rS16mv8bj-hover\":{\"--border-color\":\"rgba(245, 245, 255, 0.2)\",backgroundColor:\"rgba(255, 255, 255, 0.03)\"}},...addPropertyOverrides({\"rS16mv8bj-hover\":{\"data-framer-name\":undefined},GobthPXov:{\"data-framer-name\":\"Phone\"}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1co9njw\",layoutDependency:layoutDependency,layoutId:\"MR8Mw2kay\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-1lwdgy4\",\"data-framer-name\":\"Icons\",layoutDependency:layoutDependency,layoutId:\"b3BxcCwov\",children:/*#__PURE__*/_jsx(ComponentViewportProvider,{width:\"35px\",children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-7v1glz-container\",layoutDependency:layoutDependency,layoutId:\"P53zSTec2-container\",children:/*#__PURE__*/_jsx(NavTrayIcon,{height:\"100%\",id:\"P53zSTec2\",layoutId:\"P53zSTec2\",style:{height:\"100%\",width:\"100%\"},variant:TuXUBRiOh,width:\"100%\",...addPropertyOverrides({\"rS16mv8bj-hover\":{variant:EoiUdnIrn}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1lc0sln\",\"data-framer-name\":\"Text\",layoutDependency:layoutDependency,layoutId:\"OxHnaaLUU\",children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1btjufx\",\"data-styles-preset\":\"xoAKFFJ8r\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255)))\"},children:\"Quick Start\"})}),className:\"framer-1g3z0po\",\"data-framer-name\":\"Title\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"ETXXPEUF7\",style:{\"--extracted-r6o4lv\":\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:WDE61Js6q,verticalAlignment:\"top\",withExternalLayout:true})})]})})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-ulFqs.framer-ewan1l, .framer-ulFqs .framer-ewan1l { display: block; }\",\".framer-ulFqs.framer-1538id8 { align-content: flex-start; align-items: flex-start; cursor: pointer; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 25px; height: 211px; justify-content: center; overflow: visible; padding: 10px; position: relative; text-decoration: none; width: 175px; }\",\".framer-ulFqs .framer-1co9njw { align-content: flex-start; align-items: flex-start; display: flex; flex: 1 0 0px; flex-direction: column; flex-wrap: nowrap; height: 1px; justify-content: space-between; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-ulFqs .framer-1lwdgy4 { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: min-content; }\",\".framer-ulFqs .framer-7v1glz-container { flex: none; height: 35px; position: relative; width: 35px; }\",\".framer-ulFqs .framer-1lc0sln { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-end; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-ulFqs .framer-1g3z0po { flex: none; height: auto; pointer-events: none; position: relative; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-ulFqs.framer-1538id8, .framer-ulFqs .framer-1lwdgy4, .framer-ulFqs .framer-1lc0sln { gap: 0px; } .framer-ulFqs.framer-1538id8 > * { margin: 0px; margin-bottom: calc(25px / 2); margin-top: calc(25px / 2); } .framer-ulFqs.framer-1538id8 > :first-child, .framer-ulFqs .framer-1lc0sln > :first-child { margin-top: 0px; } .framer-ulFqs.framer-1538id8 > :last-child, .framer-ulFqs .framer-1lc0sln > :last-child { margin-bottom: 0px; } .framer-ulFqs .framer-1lwdgy4 > * { margin: 0px; margin-left: calc(10px / 2); margin-right: calc(10px / 2); } .framer-ulFqs .framer-1lwdgy4 > :first-child { margin-left: 0px; } .framer-ulFqs .framer-1lwdgy4 > :last-child { margin-right: 0px; } .framer-ulFqs .framer-1lc0sln > * { margin: 0px; margin-bottom: calc(0px / 2); margin-top: calc(0px / 2); } }\",\".framer-ulFqs.framer-v-2vnvlj.framer-1538id8 { cursor: unset; height: min-content; width: 300px; }\",\".framer-ulFqs.framer-v-2vnvlj .framer-1co9njw { align-content: center; align-items: center; flex: none; flex-direction: row; gap: 28px; height: min-content; justify-content: center; }\",\".framer-ulFqs.framer-v-2vnvlj .framer-1lc0sln { flex: 1 0 0px; width: 1px; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-ulFqs.framer-v-2vnvlj .framer-1co9njw { gap: 0px; } .framer-ulFqs.framer-v-2vnvlj .framer-1co9njw > * { margin: 0px; margin-left: calc(28px / 2); margin-right: calc(28px / 2); } .framer-ulFqs.framer-v-2vnvlj .framer-1co9njw > :first-child { margin-left: 0px; } .framer-ulFqs.framer-v-2vnvlj .framer-1co9njw > :last-child { margin-right: 0px; } }\",...sharedStyle.css,'.framer-ulFqs[data-border=\"true\"]::after, .framer-ulFqs [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; pointer-events: none; }'];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 211\n * @framerIntrinsicWidth 175\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"GobthPXov\":{\"layout\":[\"fixed\",\"auto\"]},\"uqM1thVpx\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerVariables {\"TXl3JifQz\":\"link\",\"WDE61Js6q\":\"title\",\"TuXUBRiOh\":\"icon\",\"EoiUdnIrn\":\"iconHover\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerKEIGp9seQ=withCSS(Component,css,\"framer-ulFqs\");export default FramerKEIGp9seQ;FramerKEIGp9seQ.displayName=\"Nav / Tray \u2013 Card\";FramerKEIGp9seQ.defaultProps={height:211,width:175};addPropertyControls(FramerKEIGp9seQ,{variant:{options:[\"rS16mv8bj\",\"GobthPXov\"],optionTitles:[\"Desktop\",\"Phone\"],title:\"Variant\",type:ControlType.Enum},TXl3JifQz:{title:\"Link\",type:ControlType.Link},WDE61Js6q:{defaultValue:\"Quick Start\",displayTextArea:false,title:\"Title\",type:ControlType.String},TuXUBRiOh:(NavTrayIconControls===null||NavTrayIconControls===void 0?void 0:NavTrayIconControls[\"variant\"])&&{...NavTrayIconControls[\"variant\"],defaultValue:\"kOKVZMv3e\",description:undefined,hidden:undefined,title:\"Icon\"},EoiUdnIrn:(NavTrayIconControls===null||NavTrayIconControls===void 0?void 0:NavTrayIconControls[\"variant\"])&&{...NavTrayIconControls[\"variant\"],defaultValue:\"bJQdBKSqu\",description:undefined,hidden:undefined,title:\"Icon Hover\"}});addFonts(FramerKEIGp9seQ,[{explicitInter:true,fonts:[{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/5vvr9Vy74if2I6bQbJvbw7SY1pQ.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/EOr0mi4hNtlgWNn9if640EZzXCo.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/Y9k9QrlZAqio88Klkmbd8VoMQc.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/OYrD2tBIBPvoJXiIHnLoOXnY9M.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/JeYwfuaPfZHQhEG8U5gtPDZ7WQ.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/vQyevYAyHtARFwPqUzQGpnDs.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/b6Y37FthZeALduNqHicBT6FutY.woff2\",weight:\"400\"}]},...NavTrayIconFonts,...getFontsFromSharedStyle(sharedStyle.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerKEIGp9seQ\",\"slots\":[],\"annotations\":{\"framerComponentViewportWidth\":\"true\",\"framerIntrinsicHeight\":\"211\",\"framerContractVersion\":\"1\",\"framerDisplayContentsDiv\":\"false\",\"framerVariables\":\"{\\\"TXl3JifQz\\\":\\\"link\\\",\\\"WDE61Js6q\\\":\\\"title\\\",\\\"TuXUBRiOh\\\":\\\"icon\\\",\\\"EoiUdnIrn\\\":\\\"iconHover\\\"}\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"GobthPXov\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"uqM1thVpx\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerImmutableVariables\":\"true\",\"framerIntrinsicWidth\":\"175\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}", "// Generated by Framer (99ae5b3)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,SVG,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";const cycleOrder=[\"vZeeZmyVJ\",\"UZnvvYoUZ\",\"XioEzfJ61\",\"QHZQdXUok\",\"bart134iP\",\"unQEaWlPP\",\"bnffWKLnC\",\"ZQM788nVg\",\"kCAil_vci\",\"LOI_lBRgD\",\"ArOhNgCb9\",\"RYwLLzsEP\",\"WoCgVewsp\",\"dVFzzqknm\",\"OnnrPdLuG\",\"DRhGZ6EUV\"];const serializationHash=\"framer-siRp2\";const variantClassNames={ArOhNgCb9:\"framer-v-1x9z1rz\",bart134iP:\"framer-v-16xzbcw\",bnffWKLnC:\"framer-v-u0vair\",DRhGZ6EUV:\"framer-v-nqk278\",dVFzzqknm:\"framer-v-kk9fmb\",kCAil_vci:\"framer-v-frc7ru\",LOI_lBRgD:\"framer-v-198j7o5\",OnnrPdLuG:\"framer-v-1dpw719\",QHZQdXUok:\"framer-v-11mwjqi\",RYwLLzsEP:\"framer-v-8d1c6j\",unQEaWlPP:\"framer-v-1f45wtw\",UZnvvYoUZ:\"framer-v-rxrdei\",vZeeZmyVJ:\"framer-v-oqrnjh\",WoCgVewsp:\"framer-v-1haaoye\",XioEzfJ61:\"framer-v-5o2a5f\",ZQM788nVg:\"framer-v-11v7jk4\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants===null||variants===void 0?void 0:variants.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value!==null&&value!==void 0?value:config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion(React.Fragment);const humanReadableVariantMap={\"Customer Stories\":\"DRhGZ6EUV\",\"Internet Security\":\"ArOhNgCb9\",\"Variant 14\":\"dVFzzqknm\",About:\"vZeeZmyVJ\",Access:\"LOI_lBRgD\",Blog:\"UZnvvYoUZ\",Careers:\"bart134iP\",Changelog:\"XioEzfJ61\",Demo:\"bnffWKLnC\",Docs:\"kCAil_vci\",Help:\"WoCgVewsp\",Integrations:\"QHZQdXUok\",Partners:\"ZQM788nVg\",Testimonials:\"OnnrPdLuG\",Whitepaper:\"unQEaWlPP\",ZTNA:\"RYwLLzsEP\"};const getProps=({height,id,width,...props})=>{var _humanReadableVariantMap_props_variant,_ref;return{...props,variant:(_ref=(_humanReadableVariantMap_props_variant=humanReadableVariantMap[props.variant])!==null&&_humanReadableVariantMap_props_variant!==void 0?_humanReadableVariantMap_props_variant:props.variant)!==null&&_ref!==void 0?_ref:\"vZeeZmyVJ\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"vZeeZmyVJ\",variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const ref1=React.useRef(null);const isDisplayed=()=>{if([\"UZnvvYoUZ\",\"XioEzfJ61\",\"QHZQdXUok\",\"bart134iP\",\"unQEaWlPP\",\"bnffWKLnC\",\"ZQM788nVg\",\"kCAil_vci\",\"LOI_lBRgD\",\"ArOhNgCb9\",\"RYwLLzsEP\",\"WoCgVewsp\",\"dVFzzqknm\",\"OnnrPdLuG\",\"DRhGZ6EUV\"].includes(baseVariant))return false;return true;};const isDisplayed1=()=>{if(baseVariant===\"bart134iP\")return true;return false;};const isDisplayed2=()=>{if(baseVariant===\"unQEaWlPP\")return true;return false;};const isDisplayed3=()=>{if(baseVariant===\"ZQM788nVg\")return true;return false;};const isDisplayed4=()=>{if(baseVariant===\"UZnvvYoUZ\")return true;return false;};const isDisplayed5=()=>{if(baseVariant===\"QHZQdXUok\")return true;return false;};const isDisplayed6=()=>{if(baseVariant===\"XioEzfJ61\")return true;return false;};const isDisplayed7=()=>{if(baseVariant===\"bnffWKLnC\")return true;return false;};const isDisplayed8=()=>{if(baseVariant===\"kCAil_vci\")return true;return false;};const isDisplayed9=()=>{if(baseVariant===\"LOI_lBRgD\")return true;return false;};const isDisplayed10=()=>{if(baseVariant===\"ArOhNgCb9\")return true;return false;};const isDisplayed11=()=>{if(baseVariant===\"RYwLLzsEP\")return true;return false;};const isDisplayed12=()=>{if([\"WoCgVewsp\",\"dVFzzqknm\"].includes(baseVariant))return true;return false;};const isDisplayed13=()=>{if(baseVariant===\"OnnrPdLuG\")return true;return false;};const isDisplayed14=()=>{if(baseVariant===\"DRhGZ6EUV\")return true;return false;};const defaultLayoutId=React.useId();const sharedStyleClassNames=[];const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId!==null&&layoutId!==void 0?layoutId:defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(serializationHash,...sharedStyleClassNames,\"framer-oqrnjh\",className,classNames),\"data-framer-name\":\"About\",layoutDependency:layoutDependency,layoutId:\"vZeeZmyVJ\",ref:ref!==null&&ref!==void 0?ref:ref1,style:{...style},...addPropertyOverrides({ArOhNgCb9:{\"data-framer-name\":\"Internet Security\"},bart134iP:{\"data-framer-name\":\"Careers\"},bnffWKLnC:{\"data-framer-name\":\"Demo\"},DRhGZ6EUV:{\"data-framer-name\":\"Customer Stories\"},dVFzzqknm:{\"data-framer-name\":\"Variant 14\"},kCAil_vci:{\"data-framer-name\":\"Docs\"},LOI_lBRgD:{\"data-framer-name\":\"Access\"},OnnrPdLuG:{\"data-framer-name\":\"Testimonials\"},QHZQdXUok:{\"data-framer-name\":\"Integrations\"},RYwLLzsEP:{\"data-framer-name\":\"ZTNA\"},unQEaWlPP:{\"data-framer-name\":\"Whitepaper\"},UZnvvYoUZ:{\"data-framer-name\":\"Blog\"},WoCgVewsp:{\"data-framer-name\":\"Help\"},XioEzfJ61:{\"data-framer-name\":\"Changelog\"},ZQM788nVg:{\"data-framer-name\":\"Partners\"}},baseVariant,gestureVariant),children:[isDisplayed()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-qi0z0h\",\"data-framer-name\":\"About\",layoutDependency:layoutDependency,layoutId:\"II3H9raCF\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-15gyfr8\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:13,intrinsicWidth:16,layoutDependency:layoutDependency,layoutId:\"PNTJOXSVU\",svg:'<svg width=\"16\" height=\"13\" viewBox=\"0 0 16 13\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3.5 4C3.5 2.61929 4.61929 1.5 6 1.5C7.38071 1.5 8.5 2.61929 8.5 4C8.5 5.38071 7.38071 6.5 6 6.5C4.61929 6.5 3.5 5.38071 3.5 4ZM6 0.5C4.067 0.5 2.5 2.067 2.5 4C2.5 5.933 4.067 7.5 6 7.5C7.933 7.5 9.5 5.933 9.5 4C9.5 2.067 7.933 0.5 6 0.5ZM12.5 4C12.5 3.17157 11.8284 2.5 11 2.5V1.5C12.3807 1.5 13.5 2.61929 13.5 4C13.5 5.38071 12.3807 6.5 11 6.5V5.5C11.8284 5.5 12.5 4.82843 12.5 4ZM4 8.5C2.067 8.5 0.5 10.067 0.5 12V13H1.5V12C1.5 10.6193 2.61929 9.5 4 9.5H8C9.38071 9.5 10.5 10.6193 10.5 12V13H11.5V12C11.5 10.067 9.933 8.5 8 8.5H4ZM15.5 12C15.5 10.067 13.933 8.5 12 8.5V9.5C13.3807 9.5 14.5 10.6193 14.5 12V13H15.5V12Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed1()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-4v3c1n\",\"data-framer-name\":\"Careers\",layoutDependency:layoutDependency,layoutId:\"j98aOxIUO\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-10p0sih\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:14,intrinsicWidth:14,layoutDependency:layoutDependency,layoutId:\"Elxs4E0SE\",svg:'<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6 0.5C4.61929 0.5 3.5 1.61929 3.5 3V4H2C0.895431 4 0 4.89543 0 6V12C0 13.1046 0.89543 14 2 14H12C13.1046 14 14 13.1046 14 12V6C14 4.89543 13.1046 4 12 4H10.5V3C10.5 1.61929 9.38071 0.5 8 0.5H6ZM9.5 4V3C9.5 2.17157 8.82843 1.5 8 1.5H6C5.17157 1.5 4.5 2.17157 4.5 3V4H9.5ZM2 5H12C12.5523 5 13 5.44772 13 6V12C13 12.5523 12.5523 13 12 13H2C1.44772 13 1 12.5523 1 12V6C1 5.44772 1.44772 5 2 5Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed2()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1t8owyb\",\"data-framer-name\":\"Whitepaper\",layoutDependency:layoutDependency,layoutId:\"s_cN3Y_NT\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-11wgr2r\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:14,intrinsicWidth:12,layoutDependency:layoutDependency,layoutId:\"vjDxGkWhL\",svg:'<svg width=\"12\" height=\"14\" viewBox=\"0 0 12 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M10 13H2C1.44772 13 1 12.5523 1 12V2C1 1.44772 1.44772 1 2 1H5.5V6.5H11V12C11 12.5523 10.5523 13 10 13ZM12 5.5V6.5V12C12 13.1046 11.1046 14 10 14H2C0.895431 14 0 13.1046 0 12V2C0 0.895431 0.895431 0 2 0H5.5H6.5H7L12 5V5.5ZM6.5 1H6.58579L11 5.41421V5.5H6.5V1Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed3()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-12hnefn\",\"data-framer-name\":\"Partners\",layoutDependency:layoutDependency,layoutId:\"MlV1_pEwA\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-1e2bayc\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:15,intrinsicWidth:15,layoutDependency:layoutDependency,layoutId:\"HXoGfJKGy\",svg:'<svg width=\"15\" height=\"15\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3.37866 1.20046C4.55023 0.0288849 6.44972 0.0288854 7.6213 1.20045L8.05534 1.63449C9.23053 0.751627 10.9064 0.844893 11.9758 1.91429L14.0856 4.02409C15.2572 5.19566 15.2572 7.09514 14.0856 8.26671L8.71744 13.635C8.13166 14.2208 7.18191 14.2208 6.59612 13.635C6.32445 13.3633 6.17877 13.0134 6.15909 12.6577C5.80347 12.6381 5.45352 12.4924 5.18186 12.2207C4.91021 11.9491 4.76453 11.5991 4.74483 11.2435C4.38928 11.2238 4.03941 11.0781 3.7678 10.8065C3.49613 10.5349 3.35045 10.1849 3.33076 9.82928C2.97512 9.80961 2.62515 9.66393 2.35346 9.39225C1.76767 8.80646 1.76767 7.85671 2.35346 7.27093L6.7 2.97815L7.18384 3.46689L8.86028 5.09374L8.86106 5.0945L8.86328 5.09658C8.86649 5.09958 8.87256 5.10516 8.88121 5.11278C8.89864 5.12812 8.9259 5.15114 8.96097 5.17774C9.03317 5.2325 9.12817 5.29461 9.23093 5.3392C9.33524 5.38446 9.4235 5.4013 9.49268 5.39602C9.54945 5.3917 9.61826 5.37167 9.7019 5.28846C9.80937 5.18155 9.83844 5.10226 9.84758 5.05767C9.85729 5.01027 9.85268 4.96075 9.83347 4.90525C9.81336 4.84715 9.78045 4.79268 9.74858 4.75011C9.7334 4.72984 9.72039 4.71484 9.71259 4.70629L9.70659 4.6999L9.70087 4.69448L6.91419 1.90756C6.13314 1.12652 4.86681 1.12652 4.08577 1.90756L1.85367 4.13966C1.17345 4.81988 1.17345 5.92274 1.85367 6.60296L1.14657 7.31007C0.0758189 6.23932 0.0758195 4.5033 1.14657 3.43255L3.37866 1.20046ZM9.92771 9.59619L9.92777 9.59625L7.30323 12.2208C7.10797 12.416 7.10797 12.7326 7.30323 12.9279C7.49849 13.1231 7.81507 13.1231 8.01033 12.9279L13.3785 7.55961C14.1596 6.77856 14.1596 5.51224 13.3785 4.7312L11.2687 2.6214C10.5909 1.94364 9.54777 1.85401 8.77336 2.35251L10.4055 3.98467L10.4063 3.98537L10.418 3.99704C10.427 4.00617 10.4383 4.01803 10.4515 4.03249C10.4778 4.06128 10.5119 4.1011 10.5491 4.15079C10.622 4.24815 10.7148 4.39414 10.7785 4.57819C10.8431 4.76484 10.8804 4.99916 10.8272 5.25845C10.7735 5.52054 10.635 5.77077 10.4072 5.99737C10.1556 6.24768 9.864 6.37062 9.5687 6.39313C9.28581 6.4147 9.03036 6.34226 8.83286 6.25655C8.6338 6.17018 8.46889 6.05962 8.35663 5.97447C8.29948 5.93111 8.25337 5.89236 8.22049 5.86341C8.20399 5.84889 8.19067 5.8367 8.18078 5.82747L8.16852 5.81588L8.16435 5.81186L8.16277 5.81031L8.1618 5.80937L6.69334 4.38434L3.06057 7.97803C2.86531 8.1733 2.86531 8.48988 3.06057 8.68514C3.25583 8.8804 3.57241 8.8804 3.76767 8.68514L6.39221 6.06061L6.3923 6.0607L6.39233 6.06067L7.09944 6.76778L4.4749 9.39231C4.27964 9.58757 4.27964 9.90416 4.4749 10.0994C4.66781 10.2923 4.97912 10.2947 5.17488 10.1064L5.18186 10.0994L7.8064 7.47485L7.80649 7.47494L7.80655 7.47488L8.51365 8.18199L5.88912 10.8065L5.88194 10.8137C5.69373 11.0094 5.69607 11.3207 5.88897 11.5136C6.08423 11.7089 6.40081 11.7089 6.59607 11.5136L9.22061 8.88907L9.92772 9.59617L9.92771 9.59619Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed4()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-vskdio\",\"data-framer-name\":\"Blog\",layoutDependency:layoutDependency,layoutId:\"UOGgr1e1_\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-1ko84cx\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:14,intrinsicWidth:14,layoutDependency:layoutDependency,layoutId:\"ple3KcMGw\",svg:'<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 1H2C1.44772 1 1 1.44772 1 2V6C1 6.55228 1.44772 7 2 7H12C12.5523 7 13 6.55228 13 6V2C13 1.44772 12.5523 1 12 1ZM2 0C0.895431 0 0 0.895431 0 2V6C0 7.10457 0.89543 8 2 8H12C13.1046 8 14 7.10457 14 6V2C14 0.895431 13.1046 0 12 0H2ZM0 10H13V11H0V10ZM9 13H0V14H9V13Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed5()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-umasq6\",\"data-framer-name\":\"Integrations\",layoutDependency:layoutDependency,layoutId:\"cmPJMEk7O\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-1t2278c\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:14,intrinsicWidth:14,layoutDependency:layoutDependency,layoutId:\"fEQ9xOuep\",svg:'<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M9.55556 1H13V4.44444H9.55556V1ZM8.55556 0H9.55556H13H14V1V4.44444V5.44444H13H9.55556H8.55556V4.44444V3.22222H4.72222C3.8938 3.22222 3.22222 3.8938 3.22222 4.72222V7H2.22222V4.72222C2.22222 3.34151 3.34151 2.22222 4.72222 2.22222H8.55556V1V0ZM1 9.55556H4.44444V13H1V9.55556ZM0 8.55556H1H4.44444H5.44444V9.55556V10.7778H9.27778C10.1062 10.7778 10.7778 10.1062 10.7778 9.27778V7H11.7778V9.27778C11.7778 10.6585 10.6585 11.7778 9.27778 11.7778H5.44444V13V14H4.44444H1H0V13V9.55556V8.55556Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed6()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-t2oaxz\",\"data-framer-name\":\"Changelog\",layoutDependency:layoutDependency,layoutId:\"zcv2_gdO1\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-fkxkmr\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:14,intrinsicWidth:14,layoutDependency:layoutDependency,layoutId:\"NZr5lnhHX\",svg:'<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8.03534 0.371338V0.371345C8.41101 0.373018 8.78538 0.415468 9.15188 0.497947C9.51413 0.578237 9.86549 0.701495 10.1985 0.865102C10.5288 1.02184 10.8423 1.21167 11.1342 1.43168L11.1428 1.43817L11.1511 1.44502C11.4343 1.67818 11.6945 1.93787 11.9282 2.22053C12.1776 2.49797 12.3985 2.79985 12.5875 3.12158C12.788 3.45201 12.9569 3.80058 13.0921 4.16268L12.1552 4.51236C12.0416 4.20804 11.8996 3.91513 11.7309 3.63753L11.7268 3.63083L11.7268 3.63079C11.57 3.36325 11.3862 3.11242 11.1783 2.88221L11.1707 2.87377L11.1635 2.86499C10.9711 2.6314 10.7569 2.41671 10.5237 2.22382C10.2874 2.04664 10.0339 1.89367 9.76699 1.76721L9.76019 1.76399L9.76022 1.76394C9.49765 1.63468 9.22053 1.53737 8.93479 1.4741L8.93303 1.47371C8.63733 1.40711 8.33528 1.37278 8.03218 1.37134C7.56196 1.37182 7.09471 1.44578 6.64732 1.59055L6.64338 1.59182L6.64338 1.5918C6.19535 1.7327 5.76679 1.9293 5.36776 2.17701L5.36555 2.17838L5.36555 2.17837C4.95691 2.42912 4.57024 2.714 4.20967 3.02998C3.85814 3.34042 3.52622 3.67238 3.21581 4.02393L3.20553 4.03556L3.19456 4.04654C2.92855 4.31255 2.68702 4.6397 2.45038 4.96025L2.40519 5.02144C2.1717 5.33734 1.97851 5.63382 1.80669 5.89869C1.76118 5.96887 1.71885 6.03636 1.67959 6.10052H5.1685V7.10052H0.871582H0.371582V6.60052V2.3036H1.37158V4.74774C1.44361 4.64392 1.51998 4.53669 1.60102 4.42705L1.65439 4.35471C1.87929 4.0497 2.15928 3.66995 2.47628 3.35065C2.8114 2.97205 3.16947 2.61442 3.54848 2.27976L3.54985 2.27855L3.54985 2.27855C3.95276 1.9254 4.38483 1.60699 4.84144 1.32672C5.31072 1.03553 5.81465 0.804312 6.34144 0.638473C6.88786 0.46189 7.45851 0.371758 8.03275 0.371338H8.03534ZM8.71213 7.77915H12.1997C12.1604 7.84336 12.118 7.91091 12.0725 7.98114C11.9006 8.24601 11.7075 8.54248 11.474 8.85838L11.4288 8.91956C11.1921 9.24011 10.9506 9.56726 10.6846 9.83327L10.6736 9.84425L10.6634 9.85588C10.3529 10.2075 10.021 10.5394 9.66941 10.8499C9.30887 11.1658 8.92224 11.4507 8.51364 11.7014L8.51143 11.7028C8.11241 11.9505 7.68385 12.1471 7.23583 12.288L7.23582 12.288L7.23189 12.2892C6.78451 12.434 6.31726 12.508 5.84705 12.5084C5.54395 12.507 5.24191 12.4727 4.94621 12.4061L4.94445 12.4057C4.65871 12.3424 4.3816 12.2451 4.11903 12.1158L4.11906 12.1158L4.11226 12.1126C3.84533 11.9861 3.59181 11.8331 3.35551 11.656C3.12237 11.4631 2.90817 11.2484 2.71581 11.0148L2.70858 11.006L2.70096 10.9976C2.49311 10.7674 2.30932 10.5166 2.15243 10.249L2.15248 10.249L2.14841 10.2423C1.97972 9.96468 1.83764 9.67177 1.72405 9.36745L0.787188 9.71714C0.922342 10.0792 1.09129 10.4278 1.29179 10.7582C1.48075 11.08 1.70164 11.3818 1.9511 11.6593C2.18481 11.9419 2.445 12.2016 2.72813 12.4348L2.73645 12.4416L2.74506 12.4481C3.03699 12.6681 3.35049 12.8579 3.68074 13.0147C4.01375 13.1783 4.3651 13.3015 4.72735 13.3818C5.09385 13.4643 5.46822 13.5068 5.84388 13.5084L5.84647 13.5084C6.42072 13.508 6.99137 13.4179 7.53778 13.2413C8.06456 13.0755 8.56848 12.8442 9.03775 12.5531C9.49436 12.2728 9.92642 11.9544 10.3293 11.6012L10.3307 11.6C10.7097 11.2654 11.0678 10.9077 11.4029 10.5292C11.7199 10.2099 11.9999 9.83014 12.2247 9.52513L12.2248 9.52511L12.2781 9.45277C12.3597 9.34241 12.4366 9.23448 12.509 9.13002V11.576H13.509V7.27915V6.77915H13.009H8.71213V7.77915ZM9.03775 12.5531L9.03664 12.5537L8.77516 12.1276L9.03885 12.5524L9.03775 12.5531ZM7.53778 13.2413L7.53581 13.2419L7.38582 12.7649L7.53976 13.2407L7.53778 13.2413ZM4.72735 13.3818L4.72648 13.3816L4.83635 12.8939L4.72824 13.382L4.72735 13.3818ZM3.68074 13.0147L3.67736 13.013L3.8982 12.5644L3.68413 13.0163L3.68074 13.0147ZM1.9511 11.6593L1.94387 11.6505L2.32984 11.3327L1.95872 11.6677L1.9511 11.6593ZM1.29179 10.7582L1.2898 10.7548L1.72112 10.5019L1.29382 10.7616L1.29179 10.7582ZM3.35551 11.656L3.36383 11.6628L3.04598 12.0488L3.34691 11.6495L3.35551 11.656ZM5.84705 12.5084L5.84834 12.5084L5.84611 13.0084L5.84575 12.5084L5.84705 12.5084ZM9.66941 10.8499L9.67017 10.8492L9.99973 11.2252L9.66881 10.8504L9.66941 10.8499Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed7()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-kk6jss\",\"data-framer-name\":\"Demo\",layoutDependency:layoutDependency,layoutId:\"MsHKUDKed\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-1po6c6c\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:12,intrinsicWidth:14,layoutDependency:layoutDependency,layoutId:\"TAXrMRe9P\",svg:'<svg width=\"14\" height=\"12\" viewBox=\"0 0 14 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 1H2C1.44772 1 1 1.44772 1 2V8C1 8.55229 1.44772 9 2 9H12C12.5523 9 13 8.55228 13 8V2C13 1.44772 12.5523 1 12 1ZM2 0C0.895431 0 0 0.895431 0 2V8C0 9.10457 0.895431 10 2 10H12C13.1046 10 14 9.10457 14 8V2C14 0.895431 13.1046 0 12 0H2ZM3.5 7C3.5 5.067 5.067 3.5 7 3.5C8.933 3.5 10.5 5.067 10.5 7H9.5C9.5 5.61929 8.38071 4.5 7 4.5C5.61929 4.5 4.5 5.61929 4.5 7H3.5ZM10 12V11H4V12H10Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed8()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1admngf\",\"data-framer-name\":\"Docs\",layoutDependency:layoutDependency,layoutId:\"L9nrroOAO\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-ardnhx\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:14,intrinsicWidth:12,layoutDependency:layoutDependency,layoutId:\"RR8uBab8z\",svg:'<svg width=\"12\" height=\"14\" viewBox=\"0 0 12 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3 0.5C1.61929 0.5 0.5 1.61929 0.5 3V11.5C0.5 12.6046 1.39543 13.5 2.5 13.5H11.5V12.5H2.5C1.94772 12.5 1.5 12.0523 1.5 11.5C1.5 10.9477 1.94772 10.5 2.5 10.5H11.5V10.3333V9.5V0.5H3ZM10.5 9.5V1.5H3C2.17157 1.5 1.5 2.17157 1.5 3V9.76756C1.79417 9.59739 2.13571 9.5 2.5 9.5H10.5Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed9()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1f4y6bm\",\"data-framer-name\":\"Access\",layoutDependency:layoutDependency,layoutId:\"PXSr2BPEq\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-158bv4x\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:14,intrinsicWidth:14,layoutDependency:layoutDependency,layoutId:\"INAsc6fiJ\",svg:'<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M2.33333 3.66667C3.06971 3.66667 3.66667 3.06971 3.66667 2.33333C3.66667 1.59695 3.06971 1 2.33333 1C1.59695 1 1 1.59695 1 2.33333C1 3.06971 1.59695 3.66667 2.33333 3.66667ZM2.33333 4.66667C3.622 4.66667 4.66667 3.622 4.66667 2.33333C4.66667 1.04467 3.622 0 2.33333 0C1.04467 0 0 1.04467 0 2.33333C0 3.622 1.04467 4.66667 2.33333 4.66667ZM11.6667 13C12.403 13 13 12.403 13 11.6667C13 10.9303 12.403 10.3333 11.6667 10.3333C10.9303 10.3333 10.3333 10.9303 10.3333 11.6667C10.3333 12.403 10.9303 13 11.6667 13ZM11.6667 14C12.9553 14 14 12.9553 14 11.6667C14 10.378 12.9553 9.33333 11.6667 9.33333C10.378 9.33333 9.33333 10.378 9.33333 11.6667C9.33333 12.9553 10.378 14 11.6667 14ZM13 3.5C13 4.88071 11.8807 6 10.5 6C9.11929 6 8 4.88071 8 3.5C8 2.11929 9.11929 1 10.5 1C11.8807 1 13 2.11929 13 3.5ZM14 3.5C14 5.433 12.433 7 10.5 7C9.71385 7 8.98824 6.74081 8.40396 6.30322L6.30322 8.40396C6.74081 8.98824 7 9.71385 7 10.5C7 12.433 5.433 14 3.5 14C1.567 14 0 12.433 0 10.5C0 8.567 1.567 7 3.5 7C4.28619 7 5.01183 7.25921 5.59613 7.69684L7.69684 5.59613C7.25921 5.01183 7 4.28619 7 3.5C7 1.567 8.567 0 10.5 0C12.433 0 14 1.567 14 3.5ZM3.5 13C4.88071 13 6 11.8807 6 10.5C6 9.11929 4.88071 8 3.5 8C2.11929 8 1 9.11929 1 10.5C1 11.8807 2.11929 13 3.5 13Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed10()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1n4r5ec\",\"data-framer-name\":\"Internet Security\",layoutDependency:layoutDependency,layoutId:\"yaEqYP9lP\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-fnstm3\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:12,intrinsicWidth:16,layoutDependency:layoutDependency,layoutId:\"ifZZuoNoz\",svg:'<svg width=\"16\" height=\"12\" viewBox=\"0 0 16 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 1H4C3.44772 1 3 1.44772 3 2V5H13V2C13 1.44772 12.5523 1 12 1ZM14 5V2C14 0.895431 13.1046 0 12 0H4C2.89543 0 2 0.895431 2 2V5H0V6H2H3H13H14H16V5H14ZM2 7H3V10C3 10.5523 3.44772 11 4 11H12C12.5523 11 13 10.5523 13 10V7H14V10C14 11.1046 13.1046 12 12 12H4C2.89543 12 2 11.1046 2 10V7Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed11()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1yeyoni\",\"data-framer-name\":\"ZTNA\",layoutDependency:layoutDependency,layoutId:\"krD7g3R78\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-1yblk61\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:12,intrinsicWidth:16,layoutDependency:layoutDependency,layoutId:\"uqOBpe6Ms\",svg:'<svg width=\"16\" height=\"12\" viewBox=\"0 0 16 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3.33981 10C2.40997 10 1.62091 9.68849 0.972621 9.06549C0.324207 8.4426 0 7.68445 0 6.79104C0 5.91754 0.32466 5.15354 0.973981 4.49907C1.62317 3.84471 2.43715 3.52469 3.41592 3.53899C3.64401 2.46461 4.19443 1.60622 5.06718 0.963805C5.94006 0.321268 6.91767 0 8 0C9.26563 0 10.3717 0.386505 11.3181 1.15952C11.9539 1.6789 12.3762 2.2924 12.5849 3H11.5128C11.3295 2.5689 11.0291 2.18768 10.6117 1.85634C9.86731 1.26555 8.99676 0.970149 8 0.970149C7.15262 0.970149 6.39061 1.22631 5.71398 1.73862C5.03735 2.25106 4.59942 2.92917 4.40019 3.77295C5.07735 3.96524 5.62654 4.33719 6.04777 4.88881C6.469 5.44042 6.67961 6.0745 6.67961 6.79104H5.6699C5.6699 6.17276 5.44207 5.64502 4.98641 5.20784C4.53074 4.77077 3.98058 4.55224 3.33592 4.55224C2.69126 4.55224 2.1424 4.77114 1.68932 5.20896C1.23625 5.64677 1.00971 6.17537 1.00971 6.79478C1.00971 7.41418 1.23715 7.94154 1.69204 8.37687C2.14706 8.81219 2.69631 9.02985 3.33981 9.02985H9V10H3.33981ZM10.9999 5.2C10.9999 4.53726 11.5371 4 12.1999 4H13.7999C14.4626 4 14.9999 4.53726 14.9999 5.2V7H16V12H10V7H10.9999V5.2ZM13.9999 5V7H11.9999V5H13.9999ZM12.5 10.5H13.5V8.5H12.5V10.5Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed12()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1s199fb\",\"data-framer-name\":\"Help\",layoutDependency:layoutDependency,layoutId:\"WO1UXjtgY\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-38bvhu\",\"data-framer-name\":\"Help center\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:16,intrinsicWidth:14,layoutDependency:layoutDependency,layoutId:\"nJ76kYDbO\",svg:'<svg width=\"14\" height=\"16\" viewBox=\"0 0 14 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8.37468 14.8258L8.3461 13.5H7C5.05431 13.5 3.40122 13.2223 2.04073 11.8717C0.680245 10.5212 0 8.88022 0 6.94877C0 5.01731 0.680245 3.37633 2.04073 2.0258C3.40122 0.675263 5.05431 0 7 0C7.97284 0 8.88378 0.180821 9.7328 0.542467C10.5817 0.904267 11.3229 1.39964 11.9565 2.02858C12.59 2.65752 13.0891 3.39331 13.4535 4.23597C13.8178 5.07878 14 5.98304 14 6.94877C14 7.89303 13.8603 8.79992 13.5809 9.66944C13.3016 10.539 12.9151 11.3609 12.4215 12.1353C11.9279 12.9099 11.3368 13.6232 10.6482 14.2753C10.2479 14.6543 9.82716 15.0072 9.38587 15.3341C9.0679 15.5696 8.73928 15.7916 8.4 16L8.37468 14.8258ZM7 1C7.84551 1 8.62231 1.15642 9.34071 1.46239C10.0771 1.77624 10.7113 2.20157 11.252 2.73828C11.7926 3.27495 12.2203 3.90378 12.5357 4.63295C12.843 5.34399 13 6.1124 13 6.94877C13 7.79275 12.8754 8.5962 12.6289 9.36354C12.3758 10.1511 12.026 10.8953 11.5782 11.5979L11.5782 11.5979C11.13 12.3012 10.5917 12.9515 9.96059 13.5492C9.76529 13.7341 9.56474 13.9124 9.35892 14.0839L9.34587 13.4784L9.32477 12.5H8.3461H7C5.13839 12.5 3.8209 12.2298 2.74524 11.162C1.57548 10.0008 1 8.61599 1 6.94877C1 5.28154 1.57548 3.8967 2.74524 2.7355C3.91529 1.57401 5.31382 1 7 1ZM7.76375 10.786C7.62111 10.9287 7.44771 11 7.24354 11C7.03951 11 6.86618 10.9287 6.72354 10.786C6.5809 10.6434 6.50958 10.4701 6.50958 10.266C6.50958 10.062 6.5809 9.88868 6.72354 9.74604C6.86618 9.6034 7.03951 9.53208 7.24354 9.53208C7.44771 9.53208 7.62111 9.6034 7.76375 9.74604C7.90625 9.88868 7.9775 10.062 7.9775 10.266C7.9775 10.4701 7.90625 10.6434 7.76375 10.786ZM7.75313 8.45833H6.75958C6.75958 7.94556 6.81701 7.55826 6.93188 7.29646C7.04674 7.03479 7.3259 6.71167 7.76938 6.32708C7.97979 6.11653 8.15576 5.91618 8.29729 5.72604C8.43882 5.5359 8.50958 5.31208 8.50958 5.05458C8.50958 4.77792 8.40653 4.52333 8.20042 4.29083C7.99417 4.05847 7.67951 3.94229 7.25646 3.94229C6.87076 3.94229 6.57535 4.05021 6.37021 4.26604C6.16507 4.48188 6.01708 4.71049 5.92625 4.95188L5 4.58979C5.16667 4.15174 5.44368 3.77729 5.83104 3.46646C6.21826 3.15549 6.6934 3 7.25646 3C7.87715 3 8.41104 3.17444 8.85813 3.52333C9.30535 3.87208 9.52896 4.37396 9.52896 5.02896C9.52896 5.35688 9.45229 5.65597 9.29896 5.92625C9.14563 6.19667 8.9466 6.45417 8.70188 6.69875C8.27354 7.12722 8.01104 7.43278 7.91438 7.61542C7.81757 7.79819 7.76382 8.07917 7.75313 8.45833Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed13()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1mssdur\",\"data-framer-name\":\"Testimonials\",layoutDependency:layoutDependency,layoutId:\"EUKvsoFfo\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-1wf1pp6\",\"data-framer-name\":\"Union\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:15,intrinsicWidth:15,layoutDependency:layoutDependency,layoutId:\"B2jLgLkrb\",svg:'<svg width=\"15\" height=\"15\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M2 1H10C10.5523 1 11 1.44772 11 2V8C11 8.55229 10.5523 9 10 9H3.60555C3.01328 9 2.43425 9.17531 1.94145 9.50385L1 10.1315V2C1 1.44772 1.44772 1 2 1ZM3.60555 10C3.2107 10 2.82469 10.1169 2.49615 10.3359L0 12V2C0 0.895431 0.895431 0 2 0H10C11.1046 0 12 0.895431 12 2V8C12 9.10457 11.1046 10 10 10H3.60555ZM13.5 3V10.1667C13.5 10.9951 12.8284 11.6667 12 11.6667H6.35555C5.86198 11.6667 5.37946 11.8128 4.96879 12.0865L3.27734 13.1989V14.416L5.52349 12.9186C5.7699 12.7543 6.05941 12.6667 6.35555 12.6667H12C13.3807 12.6667 14.5 11.5474 14.5 10.1667V3H13.5ZM3 3H9V4H3V3ZM7 6H3V7H7V6Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})}),isDisplayed14()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-14ki9td\",\"data-framer-name\":\"Customer stories\",layoutDependency:layoutDependency,layoutId:\"iAO0Z_zDQ\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-19n29ie\",\"data-framer-name\":\"Vector\",fill:\"rgba(0,0,0,1)\",intrinsicHeight:16,intrinsicWidth:12,layoutDependency:layoutDependency,layoutId:\"u7HhDh11J\",svg:'<svg width=\"12\" height=\"16\" viewBox=\"0 0 12 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path d=\"M1.98077 15.4754C1.43594 15.4754 0.969605 15.2969 0.581772 14.9398C0.193939 14.5826 2.19345e-05 14.1407 2.19345e-05 13.6143L0 4.42419C0 3.91159 0.176583 3.46182 0.52975 3.0749C0.882917 2.68797 1.3185 2.44115 1.8365 2.33444L8.6155 0.5L8.61552 10.9387L1.75577 12.8377C1.55444 12.8834 1.37819 12.9744 1.22702 13.1108C1.07569 13.2472 1.00002 13.415 1.00002 13.6143C1.00002 13.8717 1.09744 14.0814 1.29227 14.2431C1.48711 14.4049 1.71661 14.4858 1.98077 14.4858H11V3.16669H12V15.4754H1.98077ZM3.38452 11.5L7.61552 10.1544L7.6155 1.7256L3.3845 3L3.38452 11.5ZM2.38452 11.7056L2.3845 3.23842L1.952 3.33169C1.67883 3.39008 1.45192 3.51922 1.27125 3.71911C1.09042 3.91885 1 4.15387 1 4.42419L1.00002 12.1433C1.22702 12.0581 1.90466 11.81 2.38452 11.7056Z\" fill=\"white\"/>\\n</svg>\\n',withExternalLayout:true})})]})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-siRp2.framer-1xh12vi, .framer-siRp2 .framer-1xh12vi { display: block; }\",\".framer-siRp2.framer-oqrnjh { align-content: center; align-items: center; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: 20px; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 20px; }\",\".framer-siRp2 .framer-qi0z0h, .framer-siRp2 .framer-4v3c1n, .framer-siRp2 .framer-1t8owyb, .framer-siRp2 .framer-12hnefn, .framer-siRp2 .framer-vskdio, .framer-siRp2 .framer-umasq6, .framer-siRp2 .framer-t2oaxz, .framer-siRp2 .framer-kk6jss, .framer-siRp2 .framer-1admngf, .framer-siRp2 .framer-1f4y6bm, .framer-siRp2 .framer-1n4r5ec, .framer-siRp2 .framer-1yeyoni, .framer-siRp2 .framer-1s199fb, .framer-siRp2 .framer-1mssdur, .framer-siRp2 .framer-14ki9td { flex: none; height: 20px; overflow: visible; position: relative; width: 20px; }\",\".framer-siRp2 .framer-15gyfr8 { flex: none; height: 13px; left: 2px; position: absolute; top: 3px; width: 16px; }\",\".framer-siRp2 .framer-10p0sih { flex: none; height: 14px; left: calc(50.00000000000002% - 14px / 2); position: absolute; top: 2px; width: 14px; }\",\".framer-siRp2 .framer-11wgr2r, .framer-siRp2 .framer-ardnhx { flex: none; height: 14px; left: 4px; position: absolute; top: 3px; width: 12px; }\",\".framer-siRp2 .framer-1e2bayc, .framer-siRp2 .framer-1wf1pp6 { flex: none; height: 15px; left: calc(50.00000000000002% - 15px / 2); position: absolute; top: calc(50.00000000000002% - 15px / 2); width: 15px; }\",\".framer-siRp2 .framer-1ko84cx, .framer-siRp2 .framer-1t2278c, .framer-siRp2 .framer-fkxkmr { flex: none; height: 14px; left: 3px; position: absolute; top: 3px; width: 14px; }\",\".framer-siRp2 .framer-1po6c6c { flex: none; height: 12px; left: 3px; position: absolute; top: 4px; width: 14px; }\",\".framer-siRp2 .framer-158bv4x { flex: none; height: 14px; left: calc(50.00000000000002% - 14px / 2); position: absolute; top: calc(50.00000000000002% - 14px / 2); width: 14px; }\",\".framer-siRp2 .framer-fnstm3, .framer-siRp2 .framer-1yblk61 { flex: none; height: 12px; left: calc(50.00000000000002% - 16px / 2); position: absolute; top: calc(50.00000000000002% - 12px / 2); width: 16px; }\",\".framer-siRp2 .framer-38bvhu { flex: none; height: 16px; left: calc(50.00000000000002% - 14px / 2); position: absolute; top: calc(50.00000000000002% - 16px / 2); width: 14px; }\",\".framer-siRp2 .framer-19n29ie { flex: none; height: 16px; left: calc(50.00000000000002% - 12px / 2); position: absolute; top: calc(50.00000000000002% - 16px / 2); width: 12px; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-siRp2.framer-oqrnjh { gap: 0px; } .framer-siRp2.framer-oqrnjh > * { margin: 0px; margin-left: calc(10px / 2); margin-right: calc(10px / 2); } .framer-siRp2.framer-oqrnjh > :first-child { margin-left: 0px; } .framer-siRp2.framer-oqrnjh > :last-child { margin-right: 0px; } }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 20\n * @framerIntrinsicWidth 20\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"UZnvvYoUZ\":{\"layout\":[\"fixed\",\"fixed\"]},\"XioEzfJ61\":{\"layout\":[\"fixed\",\"fixed\"]},\"QHZQdXUok\":{\"layout\":[\"fixed\",\"fixed\"]},\"bart134iP\":{\"layout\":[\"fixed\",\"fixed\"]},\"unQEaWlPP\":{\"layout\":[\"fixed\",\"fixed\"]},\"bnffWKLnC\":{\"layout\":[\"fixed\",\"fixed\"]},\"ZQM788nVg\":{\"layout\":[\"fixed\",\"fixed\"]},\"kCAil_vci\":{\"layout\":[\"fixed\",\"fixed\"]},\"LOI_lBRgD\":{\"layout\":[\"fixed\",\"fixed\"]},\"ArOhNgCb9\":{\"layout\":[\"fixed\",\"fixed\"]},\"RYwLLzsEP\":{\"layout\":[\"fixed\",\"fixed\"]},\"WoCgVewsp\":{\"layout\":[\"fixed\",\"fixed\"]},\"dVFzzqknm\":{\"layout\":[\"fixed\",\"fixed\"]},\"OnnrPdLuG\":{\"layout\":[\"fixed\",\"fixed\"]},\"DRhGZ6EUV\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerlLkcBkgJT=withCSS(Component,css,\"framer-siRp2\");export default FramerlLkcBkgJT;FramerlLkcBkgJT.displayName=\"Nav / Nav Icons\";FramerlLkcBkgJT.defaultProps={height:20,width:20};addPropertyControls(FramerlLkcBkgJT,{variant:{options:[\"vZeeZmyVJ\",\"UZnvvYoUZ\",\"XioEzfJ61\",\"QHZQdXUok\",\"bart134iP\",\"unQEaWlPP\",\"bnffWKLnC\",\"ZQM788nVg\",\"kCAil_vci\",\"LOI_lBRgD\",\"ArOhNgCb9\",\"RYwLLzsEP\",\"WoCgVewsp\",\"dVFzzqknm\",\"OnnrPdLuG\",\"DRhGZ6EUV\"],optionTitles:[\"About\",\"Blog\",\"Changelog\",\"Integrations\",\"Careers\",\"Whitepaper\",\"Demo\",\"Partners\",\"Docs\",\"Access\",\"Internet Security\",\"ZTNA\",\"Help\",\"Variant 14\",\"Testimonials\",\"Customer Stories\"],title:\"Variant\",type:ControlType.Enum}});addFonts(FramerlLkcBkgJT,[{explicitInter:true,fonts:[]}],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerlLkcBkgJT\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"UZnvvYoUZ\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"XioEzfJ61\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"QHZQdXUok\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"bart134iP\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"unQEaWlPP\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"bnffWKLnC\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"ZQM788nVg\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"kCAil_vci\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"LOI_lBRgD\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"ArOhNgCb9\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"RYwLLzsEP\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"WoCgVewsp\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"dVFzzqknm\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"OnnrPdLuG\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"DRhGZ6EUV\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerIntrinsicHeight\":\"20\",\"framerDisplayContentsDiv\":\"false\",\"framerIntrinsicWidth\":\"20\",\"framerComponentViewportWidth\":\"true\",\"framerImmutableVariables\":\"true\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./lLkcBkgJT.map", "// Generated by Framer (508aa67)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,getFontsFromSharedStyle,getPropertyControls,Link,RichText,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import Logos from\"https://framerusercontent.com/modules/egaMOikpEojDPGX2L17i/eEQR7UV1CgU2ftSfYSgt/Logos.js\";import*as sharedStyle1 from\"https://framerusercontent.com/modules/udB93xVEVWDRpZADqEsc/tBcUI4ZQoOghAwZB22C8/PihfgTAR5.js\";import*as sharedStyle from\"https://framerusercontent.com/modules/zTb2QvSvmhj3xmBSumVl/FxvjjbX0AxqllYQv4Tdf/xoAKFFJ8r.js\";import NavNavIcons from\"https://framerusercontent.com/modules/ghEmBfXXg8JZQcL8IzOW/Kvn5z2jQobsZIttXxEfY/lLkcBkgJT.js\";import GraphicsButtonArrow from\"https://framerusercontent.com/modules/k2LXqFXKLfH5xo6YMaO2/WNzbIRtDtprBjkAcMlG0/pRemd4fMu.js\";const LogosFonts=getFonts(Logos);const NavNavIconsFonts=getFonts(NavNavIcons);const GraphicsButtonArrowFonts=getFonts(GraphicsButtonArrow);const LogosControls=getPropertyControls(Logos);const NavNavIconsControls=getPropertyControls(NavNavIcons);const enabledGestures={qlaL2rA4e:{hover:true}};const cycleOrder=[\"qlaL2rA4e\"];const serializationHash=\"framer-JqGcm\";const variantClassNames={qlaL2rA4e:\"framer-v-1jie68x\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants===null||variants===void 0?void 0:variants.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={delay:0,duration:.15,ease:[0,0,1,1],type:\"tween\"};const equals=(a,b)=>{return typeof a===\"string\"&&typeof b===\"string\"?a.toLowerCase()===b.toLowerCase():a===b;};const negate=value=>{return!value;};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value!==null&&value!==void 0?value:config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion(React.Fragment);const humanReadableEnumMap={\"Internet Security\":\"ArOhNgCb9\",About:\"vZeeZmyVJ\",Access:\"LOI_lBRgD\",Blog:\"UZnvvYoUZ\",Careers:\"bart134iP\",Changelog:\"XioEzfJ61\",Demo:\"bnffWKLnC\",Docs:\"kCAil_vci\",Integrations:\"QHZQdXUok\",Partners:\"ZQM788nVg\",Whitepaper:\"unQEaWlPP\"};const getProps=({height,icon,icon1,id,link,navIcon,navIconVariant,new1,subtitle,tap,title,width,...props})=>{var _ref,_humanReadableEnumMap_navIconVariant,_ref1,_ref2,_ref3,_ref4,_ref5;return{...props,B1BRdzB7u:(_ref=subtitle!==null&&subtitle!==void 0?subtitle:props.B1BRdzB7u)!==null&&_ref!==void 0?_ref:\"Keep track of changes to our product\",D6E2gRuG7:new1!==null&&new1!==void 0?new1:props.D6E2gRuG7,gpily6XUb:(_ref2=(_ref1=(_humanReadableEnumMap_navIconVariant=humanReadableEnumMap[navIconVariant])!==null&&_humanReadableEnumMap_navIconVariant!==void 0?_humanReadableEnumMap_navIconVariant:navIconVariant)!==null&&_ref1!==void 0?_ref1:props.gpily6XUb)!==null&&_ref2!==void 0?_ref2:\"vZeeZmyVJ\",HlFA9k7gu:link!==null&&link!==void 0?link:props.HlFA9k7gu,Ke8Ebr11Y:(_ref3=icon1!==null&&icon1!==void 0?icon1:props.Ke8Ebr11Y)!==null&&_ref3!==void 0?_ref3:\"Twingate\",NZ73Mn_3q:(_ref4=title!==null&&title!==void 0?title:props.NZ73Mn_3q)!==null&&_ref4!==void 0?_ref4:\"How Twingate Works?\",th0ljLK8A:navIcon!==null&&navIcon!==void 0?navIcon:props.th0ljLK8A,tnFMMMSiG:(_ref5=icon!==null&&icon!==void 0?icon:props.tnFMMMSiG)!==null&&_ref5!==void 0?_ref5:true,Z7laBHveb:tap!==null&&tap!==void 0?tap:props.Z7laBHveb};};const createLayoutDependency=(props,variants)=>variants.join(\"-\")+props.layoutDependency;const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,HlFA9k7gu,NZ73Mn_3q,B1BRdzB7u,tnFMMMSiG,Ke8Ebr11Y,Z7laBHveb,th0ljLK8A,gpily6XUb,D6E2gRuG7,...restProps}=getProps(props);const{baseVariant,classNames,gestureVariant,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"qlaL2rA4e\",enabledGestures,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onTapx5mqay=activeVariantCallback(async(...args)=>{setGestureState({isPressed:false});if(Z7laBHveb){const res=await Z7laBHveb(...args);if(res===false)return false;}});const ref1=React.useRef(null);const visible=negate(equals(B1BRdzB7u,\"\"));const defaultLayoutId=React.useId();const sharedStyleClassNames=[sharedStyle.className,sharedStyle1.className];const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId!==null&&layoutId!==void 0?layoutId:defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(Link,{href:HlFA9k7gu,openInNewTab:false,smoothScroll:true,children:/*#__PURE__*/_jsx(motion.a,{...restProps,className:`${cx(serializationHash,...sharedStyleClassNames,\"framer-1jie68x\",className,classNames)} framer-3zgnb1`,\"data-framer-name\":\"Default\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"qlaL2rA4e\",onHoverEnd:()=>setGestureState({isHovered:false}),onHoverStart:()=>setGestureState({isHovered:true}),onTap:onTapx5mqay,onTapCancel:()=>setGestureState({isPressed:false}),onTapStart:()=>setGestureState({isPressed:true}),ref:ref!==null&&ref!==void 0?ref:ref1,style:{borderBottomLeftRadius:8,borderBottomRightRadius:8,borderTopLeftRadius:8,borderTopRightRadius:8,...style},...addPropertyOverrides({\"qlaL2rA4e-hover\":{\"data-framer-name\":undefined}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1jgol66\",\"data-framer-name\":\"Title\",layoutDependency:layoutDependency,layoutId:\"EkhF1pa5N\",children:[tnFMMMSiG&&/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1m4ii4j-container\",layoutDependency:layoutDependency,layoutId:\"J_agyEarg-container\",children:/*#__PURE__*/_jsx(Logos,{accent:\"rgb(255, 255, 255)\",height:\"100%\",icon:Ke8Ebr11Y,id:\"J_agyEarg\",inheritColor:false,layoutId:\"J_agyEarg\",style:{height:\"100%\",width:\"100%\"},width:\"100%\"})})}),th0ljLK8A&&/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1bttv30-container\",layoutDependency:layoutDependency,layoutId:\"QLTjGOuXn-container\",children:/*#__PURE__*/_jsx(NavNavIcons,{height:\"100%\",id:\"QLTjGOuXn\",layoutId:\"QLTjGOuXn\",style:{height:\"100%\",width:\"100%\"},variant:gpily6XUb,width:\"100%\"})})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-16lw8dx\",layoutDependency:layoutDependency,layoutId:\"vLuiIaWCM\",children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1m06v7p\",\"data-framer-name\":\"Title\",layoutDependency:layoutDependency,layoutId:\"i3XOs5vEB\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1btjufx\",\"data-styles-preset\":\"xoAKFFJ8r\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255)))\"},children:\"How Twingate Works?\"})}),className:\"framer-wj25n8\",\"data-framer-name\":\"Title\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"xocY7plvp\",style:{\"--extracted-r6o4lv\":\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:NZ73Mn_3q,verticalAlignment:\"top\",withExternalLayout:true}),D6E2gRuG7&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-16ten6z\",\"data-framer-name\":\"New Badge\",layoutDependency:layoutDependency,layoutId:\"uSUhd5toP\",style:{backgroundColor:\"var(--token-66aad145-6043-4798-926f-87c538e5fcf8, rgb(71, 73, 13))\",borderBottomLeftRadius:17,borderBottomRightRadius:17,borderTopLeftRadius:17,borderTopRightRadius:17},children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1RUIEhvdmVzIE1lZGl1bQ==\",\"--framer-font-family\":'\"TT Hoves Medium\", \"TT Hoves Medium Placeholder\", sans-serif',\"--framer-font-size\":\"11px\",\"--framer-letter-spacing\":\"0.15px\",\"--framer-line-height\":\"1.5em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95)))\"},children:\"New\"})}),className:\"framer-dtl2zw\",\"data-framer-name\":\"Title\",fonts:[\"CUSTOM;TT Hoves Medium\"],layoutDependency:layoutDependency,layoutId:\"Bk6xPW7IV\",style:{\"--extracted-r6o4lv\":\"var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-nk69g0-container\",layoutDependency:layoutDependency,layoutId:\"nuOSZe9qA-container\",style:{opacity:0},variants:{\"qlaL2rA4e-hover\":{opacity:1}},children:/*#__PURE__*/_jsx(GraphicsButtonArrow,{height:\"100%\",id:\"nuOSZe9qA\",layoutId:\"nuOSZe9qA\",style:{height:\"100%\",width:\"100%\"},variant:\"Ez6AL2vTh\",width:\"100%\",...addPropertyOverrides({\"qlaL2rA4e-hover\":{variant:\"EjrLISIop\"}},baseVariant,gestureVariant)})})})]}),visible&&/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-137gzas\",\"data-styles-preset\":\"PihfgTAR5\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-376d54cb-4db7-448c-b192-cf6ae3d1a8ff, rgb(161, 161, 170)))\"},children:\"Keep track of changes to our product\"})}),className:\"framer-5zi72j\",\"data-framer-name\":\"Subtitle\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"H3eDNQ9ST\",style:{\"--extracted-r6o4lv\":\"var(--token-376d54cb-4db7-448c-b192-cf6ae3d1a8ff, rgb(161, 161, 170))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:B1BRdzB7u,verticalAlignment:\"top\",withExternalLayout:true})]})]})})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-JqGcm.framer-3zgnb1, .framer-JqGcm .framer-3zgnb1 { display: block; }\",\".framer-JqGcm.framer-1jie68x { align-content: flex-start; align-items: flex-start; cursor: pointer; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; overflow: visible; padding: 2px 0px 2px 0px; position: relative; text-decoration: none; width: 400px; }\",\".framer-JqGcm .framer-1jgol66 { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 6px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-JqGcm .framer-1m4ii4j-container { flex: none; height: 20px; position: relative; width: 20px; }\",\".framer-JqGcm .framer-1bttv30-container { aspect-ratio: 1 / 1; flex: none; height: var(--framer-aspect-ratio-supported, 20px); position: relative; width: 20px; }\",\".framer-JqGcm .framer-16lw8dx { align-content: flex-start; align-items: flex-start; display: flex; flex: 1 0 0px; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 1px; }\",\".framer-JqGcm .framer-1m06v7p { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 4px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-JqGcm .framer-wj25n8 { flex: none; height: auto; max-width: 100%; pointer-events: none; position: relative; white-space: pre-wrap; width: auto; word-break: break-word; word-wrap: break-word; }\",\".framer-JqGcm .framer-16ten6z { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: visible; padding: 1px 6px 1px 6px; position: relative; width: min-content; }\",\".framer-JqGcm .framer-dtl2zw { flex: none; height: auto; max-width: 100%; pointer-events: none; position: relative; white-space: pre-wrap; width: 24px; word-break: break-word; word-wrap: break-word; }\",\".framer-JqGcm .framer-nk69g0-container { flex: none; height: 20px; position: relative; width: 10px; }\",\".framer-JqGcm .framer-5zi72j { flex: none; height: auto; max-width: 100%; position: relative; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-JqGcm.framer-1jie68x, .framer-JqGcm .framer-1jgol66, .framer-JqGcm .framer-16lw8dx, .framer-JqGcm .framer-1m06v7p, .framer-JqGcm .framer-16ten6z { gap: 0px; } .framer-JqGcm.framer-1jie68x > *, .framer-JqGcm .framer-16lw8dx > * { margin: 0px; margin-bottom: calc(0px / 2); margin-top: calc(0px / 2); } .framer-JqGcm.framer-1jie68x > :first-child, .framer-JqGcm .framer-16lw8dx > :first-child { margin-top: 0px; } .framer-JqGcm.framer-1jie68x > :last-child, .framer-JqGcm .framer-16lw8dx > :last-child { margin-bottom: 0px; } .framer-JqGcm .framer-1jgol66 > * { margin: 0px; margin-left: calc(6px / 2); margin-right: calc(6px / 2); } .framer-JqGcm .framer-1jgol66 > :first-child, .framer-JqGcm .framer-1m06v7p > :first-child, .framer-JqGcm .framer-16ten6z > :first-child { margin-left: 0px; } .framer-JqGcm .framer-1jgol66 > :last-child, .framer-JqGcm .framer-1m06v7p > :last-child, .framer-JqGcm .framer-16ten6z > :last-child { margin-right: 0px; } .framer-JqGcm .framer-1m06v7p > * { margin: 0px; margin-left: calc(4px / 2); margin-right: calc(4px / 2); } .framer-JqGcm .framer-16ten6z > * { margin: 0px; margin-left: calc(10px / 2); margin-right: calc(10px / 2); } }\",...sharedStyle.css,...sharedStyle1.css];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 46\n * @framerIntrinsicWidth 400\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]},\"DvQzxY5GG\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerVariables {\"HlFA9k7gu\":\"link\",\"NZ73Mn_3q\":\"title\",\"B1BRdzB7u\":\"subtitle\",\"tnFMMMSiG\":\"icon\",\"Ke8Ebr11Y\":\"icon1\",\"Z7laBHveb\":\"tap\",\"th0ljLK8A\":\"navIcon\",\"gpily6XUb\":\"navIconVariant\",\"D6E2gRuG7\":\"new1\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerY42FZEMxi=withCSS(Component,css,\"framer-JqGcm\");export default FramerY42FZEMxi;FramerY42FZEMxi.displayName=\"Nav / Tray \u2013\\xa0Item\";FramerY42FZEMxi.defaultProps={height:46,width:400};addPropertyControls(FramerY42FZEMxi,{HlFA9k7gu:{title:\"Link\",type:ControlType.Link},NZ73Mn_3q:{defaultValue:\"How Twingate Works?\",displayTextArea:false,title:\"Title\",type:ControlType.String},B1BRdzB7u:{defaultValue:\"Keep track of changes to our product\",displayTextArea:false,title:\"Subtitle\",type:ControlType.String},tnFMMMSiG:{defaultValue:true,title:\"Icon\",type:ControlType.Boolean},Ke8Ebr11Y:(LogosControls===null||LogosControls===void 0?void 0:LogosControls[\"icon\"])&&{...LogosControls[\"icon\"],defaultValue:\"Twingate\",description:undefined,hidden:undefined,title:\"Icon\"},Z7laBHveb:{title:\"Tap\",type:ControlType.EventHandler},th0ljLK8A:{defaultValue:false,title:\"Nav Icon\",type:ControlType.Boolean},gpily6XUb:(NavNavIconsControls===null||NavNavIconsControls===void 0?void 0:NavNavIconsControls[\"variant\"])&&{...NavNavIconsControls[\"variant\"],defaultValue:\"vZeeZmyVJ\",description:undefined,hidden:undefined,title:\"Nav Icon Variant\"},D6E2gRuG7:{defaultValue:false,title:\"New\",type:ControlType.Boolean}});addFonts(FramerY42FZEMxi,[{explicitInter:true,fonts:[{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://app.framerstatic.com/Inter-Regular.cyrillic-ext-CFTLRB35.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://app.framerstatic.com/Inter-Regular.cyrillic-KKLZBALH.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+1F00-1FFF\",url:\"https://app.framerstatic.com/Inter-Regular.greek-ext-ULEBLIFV.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0370-03FF\",url:\"https://app.framerstatic.com/Inter-Regular.greek-IRHSNFQB.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://app.framerstatic.com/Inter-Regular.latin-ext-VZDUGU3Q.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://app.framerstatic.com/Inter-Regular.latin-JLQMKCHE.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://app.framerstatic.com/Inter-Regular.vietnamese-QK7VSWXK.woff2\",weight:\"400\"},{family:\"TT Hoves Medium\",source:\"custom\",url:\"https://framerusercontent.com/assets/M4cAr8oQzbyO9Ynb0WkinOqcoI.woff2\"}]},...LogosFonts,...NavNavIconsFonts,...GraphicsButtonArrowFonts,...getFontsFromSharedStyle(sharedStyle.fonts),...getFontsFromSharedStyle(sharedStyle1.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerY42FZEMxi\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"400\",\"framerIntrinsicHeight\":\"46\",\"framerComponentViewportWidth\":\"true\",\"framerVariables\":\"{\\\"HlFA9k7gu\\\":\\\"link\\\",\\\"NZ73Mn_3q\\\":\\\"title\\\",\\\"B1BRdzB7u\\\":\\\"subtitle\\\",\\\"tnFMMMSiG\\\":\\\"icon\\\",\\\"Ke8Ebr11Y\\\":\\\"icon1\\\",\\\"Z7laBHveb\\\":\\\"tap\\\",\\\"th0ljLK8A\\\":\\\"navIcon\\\",\\\"gpily6XUb\\\":\\\"navIconVariant\\\",\\\"D6E2gRuG7\\\":\\\"new1\\\"}\",\"framerDisplayContentsDiv\":\"false\",\"framerImmutableVariables\":\"true\",\"framerContractVersion\":\"1\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"DvQzxY5GG\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}", "// Generated by Framer (0961f6c)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,PathVariablesContext,ResolveLinks,useComponentViewport,useLocaleCode,useLocaleInfo,useQueryData,useRouter,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import Changelog from\"https://framerusercontent.com/modules/7aKEcE234HUuUbxVUWG0/r00fiWVKf39CEBHzNofi/p_ZRklbwL.js\";import Blog from\"https://framerusercontent.com/modules/lP8V3UM7osgVvgO9o3yo/N30vEhT4KmNuKtToQjUY/wtyR92LHZ.js\";import NavTrayCardChangelog from\"https://framerusercontent.com/modules/aBVyWzYtwMtn3FN4dwMK/wu4le4s3n83Fr9uVgcm2/gXk6dU62K.js\";import NavTrayCard from\"https://framerusercontent.com/modules/fxsl7Jbx9Utrik2gn6Pu/7TNL2hK7LMLLZATd53Ir/KEIGp9seQ.js\";import NavTrayTitle from\"https://framerusercontent.com/modules/2LGk8D7zrJeUEiN2MPbl/DEXU4lmXSZL7354xn2GW/mnItz6A8F.js\";import NavTrayItem from\"https://framerusercontent.com/modules/lq4tSjpt2ZcXIKrZYZCV/5j8UIzYjCx1CrvauhuFr/Y42FZEMxi.js\";const NavTrayItemFonts=getFonts(NavTrayItem);const NavTrayTitleFonts=getFonts(NavTrayTitle);const NavTrayCardChangelogFonts=getFonts(NavTrayCardChangelog);const NavTrayCardFonts=getFonts(NavTrayCard);const cycleOrder=[\"Un1r32V1H\",\"V3KnZ7YU0\",\"OT1LbjD25\",\"lHByleq6k\",\"kNdqCkpev\",\"lgo6tsa0X\",\"hSGH_QbdR\",\"g5WWfybex\",\"CgU1mwjv4\"];const serializationHash=\"framer-5oduX\";const variantClassNames={CgU1mwjv4:\"framer-v-116a0rj\",g5WWfybex:\"framer-v-1oe4t23\",hSGH_QbdR:\"framer-v-1dh4qqv\",kNdqCkpev:\"framer-v-1osagrk\",lgo6tsa0X:\"framer-v-8n69jr\",lHByleq6k:\"framer-v-1lr022k\",OT1LbjD25:\"framer-v-1e811wn\",Un1r32V1H:\"framer-v-kvheqv\",V3KnZ7YU0:\"framer-v-129hv1x\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants===null||variants===void 0?void 0:variants.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const toDateString=(value,options={},activeLocale)=>{if(typeof value!==\"string\")return\"\";const date=new Date(value);if(isNaN(date.getTime()))return\"\";const fallbackLocale=\"en-US\";const locale=options.locale||activeLocale||fallbackLocale;const dateStyle=options.dateStyle;const timeZone=\"UTC\";try{return date.toLocaleDateString(locale,{dateStyle,timeZone});}catch{return date.toLocaleDateString(fallbackLocale,{dateStyle,timeZone});}};const toResponsiveImage=value=>{if(typeof value===\"object\"&&value!==null&&typeof value.src===\"string\"){return value;}return typeof value===\"string\"?{src:value}:undefined;};const QueryData=({query,children})=>{const data=useQueryData(query);return children(data);};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value!==null&&value!==void 0?value:config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion(React.Fragment);const humanReadableVariantMap={_Primary:\"Un1r32V1H\",\"Docs \u2013\\xa0Mobile\":\"kNdqCkpev\",\"Partners \u2013 Mobile\":\"CgU1mwjv4\",\"Product \u2013\\xa0Mobile\":\"OT1LbjD25\",\"Resources \u2013\\xa0Mobile\":\"hSGH_QbdR\",Docs:\"lHByleq6k\",Partners:\"g5WWfybex\",Product:\"V3KnZ7YU0\",Resources:\"lgo6tsa0X\"};const getProps=({height,id,width,...props})=>{var _humanReadableVariantMap_props_variant,_ref;return{...props,variant:(_ref=(_humanReadableVariantMap_props_variant=humanReadableVariantMap[props.variant])!==null&&_humanReadableVariantMap_props_variant!==void 0?_humanReadableVariantMap_props_variant:props.variant)!==null&&_ref!==void 0?_ref:\"Un1r32V1H\"};};const createLayoutDependency=(props,variants)=>variants.join(\"-\")+props.layoutDependency;const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,royCFnGoElF3iq4ogr,s78r_5SfilF3iq4ogr,drBimO239lF3iq4ogr,tB8hckVXVlF3iq4ogr,idlF3iq4ogr,htIvfYBOuTfzlsFdJr,BOY5LSewcTfzlsFdJr,YnwyMK7wBTfzlsFdJr,KppWsNgH6TfzlsFdJr,idTfzlsFdJr,...restProps}=getProps(props);const{baseVariant,classNames,gestureVariant,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"Un1r32V1H\",variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const ref1=React.useRef(null);const isDisplayed=()=>{if([\"lHByleq6k\",\"kNdqCkpev\",\"lgo6tsa0X\",\"hSGH_QbdR\",\"g5WWfybex\",\"CgU1mwjv4\"].includes(baseVariant))return false;return true;};const router=useRouter();const activeLocaleCode=useLocaleCode();const isDisplayed1=()=>{if([\"V3KnZ7YU0\",\"OT1LbjD25\",\"lgo6tsa0X\",\"hSGH_QbdR\",\"g5WWfybex\",\"CgU1mwjv4\"].includes(baseVariant))return false;return true;};const isDisplayed2=()=>{if([\"V3KnZ7YU0\",\"OT1LbjD25\",\"lHByleq6k\",\"kNdqCkpev\",\"g5WWfybex\",\"CgU1mwjv4\"].includes(baseVariant))return false;return true;};const isDisplayed3=()=>{if([\"V3KnZ7YU0\",\"OT1LbjD25\",\"lHByleq6k\",\"kNdqCkpev\",\"lgo6tsa0X\",\"hSGH_QbdR\"].includes(baseVariant))return false;return true;};const defaultLayoutId=React.useId();const sharedStyleClassNames=[];const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId!==null&&layoutId!==void 0?layoutId:defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,className:cx(serializationHash,...sharedStyleClassNames,\"framer-kvheqv\",className,classNames),\"data-framer-name\":\"_Primary\",layoutDependency:layoutDependency,layoutId:\"Un1r32V1H\",onHoverEnd:()=>setGestureState({isHovered:false}),onHoverStart:()=>setGestureState({isHovered:true}),onTap:()=>setGestureState({isPressed:false}),onTapCancel:()=>setGestureState({isPressed:false}),onTapStart:()=>setGestureState({isPressed:true}),ref:ref!==null&&ref!==void 0?ref:ref1,style:{backgroundColor:\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\",...style},...addPropertyOverrides({CgU1mwjv4:{\"data-framer-name\":\"Partners \u2013 Mobile\"},g5WWfybex:{\"data-framer-name\":\"Partners\"},hSGH_QbdR:{\"data-framer-name\":\"Resources \u2013\\xa0Mobile\"},kNdqCkpev:{\"data-framer-name\":\"Docs \u2013\\xa0Mobile\"},lgo6tsa0X:{\"data-framer-name\":\"Resources\"},lHByleq6k:{\"data-framer-name\":\"Docs\"},OT1LbjD25:{\"data-framer-name\":\"Product \u2013\\xa0Mobile\"},V3KnZ7YU0:{\"data-framer-name\":\"Product\"}},baseVariant,gestureVariant),children:[isDisplayed()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-15wi53f\",\"data-framer-name\":\"Product\",layoutDependency:layoutDependency,layoutId:\"lDMVjDv4n\",children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1n1x9js\",layoutDependency:layoutDependency,layoutId:\"X0Gi5EKIV\",children:[/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"bBhvgz0tk\"},implicitPathVariables:undefined},{href:{webPageId:\"bBhvgz0tk\"},implicitPathVariables:undefined},{href:{webPageId:\"bBhvgz0tk\"},implicitPathVariables:undefined}],children:resolvedLinks=>/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 2, 1px)`,...addPropertyOverrides({OT1LbjD25:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-7ozc37-container\",layoutDependency:layoutDependency,layoutId:\"UKOVT1eww-container\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\\xa0Remote access for the modern Zero Trust network\",D6E2gRuG7:false,gpily6XUb:\"RYwLLzsEP\",height:\"100%\",HlFA9k7gu:resolvedLinks[0],id:\"UKOVT1eww\",Ke8Ebr11Y:\"Twingate\",layoutId:\"UKOVT1eww\",NZ73Mn_3q:\"Zero Trust Network Access\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:true,tnFMMMSiG:false,width:\"100%\",...addPropertyOverrides({OT1LbjD25:{HlFA9k7gu:resolvedLinks[2]},V3KnZ7YU0:{B1BRdzB7u:\"Remote access for the modern Zero Trust network\",HlFA9k7gu:resolvedLinks[1]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"rWzqN0quv\"},implicitPathVariables:undefined},{href:{webPageId:\"rWzqN0quv\"},implicitPathVariables:undefined},{href:{webPageId:\"rWzqN0quv\"},implicitPathVariables:undefined}],children:resolvedLinks1=>/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 2, 1px)`,...addPropertyOverrides({OT1LbjD25:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-v4hyuv-container\",layoutDependency:layoutDependency,layoutId:\"DfxcmCYH1-container\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"Powerful automated access controls at the network layer\",D6E2gRuG7:false,gpily6XUb:\"LOI_lBRgD\",height:\"100%\",HlFA9k7gu:resolvedLinks1[0],id:\"DfxcmCYH1\",Ke8Ebr11Y:\"Twingate\",layoutId:\"DfxcmCYH1\",NZ73Mn_3q:\"Least Privilege Automation\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:true,tnFMMMSiG:false,width:\"100%\",...addPropertyOverrides({OT1LbjD25:{HlFA9k7gu:resolvedLinks1[2]},V3KnZ7YU0:{HlFA9k7gu:resolvedLinks1[1]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"DT2IR2FQ8\"},implicitPathVariables:undefined},{href:{webPageId:\"DT2IR2FQ8\"},implicitPathVariables:undefined},{href:{webPageId:\"DT2IR2FQ8\"},implicitPathVariables:undefined}],children:resolvedLinks2=>/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 2, 1px)`,...addPropertyOverrides({OT1LbjD25:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1r2oq5-container\",layoutDependency:layoutDependency,layoutId:\"G_VRHtnJi-container\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"Protect all of your internet traffic in any environment\",D6E2gRuG7:false,gpily6XUb:\"ArOhNgCb9\",height:\"100%\",HlFA9k7gu:resolvedLinks2[0],id:\"G_VRHtnJi\",Ke8Ebr11Y:\"Twingate\",layoutId:\"G_VRHtnJi\",NZ73Mn_3q:\"Internet Security\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:true,tnFMMMSiG:false,width:\"100%\",...addPropertyOverrides({OT1LbjD25:{HlFA9k7gu:resolvedLinks2[2]},V3KnZ7YU0:{HlFA9k7gu:resolvedLinks2[1]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1v8kqmd\",\"data-framer-name\":\"Section\",layoutDependency:layoutDependency,layoutId:\"ZDBKiK7LZ\",children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1iq7wou\",\"data-framer-name\":\"List\",layoutDependency:layoutDependency,layoutId:\"B1O_e8GVF\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 2, 1px) - 42px) / 2, 1px)`,...addPropertyOverrides({OT1LbjD25:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1diam07-container\",layoutDependency:layoutDependency,layoutId:\"nasBHpbj4-container\",children:/*#__PURE__*/_jsx(NavTrayTitle,{h0JjnntIV:\"https://www.twingate.com/docs/use-cases\",height:\"100%\",id:\"nasBHpbj4\",kE6x8JtXN:\"Use Cases\",layoutId:\"nasBHpbj4\",style:{width:\"100%\"},variant:\"yAQHjAcYe\",width:\"100%\"})})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-nkj833\",\"data-framer-name\":\"List\",layoutDependency:layoutDependency,layoutId:\"irOZb9YCD\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 2, 1px) - 42px) / 2, 1px)`,...addPropertyOverrides({OT1LbjD25:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-ksnb2m-container\",layoutDependency:layoutDependency,layoutId:\"xSSD0vmUx-container\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/use-case/vpn-replacement\",id:\"xSSD0vmUx\",Ke8Ebr11Y:\"Twingate\",layoutId:\"xSSD0vmUx\",NZ73Mn_3q:\"VPN Replacement\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 2, 1px) - 42px) / 2, 1px)`,...addPropertyOverrides({OT1LbjD25:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1uv40ld-container\",layoutDependency:layoutDependency,layoutId:\"zqLcXTJPJ-container\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/infra-access-use-case\",id:\"zqLcXTJPJ\",Ke8Ebr11Y:\"Twingate\",layoutId:\"zqLcXTJPJ\",NZ73Mn_3q:\"Infrastructure Access\",style:{width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 2, 1px) - 42px) / 2, 1px)`,...addPropertyOverrides({OT1LbjD25:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-7tnjrh-container\",layoutDependency:layoutDependency,layoutId:\"yvvSsVrVS-container\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/device-controls-use-case\",id:\"yvvSsVrVS\",Ke8Ebr11Y:\"Twingate\",layoutId:\"yvvSsVrVS\",NZ73Mn_3q:\"Device Controls\",style:{width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 2, 1px) - 42px) / 2, 1px)`,...addPropertyOverrides({OT1LbjD25:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1xe6gs0-container\",layoutDependency:layoutDependency,layoutId:\"juQgguqla-container\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/ip-based-access-use-case\",id:\"juQgguqla\",Ke8Ebr11Y:\"Twingate\",layoutId:\"juQgguqla\",NZ73Mn_3q:\"IP-Based Access\",style:{width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 2, 1px) - 42px) / 2, 1px)`,...addPropertyOverrides({OT1LbjD25:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1a1toft-container\",layoutDependency:layoutDependency,layoutId:\"t9J1lOqnE-container\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/use-case/dns-filtering\",id:\"t9J1lOqnE\",Ke8Ebr11Y:\"Twingate\",layoutId:\"t9J1lOqnE\",NZ73Mn_3q:\"DNS Filtering\",style:{width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 2, 1px) - 42px) / 2, 1px)`,...addPropertyOverrides({OT1LbjD25:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-mn6seu-container\",layoutDependency:layoutDependency,layoutId:\"cxa3EIJ5N-container\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/compliance-use-case\",id:\"cxa3EIJ5N\",Ke8Ebr11Y:\"Twingate\",layoutId:\"cxa3EIJ5N\",NZ73Mn_3q:\"Compliance\",style:{width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\"})})})]})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1kft22j\",\"data-framer-name\":\"List\",layoutDependency:layoutDependency,layoutId:\"yu6XnnjSq\",children:[/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"oihjvnHXi\"},implicitPathVariables:undefined},{href:{webPageId:\"oihjvnHXi\"},implicitPathVariables:undefined},{href:{webPageId:\"oihjvnHXi\"},implicitPathVariables:undefined}],children:resolvedLinks3=>/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 2, 1px) - 42px) / 2, 1px)`,...addPropertyOverrides({OT1LbjD25:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-3jpm4q-container\",layoutDependency:layoutDependency,layoutId:\"iAoBXBtgO-container\",children:/*#__PURE__*/_jsx(NavTrayTitle,{h0JjnntIV:resolvedLinks3[0],height:\"100%\",id:\"iAoBXBtgO\",kE6x8JtXN:\"Integrations\",layoutId:\"iAoBXBtgO\",style:{width:\"100%\"},variant:\"yAQHjAcYe\",width:\"100%\",...addPropertyOverrides({OT1LbjD25:{h0JjnntIV:resolvedLinks3[2]},V3KnZ7YU0:{h0JjnntIV:resolvedLinks3[1]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-boojs6\",\"data-framer-name\":\"List\",layoutDependency:layoutDependency,layoutId:\"h7SC3bXBU\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 2, 1px) - 42px) / 2, 1px)`,...addPropertyOverrides({OT1LbjD25:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-g7pp9y-container\",layoutDependency:layoutDependency,layoutId:\"gFpaUp0zQ-container\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/okta-configuration\",id:\"gFpaUp0zQ\",Ke8Ebr11Y:\"Okta\",layoutId:\"gFpaUp0zQ\",NZ73Mn_3q:\"Okta\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:true,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 2, 1px) - 42px) / 2, 1px)`,...addPropertyOverrides({OT1LbjD25:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-rd3dk6-container\",layoutDependency:layoutDependency,layoutId:\"FDVCoVx4X-container\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/google-workspace-configuration\",id:\"FDVCoVx4X\",Ke8Ebr11Y:\"Google\",layoutId:\"FDVCoVx4X\",NZ73Mn_3q:\"Google Workspace\",style:{width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:true,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 2, 1px) - 42px) / 2, 1px)`,...addPropertyOverrides({OT1LbjD25:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-11r5pvp-container\",layoutDependency:layoutDependency,layoutId:\"kwakOwOKJ-container\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/onelogin-configuration\",id:\"kwakOwOKJ\",Ke8Ebr11Y:\"OneLogin\",layoutId:\"kwakOwOKJ\",NZ73Mn_3q:\"OneLogin\",style:{width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:true,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 2, 1px) - 42px) / 2, 1px)`,...addPropertyOverrides({OT1LbjD25:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-7ldwwu-container\",layoutDependency:layoutDependency,layoutId:\"Yq1mc0xwH-container\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/crowdstrike-configuration\",id:\"Yq1mc0xwH\",Ke8Ebr11Y:\"CrowdStrike\",layoutId:\"Yq1mc0xwH\",NZ73Mn_3q:\"CrowdStrike\",style:{width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:true,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 2, 1px) - 42px) / 2, 1px)`,...addPropertyOverrides({OT1LbjD25:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-xhd2k8-container\",layoutDependency:layoutDependency,layoutId:\"hyvIL9E9A-container\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/jamf-configuration\",id:\"hyvIL9E9A\",Ke8Ebr11Y:\"Jamf\",layoutId:\"hyvIL9E9A\",NZ73Mn_3q:\"Jamf\",style:{width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:true,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 2, 1px) - 42px) / 2, 1px)`,...addPropertyOverrides({OT1LbjD25:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-15w6j29-container\",layoutDependency:layoutDependency,layoutId:\"qeZewwvC0-container\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/kandji-configuration\",id:\"qeZewwvC0\",Ke8Ebr11Y:\"Kandji\",layoutId:\"qeZewwvC0\",NZ73Mn_3q:\"Kandji\",style:{width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:true,width:\"100%\"})})})]})]})]})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-becu09\",\"data-framer-name\":\"Section\",layoutDependency:layoutDependency,layoutId:\"ZGB8_pewF\",children:[/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"P__7M8cd0\"},implicitPathVariables:undefined},{href:{webPageId:\"P__7M8cd0\"},implicitPathVariables:undefined},{href:{webPageId:\"P__7M8cd0\"},implicitPathVariables:undefined}],children:resolvedLinks4=>/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 2, 1px)`,...addPropertyOverrides({OT1LbjD25:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-tz9ul6-container\",layoutDependency:layoutDependency,layoutId:\"sBzJKsrXm-container\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"Keep track of the product updates\",D6E2gRuG7:false,gpily6XUb:\"XioEzfJ61\",height:\"100%\",HlFA9k7gu:resolvedLinks4[0],id:\"sBzJKsrXm\",Ke8Ebr11Y:\"Twingate\",layoutId:\"sBzJKsrXm\",NZ73Mn_3q:\"Changelog\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:true,tnFMMMSiG:false,width:\"100%\",...addPropertyOverrides({OT1LbjD25:{HlFA9k7gu:resolvedLinks4[2]},V3KnZ7YU0:{HlFA9k7gu:resolvedLinks4[1]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-5o3log\",layoutDependency:layoutDependency,layoutId:\"lF3iq4ogr\",children:/*#__PURE__*/_jsx(QueryData,{query:{from:{data:Changelog,type:\"Collection\"},limit:{type:\"LiteralValue\",value:2},select:[{name:\"royCFnGoE\",type:\"Identifier\"},{name:\"s78r_5Sfi\",type:\"Identifier\"},{name:\"drBimO239\",type:\"Identifier\"},{name:\"tB8hckVXV\",type:\"Identifier\"},{name:\"id\",type:\"Identifier\"}],where:{name:\"apXl2m42W\",type:\"Identifier\"}},children:collection=>collection.map(({royCFnGoE:royCFnGoElF3iq4ogr,s78r_5Sfi:s78r_5SfilF3iq4ogr,drBimO239:drBimO239lF3iq4ogr,tB8hckVXV:tB8hckVXVlF3iq4ogr,id:idlF3iq4ogr},i)=>{return /*#__PURE__*/_jsx(LayoutGroup,{id:`lF3iq4ogr-${idlF3iq4ogr}`,children:/*#__PURE__*/_jsx(PathVariablesContext.Provider,{value:{tB8hckVXV:tB8hckVXVlF3iq4ogr},children:/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{pathVariables:{tB8hckVXV:tB8hckVXVlF3iq4ogr},webPageId:\"Dbr2IURQW\"},implicitPathVariables:undefined},{href:{pathVariables:{tB8hckVXV:tB8hckVXVlF3iq4ogr},webPageId:\"Dbr2IURQW\"},implicitPathVariables:undefined},{href:{pathVariables:{tB8hckVXV:tB8hckVXVlF3iq4ogr},webPageId:\"Dbr2IURQW\"},implicitPathVariables:undefined}],children:resolvedLinks5=>/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max(max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 2, 1px) - 26px, 1px)`,...addPropertyOverrides({OT1LbjD25:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-89fqu5-container\",layoutDependency:layoutDependency,layoutId:\"r6lyFG_hf-container\",children:/*#__PURE__*/_jsx(NavTrayCardChangelog,{FCJjotThg:royCFnGoElF3iq4ogr,gXZzLrrxC:toDateString(s78r_5SfilF3iq4ogr,{dateStyle:\"medium\",locale:\"\"},activeLocaleCode),height:\"100%\",id:\"r6lyFG_hf\",layoutId:\"r6lyFG_hf\",style:{height:\"100%\",width:\"100%\"},variant:\"iM5NBbyMm\",W8QKdoWYc:toResponsiveImage(drBimO239lF3iq4ogr),width:\"100%\",xB6GQkGqy:resolvedLinks5[0],...addPropertyOverrides({OT1LbjD25:{xB6GQkGqy:resolvedLinks5[2]},V3KnZ7YU0:{xB6GQkGqy:resolvedLinks5[1]}},baseVariant,gestureVariant)})})})})})},idlF3iq4ogr);})})})]})]}),isDisplayed1()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-u2rhus\",\"data-framer-name\":\"Docs\",layoutDependency:layoutDependency,layoutId:\"DU5z1xxX7\",children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-8ee410\",\"data-framer-name\":\"Section\",layoutDependency:layoutDependency,layoutId:\"Vr0eM32mW\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 2, 1px)`,...addPropertyOverrides({kNdqCkpev:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-t3upgo-container\",layoutDependency:layoutDependency,layoutId:\"CuxfINuu5-container\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"Learn how to deploy Twingate to your network\",D6E2gRuG7:false,gpily6XUb:\"kCAil_vci\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/\",id:\"CuxfINuu5\",Ke8Ebr11Y:\"Twingate\",layoutId:\"CuxfINuu5\",NZ73Mn_3q:\"Explore Documentation\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:true,tnFMMMSiG:false,width:\"100%\"})})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1t2i6bp\",\"data-framer-name\":\"Cards\",layoutDependency:layoutDependency,layoutId:\"s8nwq6yKv\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 2, 1px) - 58px) / 3, 1px)`,...addPropertyOverrides({kNdqCkpev:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1tymwd2-container\",layoutDependency:layoutDependency,layoutId:\"Ri2t3JPMF-container\",children:/*#__PURE__*/_jsx(NavTrayCard,{EoiUdnIrn:\"YZkileseO\",height:\"100%\",id:\"Ri2t3JPMF\",layoutId:\"Ri2t3JPMF\",style:{height:\"100%\",width:\"100%\"},TuXUBRiOh:\"efAxaIdFV\",TXl3JifQz:\"https://www.twingate.com/docs/quick-start\",variant:\"rS16mv8bj\",WDE61Js6q:\"Quick Start\",width:\"100%\",ySJTE4XN0:\"\",...addPropertyOverrides({kNdqCkpev:{style:{width:\"100%\"},TuXUBRiOh:\"YZkileseO\",variant:\"GobthPXov\"}},baseVariant,gestureVariant)})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 2, 1px) - 58px) / 3, 1px)`,...addPropertyOverrides({kNdqCkpev:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-12t6qnl-container\",layoutDependency:layoutDependency,layoutId:\"LcrTPQSgW-container\",children:/*#__PURE__*/_jsx(NavTrayCard,{EoiUdnIrn:\"bJQdBKSqu\",height:\"100%\",id:\"LcrTPQSgW\",layoutId:\"LcrTPQSgW\",style:{height:\"100%\",width:\"100%\"},TuXUBRiOh:\"kOKVZMv3e\",TXl3JifQz:\"https://www.twingate.com/docs/architecture\",variant:\"rS16mv8bj\",WDE61Js6q:\"Architecture\",width:\"100%\",ySJTE4XN0:\"\",...addPropertyOverrides({kNdqCkpev:{style:{width:\"100%\"},variant:\"GobthPXov\"}},baseVariant,gestureVariant)})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 2, 1px) - 58px) / 3, 1px)`,...addPropertyOverrides({kNdqCkpev:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1qbshft-container\",layoutDependency:layoutDependency,layoutId:\"bFGhrlBsx-container\",children:/*#__PURE__*/_jsx(NavTrayCard,{EoiUdnIrn:\"nOFe8WcIU\",height:\"100%\",id:\"bFGhrlBsx\",layoutId:\"bFGhrlBsx\",style:{height:\"100%\",width:\"100%\"},TuXUBRiOh:\"RWYVlvI4_\",TXl3JifQz:\"https://www.twingate.com/docs/api-overview\",variant:\"rS16mv8bj\",WDE61Js6q:\"API\",width:\"100%\",ySJTE4XN0:\"\",...addPropertyOverrides({kNdqCkpev:{style:{width:\"100%\"},TuXUBRiOh:\"nOFe8WcIU\",variant:\"GobthPXov\"}},baseVariant,gestureVariant)})})})]})]}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-nip4r8\",\"data-framer-name\":\"Section\",layoutDependency:layoutDependency,layoutId:\"CUmK8F9uj\",children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-96g8ei\",\"data-framer-name\":\"Section\",layoutDependency:layoutDependency,layoutId:\"g4rPEySOb\",children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-2n1wn9\",\"data-framer-name\":\"List\",layoutDependency:layoutDependency,layoutId:\"HB9xnZ8wh\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 2, 1px) - 16px) / 2, 1px)`,...addPropertyOverrides({kNdqCkpev:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-saa8m3-container\",layoutDependency:layoutDependency,layoutId:\"AChFJWHOl-container\",children:/*#__PURE__*/_jsx(NavTrayTitle,{height:\"100%\",id:\"AChFJWHOl\",kE6x8JtXN:\"Deploying Twingate\",layoutId:\"AChFJWHOl\",style:{width:\"100%\"},variant:\"yAQHjAcYe\",width:\"100%\"})})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-o6y5n0\",\"data-framer-name\":\"List\",layoutDependency:layoutDependency,layoutId:\"p911rh_KP\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 2, 1px) - 16px) / 2, 1px)`,...addPropertyOverrides({kNdqCkpev:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1e5fb6d-container\",layoutDependency:layoutDependency,layoutId:\"mFx71CRMJ-container\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/connector-deployment#cloud\",id:\"mFx71CRMJ\",Ke8Ebr11Y:\"Twingate\",layoutId:\"mFx71CRMJ\",NZ73Mn_3q:\"Cloud\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 2, 1px) - 16px) / 2, 1px)`,...addPropertyOverrides({kNdqCkpev:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1fdjsbq-container\",layoutDependency:layoutDependency,layoutId:\"eifkhne9o-container\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/connector-deployment#in-offices-or-data-centers\",id:\"eifkhne9o\",Ke8Ebr11Y:\"Twingate\",layoutId:\"eifkhne9o\",NZ73Mn_3q:\"Offices or Data Centers\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 2, 1px) - 16px) / 2, 1px)`,...addPropertyOverrides({kNdqCkpev:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-l0mbqz-container\",layoutDependency:layoutDependency,layoutId:\"Bf8HClfhq-container\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/connector-deployment#serverless-environments-paas\",id:\"Bf8HClfhq\",Ke8Ebr11Y:\"Twingate\",layoutId:\"Bf8HClfhq\",NZ73Mn_3q:\"Serverless Environments\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 2, 1px) - 16px) / 2, 1px)`,...addPropertyOverrides({kNdqCkpev:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-129ij73-container\",layoutDependency:layoutDependency,layoutId:\"s67O06dP2-container\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/connector-deployment#infrastructure-as-code-iac\",id:\"s67O06dP2\",Ke8Ebr11Y:\"Twingate\",layoutId:\"s67O06dP2\",NZ73Mn_3q:\"Infrastructure-as-Code (IaC)\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 2, 1px) - 16px) / 2, 1px)`,...addPropertyOverrides({kNdqCkpev:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-fw2nk7-container\",layoutDependency:layoutDependency,layoutId:\"L0tYmnzi6-container\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/connector-deployment#home-network\",id:\"L0tYmnzi6\",Ke8Ebr11Y:\"Twingate\",layoutId:\"L0tYmnzi6\",NZ73Mn_3q:\"Home Networks\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\"})})})]})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-jua59y\",\"data-framer-name\":\"List\",layoutDependency:layoutDependency,layoutId:\"hvkJH34oY\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 2, 1px) - 16px) / 2, 1px)`,...addPropertyOverrides({kNdqCkpev:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1upm7hz-container\",layoutDependency:layoutDependency,layoutId:\"HM8IUAxGU-container\",children:/*#__PURE__*/_jsx(NavTrayTitle,{height:\"100%\",id:\"HM8IUAxGU\",kE6x8JtXN:\"Additional Resources\",layoutId:\"HM8IUAxGU\",style:{width:\"100%\"},variant:\"yAQHjAcYe\",width:\"100%\"})})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1ktt9kn\",\"data-framer-name\":\"List\",layoutDependency:layoutDependency,layoutId:\"tffPHAok2\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 2, 1px) - 16px) / 2, 1px)`,...addPropertyOverrides({kNdqCkpev:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-18frrl2-container\",layoutDependency:layoutDependency,layoutId:\"QOc2XuLmf-container\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://help.twingate.com/hc/en-us\",id:\"QOc2XuLmf\",Ke8Ebr11Y:\"Okta\",layoutId:\"QOc2XuLmf\",NZ73Mn_3q:\"Help Center\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\"})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"P__7M8cd0\"},implicitPathVariables:undefined},{href:{webPageId:\"P__7M8cd0\"},implicitPathVariables:undefined},{href:{webPageId:\"P__7M8cd0\"},implicitPathVariables:undefined}],children:resolvedLinks6=>/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 2, 1px) - 16px) / 2, 1px)`,...addPropertyOverrides({kNdqCkpev:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1ua16pj-container\",layoutDependency:layoutDependency,layoutId:\"hNg66rdRC-container\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:resolvedLinks6[0],id:\"hNg66rdRC\",Ke8Ebr11Y:\"Okta\",layoutId:\"hNg66rdRC\",NZ73Mn_3q:\"Changelog\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\",...addPropertyOverrides({kNdqCkpev:{HlFA9k7gu:resolvedLinks6[2]},lHByleq6k:{HlFA9k7gu:resolvedLinks6[1]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 2, 1px) - 16px) / 2, 1px)`,...addPropertyOverrides({kNdqCkpev:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-tmaibl-container\",layoutDependency:layoutDependency,layoutId:\"fZcMrZ7PC-container\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://github.com/twingate-labs\",id:\"fZcMrZ7PC\",Ke8Ebr11Y:\"Okta\",layoutId:\"fZcMrZ7PC\",NZ73Mn_3q:\"Twingate Labs\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 2, 1px) - 16px) / 2, 1px)`,...addPropertyOverrides({kNdqCkpev:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1hp9ig8-container\",layoutDependency:layoutDependency,layoutId:\"gRGeCGSvL-container\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:\"https://www.twingate.com/docs/trust-center\",id:\"gRGeCGSvL\",Ke8Ebr11Y:\"Okta\",layoutId:\"gRGeCGSvL\",NZ73Mn_3q:\"Trust Center\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\"})})})]})]})]})})]}),isDisplayed2()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1vcxxrr\",\"data-framer-name\":\"Resources\",layoutDependency:layoutDependency,layoutId:\"jjBsRv8y0\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-czpvut\",\"data-framer-name\":\"Section\",layoutDependency:layoutDependency,layoutId:\"l4aCxM5ne\",children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-tx9pel\",\"data-framer-name\":\"List\",layoutDependency:layoutDependency,layoutId:\"Z0WcMtiHJ\",children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-w7w3pv\",\"data-framer-name\":\"List\",layoutDependency:layoutDependency,layoutId:\"ykeCZsXyb\",children:[/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"QQxdUQBuE\"},implicitPathVariables:undefined},{href:{webPageId:\"QQxdUQBuE\"},implicitPathVariables:undefined},{href:{webPageId:\"QQxdUQBuE\"},implicitPathVariables:undefined}],children:resolvedLinks7=>/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 3, 1px)`,...addPropertyOverrides({hSGH_QbdR:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-l1nfkf-container\",layoutDependency:layoutDependency,layoutId:\"xI5GLTPrM-container\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"Meet the team behind Twingate\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:resolvedLinks7[0],id:\"xI5GLTPrM\",Ke8Ebr11Y:\"Okta\",layoutId:\"xI5GLTPrM\",NZ73Mn_3q:\"About\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:true,tnFMMMSiG:false,width:\"100%\",...addPropertyOverrides({hSGH_QbdR:{HlFA9k7gu:resolvedLinks7[2]},lgo6tsa0X:{HlFA9k7gu:resolvedLinks7[1]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 3, 1px)`,...addPropertyOverrides({hSGH_QbdR:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-143mfsn-container\",layoutDependency:layoutDependency,layoutId:\"vR_dBvuKC-container\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"Join our fast growing team\",D6E2gRuG7:false,gpily6XUb:\"bart134iP\",height:\"100%\",HlFA9k7gu:\"https://jobs.lever.co/twingate\",id:\"vR_dBvuKC\",Ke8Ebr11Y:\"Okta\",layoutId:\"vR_dBvuKC\",NZ73Mn_3q:\"Careers\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:true,tnFMMMSiG:false,width:\"100%\"})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"fM499XwEy\"},implicitPathVariables:undefined},{href:{webPageId:\"fM499XwEy\"},implicitPathVariables:undefined},{href:{webPageId:\"fM499XwEy\"},implicitPathVariables:undefined}],children:resolvedLinks8=>/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 3, 1px)`,...addPropertyOverrides({hSGH_QbdR:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-cwwegd-container\",layoutDependency:layoutDependency,layoutId:\"zRT8OZyl9-container\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"Discover how Twingate can help your customers \",D6E2gRuG7:false,gpily6XUb:\"ZQM788nVg\",height:\"100%\",HlFA9k7gu:resolvedLinks8[0],id:\"zRT8OZyl9\",Ke8Ebr11Y:\"Okta\",layoutId:\"zRT8OZyl9\",NZ73Mn_3q:\"Partners\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:true,tnFMMMSiG:false,width:\"100%\",...addPropertyOverrides({hSGH_QbdR:{HlFA9k7gu:resolvedLinks8[2]},lgo6tsa0X:{HlFA9k7gu:resolvedLinks8[1]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"Sgazhdlve\"},implicitPathVariables:undefined},{href:{webPageId:\"Sgazhdlve\"},implicitPathVariables:undefined},{href:{webPageId:\"Sgazhdlve\"},implicitPathVariables:undefined}],children:resolvedLinks9=>/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 3, 1px)`,...addPropertyOverrides({hSGH_QbdR:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1pd9r5m-container\",layoutDependency:layoutDependency,layoutId:\"Z9F8w3TL1-container\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"Speak to a Twingate expert\",D6E2gRuG7:false,gpily6XUb:\"bnffWKLnC\",height:\"100%\",HlFA9k7gu:resolvedLinks9[0],id:\"Z9F8w3TL1\",Ke8Ebr11Y:\"Okta\",layoutId:\"Z9F8w3TL1\",NZ73Mn_3q:\"Demo\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:true,tnFMMMSiG:false,width:\"100%\",...addPropertyOverrides({hSGH_QbdR:{HlFA9k7gu:resolvedLinks9[2]},lgo6tsa0X:{HlFA9k7gu:resolvedLinks9[1]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{pathVariables:{q7Tqe0xXu:\"twingate-security-whitepaper\"},webPageId:\"VFMAtaAu7\"},implicitPathVariables:undefined},{href:{pathVariables:{q7Tqe0xXu:\"twingate-security-whitepaper\"},webPageId:\"VFMAtaAu7\"},implicitPathVariables:undefined},{href:{pathVariables:{q7Tqe0xXu:\"twingate-security-whitepaper\"},webPageId:\"VFMAtaAu7\"},implicitPathVariables:undefined}],children:resolvedLinks10=>/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 3, 1px)`,...addPropertyOverrides({hSGH_QbdR:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-wkzqjw-container\",layoutDependency:layoutDependency,layoutId:\"Des5a6ges-container\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"Download Twingate Security Whitepaper\",D6E2gRuG7:false,gpily6XUb:\"unQEaWlPP\",height:\"100%\",HlFA9k7gu:resolvedLinks10[0],id:\"Des5a6ges\",Ke8Ebr11Y:\"Okta\",layoutId:\"Des5a6ges\",NZ73Mn_3q:\"Whitepaper\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:true,tnFMMMSiG:false,width:\"100%\",...addPropertyOverrides({hSGH_QbdR:{HlFA9k7gu:resolvedLinks10[2]},lgo6tsa0X:{HlFA9k7gu:resolvedLinks10[1]}},baseVariant,gestureVariant)})})})})]})})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1qbi15g\",\"data-framer-name\":\"Section\",layoutDependency:layoutDependency,layoutId:\"Eve1oeqnV\",children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1v6kwrp\",\"data-framer-name\":\"Section\",layoutDependency:layoutDependency,layoutId:\"xbxVUMHMo\",children:[/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"RAc5AxsLG\"},implicitPathVariables:undefined},{href:{webPageId:\"RAc5AxsLG\"},implicitPathVariables:undefined},{href:{webPageId:\"RAc5AxsLG\"},implicitPathVariables:undefined}],children:resolvedLinks11=>/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 1.5, 1px)`,...addPropertyOverrides({hSGH_QbdR:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-cjv43a-container\",layoutDependency:layoutDependency,layoutId:\"Ltet7xcoi-container\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"News and insight from Twingate\",D6E2gRuG7:false,gpily6XUb:\"UZnvvYoUZ\",height:\"100%\",HlFA9k7gu:resolvedLinks11[0],id:\"Ltet7xcoi\",Ke8Ebr11Y:\"Twingate\",layoutId:\"Ltet7xcoi\",NZ73Mn_3q:\"Blog\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:true,tnFMMMSiG:false,width:\"100%\",...addPropertyOverrides({hSGH_QbdR:{HlFA9k7gu:resolvedLinks11[2]},lgo6tsa0X:{HlFA9k7gu:resolvedLinks11[1]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-s919at\",layoutDependency:layoutDependency,layoutId:\"TfzlsFdJr\",children:/*#__PURE__*/_jsx(QueryData,{query:{from:{data:Blog,type:\"Collection\"},limit:{type:\"LiteralValue\",value:2},select:[{name:\"htIvfYBOu\",type:\"Identifier\"},{name:\"BOY5LSewc\",type:\"Identifier\"},{name:\"YnwyMK7wB\",type:\"Identifier\"},{name:\"KppWsNgH6\",type:\"Identifier\"},{name:\"id\",type:\"Identifier\"}],where:{left:{name:\"WRWHbDdVF\",type:\"Identifier\"},operator:\"and\",right:{name:\"xT_4SVBSB\",type:\"Identifier\"},type:\"BinaryOperation\"}},children:collection1=>collection1.map(({htIvfYBOu:htIvfYBOuTfzlsFdJr,BOY5LSewc:BOY5LSewcTfzlsFdJr,YnwyMK7wB:YnwyMK7wBTfzlsFdJr,KppWsNgH6:KppWsNgH6TfzlsFdJr,id:idTfzlsFdJr},i)=>{return /*#__PURE__*/_jsx(LayoutGroup,{id:`TfzlsFdJr-${idTfzlsFdJr}`,children:/*#__PURE__*/_jsx(PathVariablesContext.Provider,{value:{KppWsNgH6:KppWsNgH6TfzlsFdJr},children:/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{pathVariables:{KppWsNgH6:KppWsNgH6TfzlsFdJr},webPageId:\"SLBKiX9Fj\"},implicitPathVariables:undefined},{href:{pathVariables:{KppWsNgH6:KppWsNgH6TfzlsFdJr},webPageId:\"SLBKiX9Fj\"},implicitPathVariables:undefined},{href:{pathVariables:{KppWsNgH6:KppWsNgH6TfzlsFdJr},webPageId:\"SLBKiX9Fj\"},implicitPathVariables:undefined}],children:resolvedLinks12=>/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`max(max((${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 48px) / 1.5, 1px) - 26px, 1px)`,...addPropertyOverrides({hSGH_QbdR:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1oa33w4-container\",layoutDependency:layoutDependency,layoutId:\"JDWtDtu__-container\",children:/*#__PURE__*/_jsx(NavTrayCardChangelog,{FCJjotThg:htIvfYBOuTfzlsFdJr,gXZzLrrxC:toDateString(BOY5LSewcTfzlsFdJr,{dateStyle:\"medium\",locale:\"\"},activeLocaleCode),height:\"100%\",id:\"JDWtDtu__\",layoutId:\"JDWtDtu__\",style:{width:\"100%\"},variant:\"Y5wUo8S7g\",W8QKdoWYc:toResponsiveImage(YnwyMK7wBTfzlsFdJr),width:\"100%\",xB6GQkGqy:resolvedLinks12[0],...addPropertyOverrides({hSGH_QbdR:{style:{height:\"100%\",width:\"100%\"},xB6GQkGqy:resolvedLinks12[2]},lgo6tsa0X:{xB6GQkGqy:resolvedLinks12[1]}},baseVariant,gestureVariant)})})})})})},idTfzlsFdJr);})})})]})})]}),isDisplayed3()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-a3aygn\",\"data-framer-name\":\"Partners\",layoutDependency:layoutDependency,layoutId:\"qArDfvJcd\",children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-cmbw08\",\"data-framer-name\":\"Section\",layoutDependency:layoutDependency,layoutId:\"Tb82_6jDz\",children:[/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"Bq9yo6Aho\"},implicitPathVariables:undefined},{href:{webPageId:\"Bq9yo6Aho\"},implicitPathVariables:undefined},{href:{webPageId:\"Bq9yo6Aho\"},implicitPathVariables:undefined}],children:resolvedLinks13=>/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`min(max((max(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"}, 1px) - 96px) / 3, 1px), max(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"}, 1px))`,...addPropertyOverrides({CgU1mwjv4:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-9153cy-container\",layoutDependency:layoutDependency,layoutId:\"SjgY0BYAT-container\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"Manage & monitor customer networks\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:resolvedLinks13[0],id:\"SjgY0BYAT\",Ke8Ebr11Y:\"Twingate\",layoutId:\"SjgY0BYAT\",NZ73Mn_3q:\"MSPs/MSSPs\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\",...addPropertyOverrides({CgU1mwjv4:{HlFA9k7gu:resolvedLinks13[2]},g5WWfybex:{HlFA9k7gu:resolvedLinks13[1]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"oihjvnHXi\"},implicitPathVariables:undefined},{href:{webPageId:\"oihjvnHXi\"},implicitPathVariables:undefined},{href:{webPageId:\"oihjvnHXi\"},implicitPathVariables:undefined}],children:resolvedLinks14=>/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`min(max((max(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"}, 1px) - 96px) / 3, 1px), max(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"}, 1px))`,...addPropertyOverrides({CgU1mwjv4:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-uzpatk-container\",layoutDependency:layoutDependency,layoutId:\"GSlcdx4ul-container\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"Innovate through our rich technology ecosystem\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:resolvedLinks14[0],id:\"GSlcdx4ul\",Ke8Ebr11Y:\"Twingate\",layoutId:\"GSlcdx4ul\",NZ73Mn_3q:\"Technology Alliances\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\",...addPropertyOverrides({CgU1mwjv4:{HlFA9k7gu:resolvedLinks14[2]},g5WWfybex:{HlFA9k7gu:resolvedLinks14[1]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"fM499XwEy\"},implicitPathVariables:undefined},{href:{webPageId:\"fM499XwEy\"},implicitPathVariables:undefined},{href:{webPageId:\"fM499XwEy\"},implicitPathVariables:undefined}],children:resolvedLinks15=>/*#__PURE__*/_jsx(ComponentViewportProvider,{width:`min(max((max(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"}, 1px) - 96px) / 3, 1px), max(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"}, 1px))`,...addPropertyOverrides({CgU1mwjv4:{width:`calc(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"} - 40px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1d1f678-container\",layoutDependency:layoutDependency,layoutId:\"IbRYliGrF-container\",children:/*#__PURE__*/_jsx(NavTrayItem,{B1BRdzB7u:\"Drive scale with best-in-class zero trust security\",D6E2gRuG7:false,gpily6XUb:\"vZeeZmyVJ\",height:\"100%\",HlFA9k7gu:resolvedLinks15[0],id:\"IbRYliGrF\",Ke8Ebr11Y:\"Twingate\",layoutId:\"IbRYliGrF\",NZ73Mn_3q:\"Channel Partners\",style:{maxWidth:\"100%\",width:\"100%\"},th0ljLK8A:false,tnFMMMSiG:false,width:\"100%\",...addPropertyOverrides({CgU1mwjv4:{HlFA9k7gu:resolvedLinks15[2]},g5WWfybex:{HlFA9k7gu:resolvedLinks15[1]}},baseVariant,gestureVariant)})})})})]})})]})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-5oduX.framer-ypzmmt, .framer-5oduX .framer-ypzmmt { display: block; }\",\".framer-5oduX.framer-kvheqv { align-content: flex-start; align-items: flex-start; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 100px; height: auto; justify-content: center; max-width: 1056px; overflow: visible; padding: 0px 0px 16px 0px; position: relative; width: 1056px; }\",\".framer-5oduX .framer-15wi53f, .framer-5oduX .framer-u2rhus, .framer-5oduX .framer-1vcxxrr, .framer-5oduX .framer-a3aygn { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 48px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-5oduX .framer-1n1x9js { align-content: center; align-items: center; display: flex; flex: 1 0 0px; flex-direction: column; flex-wrap: nowrap; gap: 8px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 1px; }\",\".framer-5oduX .framer-7ozc37-container, .framer-5oduX .framer-v4hyuv-container, .framer-5oduX .framer-1r2oq5-container, .framer-5oduX .framer-ksnb2m-container, .framer-5oduX .framer-g7pp9y-container, .framer-5oduX .framer-tz9ul6-container, .framer-5oduX .framer-t3upgo-container, .framer-5oduX .framer-1e5fb6d-container, .framer-5oduX .framer-1fdjsbq-container, .framer-5oduX .framer-l0mbqz-container, .framer-5oduX .framer-129ij73-container, .framer-5oduX .framer-fw2nk7-container, .framer-5oduX .framer-18frrl2-container, .framer-5oduX .framer-1ua16pj-container, .framer-5oduX .framer-tmaibl-container, .framer-5oduX .framer-1hp9ig8-container, .framer-5oduX .framer-l1nfkf-container, .framer-5oduX .framer-143mfsn-container, .framer-5oduX .framer-cwwegd-container, .framer-5oduX .framer-1pd9r5m-container, .framer-5oduX .framer-wkzqjw-container, .framer-5oduX .framer-cjv43a-container { flex: none; height: auto; max-width: 100%; position: relative; width: 100%; }\",\".framer-5oduX .framer-1v8kqmd { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 16px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px 0px 0px 26px; position: relative; width: 100%; }\",\".framer-5oduX .framer-1iq7wou, .framer-5oduX .framer-1kft22j, .framer-5oduX .framer-2n1wn9, .framer-5oduX .framer-jua59y, .framer-5oduX .framer-tx9pel { align-content: flex-start; align-items: flex-start; display: flex; flex: 1 0 0px; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 1px; }\",\".framer-5oduX .framer-1diam07-container, .framer-5oduX .framer-1uv40ld-container, .framer-5oduX .framer-7tnjrh-container, .framer-5oduX .framer-1xe6gs0-container, .framer-5oduX .framer-1a1toft-container, .framer-5oduX .framer-mn6seu-container, .framer-5oduX .framer-3jpm4q-container, .framer-5oduX .framer-rd3dk6-container, .framer-5oduX .framer-11r5pvp-container, .framer-5oduX .framer-7ldwwu-container, .framer-5oduX .framer-xhd2k8-container, .framer-5oduX .framer-15w6j29-container, .framer-5oduX .framer-saa8m3-container, .framer-5oduX .framer-1upm7hz-container { flex: none; height: auto; position: relative; width: 100%; }\",\".framer-5oduX .framer-nkj833, .framer-5oduX .framer-boojs6, .framer-5oduX .framer-1ktt9kn { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 6px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-5oduX .framer-becu09 { align-content: flex-start; align-items: flex-start; display: flex; flex: 1 0 0px; flex-direction: column; flex-wrap: nowrap; gap: 16px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 1px; }\",\".framer-5oduX .framer-5o3log { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 16px; height: 225px; justify-content: flex-start; padding: 0px 0px 0px 26px; position: relative; width: 100%; }\",\".framer-5oduX .framer-89fqu5-container, .framer-5oduX .framer-1tymwd2-container, .framer-5oduX .framer-12t6qnl-container, .framer-5oduX .framer-1qbshft-container { flex: 1 0 0px; height: 100%; position: relative; width: 1px; }\",\".framer-5oduX .framer-8ee410 { align-content: center; align-items: center; display: flex; flex: 1 0 0px; flex-direction: column; flex-wrap: nowrap; gap: 16px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 1px; }\",\".framer-5oduX .framer-1t2i6bp { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 16px; height: 136px; justify-content: flex-start; overflow: visible; padding: 0px 0px 0px 26px; position: relative; width: 100%; }\",\".framer-5oduX .framer-nip4r8 { align-content: center; align-items: center; display: flex; flex: 1 0 0px; flex-direction: column; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 1px; }\",\".framer-5oduX .framer-96g8ei { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 16px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-5oduX .framer-o6y5n0 { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 6px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-5oduX .framer-czpvut { align-content: flex-start; align-items: flex-start; align-self: stretch; display: flex; flex: 1 0 0px; flex-direction: row; flex-wrap: nowrap; gap: 16px; height: auto; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 1px; }\",\".framer-5oduX .framer-w7w3pv { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 8px; height: 278px; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-5oduX .framer-1qbi15g { align-content: center; align-items: center; display: flex; flex: 2 0 0px; flex-direction: row; flex-wrap: nowrap; gap: 32px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 1px; }\",\".framer-5oduX .framer-1v6kwrp { align-content: flex-start; align-items: flex-start; align-self: stretch; display: flex; flex: 1 0 0px; flex-direction: column; flex-wrap: nowrap; gap: 16px; height: auto; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 1px; }\",\".framer-5oduX .framer-s919at { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 16px; height: min-content; justify-content: flex-start; padding: 0px 0px 0px 26px; position: relative; width: 100%; }\",\".framer-5oduX .framer-1oa33w4-container { flex: 1 0 0px; height: auto; position: relative; width: 1px; }\",\".framer-5oduX .framer-cmbw08 { align-content: flex-start; align-items: flex-start; display: flex; flex: 1 0 0px; flex-direction: row; flex-wrap: nowrap; gap: 48px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 1px; }\",\".framer-5oduX .framer-9153cy-container, .framer-5oduX .framer-uzpatk-container, .framer-5oduX .framer-1d1f678-container { flex: 1 0 0px; height: auto; max-width: 100%; position: relative; width: 1px; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-5oduX.framer-kvheqv, .framer-5oduX .framer-15wi53f, .framer-5oduX .framer-1n1x9js, .framer-5oduX .framer-1v8kqmd, .framer-5oduX .framer-1iq7wou, .framer-5oduX .framer-nkj833, .framer-5oduX .framer-1kft22j, .framer-5oduX .framer-boojs6, .framer-5oduX .framer-becu09, .framer-5oduX .framer-5o3log, .framer-5oduX .framer-u2rhus, .framer-5oduX .framer-8ee410, .framer-5oduX .framer-1t2i6bp, .framer-5oduX .framer-nip4r8, .framer-5oduX .framer-96g8ei, .framer-5oduX .framer-2n1wn9, .framer-5oduX .framer-o6y5n0, .framer-5oduX .framer-jua59y, .framer-5oduX .framer-1ktt9kn, .framer-5oduX .framer-1vcxxrr, .framer-5oduX .framer-czpvut, .framer-5oduX .framer-tx9pel, .framer-5oduX .framer-w7w3pv, .framer-5oduX .framer-1qbi15g, .framer-5oduX .framer-1v6kwrp, .framer-5oduX .framer-s919at, .framer-5oduX .framer-a3aygn, .framer-5oduX .framer-cmbw08 { gap: 0px; } .framer-5oduX.framer-kvheqv > * { margin: 0px; margin-bottom: calc(100px / 2); margin-top: calc(100px / 2); } .framer-5oduX.framer-kvheqv > :first-child, .framer-5oduX .framer-1n1x9js > :first-child, .framer-5oduX .framer-1iq7wou > :first-child, .framer-5oduX .framer-nkj833 > :first-child, .framer-5oduX .framer-1kft22j > :first-child, .framer-5oduX .framer-boojs6 > :first-child, .framer-5oduX .framer-becu09 > :first-child, .framer-5oduX .framer-8ee410 > :first-child, .framer-5oduX .framer-nip4r8 > :first-child, .framer-5oduX .framer-2n1wn9 > :first-child, .framer-5oduX .framer-o6y5n0 > :first-child, .framer-5oduX .framer-jua59y > :first-child, .framer-5oduX .framer-1ktt9kn > :first-child, .framer-5oduX .framer-tx9pel > :first-child, .framer-5oduX .framer-w7w3pv > :first-child, .framer-5oduX .framer-1v6kwrp > :first-child { margin-top: 0px; } .framer-5oduX.framer-kvheqv > :last-child, .framer-5oduX .framer-1n1x9js > :last-child, .framer-5oduX .framer-1iq7wou > :last-child, .framer-5oduX .framer-nkj833 > :last-child, .framer-5oduX .framer-1kft22j > :last-child, .framer-5oduX .framer-boojs6 > :last-child, .framer-5oduX .framer-becu09 > :last-child, .framer-5oduX .framer-8ee410 > :last-child, .framer-5oduX .framer-nip4r8 > :last-child, .framer-5oduX .framer-2n1wn9 > :last-child, .framer-5oduX .framer-o6y5n0 > :last-child, .framer-5oduX .framer-jua59y > :last-child, .framer-5oduX .framer-1ktt9kn > :last-child, .framer-5oduX .framer-tx9pel > :last-child, .framer-5oduX .framer-w7w3pv > :last-child, .framer-5oduX .framer-1v6kwrp > :last-child { margin-bottom: 0px; } .framer-5oduX .framer-15wi53f > *, .framer-5oduX .framer-u2rhus > *, .framer-5oduX .framer-1vcxxrr > *, .framer-5oduX .framer-a3aygn > *, .framer-5oduX .framer-cmbw08 > * { margin: 0px; margin-left: calc(48px / 2); margin-right: calc(48px / 2); } .framer-5oduX .framer-15wi53f > :first-child, .framer-5oduX .framer-1v8kqmd > :first-child, .framer-5oduX .framer-5o3log > :first-child, .framer-5oduX .framer-u2rhus > :first-child, .framer-5oduX .framer-1t2i6bp > :first-child, .framer-5oduX .framer-96g8ei > :first-child, .framer-5oduX .framer-1vcxxrr > :first-child, .framer-5oduX .framer-czpvut > :first-child, .framer-5oduX .framer-1qbi15g > :first-child, .framer-5oduX .framer-s919at > :first-child, .framer-5oduX .framer-a3aygn > :first-child, .framer-5oduX .framer-cmbw08 > :first-child { margin-left: 0px; } .framer-5oduX .framer-15wi53f > :last-child, .framer-5oduX .framer-1v8kqmd > :last-child, .framer-5oduX .framer-5o3log > :last-child, .framer-5oduX .framer-u2rhus > :last-child, .framer-5oduX .framer-1t2i6bp > :last-child, .framer-5oduX .framer-96g8ei > :last-child, .framer-5oduX .framer-1vcxxrr > :last-child, .framer-5oduX .framer-czpvut > :last-child, .framer-5oduX .framer-1qbi15g > :last-child, .framer-5oduX .framer-s919at > :last-child, .framer-5oduX .framer-a3aygn > :last-child, .framer-5oduX .framer-cmbw08 > :last-child { margin-right: 0px; } .framer-5oduX .framer-1n1x9js > *, .framer-5oduX .framer-w7w3pv > * { margin: 0px; margin-bottom: calc(8px / 2); margin-top: calc(8px / 2); } .framer-5oduX .framer-1v8kqmd > *, .framer-5oduX .framer-5o3log > *, .framer-5oduX .framer-1t2i6bp > *, .framer-5oduX .framer-96g8ei > *, .framer-5oduX .framer-czpvut > *, .framer-5oduX .framer-s919at > * { margin: 0px; margin-left: calc(16px / 2); margin-right: calc(16px / 2); } .framer-5oduX .framer-1iq7wou > *, .framer-5oduX .framer-1kft22j > *, .framer-5oduX .framer-2n1wn9 > *, .framer-5oduX .framer-jua59y > *, .framer-5oduX .framer-tx9pel > * { margin: 0px; margin-bottom: calc(0px / 2); margin-top: calc(0px / 2); } .framer-5oduX .framer-nkj833 > *, .framer-5oduX .framer-boojs6 > *, .framer-5oduX .framer-o6y5n0 > *, .framer-5oduX .framer-1ktt9kn > * { margin: 0px; margin-bottom: calc(6px / 2); margin-top: calc(6px / 2); } .framer-5oduX .framer-becu09 > *, .framer-5oduX .framer-8ee410 > *, .framer-5oduX .framer-1v6kwrp > * { margin: 0px; margin-bottom: calc(16px / 2); margin-top: calc(16px / 2); } .framer-5oduX .framer-nip4r8 > * { margin: 0px; margin-bottom: calc(10px / 2); margin-top: calc(10px / 2); } .framer-5oduX .framer-1qbi15g > * { margin: 0px; margin-left: calc(32px / 2); margin-right: calc(32px / 2); } }\",\".framer-5oduX.framer-v-1e811wn.framer-kvheqv, .framer-5oduX.framer-v-1osagrk.framer-kvheqv, .framer-5oduX.framer-v-1dh4qqv.framer-kvheqv, .framer-5oduX.framer-v-116a0rj.framer-kvheqv { padding: 20px; width: 400px; }\",\".framer-5oduX.framer-v-1e811wn .framer-15wi53f { flex-direction: column; gap: 32px; }\",\".framer-5oduX.framer-v-1e811wn .framer-1n1x9js, .framer-5oduX.framer-v-1e811wn .framer-1iq7wou, .framer-5oduX.framer-v-1e811wn .framer-1kft22j, .framer-5oduX.framer-v-1e811wn .framer-becu09, .framer-5oduX.framer-v-1osagrk .framer-8ee410, .framer-5oduX.framer-v-1osagrk .framer-nip4r8, .framer-5oduX.framer-v-1osagrk .framer-2n1wn9, .framer-5oduX.framer-v-1osagrk .framer-jua59y, .framer-5oduX.framer-v-1dh4qqv .framer-tx9pel, .framer-5oduX.framer-v-116a0rj .framer-9153cy-container, .framer-5oduX.framer-v-116a0rj .framer-uzpatk-container, .framer-5oduX.framer-v-116a0rj .framer-1d1f678-container { flex: none; width: 100%; }\",\".framer-5oduX.framer-v-1e811wn .framer-1v8kqmd, .framer-5oduX.framer-v-1dh4qqv .framer-s919at { flex-direction: column; padding: 0px; }\",\".framer-5oduX.framer-v-1e811wn .framer-5o3log { flex-direction: column; height: min-content; padding: 0px; }\",\".framer-5oduX.framer-v-1e811wn .framer-89fqu5-container, .framer-5oduX.framer-v-1dh4qqv .framer-1oa33w4-container { flex: none; height: 200px; width: 100%; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-5oduX.framer-v-1e811wn .framer-15wi53f, .framer-5oduX.framer-v-1e811wn .framer-1v8kqmd, .framer-5oduX.framer-v-1e811wn .framer-5o3log { gap: 0px; } .framer-5oduX.framer-v-1e811wn .framer-15wi53f > * { margin: 0px; margin-bottom: calc(32px / 2); margin-top: calc(32px / 2); } .framer-5oduX.framer-v-1e811wn .framer-15wi53f > :first-child, .framer-5oduX.framer-v-1e811wn .framer-1v8kqmd > :first-child, .framer-5oduX.framer-v-1e811wn .framer-5o3log > :first-child { margin-top: 0px; } .framer-5oduX.framer-v-1e811wn .framer-15wi53f > :last-child, .framer-5oduX.framer-v-1e811wn .framer-1v8kqmd > :last-child, .framer-5oduX.framer-v-1e811wn .framer-5o3log > :last-child { margin-bottom: 0px; } .framer-5oduX.framer-v-1e811wn .framer-1v8kqmd > *, .framer-5oduX.framer-v-1e811wn .framer-5o3log > * { margin: 0px; margin-bottom: calc(16px / 2); margin-top: calc(16px / 2); } }\",\".framer-5oduX.framer-v-1osagrk .framer-u2rhus, .framer-5oduX.framer-v-1dh4qqv .framer-1vcxxrr, .framer-5oduX.framer-v-116a0rj .framer-a3aygn { flex-direction: column; gap: 16px; }\",\".framer-5oduX.framer-v-1osagrk .framer-1t2i6bp { flex-direction: column; gap: 10px; height: min-content; padding: 0px; }\",\".framer-5oduX.framer-v-1osagrk .framer-1tymwd2-container, .framer-5oduX.framer-v-1osagrk .framer-12t6qnl-container, .framer-5oduX.framer-v-1osagrk .framer-1qbshft-container { flex: none; height: auto; width: 100%; }\",\".framer-5oduX.framer-v-1osagrk .framer-96g8ei { flex-direction: column; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-5oduX.framer-v-1osagrk .framer-u2rhus, .framer-5oduX.framer-v-1osagrk .framer-1t2i6bp, .framer-5oduX.framer-v-1osagrk .framer-96g8ei { gap: 0px; } .framer-5oduX.framer-v-1osagrk .framer-u2rhus > *, .framer-5oduX.framer-v-1osagrk .framer-96g8ei > * { margin: 0px; margin-bottom: calc(16px / 2); margin-top: calc(16px / 2); } .framer-5oduX.framer-v-1osagrk .framer-u2rhus > :first-child, .framer-5oduX.framer-v-1osagrk .framer-1t2i6bp > :first-child, .framer-5oduX.framer-v-1osagrk .framer-96g8ei > :first-child { margin-top: 0px; } .framer-5oduX.framer-v-1osagrk .framer-u2rhus > :last-child, .framer-5oduX.framer-v-1osagrk .framer-1t2i6bp > :last-child, .framer-5oduX.framer-v-1osagrk .framer-96g8ei > :last-child { margin-bottom: 0px; } .framer-5oduX.framer-v-1osagrk .framer-1t2i6bp > * { margin: 0px; margin-bottom: calc(10px / 2); margin-top: calc(10px / 2); } }\",\".framer-5oduX.framer-v-1dh4qqv .framer-czpvut { align-self: unset; flex: none; flex-direction: column; height: min-content; order: 0; width: 100%; }\",\".framer-5oduX.framer-v-1dh4qqv .framer-w7w3pv { height: min-content; }\",\".framer-5oduX.framer-v-1dh4qqv .framer-1qbi15g { flex: none; flex-direction: column; order: 1; width: 100%; }\",\".framer-5oduX.framer-v-1dh4qqv .framer-1v6kwrp { align-self: unset; flex: none; height: min-content; width: 100%; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-5oduX.framer-v-1dh4qqv .framer-1vcxxrr, .framer-5oduX.framer-v-1dh4qqv .framer-czpvut, .framer-5oduX.framer-v-1dh4qqv .framer-1qbi15g, .framer-5oduX.framer-v-1dh4qqv .framer-s919at { gap: 0px; } .framer-5oduX.framer-v-1dh4qqv .framer-1vcxxrr > *, .framer-5oduX.framer-v-1dh4qqv .framer-czpvut > *, .framer-5oduX.framer-v-1dh4qqv .framer-s919at > * { margin: 0px; margin-bottom: calc(16px / 2); margin-top: calc(16px / 2); } .framer-5oduX.framer-v-1dh4qqv .framer-1vcxxrr > :first-child, .framer-5oduX.framer-v-1dh4qqv .framer-czpvut > :first-child, .framer-5oduX.framer-v-1dh4qqv .framer-1qbi15g > :first-child, .framer-5oduX.framer-v-1dh4qqv .framer-s919at > :first-child { margin-top: 0px; } .framer-5oduX.framer-v-1dh4qqv .framer-1vcxxrr > :last-child, .framer-5oduX.framer-v-1dh4qqv .framer-czpvut > :last-child, .framer-5oduX.framer-v-1dh4qqv .framer-1qbi15g > :last-child, .framer-5oduX.framer-v-1dh4qqv .framer-s919at > :last-child { margin-bottom: 0px; } .framer-5oduX.framer-v-1dh4qqv .framer-1qbi15g > * { margin: 0px; margin-bottom: calc(32px / 2); margin-top: calc(32px / 2); } }\",\".framer-5oduX.framer-v-116a0rj .framer-cmbw08 { flex: none; flex-direction: column; gap: 16px; order: 0; width: 100%; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-5oduX.framer-v-116a0rj .framer-a3aygn, .framer-5oduX.framer-v-116a0rj .framer-cmbw08 { gap: 0px; } .framer-5oduX.framer-v-116a0rj .framer-a3aygn > *, .framer-5oduX.framer-v-116a0rj .framer-cmbw08 > * { margin: 0px; margin-bottom: calc(16px / 2); margin-top: calc(16px / 2); } .framer-5oduX.framer-v-116a0rj .framer-a3aygn > :first-child, .framer-5oduX.framer-v-116a0rj .framer-cmbw08 > :first-child { margin-top: 0px; } .framer-5oduX.framer-v-116a0rj .framer-a3aygn > :last-child, .framer-5oduX.framer-v-116a0rj .framer-cmbw08 > :last-child { margin-bottom: 0px; } }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 1235.5\n * @framerIntrinsicWidth 1056\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"],\"constraints\":[null,\"1056px\",null,null]},\"V3KnZ7YU0\":{\"layout\":[\"fixed\",\"auto\"],\"constraints\":[null,\"1056px\",null,null]},\"OT1LbjD25\":{\"layout\":[\"fixed\",\"auto\"],\"constraints\":[null,\"1056px\",null,null]},\"lHByleq6k\":{\"layout\":[\"fixed\",\"auto\"],\"constraints\":[null,\"1056px\",null,null]},\"kNdqCkpev\":{\"layout\":[\"fixed\",\"auto\"],\"constraints\":[null,\"1056px\",null,null]},\"lgo6tsa0X\":{\"layout\":[\"fixed\",\"auto\"],\"constraints\":[null,\"1056px\",null,null]},\"hSGH_QbdR\":{\"layout\":[\"fixed\",\"auto\"],\"constraints\":[null,\"1056px\",null,null]},\"g5WWfybex\":{\"layout\":[\"fixed\",\"auto\"],\"constraints\":[null,\"1056px\",null,null]},\"CgU1mwjv4\":{\"layout\":[\"fixed\",\"auto\"],\"constraints\":[null,\"1056px\",null,null]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerojyM9x_ZC=withCSS(Component,css,\"framer-5oduX\");export default FramerojyM9x_ZC;FramerojyM9x_ZC.displayName=\"Nav / Tray\";FramerojyM9x_ZC.defaultProps={height:1235.5,width:1056};addPropertyControls(FramerojyM9x_ZC,{variant:{options:[\"Un1r32V1H\",\"V3KnZ7YU0\",\"OT1LbjD25\",\"lHByleq6k\",\"kNdqCkpev\",\"lgo6tsa0X\",\"hSGH_QbdR\",\"g5WWfybex\",\"CgU1mwjv4\"],optionTitles:[\"_Primary\",\"Product\",\"Product \u2013\\xa0Mobile\",\"Docs\",\"Docs \u2013\\xa0Mobile\",\"Resources\",\"Resources \u2013\\xa0Mobile\",\"Partners\",\"Partners \u2013 Mobile\"],title:\"Variant\",type:ControlType.Enum}});addFonts(FramerojyM9x_ZC,[{explicitInter:true,fonts:[]},...NavTrayItemFonts,...NavTrayTitleFonts,...NavTrayCardChangelogFonts,...NavTrayCardFonts],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerojyM9x_ZC\",\"slots\":[],\"annotations\":{\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"],\\\"constraints\\\":[null,\\\"1056px\\\",null,null]},\\\"V3KnZ7YU0\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"],\\\"constraints\\\":[null,\\\"1056px\\\",null,null]},\\\"OT1LbjD25\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"],\\\"constraints\\\":[null,\\\"1056px\\\",null,null]},\\\"lHByleq6k\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"],\\\"constraints\\\":[null,\\\"1056px\\\",null,null]},\\\"kNdqCkpev\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"],\\\"constraints\\\":[null,\\\"1056px\\\",null,null]},\\\"lgo6tsa0X\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"],\\\"constraints\\\":[null,\\\"1056px\\\",null,null]},\\\"hSGH_QbdR\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"],\\\"constraints\\\":[null,\\\"1056px\\\",null,null]},\\\"g5WWfybex\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"],\\\"constraints\\\":[null,\\\"1056px\\\",null,null]},\\\"CgU1mwjv4\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"],\\\"constraints\\\":[null,\\\"1056px\\\",null,null]}}}\",\"framerDisplayContentsDiv\":\"false\",\"framerIntrinsicWidth\":\"1056\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"1235.5\",\"framerImmutableVariables\":\"true\",\"framerComponentViewportWidth\":\"true\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}", "// Generated by Framer (508aa67)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,getFontsFromSharedStyle,getPropertyControls,Link,RichText,SVG,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import*as sharedStyle from\"https://framerusercontent.com/modules/l8zqelXHCgG4xqGiBZjD/MoSFg6TCq18gonvBRGK7/M6hbwtZyh.js\";import NavTray from\"https://framerusercontent.com/modules/z6q2nhyda8yyqOfBs3g5/Q8jJJ9YK4gKuNbgVJzHx/ojyM9x_ZC.js\";const NavTrayFonts=getFonts(NavTray);const NavTrayControls=getPropertyControls(NavTray);const enabledGestures={S1HgDZL8w:{hover:true},xd0WuXaRi:{hover:true}};const cycleOrder=[\"S1HgDZL8w\",\"s4vX3n6SA\",\"xd0WuXaRi\"];const serializationHash=\"framer-WXl8I\";const variantClassNames={S1HgDZL8w:\"framer-v-nugitm\",s4vX3n6SA:\"framer-v-wmevyc\",xd0WuXaRi:\"framer-v-k6jyed\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants===null||variants===void 0?void 0:variants.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:1e3,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value!==null&&value!==void 0?value:config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion(React.Fragment);const humanReadableEnumMap={_Primary:\"Un1r32V1H\",\"Docs \u2013\\xa0Mobile\":\"kNdqCkpev\",\"Partners \u2013 Mobile\":\"CgU1mwjv4\",\"Product \u2013\\xa0Mobile\":\"OT1LbjD25\",\"Resources \u2013\\xa0Mobile\":\"hSGH_QbdR\",Docs:\"lHByleq6k\",Partners:\"g5WWfybex\",Product:\"V3KnZ7YU0\",Resources:\"lgo6tsa0X\"};const humanReadableVariantMap={Closed:\"xd0WuXaRi\",Default:\"S1HgDZL8w\",Open:\"s4vX3n6SA\"};const getProps=({height,id,link,title,tray,width,...props})=>{var _humanReadableEnumMap_tray,_ref,_ref1,_ref2,_humanReadableVariantMap_props_variant,_ref3;return{...props,fA1M1zeKn:(_ref1=(_ref=(_humanReadableEnumMap_tray=humanReadableEnumMap[tray])!==null&&_humanReadableEnumMap_tray!==void 0?_humanReadableEnumMap_tray:tray)!==null&&_ref!==void 0?_ref:props.fA1M1zeKn)!==null&&_ref1!==void 0?_ref1:\"OT1LbjD25\",n1VAzJUI_:(_ref2=title!==null&&title!==void 0?title:props.n1VAzJUI_)!==null&&_ref2!==void 0?_ref2:\"Product\",u51ZvRHqi:link!==null&&link!==void 0?link:props.u51ZvRHqi,variant:(_ref3=(_humanReadableVariantMap_props_variant=humanReadableVariantMap[props.variant])!==null&&_humanReadableVariantMap_props_variant!==void 0?_humanReadableVariantMap_props_variant:props.variant)!==null&&_ref3!==void 0?_ref3:\"S1HgDZL8w\"};};const createLayoutDependency=(props,variants)=>variants.join(\"-\")+props.layoutDependency;const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,u51ZvRHqi,n1VAzJUI_,fA1M1zeKn,...restProps}=getProps(props);const{baseVariant,classNames,gestureVariant,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"S1HgDZL8w\",enabledGestures,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onTap14fneg2=activeVariantCallback(async(...args)=>{setVariant(\"xd0WuXaRi\");});const onTap7svolr=activeVariantCallback(async(...args)=>{setVariant(\"s4vX3n6SA\");});const ref1=React.useRef(null);const isDisplayed=()=>{if(gestureVariant===\"xd0WuXaRi-hover\")return true;if([\"s4vX3n6SA\",\"xd0WuXaRi\"].includes(baseVariant))return true;return false;};const isDisplayed1=()=>{if(baseVariant===\"s4vX3n6SA\")return true;return false;};const defaultLayoutId=React.useId();const sharedStyleClassNames=[sharedStyle.className];const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId!==null&&layoutId!==void 0?layoutId:defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(Link,{href:u51ZvRHqi,openInNewTab:false,...addPropertyOverrides({\"xd0WuXaRi-hover\":{href:undefined},s4vX3n6SA:{href:undefined},xd0WuXaRi:{href:undefined}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsxs(motion.a,{...restProps,className:`${cx(serializationHash,...sharedStyleClassNames,\"framer-nugitm\",className,classNames)} framer-4ngxvx`,\"data-framer-name\":\"Default\",layoutDependency:layoutDependency,layoutId:\"S1HgDZL8w\",onHoverEnd:()=>setGestureState({isHovered:false}),onHoverStart:()=>setGestureState({isHovered:true}),onTap:()=>setGestureState({isPressed:false}),onTapCancel:()=>setGestureState({isPressed:false}),onTapStart:()=>setGestureState({isPressed:true}),ref:ref!==null&&ref!==void 0?ref:ref1,style:{...style},...addPropertyOverrides({\"S1HgDZL8w-hover\":{\"data-framer-name\":undefined},\"xd0WuXaRi-hover\":{\"data-framer-name\":undefined},s4vX3n6SA:{\"data-framer-name\":\"Open\"},xd0WuXaRi:{\"data-framer-name\":\"Closed\"}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-psj0pr\",\"data-border\":true,\"data-framer-name\":\"Parent\",layoutDependency:layoutDependency,layoutId:\"lnSx6cS9H\",style:{\"--border-bottom-width\":\"0px\",\"--border-color\":\"var(--token-2b080329-29ba-481c-ac92-832881069b36, rgba(255, 255, 255, 0.1))\",\"--border-left-width\":\"0px\",\"--border-right-width\":\"0px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0.5px\",backgroundColor:\"rgba(0, 0, 0, 0)\"},variants:{\"S1HgDZL8w-hover\":{backgroundColor:\"rgba(255, 255, 255, 0.03)\"},\"xd0WuXaRi-hover\":{backgroundColor:\"rgba(255, 255, 255, 0.03)\"}},...addPropertyOverrides({s4vX3n6SA:{\"data-highlight\":true,onTap:onTap14fneg2},xd0WuXaRi:{\"data-highlight\":true,onTap:onTap7svolr}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-87abjg\",\"data-styles-preset\":\"M6hbwtZyh\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255)))\"},children:\"Product\"})}),className:\"framer-uof5zj\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"MUCjedpAs\",style:{\"--extracted-r6o4lv\":\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:n1VAzJUI_,verticalAlignment:\"top\",withExternalLayout:true}),isDisplayed()&&/*#__PURE__*/_jsx(SVG,{className:\"framer-ulgi1r\",\"data-framer-name\":\"Chevron\",layout:\"position\",layoutDependency:layoutDependency,layoutId:\"cyZ963ou1\",opacity:.4,style:{opacity:.4},svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 24 24\"><path d=\"M 6 9 L 12 15 L 18 9\" fill=\"transparent\" stroke-width=\"1.5\" stroke=\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(18, 19, 21))\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path></svg>',svgContentId:3706855749,withExternalLayout:true,...addPropertyOverrides({s4vX3n6SA:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 24 24\"><path d=\"M 0 0 L 6 6 L 12 0\" transform=\"translate(6 9) rotate(180 6 3)\" fill=\"transparent\" stroke-width=\"1.5\" stroke=\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path></svg>',svgContentId:1776702005},xd0WuXaRi:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 24 24\"><path d=\"M 6 9 L 12 15 L 18 9\" fill=\"transparent\" stroke-width=\"1.5\" stroke=\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path></svg>',svgContentId:3443238835}},baseVariant,gestureVariant)})]}),isDisplayed1()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1n12s63\",\"data-framer-name\":\"Child\",layoutDependency:layoutDependency,layoutId:\"RRjdZrkeH\",style:{backgroundColor:\"rgba(0, 0, 0, 0.2)\"},children:/*#__PURE__*/_jsx(ComponentViewportProvider,{...addPropertyOverrides({s4vX3n6SA:{width:`max(${(componentViewport===null||componentViewport===void 0?void 0:componentViewport.width)||\"100vw\"}, 1px)`}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-12p45wa-container\",layoutDependency:layoutDependency,layoutId:\"S8D07xCu4-container\",children:/*#__PURE__*/_jsx(NavTray,{height:\"100%\",id:\"S8D07xCu4\",layoutId:\"S8D07xCu4\",style:{width:\"100%\"},variant:fA1M1zeKn,width:\"100%\"})})})})]})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-WXl8I.framer-4ngxvx, .framer-WXl8I .framer-4ngxvx { display: block; }\",\".framer-WXl8I.framer-nugitm { align-content: center; align-items: center; cursor: pointer; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: auto; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; text-decoration: none; width: 400px; }\",\".framer-WXl8I .framer-psj0pr { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; height: 48px; justify-content: space-between; overflow: visible; padding: 16px; position: relative; width: 100%; }\",\".framer-WXl8I .framer-uof5zj { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-WXl8I .framer-ulgi1r { flex: none; height: 24px; position: relative; width: 24px; }\",\".framer-WXl8I .framer-1n12s63 { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-WXl8I .framer-12p45wa-container { flex: 1 0 0px; height: auto; position: relative; width: 1px; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-WXl8I.framer-nugitm, .framer-WXl8I .framer-1n12s63 { gap: 0px; } .framer-WXl8I.framer-nugitm > * { margin: 0px; margin-bottom: calc(0px / 2); margin-top: calc(0px / 2); } .framer-WXl8I.framer-nugitm > :first-child { margin-top: 0px; } .framer-WXl8I.framer-nugitm > :last-child { margin-bottom: 0px; } .framer-WXl8I .framer-1n12s63 > * { margin: 0px; margin-left: calc(0px / 2); margin-right: calc(0px / 2); } .framer-WXl8I .framer-1n12s63 > :first-child { margin-left: 0px; } .framer-WXl8I .framer-1n12s63 > :last-child { margin-right: 0px; } }\",\".framer-WXl8I.framer-v-wmevyc.framer-nugitm { cursor: unset; }\",\".framer-WXl8I.framer-v-wmevyc .framer-psj0pr, .framer-WXl8I.framer-v-k6jyed .framer-psj0pr { cursor: pointer; }\",...sharedStyle.css,'.framer-WXl8I[data-border=\"true\"]::after, .framer-WXl8I [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; pointer-events: none; }'];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 48\n * @framerIntrinsicWidth 400\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]},\"s4vX3n6SA\":{\"layout\":[\"fixed\",\"auto\"]},\"xd0WuXaRi\":{\"layout\":[\"fixed\",\"auto\"]},\"czzegYjd8\":{\"layout\":[\"fixed\",\"auto\"]},\"t1rx7WCqH\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerVariables {\"u51ZvRHqi\":\"link\",\"n1VAzJUI_\":\"title\",\"fA1M1zeKn\":\"tray\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerNf5Ragpam=withCSS(Component,css,\"framer-WXl8I\");export default FramerNf5Ragpam;FramerNf5Ragpam.displayName=\"Nav / Mobile Nav \u2013\\xa0Row\";FramerNf5Ragpam.defaultProps={height:48,width:400};addPropertyControls(FramerNf5Ragpam,{variant:{options:[\"S1HgDZL8w\",\"s4vX3n6SA\",\"xd0WuXaRi\"],optionTitles:[\"Default\",\"Open\",\"Closed\"],title:\"Variant\",type:ControlType.Enum},u51ZvRHqi:{title:\"Link\",type:ControlType.Link},n1VAzJUI_:{defaultValue:\"Product\",displayTextArea:false,placeholder:\"\",title:\"Title\",type:ControlType.String},fA1M1zeKn:(NavTrayControls===null||NavTrayControls===void 0?void 0:NavTrayControls[\"variant\"])&&{...NavTrayControls[\"variant\"],defaultValue:\"OT1LbjD25\",description:undefined,hidden:undefined,title:\"Tray\"}});addFonts(FramerNf5Ragpam,[{explicitInter:true,fonts:[{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://app.framerstatic.com/Inter-Regular.cyrillic-ext-CFTLRB35.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://app.framerstatic.com/Inter-Regular.cyrillic-KKLZBALH.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+1F00-1FFF\",url:\"https://app.framerstatic.com/Inter-Regular.greek-ext-ULEBLIFV.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0370-03FF\",url:\"https://app.framerstatic.com/Inter-Regular.greek-IRHSNFQB.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://app.framerstatic.com/Inter-Regular.latin-ext-VZDUGU3Q.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://app.framerstatic.com/Inter-Regular.latin-JLQMKCHE.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://app.framerstatic.com/Inter-Regular.vietnamese-QK7VSWXK.woff2\",weight:\"400\"}]},...NavTrayFonts,...getFontsFromSharedStyle(sharedStyle.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerNf5Ragpam\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"400\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"48\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"s4vX3n6SA\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"xd0WuXaRi\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"czzegYjd8\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"t1rx7WCqH\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerVariables\":\"{\\\"u51ZvRHqi\\\":\\\"link\\\",\\\"n1VAzJUI_\\\":\\\"title\\\",\\\"fA1M1zeKn\\\":\\\"tray\\\"}\",\"framerComponentViewportWidth\":\"true\",\"framerImmutableVariables\":\"true\",\"framerDisplayContentsDiv\":\"false\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}", "// Generated by Framer (508aa67)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,RichText,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";const enabledGestures={S2IKBNrsn:{hover:true}};const cycleOrder=[\"S2IKBNrsn\"];const serializationHash=\"framer-tOefI\";const variantClassNames={S2IKBNrsn:\"framer-v-mw9zcs\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants===null||variants===void 0?void 0:variants.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={delay:0,duration:.2,ease:[0,0,1,1],type:\"tween\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value!==null&&value!==void 0?value:config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion(React.Fragment);const getProps=({height,id,tenantFirstLetter,tenantName,tenantSlug,width,...props})=>{var _ref,_ref1,_ref2;return{...props,n9wmhVubQ:(_ref=tenantSlug!==null&&tenantSlug!==void 0?tenantSlug:props.n9wmhVubQ)!==null&&_ref!==void 0?_ref:\"<tenantSlugCouldBeSuperDuperLong>.twingate.com\",OnZ_3axVX:(_ref1=tenantName!==null&&tenantName!==void 0?tenantName:props.OnZ_3axVX)!==null&&_ref1!==void 0?_ref1:\"TenantName\",QBgC5od6m:(_ref2=tenantFirstLetter!==null&&tenantFirstLetter!==void 0?tenantFirstLetter:props.QBgC5od6m)!==null&&_ref2!==void 0?_ref2:\"Z\"};};const createLayoutDependency=(props,variants)=>variants.join(\"-\")+props.layoutDependency;const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,OnZ_3axVX,n9wmhVubQ,QBgC5od6m,...restProps}=getProps(props);const{baseVariant,classNames,gestureVariant,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"S2IKBNrsn\",enabledGestures,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const ref1=React.useRef(null);const defaultLayoutId=React.useId();const sharedStyleClassNames=[];const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId!==null&&layoutId!==void 0?layoutId:defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,className:cx(serializationHash,...sharedStyleClassNames,\"framer-mw9zcs\",className,classNames),\"data-framer-name\":\"Default\",layoutDependency:layoutDependency,layoutId:\"S2IKBNrsn\",onHoverEnd:()=>setGestureState({isHovered:false}),onHoverStart:()=>setGestureState({isHovered:true}),onTap:()=>setGestureState({isPressed:false}),onTapCancel:()=>setGestureState({isPressed:false}),onTapStart:()=>setGestureState({isPressed:true}),ref:ref!==null&&ref!==void 0?ref:ref1,style:{backgroundColor:\"rgba(0, 0, 0, 0)\",borderBottomLeftRadius:6,borderBottomRightRadius:6,borderTopLeftRadius:6,borderTopRightRadius:6,...style},variants:{\"S2IKBNrsn-hover\":{backgroundColor:\"rgba(0, 0, 0, 0.15)\"}},...addPropertyOverrides({\"S2IKBNrsn-hover\":{\"data-framer-name\":undefined}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-1gdl5b4\",\"data-framer-name\":\"Avatar\",layoutDependency:layoutDependency,layoutId:\"Sfn_coCe4\",style:{backgroundColor:\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\",borderBottomLeftRadius:4,borderBottomRightRadius:4,borderTopLeftRadius:4,borderTopRightRadius:4},children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1RUIEhvdmVzIE1lZGl1bQ==\",\"--framer-font-family\":'\"TT Hoves Medium\", serif',\"--framer-font-size\":\"17px\",\"--framer-line-height\":\"1.5em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17)))\"},children:\"Z\"})}),className:\"framer-60avut\",fonts:[\"CUSTOM;TT Hoves Medium\"],layoutDependency:layoutDependency,layoutId:\"Xc3qHs27l\",style:{\"--extracted-r6o4lv\":\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:QBgC5od6m,verticalAlignment:\"top\",withExternalLayout:true})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1luljhh\",layoutDependency:layoutDependency,layoutId:\"Dp2YuAq8M\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1RUIEhvdmVzIE1lZGl1bQ==\",\"--framer-font-family\":'\"TT Hoves Medium\", serif',\"--framer-font-size\":\"13px\",\"--framer-letter-spacing\":\"0.15px\",\"--framer-line-height\":\"1em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255)))\"},children:\"TenantName\"})}),className:\"framer-14jiu4e\",fonts:[\"CUSTOM;TT Hoves Medium\"],layoutDependency:layoutDependency,layoutId:\"ju6RwXmPt\",style:{\"--extracted-r6o4lv\":\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:OnZ_3axVX,verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1RUIEhvdmVzIE1lZGl1bQ==\",\"--framer-font-family\":'\"TT Hoves Medium\", serif',\"--framer-font-size\":\"11px\",\"--framer-letter-spacing\":\"0.25px\",\"--framer-line-height\":\"1em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-376d54cb-4db7-448c-b192-cf6ae3d1a8ff, rgb(161, 161, 170)))\"},children:\"<tenantSlugCouldBeSuperDuperLong>.twingate.com\"})}),className:\"framer-19803tp\",fonts:[\"CUSTOM;TT Hoves Medium\"],layoutDependency:layoutDependency,layoutId:\"bZOGIPrh0\",style:{\"--extracted-r6o4lv\":\"var(--token-376d54cb-4db7-448c-b192-cf6ae3d1a8ff, rgb(161, 161, 170))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:n9wmhVubQ,verticalAlignment:\"top\",withExternalLayout:true})]})]})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-tOefI.framer-1md6fbg, .framer-tOefI .framer-1md6fbg { display: block; }\",\".framer-tOefI.framer-mw9zcs { align-content: center; align-items: center; cursor: pointer; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: flex-start; overflow: hidden; padding: 6px; position: relative; width: 332px; will-change: var(--framer-will-change-override, transform); }\",\".framer-tOefI .framer-1gdl5b4 { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: 32px; justify-content: center; overflow: hidden; padding: 0px; position: relative; width: 32px; will-change: var(--framer-will-change-override, transform); }\",\".framer-tOefI .framer-60avut, .framer-tOefI .framer-14jiu4e, .framer-tOefI .framer-19803tp { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-tOefI .framer-1luljhh { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 4px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: min-content; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-tOefI.framer-mw9zcs, .framer-tOefI .framer-1gdl5b4, .framer-tOefI .framer-1luljhh { gap: 0px; } .framer-tOefI.framer-mw9zcs > * { margin: 0px; margin-left: calc(10px / 2); margin-right: calc(10px / 2); } .framer-tOefI.framer-mw9zcs > :first-child { margin-left: 0px; } .framer-tOefI.framer-mw9zcs > :last-child { margin-right: 0px; } .framer-tOefI .framer-1gdl5b4 > * { margin: 0px; margin-bottom: calc(0px / 2); margin-top: calc(0px / 2); } .framer-tOefI .framer-1gdl5b4 > :first-child, .framer-tOefI .framer-1luljhh > :first-child { margin-top: 0px; } .framer-tOefI .framer-1gdl5b4 > :last-child, .framer-tOefI .framer-1luljhh > :last-child { margin-bottom: 0px; } .framer-tOefI .framer-1luljhh > * { margin: 0px; margin-bottom: calc(4px / 2); margin-top: calc(4px / 2); } }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 44\n * @framerIntrinsicWidth 332\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]},\"rzJkjqyMh\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerVariables {\"OnZ_3axVX\":\"tenantName\",\"n9wmhVubQ\":\"tenantSlug\",\"QBgC5od6m\":\"tenantFirstLetter\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerPjC4CsJaK=withCSS(Component,css,\"framer-tOefI\");export default FramerPjC4CsJaK;FramerPjC4CsJaK.displayName=\"Nav / TenantRow\";FramerPjC4CsJaK.defaultProps={height:44,width:332};addPropertyControls(FramerPjC4CsJaK,{OnZ_3axVX:{defaultValue:\"TenantName\",displayTextArea:false,title:\"TenantName\",type:ControlType.String},n9wmhVubQ:{defaultValue:\"<tenantSlugCouldBeSuperDuperLong>.twingate.com\",displayTextArea:false,title:\"Tenant Slug\",type:ControlType.String},QBgC5od6m:{defaultValue:\"Z\",displayTextArea:false,title:\"Tenant First Letter\",type:ControlType.String}});addFonts(FramerPjC4CsJaK,[{explicitInter:true,fonts:[{family:\"TT Hoves Medium\",source:\"custom\",url:\"https://framerusercontent.com/assets/M4cAr8oQzbyO9Ynb0WkinOqcoI.woff2\"}]}],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerPjC4CsJaK\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerComponentViewportWidth\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerVariables\":\"{\\\"OnZ_3axVX\\\":\\\"tenantName\\\",\\\"n9wmhVubQ\\\":\\\"tenantSlug\\\",\\\"QBgC5od6m\\\":\\\"tenantFirstLetter\\\"}\",\"framerIntrinsicWidth\":\"332\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"rzJkjqyMh\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerIntrinsicHeight\":\"44\",\"framerImmutableVariables\":\"true\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./PjC4CsJaK.map", "// Generated by Framer (508aa67)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,getFontsFromSharedStyle,Link,RichText,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import*as sharedStyle from\"https://framerusercontent.com/modules/iSeRdQLTVmRrhWISCw0l/Sl9HQFOp8SMY2doDl9GW/PihfgTAR5.js\";const enabledGestures={I8zBahkEa:{hover:true}};const cycleOrder=[\"I8zBahkEa\"];const serializationHash=\"framer-I6vo7\";const variantClassNames={I8zBahkEa:\"framer-v-3cbl9f\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants===null||variants===void 0?void 0:variants.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={delay:0,duration:.3,ease:[0,0,1,1],type:\"tween\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value!==null&&value!==void 0?value:config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion(React.Fragment);const getProps=({height,id,link,title,width,...props})=>{var _ref;return{...props,jGReyLla_:(_ref=title!==null&&title!==void 0?title:props.jGReyLla_)!==null&&_ref!==void 0?_ref:\"Create Network\",uVJDdqVqp:link!==null&&link!==void 0?link:props.uVJDdqVqp};};const createLayoutDependency=(props,variants)=>variants.join(\"-\")+props.layoutDependency;const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,jGReyLla_,uVJDdqVqp,...restProps}=getProps(props);const{baseVariant,classNames,gestureVariant,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"I8zBahkEa\",enabledGestures,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const ref1=React.useRef(null);const defaultLayoutId=React.useId();const sharedStyleClassNames=[sharedStyle.className];const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId!==null&&layoutId!==void 0?layoutId:defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(Link,{href:uVJDdqVqp,children:/*#__PURE__*/_jsx(motion.a,{...restProps,className:`${cx(serializationHash,...sharedStyleClassNames,\"framer-3cbl9f\",className,classNames)} framer-u33slz`,\"data-framer-name\":\"Default\",layoutDependency:layoutDependency,layoutId:\"I8zBahkEa\",onHoverEnd:()=>setGestureState({isHovered:false}),onHoverStart:()=>setGestureState({isHovered:true}),onTap:()=>setGestureState({isPressed:false}),onTapCancel:()=>setGestureState({isPressed:false}),onTapStart:()=>setGestureState({isPressed:true}),ref:ref!==null&&ref!==void 0?ref:ref1,style:{backgroundColor:\"var(--token-66d0cf7b-9eb8-4245-b770-5d2d61dad950, rgba(245, 245, 255, 0.1))\",borderBottomLeftRadius:6,borderBottomRightRadius:6,borderTopLeftRadius:6,borderTopRightRadius:6,...style},variants:{\"I8zBahkEa-hover\":{backgroundColor:\"rgba(245, 245, 255, 0.15)\"}},...addPropertyOverrides({\"I8zBahkEa-hover\":{\"data-framer-name\":undefined}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-137gzas\",\"data-styles-preset\":\"PihfgTAR5\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255)))\"},children:\"Create Network\"})}),className:\"framer-1ay0ie7\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"EmQ2zDYll\",style:{\"--extracted-r6o4lv\":\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:jGReyLla_,verticalAlignment:\"top\",withExternalLayout:true})})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-I6vo7.framer-u33slz, .framer-I6vo7 .framer-u33slz { display: block; }\",\".framer-I6vo7.framer-3cbl9f { align-content: center; align-items: center; cursor: pointer; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: 32px; justify-content: center; overflow: visible; padding: 0px; position: relative; text-decoration: none; width: 154px; }\",\".framer-I6vo7 .framer-1ay0ie7 { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-I6vo7.framer-3cbl9f { gap: 0px; } .framer-I6vo7.framer-3cbl9f > * { margin: 0px; margin-left: calc(0px / 2); margin-right: calc(0px / 2); } .framer-I6vo7.framer-3cbl9f > :first-child { margin-left: 0px; } .framer-I6vo7.framer-3cbl9f > :last-child { margin-right: 0px; } }\",...sharedStyle.css];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 32\n * @framerIntrinsicWidth 154\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"Ko2FfyCw7\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerVariables {\"jGReyLla_\":\"title\",\"uVJDdqVqp\":\"link\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerQa82X1Z0U=withCSS(Component,css,\"framer-I6vo7\");export default FramerQa82X1Z0U;FramerQa82X1Z0U.displayName=\"Buttons / Menu Button\";FramerQa82X1Z0U.defaultProps={height:32,width:154};addPropertyControls(FramerQa82X1Z0U,{jGReyLla_:{defaultValue:\"Create Network\",displayTextArea:false,title:\"Title\",type:ControlType.String},uVJDdqVqp:{title:\"Link\",type:ControlType.Link}});addFonts(FramerQa82X1Z0U,[{explicitInter:true,fonts:[{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://app.framerstatic.com/Inter-Regular.cyrillic-ext-CFTLRB35.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://app.framerstatic.com/Inter-Regular.cyrillic-KKLZBALH.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+1F00-1FFF\",url:\"https://app.framerstatic.com/Inter-Regular.greek-ext-ULEBLIFV.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0370-03FF\",url:\"https://app.framerstatic.com/Inter-Regular.greek-IRHSNFQB.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://app.framerstatic.com/Inter-Regular.latin-ext-VZDUGU3Q.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://app.framerstatic.com/Inter-Regular.latin-JLQMKCHE.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://app.framerstatic.com/Inter-Regular.vietnamese-QK7VSWXK.woff2\",weight:\"400\"}]},...getFontsFromSharedStyle(sharedStyle.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerQa82X1Z0U\",\"slots\":[],\"annotations\":{\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"Ko2FfyCw7\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerVariables\":\"{\\\"jGReyLla_\\\":\\\"title\\\",\\\"uVJDdqVqp\\\":\\\"link\\\"}\",\"framerComponentViewportWidth\":\"true\",\"framerIntrinsicHeight\":\"32\",\"framerIntrinsicWidth\":\"154\",\"framerDisplayContentsDiv\":\"false\",\"framerContractVersion\":\"1\",\"framerImmutableVariables\":\"true\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Qa82X1Z0U.map", "// Generated by Framer (19eed98)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,getFonts,resolveLink,SVG,useActiveVariantCallback,useLocaleInfo,useRouter,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{tenantRows,withShowIfTenants}from\"https://framerusercontent.com/modules/qgf87fkgrM5c128YLt6p/9JRop4koVTef7NxQrmCd/TenantChecks.js\";import ButtonsButton from\"https://framerusercontent.com/modules/rOzDxL1zUjFsOG02SPrX/yFgBDRhw8AO3GFUTiPrS/AiU29R1w5.js\";import NavMobileNavRow from\"https://framerusercontent.com/modules/mC5fnVeUGeGRcr71iNCd/p7oF2IuBvN80qidrINnV/Nf5Ragpam.js\";import NavTenantRow from\"https://framerusercontent.com/modules/vq3G2TKGHXeA5HmR76xZ/5DRPbMDimVv53uN3ZJl7/PjC4CsJaK.js\";import ButtonsMenuButton from\"https://framerusercontent.com/modules/61ja2faQT27P3rWgfZpH/arxO3aSEfoma0f3sE8NU/Qa82X1Z0U.js\";const ButtonsButtonFonts=getFonts(ButtonsButton);const NavMobileNavRowFonts=getFonts(NavMobileNavRow);const NavTenantRowFonts=getFonts(NavTenantRow);const MotionDivTenantRows=tenantRows(motion.div);const ButtonsMenuButtonFonts=getFonts(ButtonsMenuButton);const MotionDivWithShowIfTenants=withShowIfTenants(motion.div);const cycleOrder=[\"gYbO3EfpD\",\"MwreIT4I3\"];const serializationHash=\"framer-3gI1P\";const variantClassNames={gYbO3EfpD:\"framer-v-dwc2lq\",MwreIT4I3:\"framer-v-1laoepl\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants===null||variants===void 0?void 0:variants.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transitions={default:{damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"}};const transformTemplate=(_,t)=>`translateY(-50%) ${t}`;const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value!==null&&value!==void 0?value:config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const humanReadableVariantMap={Default:\"gYbO3EfpD\",MSP:\"MwreIT4I3\"};const getProps=({height,id,tapClose,width,...props})=>{var _humanReadableVariantMap_props_variant,_ref;return{...props,lFvMJ0SS0:tapClose!==null&&tapClose!==void 0?tapClose:props.lFvMJ0SS0,variant:(_ref=(_humanReadableVariantMap_props_variant=humanReadableVariantMap[props.variant])!==null&&_humanReadableVariantMap_props_variant!==void 0?_humanReadableVariantMap_props_variant:props.variant)!==null&&_ref!==void 0?_ref:\"gYbO3EfpD\"};};const createLayoutDependency=(props,variants)=>variants.join(\"-\")+props.layoutDependency;const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale}=useLocaleInfo();const{style,className,layoutId,variant,lFvMJ0SS0,...restProps}=getProps(props);const{baseVariant,classNames,gestureVariant,setGestureState,setVariant,transition,variants}=useVariantState({cycleOrder,defaultVariant:\"gYbO3EfpD\",transitions,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onTap1ap77ch=activeVariantCallback(async(...args)=>{if(lFvMJ0SS0){const res=await lFvMJ0SS0(...args);if(res===false)return false;}});const ref1=React.useRef(null);const router=useRouter();const defaultLayoutId=React.useId();const sharedStyleClassNames=[];return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId!==null&&layoutId!==void 0?layoutId:defaultLayoutId,children:/*#__PURE__*/_jsx(motion.div,{initial:variant,animate:variants,onHoverStart:()=>setGestureState({isHovered:true}),onHoverEnd:()=>setGestureState({isHovered:false}),onTapStart:()=>setGestureState({isPressed:true}),onTap:()=>setGestureState({isPressed:false}),onTapCancel:()=>setGestureState({isPressed:false}),className:cx(\"framer-3gI1P\",...sharedStyleClassNames,classNames),style:{display:\"contents\"},children:/*#__PURE__*/_jsx(Transition,{value:transition,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,className:cx(\"framer-dwc2lq\",className),\"data-border\":true,\"data-framer-name\":\"Default\",layoutDependency:layoutDependency,layoutId:\"gYbO3EfpD\",ref:ref!==null&&ref!==void 0?ref:ref1,style:{\"--border-bottom-width\":\"0.5px\",\"--border-color\":\"var(--token-66d0cf7b-9eb8-4245-b770-5d2d61dad950, rgba(245, 245, 255, 0.1))\",\"--border-left-width\":\"0.5px\",\"--border-right-width\":\"0.5px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0.5px\",backdropFilter:\"blur(40px)\",backgroundColor:\"var(--token-66d0cf7b-9eb8-4245-b770-5d2d61dad950, rgba(245, 245, 255, 0.1))\",borderBottomLeftRadius:14,borderBottomRightRadius:14,borderTopLeftRadius:14,borderTopRightRadius:14,boxShadow:\"0px 0.6021873017743928px 0.6021873017743928px -1.25px rgba(0, 0, 0, 0.17997), 0px 2.288533303243457px 2.288533303243457px -2.5px rgba(0, 0, 0, 0.15889), 0px 10px 10px -3.75px rgba(0, 0, 0, 0.0625), inset 0px 0.5px 0px 0px rgba(255, 255, 255, 0.05)\",WebkitBackdropFilter:\"blur(40px)\",...style},...addPropertyOverrides({MwreIT4I3:{\"data-framer-name\":\"MSP\"}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-uukeo2\",\"data-framer-name\":\"Header\",layoutDependency:layoutDependency,layoutId:\"rhPWKvguK\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-1d47s3m\",\"data-framer-name\":\"Button\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"KLr1pJ2du\",onTap:onTap1ap77ch,style:{borderBottomLeftRadius:8,borderBottomRightRadius:8,borderTopLeftRadius:8,borderTopRightRadius:8},children:/*#__PURE__*/_jsx(SVG,{className:\"framer-1l7am1w\",\"data-framer-name\":\"x\",layout:\"position\",layoutDependency:layoutDependency,layoutId:\"ockPIWiBL\",opacity:1,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 24 24\"><g transform=\"translate(6 6)\" id=\"ss1152750083_1\"><path d=\"M 0 0 L 12 12\" fill=\"transparent\" stroke-width=\"1.5\" stroke=\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\" stroke-linecap=\"round\"></path><path d=\"M 12 0 L 0 12\" fill=\"transparent\" stroke-width=\"1.5\" stroke=\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\" stroke-linecap=\"round\"></path></g></svg>',svgContentId:1152750083,withExternalLayout:true})}),/*#__PURE__*/_jsx(SVG,{className:\"framer-ygc02\",\"data-framer-name\":\"graphic\",fill:\"black\",intrinsicHeight:20,intrinsicWidth:86,layoutDependency:layoutDependency,layoutId:\"r87AfCp47\",svg:'<svg width=\"86\" height=\"20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M0 8.516V17.2s1.298-.89 2.75-1.91v-4.774c0-2.347.707-3.104 2.62-4.526l2.624-1.95V0S4.198 2.816 2.62 3.99C.707 5.412 0 6.17 0 8.516ZM4 20v-8.684c0-2.347.707-3.104 2.62-4.526 1.578-1.174 5.374-3.99 5.374-3.99v7.577c0 .218.001.425.003.624.018 2.099.027 3.218-2.12 4.841C8.105 17.184 4 20 4 20ZM26.8 5.617h-3.4v9.825h-2V5.617H18V3.72h8.802L26.8 5.617Zm5.336 3.947h.017l1.925 5.878h1.866l2.989-8.57h-2l-1.931 6.16-1.944-6.16h-1.814l-1.965 6.144-1.915-6.143h-2.032l2.995 8.57h1.865l1.944-5.88Zm8-2.691h2.47v8.57h-1.964v-6.82h-1.134l.627-1.75Zm.259-2.642a1.231 1.231 0 0 1 2.461 0c0 .71-.511 1.205-1.221 1.205-.71 0-1.242-.495-1.242-1.205h.002Zm8.451 2.444c-1.403 0-2.277.66-2.642 1.337l-.002-1.14h-1.814v8.576h1.965v-4.97c0-1.336.776-2.114 2.015-2.114 1.173 0 1.7.771 1.7 1.944v5.134h1.966V10.06c0-1.998-1.107-3.385-3.188-3.385Zm11.207.198h1.814v8.207c0 2.262-1.454 3.979-4.096 3.979-2.576 0-3.748-1.651-3.93-2.988h1.966c.181.66.759 1.303 1.998 1.303 1.354 0 2.096-.825 2.096-2.03v-1.337c-.48.742-1.388 1.32-2.708 1.32-2.444 0-3.947-1.964-3.947-4.326 0-2.362 1.503-4.326 3.947-4.326 1.32 0 2.295.528 2.857 1.425l.003-1.227ZM57.59 8.408c-1.425 0-2.378 1.09-2.378 2.591 0 1.502.958 2.592 2.378 2.592 1.452 0 2.394-1.107 2.394-2.591 0-1.485-.94-2.592-2.393-2.592h-.001ZM70 15.441h1.814V6.89h-1.817v1.227c-.546-.897-1.552-1.426-2.89-1.426-2.525 0-3.96 2.033-3.96 4.478s1.437 4.476 3.962 4.476c1.336 0 2.345-.534 2.89-1.426v1.222Zm-.068-4.276c0 1.537-.908 2.742-2.411 2.742-1.486 0-2.411-1.206-2.411-2.742 0-1.535.907-2.74 2.411-2.74s2.411 1.204 2.411 2.74Zm3.448-6.52h1.964v2.228h1.602v1.569h-1.602v4.326c0 .676.282 1.007.958 1.007a2.42 2.42 0 0 0 .611-.083v1.701a4.31 4.31 0 0 1-1.023.099c-1.75 0-2.51-.907-2.51-2.526V4.644Zm8.474 9.311c-1.371 0-2.246-.874-2.395-2.228h6.524s.017-.298.017-.612c0-2.51-1.668-4.441-4.211-4.441s-4.26 1.98-4.26 4.475c0 2.559 1.684 4.49 4.276 4.49 1.997 0 3.516-1.204 4.028-2.905h-1.981c-.314.759-1.091 1.221-1.998 1.221Zm2.196-3.682h-4.557c.198-1.173 1.024-1.998 2.295-1.998 1.27 0 2.097.81 2.262 1.998Z\" fill=\"#fff\"/></svg>',transformTemplate:transformTemplate,withExternalLayout:true})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-197s55\",\"data-framer-name\":\"Button Group\",layoutDependency:layoutDependency,layoutId:\"VsccftyQv\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-15s9g7e-container\",layoutDependency:layoutDependency,layoutId:\"jG9b9PBua-container\",children:/*#__PURE__*/_jsx(ButtonsButton,{arrow:false,background:'var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95)) /* {\"name\":\"Primary\"} */',color:\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\",height:\"100%\",icon:false,icon1:\"Terraform\",id:\"jG9b9PBua\",layoutId:\"jG9b9PBua\",link:\"https://auth.twingate.com/signup\",newTab:false,style:{height:\"100%\",width:\"100%\"},title:\"Try Twingate\",variant:\"YD2gIXV2L\",width:\"100%\",...addPropertyOverrides({MwreIT4I3:{link:\"https://auth.twingate.com/msp-signup\"}},baseVariant,gestureVariant)})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1id1yzv-container\",layoutDependency:layoutDependency,layoutId:\"EuvBHJDpb-container\",children:/*#__PURE__*/_jsx(ButtonsButton,{arrow:false,background:'var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95)) /* {\"name\":\"Primary\"} */',color:\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\",height:\"100%\",icon:false,icon1:\"Terraform\",id:\"EuvBHJDpb\",layoutId:\"EuvBHJDpb\",link:resolveLink({webPageId:\"Sgazhdlve\"},router),newTab:false,style:{height:\"100%\",width:\"100%\"},title:\"Request a Demo\",variant:\"L82Oy0Uy8\",width:\"100%\",...addPropertyOverrides({MwreIT4I3:{link:resolveLink({webPageId:\"fM499XwEy\"},router)}},baseVariant,gestureVariant)})})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-uepd05\",\"data-framer-name\":\"Scroll List\",layoutDependency:layoutDependency,layoutId:\"L741wE384\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-189bpgp-container\",layoutDependency:layoutDependency,layoutId:\"gFSaVjyTX-container\",children:/*#__PURE__*/_jsx(NavMobileNavRow,{height:\"100%\",id:\"gFSaVjyTX\",layoutId:\"gFSaVjyTX\",style:{width:\"100%\"},title:\"Product\",tray:\"OT1LbjD25\",variant:\"xd0WuXaRi\",width:\"100%\"})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-wufo2r-container\",layoutDependency:layoutDependency,layoutId:\"CsHk8oNw0-container\",children:/*#__PURE__*/_jsx(NavMobileNavRow,{height:\"100%\",id:\"CsHk8oNw0\",layoutId:\"CsHk8oNw0\",style:{width:\"100%\"},title:\"Docs\",tray:\"kNdqCkpev\",variant:\"xd0WuXaRi\",width:\"100%\"})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-a3j9me-container\",layoutDependency:layoutDependency,layoutId:\"U8sY9JJX1-container\",children:/*#__PURE__*/_jsx(NavMobileNavRow,{height:\"100%\",id:\"U8sY9JJX1\",layoutId:\"U8sY9JJX1\",style:{width:\"100%\"},title:\"Resources\",tray:\"hSGH_QbdR\",variant:\"xd0WuXaRi\",width:\"100%\"})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-199x6u9-container\",layoutDependency:layoutDependency,layoutId:\"U2Yx5n14P-container\",children:/*#__PURE__*/_jsx(NavMobileNavRow,{height:\"100%\",id:\"U2Yx5n14P\",layoutId:\"U2Yx5n14P\",link:resolveLink({webPageId:\"fM499XwEy\"},router),style:{width:\"100%\"},title:\"Partners\",tray:\"CgU1mwjv4\",variant:\"xd0WuXaRi\",width:\"100%\"})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1tyr82n-container\",layoutDependency:layoutDependency,layoutId:\"ctidGw8_x-container\",children:/*#__PURE__*/_jsx(NavMobileNavRow,{height:\"100%\",id:\"ctidGw8_x\",layoutId:\"ctidGw8_x\",link:resolveLink({webPageId:\"hEjPykOVp\"},router),style:{width:\"100%\"},title:\"Customers\",tray:\"OT1LbjD25\",variant:\"S1HgDZL8w\",width:\"100%\"})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1bkm3rs-container\",layoutDependency:layoutDependency,layoutId:\"gUFMXpguo-container\",children:/*#__PURE__*/_jsx(NavMobileNavRow,{height:\"100%\",id:\"gUFMXpguo\",layoutId:\"gUFMXpguo\",link:resolveLink({webPageId:\"IBZQysKMB\"},router),style:{width:\"100%\"},title:\"Pricing\",tray:\"OT1LbjD25\",variant:\"S1HgDZL8w\",width:\"100%\"})})]}),/*#__PURE__*/_jsx(MotionDivWithShowIfTenants,{className:\"framer-vb14vd\",\"data-framer-name\":\"Footer\",layoutDependency:layoutDependency,layoutId:\"SRYtWU19b\",children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-lcn4pa\",\"data-border\":true,\"data-framer-name\":\"Tenant Popover\",layoutDependency:layoutDependency,layoutId:\"HybTm4a62\",style:{\"--border-bottom-width\":\"0.5px\",\"--border-color\":\"var(--token-66d0cf7b-9eb8-4245-b770-5d2d61dad950, rgba(245, 245, 255, 0.1))\",\"--border-left-width\":\"0.5px\",\"--border-right-width\":\"0.5px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0.5px\",backdropFilter:\"blur(40px)\",backgroundColor:\"var(--token-66d0cf7b-9eb8-4245-b770-5d2d61dad950, rgba(245, 245, 255, 0.1))\",borderBottomLeftRadius:10,borderBottomRightRadius:10,borderTopLeftRadius:10,borderTopRightRadius:10,boxShadow:\"0px 0.6021873017743928px 0.6021873017743928px -1.25px rgba(0, 0, 0, 0.17997), 0px 2.288533303243457px 2.288533303243457px -2.5px rgba(0, 0, 0, 0.15889), 0px 10px 10px -3.75px rgba(0, 0, 0, 0.0625), inset 0px 0.5px 0px 0px rgba(255, 255, 255, 0.05)\",WebkitBackdropFilter:\"blur(40px)\"},children:[/*#__PURE__*/_jsxs(MotionDivTenantRows,{className:\"framer-izvvad\",layoutDependency:layoutDependency,layoutId:\"Rm1UhLUdH\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-mohiny-container\",layoutDependency:layoutDependency,layoutId:\"VM1FYFr7o-container\",children:/*#__PURE__*/_jsx(NavTenantRow,{height:\"100%\",id:\"VM1FYFr7o\",layoutId:\"VM1FYFr7o\",style:{width:\"100%\"},tenantFirstLetter:\"Z\",tenantName:\"TenantName\",tenantSlug:\"<tenantSlugCouldBeSuperDuperLong>.twingate.com\",width:\"100%\"})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-wojkhx-container\",layoutDependency:layoutDependency,layoutId:\"Q2_bcvyTa-container\",children:/*#__PURE__*/_jsx(NavTenantRow,{height:\"100%\",id:\"Q2_bcvyTa\",layoutId:\"Q2_bcvyTa\",style:{width:\"100%\"},tenantFirstLetter:\"Z\",tenantName:\"TenantName\",tenantSlug:\"<tenantSlugCouldBeSuperDuperLong>.twingate.com\",width:\"100%\"})})]}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1fycsre\",\"data-framer-name\":\"Divider\",layoutDependency:layoutDependency,layoutId:\"D7aJUIk95\",children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-atxlij\",\"data-border\":true,\"data-framer-name\":\"Line\",layoutDependency:layoutDependency,layoutId:\"gddh31R0o\",style:{\"--border-bottom-width\":\"0px\",\"--border-color\":\"rgba(255, 255, 255, 0.1)\",\"--border-left-width\":\"0px\",\"--border-right-width\":\"0px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0.5px\"}})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1ahrq0a\",\"data-framer-name\":\"Button Group\",layoutDependency:layoutDependency,layoutId:\"CvAFMahOA\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-5x90m1-container\",layoutDependency:layoutDependency,layoutId:\"ZcSrWH6Lr-container\",children:/*#__PURE__*/_jsx(ButtonsMenuButton,{height:\"100%\",id:\"ZcSrWH6Lr\",layoutId:\"ZcSrWH6Lr\",link:\"https://auth.twingate.com/signup\",style:{width:\"100%\"},title:\"Create Network\",width:\"100%\"})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-ajvnmd-container\",layoutDependency:layoutDependency,layoutId:\"oRmZeQ5hg-container\",children:/*#__PURE__*/_jsx(ButtonsMenuButton,{height:\"100%\",id:\"oRmZeQ5hg\",layoutId:\"oRmZeQ5hg\",link:\"https://auth.twingate.com\",style:{width:\"100%\"},title:\"Find Network\",width:\"100%\"})})]})]})})]})})})});});const css=['.framer-3gI1P [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; pointer-events: none; }',\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-3gI1P .framer-vw4i4q { display: block; }\",\".framer-3gI1P .framer-dwc2lq { align-content: flex-start; align-items: flex-start; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; padding: 0px 0px 12px 0px; position: relative; width: 400px; }\",\".framer-3gI1P .framer-uukeo2 { flex: none; height: 56px; overflow: hidden; position: relative; width: 100%; z-index: 1; }\",\".framer-3gI1P .framer-1d47s3m { cursor: pointer; flex: none; height: 34px; overflow: hidden; position: absolute; right: 8px; top: calc(50.00000000000002% - 34px / 2); width: 37px; will-change: var(--framer-will-change-override, transform); }\",\".framer-3gI1P .framer-1l7am1w { flex: none; height: 24px; left: calc(50.00000000000002% - 24px / 2); position: absolute; top: calc(50.00000000000002% - 24px / 2); width: 24px; }\",\".framer-3gI1P .framer-ygc02 { aspect-ratio: 4.3 / 1; flex: none; height: var(--framer-aspect-ratio-supported, 20px); left: 18px; position: absolute; top: 50%; width: 86px; }\",\".framer-3gI1P .framer-197s55 { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 8px; height: min-content; justify-content: flex-start; overflow: hidden; padding: 8px 16px 16px 16px; position: relative; width: 100%; }\",\".framer-3gI1P .framer-15s9g7e-container, .framer-3gI1P .framer-1id1yzv-container { flex: 1 0 0px; height: 34px; position: relative; width: 1px; }\",\".framer-3gI1P .framer-uepd05 { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; max-height: 500px; overflow: auto; padding: 0px 0px 0px 0px; position: relative; width: 100%; }\",\".framer-3gI1P .framer-189bpgp-container, .framer-3gI1P .framer-wufo2r-container, .framer-3gI1P .framer-a3j9me-container, .framer-3gI1P .framer-199x6u9-container, .framer-3gI1P .framer-1tyr82n-container, .framer-3gI1P .framer-1bkm3rs-container, .framer-3gI1P .framer-mohiny-container, .framer-3gI1P .framer-wojkhx-container { flex: none; height: auto; position: relative; width: 100%; }\",\".framer-3gI1P .framer-vb14vd { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 16px; height: min-content; justify-content: flex-start; overflow: visible; padding: 12px 12px 0px 12px; position: relative; width: 100%; }\",\".framer-3gI1P .framer-lcn4pa { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; padding: 6px 6px 6px 6px; position: relative; width: 100%; z-index: 1; }\",\".framer-3gI1P .framer-izvvad { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px 0px 0px 0px; position: relative; width: 100%; }\",\".framer-3gI1P .framer-1fycsre { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: 12px; justify-content: center; overflow: visible; padding: 6px 6px 6px 6px; position: relative; width: 100%; }\",\".framer-3gI1P .framer-atxlij { flex: none; height: 1px; overflow: visible; position: relative; width: 100%; }\",\".framer-3gI1P .framer-1ahrq0a { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 8px; height: min-content; justify-content: flex-start; overflow: hidden; padding: 6px 6px 6px 6px; position: relative; width: 100%; }\",\".framer-3gI1P .framer-5x90m1-container, .framer-3gI1P .framer-ajvnmd-container { flex: 1 0 0px; height: auto; position: relative; width: 1px; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-3gI1P .framer-dwc2lq, .framer-3gI1P .framer-197s55, .framer-3gI1P .framer-uepd05, .framer-3gI1P .framer-vb14vd, .framer-3gI1P .framer-lcn4pa, .framer-3gI1P .framer-izvvad, .framer-3gI1P .framer-1fycsre, .framer-3gI1P .framer-1ahrq0a { gap: 0px; } .framer-3gI1P .framer-dwc2lq > *, .framer-3gI1P .framer-uepd05 > *, .framer-3gI1P .framer-lcn4pa > *, .framer-3gI1P .framer-izvvad > *, .framer-3gI1P .framer-1fycsre > * { margin: 0px; margin-bottom: calc(0px / 2); margin-top: calc(0px / 2); } .framer-3gI1P .framer-dwc2lq > :first-child, .framer-3gI1P .framer-uepd05 > :first-child, .framer-3gI1P .framer-vb14vd > :first-child, .framer-3gI1P .framer-lcn4pa > :first-child, .framer-3gI1P .framer-izvvad > :first-child, .framer-3gI1P .framer-1fycsre > :first-child { margin-top: 0px; } .framer-3gI1P .framer-dwc2lq > :last-child, .framer-3gI1P .framer-uepd05 > :last-child, .framer-3gI1P .framer-vb14vd > :last-child, .framer-3gI1P .framer-lcn4pa > :last-child, .framer-3gI1P .framer-izvvad > :last-child, .framer-3gI1P .framer-1fycsre > :last-child { margin-bottom: 0px; } .framer-3gI1P .framer-197s55 > *, .framer-3gI1P .framer-1ahrq0a > * { margin: 0px; margin-left: calc(8px / 2); margin-right: calc(8px / 2); } .framer-3gI1P .framer-197s55 > :first-child, .framer-3gI1P .framer-1ahrq0a > :first-child { margin-left: 0px; } .framer-3gI1P .framer-197s55 > :last-child, .framer-3gI1P .framer-1ahrq0a > :last-child { margin-right: 0px; } .framer-3gI1P .framer-vb14vd > * { margin: 0px; margin-bottom: calc(16px / 2); margin-top: calc(16px / 2); } }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 582\n * @framerIntrinsicWidth 400\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]},\"MwreIT4I3\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerVariables {\"lFvMJ0SS0\":\"tapClose\"}\n * @framerImmutableVariables false\n */const FramerjtDh_M46J=withCSS(Component,css,\"framer-3gI1P\");export default FramerjtDh_M46J;FramerjtDh_M46J.displayName=\"Nav / Mobile Nav\";FramerjtDh_M46J.defaultProps={height:582,width:400};addPropertyControls(FramerjtDh_M46J,{variant:{options:[\"gYbO3EfpD\",\"MwreIT4I3\"],optionTitles:[\"Default\",\"MSP\"],title:\"Variant\",type:ControlType.Enum},lFvMJ0SS0:{title:\"Tap Close\",type:ControlType.EventHandler}});addFonts(FramerjtDh_M46J,[...ButtonsButtonFonts,...NavMobileNavRowFonts,...NavTenantRowFonts,...ButtonsMenuButtonFonts]);\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerjtDh_M46J\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"582\",\"framerIntrinsicWidth\":\"400\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"MwreIT4I3\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerVariables\":\"{\\\"lFvMJ0SS0\\\":\\\"tapClose\\\"}\",\"framerImmutableVariables\":\"false\",\"framerContractVersion\":\"1\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}", "// Generated by Framer (7cbec57)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,getFontsFromSharedStyle,Link,RichText,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import*as sharedStyle from\"https://framerusercontent.com/modules/l8zqelXHCgG4xqGiBZjD/MoSFg6TCq18gonvBRGK7/M6hbwtZyh.js\";import*as sharedStyle1 from\"https://framerusercontent.com/modules/udB93xVEVWDRpZADqEsc/tBcUI4ZQoOghAwZB22C8/PihfgTAR5.js\";const enabledGestures={boonRzPUi:{hover:true},VgtzLAQ7z:{hover:true}};const cycleOrder=[\"VgtzLAQ7z\",\"boonRzPUi\",\"sPMtdlQYr\",\"rZnwH3W94\"];const serializationHash=\"framer-bjjCN\";const variantClassNames={boonRzPUi:\"framer-v-1lmxwra\",rZnwH3W94:\"framer-v-fillel\",sPMtdlQYr:\"framer-v-26vvne\",VgtzLAQ7z:\"framer-v-1lbuleq\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants===null||variants===void 0?void 0:variants.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value!==null&&value!==void 0?value:config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion(React.Fragment);const humanReadableVariantMap={\"No Link\":\"boonRzPUi\",\"Small link\":\"sPMtdlQYr\",Active:\"rZnwH3W94\",Default:\"VgtzLAQ7z\"};const getProps=({height,hover,id,link,tap,textColor,title,width,...props})=>{var _ref,_ref1,_humanReadableVariantMap_props_variant,_ref2;return{...props,aV_o9aCOb:hover!==null&&hover!==void 0?hover:props.aV_o9aCOb,FKwB4UL9z:(_ref=textColor!==null&&textColor!==void 0?textColor:props.FKwB4UL9z)!==null&&_ref!==void 0?_ref:\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\",QsIcUGujF:(_ref1=title!==null&&title!==void 0?title:props.QsIcUGujF)!==null&&_ref1!==void 0?_ref1:\"Product\",variant:(_ref2=(_humanReadableVariantMap_props_variant=humanReadableVariantMap[props.variant])!==null&&_humanReadableVariantMap_props_variant!==void 0?_humanReadableVariantMap_props_variant:props.variant)!==null&&_ref2!==void 0?_ref2:\"VgtzLAQ7z\",wFwmGsvMB:tap!==null&&tap!==void 0?tap:props.wFwmGsvMB,WjB0saJsU:link!==null&&link!==void 0?link:props.WjB0saJsU};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,QsIcUGujF,WjB0saJsU,FKwB4UL9z,wFwmGsvMB,aV_o9aCOb,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"VgtzLAQ7z\",enabledGestures,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onTapss2oz4=activeVariantCallback(async(...args)=>{setGestureState({isPressed:false});if(wFwmGsvMB){const res=await wFwmGsvMB(...args);if(res===false)return false;}});const onMouseEnterzjyp1h=activeVariantCallback(async(...args)=>{setGestureState({isHovered:true});if(aV_o9aCOb){const res=await aV_o9aCOb(...args);if(res===false)return false;}});const ref1=React.useRef(null);const isDisplayed=()=>{if(gestureVariant===\"boonRzPUi-hover\")return true;return false;};const defaultLayoutId=React.useId();const sharedStyleClassNames=[sharedStyle.className,sharedStyle1.className];const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId!==null&&layoutId!==void 0?layoutId:defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(Link,{href:WjB0saJsU,openInNewTab:false,smoothScroll:true,...addPropertyOverrides({\"boonRzPUi-hover\":{href:undefined},boonRzPUi:{href:undefined}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsxs(motion.a,{...restProps,...gestureHandlers,className:`${cx(serializationHash,...sharedStyleClassNames,\"framer-1lbuleq\",className,classNames)} framer-2eeat`,\"data-framer-name\":\"Default\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"VgtzLAQ7z\",onMouseEnter:onMouseEnterzjyp1h,onTap:onTapss2oz4,ref:ref!==null&&ref!==void 0?ref:ref1,style:{backgroundColor:\"rgba(0, 0, 0, 0)\",borderBottomLeftRadius:8,borderBottomRightRadius:8,borderTopLeftRadius:8,borderTopRightRadius:8,...style},variants:{\"boonRzPUi-hover\":{backgroundColor:\"rgba(128, 128, 128, 0.1)\"},\"VgtzLAQ7z-hover\":{backgroundColor:\"rgba(128, 128, 128, 0.1)\"},rZnwH3W94:{backgroundColor:\"rgba(128, 128, 128, 0.1)\"}},...addPropertyOverrides({\"boonRzPUi-hover\":{\"data-framer-name\":undefined},\"VgtzLAQ7z-hover\":{\"data-framer-name\":undefined},boonRzPUi:{\"data-framer-name\":\"No Link\"},rZnwH3W94:{\"data-framer-name\":\"Active\"},sPMtdlQYr:{\"data-framer-name\":\"Small link\"}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-87abjg\",\"data-styles-preset\":\"M6hbwtZyh\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--variable-reference-FKwB4UL9z-ZVYe2Nhfy))\"},children:\"Product\"})}),className:\"framer-1uh7at4\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"m7_eJxWD0\",style:{\"--extracted-r6o4lv\":\"var(--variable-reference-FKwB4UL9z-ZVYe2Nhfy)\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\",\"--variable-reference-FKwB4UL9z-ZVYe2Nhfy\":FKwB4UL9z},text:QsIcUGujF,verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({sPMtdlQYr:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-137gzas\",\"data-styles-preset\":\"PihfgTAR5\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--variable-reference-FKwB4UL9z-ZVYe2Nhfy))\"},children:\"Product\"})})}},baseVariant,gestureVariant)}),isDisplayed()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-gfu2se\",\"data-framer-name\":\"Left Path Bumpers\",layoutDependency:layoutDependency,layoutId:\"e8_66DYUy\",style:{backgroundColor:\"rgb(255, 255, 255)\",opacity:0,rotate:20}}),isDisplayed()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1drluvq\",\"data-framer-name\":\"Right Path Bumpers\",layoutDependency:layoutDependency,layoutId:\"ywZoPn1Eb\",style:{backgroundColor:\"rgb(255, 255, 255)\",opacity:0,rotate:-20}})]})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-bjjCN.framer-2eeat, .framer-bjjCN .framer-2eeat { display: block; }\",\".framer-bjjCN.framer-1lbuleq { align-content: center; align-items: center; cursor: pointer; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 10px; height: 34px; justify-content: center; overflow: visible; padding: 0px 10px 0px 10px; position: relative; text-decoration: none; width: min-content; }\",\".framer-bjjCN .framer-1uh7at4 { flex: none; height: auto; pointer-events: none; position: relative; white-space: pre; width: auto; }\",\".framer-bjjCN .framer-gfu2se { bottom: -6px; flex: none; left: -12px; overflow: hidden; position: absolute; top: -2px; width: 18px; z-index: 1; }\",\".framer-bjjCN .framer-1drluvq { bottom: -6px; flex: none; overflow: hidden; position: absolute; right: -12px; top: -2px; width: 18px; z-index: 1; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-bjjCN.framer-1lbuleq { gap: 0px; } .framer-bjjCN.framer-1lbuleq > * { margin: 0px; margin-bottom: calc(10px / 2); margin-top: calc(10px / 2); } .framer-bjjCN.framer-1lbuleq > :first-child { margin-top: 0px; } .framer-bjjCN.framer-1lbuleq > :last-child { margin-bottom: 0px; } }\",\".framer-bjjCN.framer-v-1lmxwra.framer-1lbuleq { cursor: default; }\",\".framer-bjjCN.framer-v-26vvne.framer-1lbuleq { padding: 0px 8px 0px 8px; }\",...sharedStyle.css,...sharedStyle1.css];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 34\n * @framerIntrinsicWidth 75\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"auto\",\"fixed\"]},\"boonRzPUi\":{\"layout\":[\"auto\",\"fixed\"]},\"sPMtdlQYr\":{\"layout\":[\"auto\",\"fixed\"]},\"rZnwH3W94\":{\"layout\":[\"auto\",\"fixed\"]},\"YJgdK7OHV\":{\"layout\":[\"auto\",\"fixed\"]},\"sS4DdzTy_\":{\"layout\":[\"auto\",\"fixed\"]}}}\n * @framerVariables {\"QsIcUGujF\":\"title\",\"WjB0saJsU\":\"link\",\"FKwB4UL9z\":\"textColor\",\"wFwmGsvMB\":\"tap\",\"aV_o9aCOb\":\"hover\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerZVYe2Nhfy=withCSS(Component,css,\"framer-bjjCN\");export default FramerZVYe2Nhfy;FramerZVYe2Nhfy.displayName=\"Buttons / Nav Button\";FramerZVYe2Nhfy.defaultProps={height:34,width:75};addPropertyControls(FramerZVYe2Nhfy,{variant:{options:[\"VgtzLAQ7z\",\"boonRzPUi\",\"sPMtdlQYr\",\"rZnwH3W94\"],optionTitles:[\"Default\",\"No Link\",\"Small link\",\"Active\"],title:\"Variant\",type:ControlType.Enum},QsIcUGujF:{defaultValue:\"Product\",displayTextArea:false,title:\"Title\",type:ControlType.String},WjB0saJsU:{title:\"Link\",type:ControlType.Link},FKwB4UL9z:{defaultValue:'var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255)) /* {\"name\":\"White\"} */',title:\"Text Color\",type:ControlType.Color},wFwmGsvMB:{title:\"Tap\",type:ControlType.EventHandler},aV_o9aCOb:{title:\"Hover\",type:ControlType.EventHandler}});addFonts(FramerZVYe2Nhfy,[{explicitInter:true,fonts:[{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/5vvr9Vy74if2I6bQ bJvbw7SY1pQ.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/EOr0mi4hNtlgWNn9if640EZzXCo.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/Y9k9QrlZAqio88Klkmbd8VoMQc.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/OYrD2tBIBPvoJXiIHnLoOXnY9M.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/JeYwfuaPfZHQhEG8U5gtPDZ7WQ.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/vQyevYAyHtARFwPqUzQGpnDs.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/b6Y37FthZeALduNqHicBT6FutY.woff2\",weight:\"400\"}]},...getFontsFromSharedStyle(sharedStyle.fonts),...getFontsFromSharedStyle(sharedStyle1.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerZVYe2Nhfy\",\"slots\":[],\"annotations\":{\"framerComponentViewportWidth\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerIntrinsicWidth\":\"75\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"boonRzPUi\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"sPMtdlQYr\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"rZnwH3W94\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"YJgdK7OHV\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"sS4DdzTy_\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]}}}\",\"framerImmutableVariables\":\"true\",\"framerIntrinsicHeight\":\"34\",\"framerVariables\":\"{\\\"QsIcUGujF\\\":\\\"title\\\",\\\"WjB0saJsU\\\":\\\"link\\\",\\\"FKwB4UL9z\\\":\\\"textColor\\\",\\\"wFwmGsvMB\\\":\\\"tap\\\",\\\"aV_o9aCOb\\\":\\\"hover\\\"}\",\"framerContractVersion\":\"1\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ZVYe2Nhfy.map", "// Generated by Framer (508aa67)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,getFontsFromSharedStyle,getPropertyControls,Link,RichText,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{withBGColorCycle}from\"https://framerusercontent.com/modules/mPRjUI8M0iAJUNJozv5i/WDE0fIExM5yIo9hALN4E/Color_Cycle.js\";import Arrow from\"https://framerusercontent.com/modules/qADlgksKhW1Xe8hVExge/b1P1z68oIDnVrezeU2Ds/Arrow.js\";import Logos from\"https://framerusercontent.com/modules/9WTbYjGuJAwW0o4hDi0j/1qiorIROk1jAClbRf9rb/Logos.js\";import*as sharedStyle from\"https://framerusercontent.com/modules/P4MbdJfCLPFYjfyPPIoS/RWvQtLNA1WapezEVvM0b/pQlNzrell.js\";import GraphicsButtonArrow from\"https://framerusercontent.com/modules/xPjbsMR6WyZIrRxgwZO7/QXnq5g7qwTofC1QjjW61/pRemd4fMu.js\";const MotionDivWithBGColorCycle=withBGColorCycle(motion.div);const LogosFonts=getFonts(Logos);const GraphicsButtonArrowFonts=getFonts(GraphicsButtonArrow);const ArrowFonts=getFonts(Arrow);const LogosControls=getPropertyControls(Logos);const GraphicsButtonArrowControls=getPropertyControls(GraphicsButtonArrow);const enabledGestures={koRnaCqak:{hover:true},L82Oy0Uy8:{hover:true},LE7kF5pDg:{hover:true},lege8jhG5:{hover:true},QOjFoD6FQ:{hover:true},uqgKD12hN:{hover:true},v93HMl6yN:{hover:true},YD2gIXV2L:{hover:true}};const cycleOrder=[\"YD2gIXV2L\",\"L82Oy0Uy8\",\"QOjFoD6FQ\",\"LE7kF5pDg\",\"uqgKD12hN\",\"v93HMl6yN\",\"lege8jhG5\",\"koRnaCqak\"];const serializationHash=\"framer-Fi6F4\";const variantClassNames={koRnaCqak:\"framer-v-15o8qgh\",L82Oy0Uy8:\"framer-v-1prk8ui\",LE7kF5pDg:\"framer-v-17lhh2h\",lege8jhG5:\"framer-v-1wx10ly\",QOjFoD6FQ:\"framer-v-1592run\",uqgKD12hN:\"framer-v-xcrb0\",v93HMl6yN:\"framer-v-cnhq7z\",YD2gIXV2L:\"framer-v-fke84z\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants===null||variants===void 0?void 0:variants.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={delay:0,duration:.15,ease:[0,0,1,1],type:\"tween\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value!==null&&value!==void 0?value:config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion(React.Fragment);const humanReadableEnumMap={\"Black \u2013\\xa0Arrow\":\"m9F2Vlw0F\",\"White - Arrow back\":\"uD5j7l2Ki\",\"White \u2013\\xa0Arrow\":\"EjrLISIop\",\"Yellow - Arrow\":\"uhSfrryf7\",Back:\"cpSLXUwzV\",Black:\"BNbfbktEW\",White:\"Ez6AL2vTh\",Yellow:\"RvL4_kC86\"};const humanReadableVariantMap={\"Color Cycle\":\"uqgKD12hN\",\"Transparent \u2013\\xa0Light\":\"v93HMl6yN\",Color:\"LE7kF5pDg\",External:\"koRnaCqak\",NoAnimation:\"lege8jhG5\",Primary:\"YD2gIXV2L\",Secondary:\"L82Oy0Uy8\",Transparent:\"QOjFoD6FQ\"};const getProps=({arrow,arrowVariant,background,color,height,hoverArrowVariant,icon,icon1,id,link,newTab,tap,title,width,...props})=>{var _humanReadableEnumMap_arrowVariant,_ref,_ref1,_humanReadableEnumMap_hoverArrowVariant,_ref2,_ref3,_ref4,_ref5,_ref6,_humanReadableVariantMap_props_variant,_ref7,_ref8,_ref9;return{...props,CiwGQDcAN:(_ref1=(_ref=(_humanReadableEnumMap_arrowVariant=humanReadableEnumMap[arrowVariant])!==null&&_humanReadableEnumMap_arrowVariant!==void 0?_humanReadableEnumMap_arrowVariant:arrowVariant)!==null&&_ref!==void 0?_ref:props.CiwGQDcAN)!==null&&_ref1!==void 0?_ref1:\"BNbfbktEW\",csPpyV4tk:(_ref3=(_ref2=(_humanReadableEnumMap_hoverArrowVariant=humanReadableEnumMap[hoverArrowVariant])!==null&&_humanReadableEnumMap_hoverArrowVariant!==void 0?_humanReadableEnumMap_hoverArrowVariant:hoverArrowVariant)!==null&&_ref2!==void 0?_ref2:props.csPpyV4tk)!==null&&_ref3!==void 0?_ref3:\"m9F2Vlw0F\",DZNn6_WWp:link!==null&&link!==void 0?link:props.DZNn6_WWp,FdDV8gLxh:(_ref4=background!==null&&background!==void 0?background:props.FdDV8gLxh)!==null&&_ref4!==void 0?_ref4:\"var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95))\",gW2IdKNHn:(_ref5=title!==null&&title!==void 0?title:props.gW2IdKNHn)!==null&&_ref5!==void 0?_ref5:\"Try Twingate for Free\",OA2ahGR0N:icon!==null&&icon!==void 0?icon:props.OA2ahGR0N,uirRaCarc:newTab!==null&&newTab!==void 0?newTab:props.uirRaCarc,Urz2Ffy21:(_ref6=icon1!==null&&icon1!==void 0?icon1:props.Urz2Ffy21)!==null&&_ref6!==void 0?_ref6:\"Terraform\",variant:(_ref7=(_humanReadableVariantMap_props_variant=humanReadableVariantMap[props.variant])!==null&&_humanReadableVariantMap_props_variant!==void 0?_humanReadableVariantMap_props_variant:props.variant)!==null&&_ref7!==void 0?_ref7:\"YD2gIXV2L\",WJoF2TywT:(_ref8=color!==null&&color!==void 0?color:props.WJoF2TywT)!==null&&_ref8!==void 0?_ref8:\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\",x_8VxILUS:tap!==null&&tap!==void 0?tap:props.x_8VxILUS,xjfxHTVGH:(_ref9=arrow!==null&&arrow!==void 0?arrow:props.xjfxHTVGH)!==null&&_ref9!==void 0?_ref9:true};};const createLayoutDependency=(props,variants)=>variants.join(\"-\")+props.layoutDependency;const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,gW2IdKNHn,OA2ahGR0N,Urz2Ffy21,xjfxHTVGH,FdDV8gLxh,DZNn6_WWp,uirRaCarc,x_8VxILUS,WJoF2TywT,CiwGQDcAN,csPpyV4tk,...restProps}=getProps(props);const{baseVariant,classNames,gestureVariant,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"YD2gIXV2L\",enabledGestures,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onTapbbtkj9=activeVariantCallback(async(...args)=>{setGestureState({isPressed:false});if(x_8VxILUS){const res=await x_8VxILUS(...args);if(res===false)return false;}});const ref1=React.useRef(null);const isDisplayed=()=>{if(gestureVariant===\"uqgKD12hN-hover\")return true;if(baseVariant===\"uqgKD12hN\")return true;return false;};const isDisplayed1=value=>{if(gestureVariant===\"lege8jhG5-hover\")return true;if(gestureVariant===\"koRnaCqak-hover\")return false;if(baseVariant===\"lege8jhG5\")return true;if(baseVariant===\"koRnaCqak\")return false;return value;};const isDisplayed2=()=>{if(gestureVariant===\"koRnaCqak-hover\")return true;if(baseVariant===\"koRnaCqak\")return true;return false;};const defaultLayoutId=React.useId();const sharedStyleClassNames=[sharedStyle.className];const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId!==null&&layoutId!==void 0?layoutId:defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(Link,{href:DZNn6_WWp,openInNewTab:uirRaCarc,...addPropertyOverrides({uqgKD12hN:{smoothScroll:true}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsxs(motion.a,{...restProps,className:`${cx(serializationHash,...sharedStyleClassNames,\"framer-fke84z\",className,classNames)} framer-k0jvwj`,\"data-framer-name\":\"Primary\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"YD2gIXV2L\",onHoverEnd:()=>setGestureState({isHovered:false}),onHoverStart:()=>setGestureState({isHovered:true}),onTap:onTapbbtkj9,onTapCancel:()=>setGestureState({isPressed:false}),onTapStart:()=>setGestureState({isPressed:true}),ref:ref!==null&&ref!==void 0?ref:ref1,style:{\"--border-bottom-width\":\"0px\",\"--border-color\":\"rgba(0, 0, 0, 0)\",\"--border-left-width\":\"0px\",\"--border-right-width\":\"0px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0px\",backgroundColor:\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\",borderBottomLeftRadius:50,borderBottomRightRadius:50,borderTopLeftRadius:50,borderTopRightRadius:50,boxShadow:\"none\",opacity:1,...style},variants:{\"koRnaCqak-hover\":{backgroundColor:\"rgba(255, 255, 255, 0.7)\"},\"L82Oy0Uy8-hover\":{\"--border-bottom-width\":\"0.5px\",backgroundColor:\"rgba(245, 245, 255, 0.15)\"},\"lege8jhG5-hover\":{backgroundColor:\"rgba(255, 255, 255, 0.7)\"},\"QOjFoD6FQ-hover\":{backgroundColor:\"rgba(0, 0, 0, 0)\",borderBottomLeftRadius:50,borderBottomRightRadius:50,borderTopLeftRadius:50,borderTopRightRadius:50,opacity:.7},\"uqgKD12hN-hover\":{backgroundColor:\"rgba(0, 0, 0, 0)\"},\"v93HMl6yN-hover\":{backgroundColor:\"rgba(0, 0, 0, 0)\",borderBottomLeftRadius:0,borderBottomRightRadius:0,borderTopLeftRadius:0,borderTopRightRadius:0},\"YD2gIXV2L-hover\":{backgroundColor:\"rgba(255, 255, 255, 0.7)\"},L82Oy0Uy8:{\"--border-bottom-width\":\"0px\",\"--border-color\":\"var(--token-2b080329-29ba-481c-ac92-832881069b36, rgba(255, 255, 255, 0.05))\",\"--border-left-width\":\"0.5px\",\"--border-right-width\":\"0.5px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0.5px\",backgroundColor:\"var(--token-66d0cf7b-9eb8-4245-b770-5d2d61dad950, rgba(255, 255, 255, 0.1))\",boxShadow:'inset 0px 2.5px 0px -2px var(--token-2b080329-29ba-481c-ac92-832881069b36, rgba(255, 255, 255, 0.1)) /* {\"name\":\"Glass \u2013\\xa0Border\"} */'},LE7kF5pDg:{backgroundColor:FdDV8gLxh},lege8jhG5:{backgroundColor:\"rgb(255, 255, 255)\"},QOjFoD6FQ:{backgroundColor:\"rgba(0, 0, 0, 0)\",borderBottomLeftRadius:0,borderBottomRightRadius:0,borderTopLeftRadius:0,borderTopRightRadius:0},uqgKD12hN:{backgroundColor:\"rgba(0, 0, 0, 0)\"},v93HMl6yN:{backgroundColor:\"rgba(0, 0, 0, 0)\",borderBottomLeftRadius:0,borderBottomRightRadius:0,borderTopLeftRadius:0,borderTopRightRadius:0}},...addPropertyOverrides({\"koRnaCqak-hover\":{\"data-framer-name\":undefined},\"L82Oy0Uy8-hover\":{\"data-framer-name\":undefined},\"LE7kF5pDg-hover\":{\"data-framer-name\":undefined},\"lege8jhG5-hover\":{\"data-framer-name\":undefined},\"QOjFoD6FQ-hover\":{\"data-framer-name\":undefined},\"uqgKD12hN-hover\":{\"data-framer-name\":undefined},\"v93HMl6yN-hover\":{\"data-framer-name\":undefined},\"YD2gIXV2L-hover\":{\"data-framer-name\":undefined},koRnaCqak:{\"data-framer-name\":\"External\"},L82Oy0Uy8:{\"data-border\":true,\"data-framer-name\":\"Secondary\"},LE7kF5pDg:{\"data-framer-name\":\"Color\"},lege8jhG5:{\"data-framer-name\":\"NoAnimation\"},QOjFoD6FQ:{\"data-framer-name\":\"Transparent\"},uqgKD12hN:{\"data-framer-name\":\"Color Cycle\"},v93HMl6yN:{\"data-framer-name\":\"Transparent \u2013\\xa0Light\"}},baseVariant,gestureVariant),children:[isDisplayed()&&/*#__PURE__*/_jsx(MotionDivWithBGColorCycle,{className:\"framer-1nrt3l\",\"data-framer-name\":\"Color Cycle BG\",layoutDependency:layoutDependency,layoutId:\"tqr2Yo1Lq\",style:{backgroundColor:\"var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95))\",borderBottomLeftRadius:100,borderBottomRightRadius:100,borderTopLeftRadius:100,borderTopRightRadius:100,boxShadow:\"inset 0px 2.5px 0px -2px rgba(255, 255, 255, 0.15), inset 0px 0px 0px 0.5px rgba(255, 255, 255, 0.15)\",opacity:1},variants:{\"uqgKD12hN-hover\":{opacity:.7}}}),OA2ahGR0N&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-pst6d6\",\"data-framer-name\":\"Icon Container\",layoutDependency:layoutDependency,layoutId:\"IPRYYJr6P\",children:/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-htxbuj-container\",layoutDependency:layoutDependency,layoutId:\"Fd9m7PksC-container\",children:/*#__PURE__*/_jsx(Logos,{accent:\"rgb(0, 0, 0)\",height:\"100%\",icon:Urz2Ffy21,id:\"Fd9m7PksC\",inheritColor:false,layoutId:\"Fd9m7PksC\",style:{height:\"100%\",width:\"100%\"},width:\"100%\",...addPropertyOverrides({L82Oy0Uy8:{accent:\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\"},LE7kF5pDg:{accent:\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\"},QOjFoD6FQ:{accent:\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\"},v93HMl6yN:{accent:\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\"}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-xf8vkz\",\"data-styles-preset\":\"pQlNzrell\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, rgb(0, 0, 0))\"},children:\"Try Twingate for Free\"})}),className:\"framer-8noh03\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"M9SDih9Jw\",style:{\"--extracted-r6o4lv\":\"rgb(0, 0, 0)\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\",\"--variable-reference-WJoF2TywT-AiU29R1w5\":WJoF2TywT},text:gW2IdKNHn,variants:{\"QOjFoD6FQ-hover\":{\"--extracted-r6o4lv\":\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\"},\"v93HMl6yN-hover\":{\"--extracted-r6o4lv\":\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\"},L82Oy0Uy8:{\"--extracted-r6o4lv\":\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\"},LE7kF5pDg:{\"--extracted-r6o4lv\":\"var(--variable-reference-WJoF2TywT-AiU29R1w5)\",\"--variable-reference-WJoF2TywT-AiU29R1w5\":WJoF2TywT},QOjFoD6FQ:{\"--extracted-r6o4lv\":\"var(--variable-reference-WJoF2TywT-AiU29R1w5)\",\"--variable-reference-WJoF2TywT-AiU29R1w5\":WJoF2TywT},v93HMl6yN:{\"--extracted-r6o4lv\":\"var(--token-376d54cb-4db7-448c-b192-cf6ae3d1a8ff, rgb(161, 161, 170))\"}},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({\"QOjFoD6FQ-hover\":{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-xf8vkz\",\"data-styles-preset\":\"pQlNzrell\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255)))\"},children:\"Try Twingate for Free\"})})},\"v93HMl6yN-hover\":{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-xf8vkz\",\"data-styles-preset\":\"pQlNzrell\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255)))\"},children:\"Try Twingate for Free\"})})},L82Oy0Uy8:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-xf8vkz\",\"data-styles-preset\":\"pQlNzrell\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255)))\"},children:\"Try Twingate for Free\"})})},LE7kF5pDg:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-xf8vkz\",\"data-styles-preset\":\"pQlNzrell\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--variable-reference-WJoF2TywT-AiU29R1w5))\"},children:\"Try Twingate for Free\"})})},QOjFoD6FQ:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-xf8vkz\",\"data-styles-preset\":\"pQlNzrell\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--variable-reference-WJoF2TywT-AiU29R1w5))\"},children:\"Try Twingate for Free\"})})},v93HMl6yN:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-xf8vkz\",\"data-styles-preset\":\"pQlNzrell\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-376d54cb-4db7-448c-b192-cf6ae3d1a8ff, rgb(161, 161, 170)))\"},children:\"Try Twingate for Free\"})})}},baseVariant,gestureVariant)}),isDisplayed1(xjfxHTVGH)&&/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1u7t6oo-container\",layoutDependency:layoutDependency,layoutId:\"LfhbvkBY9-container\",style:{opacity:1},variants:{\"v93HMl6yN-hover\":{opacity:1},v93HMl6yN:{opacity:.6}},children:/*#__PURE__*/_jsx(GraphicsButtonArrow,{height:\"100%\",id:\"LfhbvkBY9\",layoutId:\"LfhbvkBY9\",style:{height:\"100%\",width:\"100%\"},variant:\"BNbfbktEW\",width:\"100%\",...addPropertyOverrides({\"L82Oy0Uy8-hover\":{variant:\"EjrLISIop\"},\"LE7kF5pDg-hover\":{variant:csPpyV4tk},\"QOjFoD6FQ-hover\":{variant:\"EjrLISIop\"},\"uqgKD12hN-hover\":{variant:\"m9F2Vlw0F\"},\"v93HMl6yN-hover\":{variant:\"EjrLISIop\"},\"YD2gIXV2L-hover\":{variant:\"m9F2Vlw0F\"},L82Oy0Uy8:{variant:\"Ez6AL2vTh\"},LE7kF5pDg:{variant:CiwGQDcAN},lege8jhG5:{variant:\"m9F2Vlw0F\"},QOjFoD6FQ:{variant:\"Ez6AL2vTh\"},v93HMl6yN:{variant:\"Ez6AL2vTh\"}},baseVariant,gestureVariant)})})}),isDisplayed2()&&/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-ys8tgr-container\",layoutDependency:layoutDependency,layoutId:\"mlWoPBfhA-container\",children:/*#__PURE__*/_jsx(Arrow,{accent:\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\",height:\"100%\",icon:\"Up Right Arrow\",id:\"mlWoPBfhA\",inheritColor:false,layoutId:\"mlWoPBfhA\",style:{height:\"100%\",width:\"100%\"},width:\"100%\"})})})]})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-Fi6F4.framer-k0jvwj, .framer-Fi6F4 .framer-k0jvwj { display: block; }\",\".framer-Fi6F4.framer-fke84z { align-content: center; align-items: center; cursor: pointer; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 4px; height: 34px; justify-content: center; overflow: visible; padding: 0px 14px 0px 14px; position: relative; text-decoration: none; width: auto; }\",\".framer-Fi6F4 .framer-1nrt3l { bottom: 0px; flex: none; left: 0px; overflow: visible; position: absolute; right: 0px; top: 0px; z-index: 0; }\",\".framer-Fi6F4 .framer-pst6d6 { flex: none; height: 20px; overflow: visible; position: relative; width: 16px; }\",\".framer-Fi6F4 .framer-htxbuj-container { bottom: 0px; flex: none; left: -4px; position: absolute; right: 0px; top: 0px; }\",\".framer-Fi6F4 .framer-8noh03 { -webkit-user-select: none; flex: none; height: auto; position: relative; user-select: none; white-space: pre; width: auto; }\",\".framer-Fi6F4 .framer-1u7t6oo-container { flex: none; height: 20px; position: relative; width: 10px; }\",\".framer-Fi6F4 .framer-ys8tgr-container { flex: none; height: 20px; position: relative; width: 20px; z-index: 1; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-Fi6F4.framer-fke84z { gap: 0px; } .framer-Fi6F4.framer-fke84z > * { margin: 0px; margin-left: calc(4px / 2); margin-right: calc(4px / 2); } .framer-Fi6F4.framer-fke84z > :first-child { margin-left: 0px; } .framer-Fi6F4.framer-fke84z > :last-child { margin-right: 0px; } }\",\".framer-Fi6F4.framer-v-1592run.framer-fke84z, .framer-Fi6F4.framer-v-cnhq7z.framer-fke84z { padding: 0px; }\",\".framer-Fi6F4.framer-v-xcrb0 .framer-1nrt3l { order: 0; }\",\".framer-Fi6F4.framer-v-xcrb0 .framer-pst6d6 { order: 1; }\",\".framer-Fi6F4.framer-v-xcrb0 .framer-8noh03 { order: 2; }\",\".framer-Fi6F4.framer-v-xcrb0 .framer-1u7t6oo-container { order: 3; }\",\".framer-Fi6F4.framer-v-15o8qgh.framer-fke84z { gap: 0px; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-Fi6F4.framer-v-15o8qgh.framer-fke84z { gap: 0px; } .framer-Fi6F4.framer-v-15o8qgh.framer-fke84z > * { margin: 0px; margin-left: calc(0px / 2); margin-right: calc(0px / 2); } .framer-Fi6F4.framer-v-15o8qgh.framer-fke84z > :first-child { margin-left: 0px; } .framer-Fi6F4.framer-v-15o8qgh.framer-fke84z > :last-child { margin-right: 0px; } }\",...sharedStyle.css,'.framer-Fi6F4[data-border=\"true\"]::after, .framer-Fi6F4 [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; pointer-events: none; }'];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 34\n * @framerIntrinsicWidth 184\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"auto\",\"fixed\"]},\"L82Oy0Uy8\":{\"layout\":[\"auto\",\"fixed\"]},\"QOjFoD6FQ\":{\"layout\":[\"auto\",\"fixed\"]},\"LE7kF5pDg\":{\"layout\":[\"auto\",\"fixed\"]},\"uqgKD12hN\":{\"layout\":[\"auto\",\"fixed\"]},\"v93HMl6yN\":{\"layout\":[\"auto\",\"fixed\"]},\"lege8jhG5\":{\"layout\":[\"auto\",\"fixed\"]},\"koRnaCqak\":{\"layout\":[\"auto\",\"fixed\"]},\"gEEuBxcuo\":{\"layout\":[\"auto\",\"fixed\"]},\"OTxRsPyoT\":{\"layout\":[\"auto\",\"fixed\"]},\"OTbWN2TZT\":{\"layout\":[\"auto\",\"fixed\"]},\"Y1SXxShFA\":{\"layout\":[\"auto\",\"fixed\"]},\"K4IpWKVWV\":{\"layout\":[\"auto\",\"fixed\"]},\"TAjLhqqYm\":{\"layout\":[\"auto\",\"fixed\"]},\"qBt5SifOn\":{\"layout\":[\"auto\",\"fixed\"]},\"BXFrwHrga\":{\"layout\":[\"auto\",\"fixed\"]}}}\n * @framerVariables {\"gW2IdKNHn\":\"title\",\"OA2ahGR0N\":\"icon\",\"Urz2Ffy21\":\"icon1\",\"xjfxHTVGH\":\"arrow\",\"FdDV8gLxh\":\"background\",\"DZNn6_WWp\":\"link\",\"uirRaCarc\":\"newTab\",\"x_8VxILUS\":\"tap\",\"WJoF2TywT\":\"color\",\"CiwGQDcAN\":\"arrowVariant\",\"csPpyV4tk\":\"hoverArrowVariant\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerAiU29R1w5=withCSS(Component,css,\"framer-Fi6F4\");export default FramerAiU29R1w5;FramerAiU29R1w5.displayName=\"Buttons / Button\";FramerAiU29R1w5.defaultProps={height:34,width:184};addPropertyControls(FramerAiU29R1w5,{variant:{options:[\"YD2gIXV2L\",\"L82Oy0Uy8\",\"QOjFoD6FQ\",\"LE7kF5pDg\",\"uqgKD12hN\",\"v93HMl6yN\",\"lege8jhG5\",\"koRnaCqak\"],optionTitles:[\"Primary\",\"Secondary\",\"Transparent\",\"Color\",\"Color Cycle\",\"Transparent \u2013\\xa0Light\",\"NoAnimation\",\"External\"],title:\"Variant\",type:ControlType.Enum},gW2IdKNHn:{defaultValue:\"Try Twingate for Free\",displayTextArea:false,placeholder:\"\",title:\"Title\",type:ControlType.String},OA2ahGR0N:{defaultValue:false,title:\"Icon\",type:ControlType.Boolean},Urz2Ffy21:(LogosControls===null||LogosControls===void 0?void 0:LogosControls[\"icon\"])&&{...LogosControls[\"icon\"],defaultValue:\"Terraform\",description:undefined,hidden:undefined,title:\"Icon\"},xjfxHTVGH:{defaultValue:true,title:\"Arrow\",type:ControlType.Boolean},FdDV8gLxh:{defaultValue:'var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95)) /* {\"name\":\"Primary\"} */',title:\"Background\",type:ControlType.Color},DZNn6_WWp:{title:\"Link\",type:ControlType.Link},uirRaCarc:{defaultValue:false,title:\"New Tab\",type:ControlType.Boolean},x_8VxILUS:{title:\"Tap\",type:ControlType.EventHandler},WJoF2TywT:{defaultValue:'var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17)) /* {\"name\":\"Gray 900\"} */',title:\"Color\",type:ControlType.Color},CiwGQDcAN:(GraphicsButtonArrowControls===null||GraphicsButtonArrowControls===void 0?void 0:GraphicsButtonArrowControls[\"variant\"])&&{...GraphicsButtonArrowControls[\"variant\"],defaultValue:\"BNbfbktEW\",description:undefined,hidden:undefined,title:\"Arrow Variant\"},csPpyV4tk:(GraphicsButtonArrowControls===null||GraphicsButtonArrowControls===void 0?void 0:GraphicsButtonArrowControls[\"variant\"])&&{...GraphicsButtonArrowControls[\"variant\"],defaultValue:\"m9F2Vlw0F\",description:undefined,hidden:undefined,title:\"Hover Arrow Variant\"}});addFonts(FramerAiU29R1w5,[{explicitInter:true,fonts:[{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://app.framerstatic.com/Inter-Regular.cyrillic-ext-CFTLRB35.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://app.framerstatic.com/Inter-Regular.cyrillic-KKLZBALH.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+1F00-1FFF\",url:\"https://app.framerstatic.com/Inter-Regular.greek-ext-ULEBLIFV.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0370-03FF\",url:\"https://app.framerstatic.com/Inter-Regular.greek-IRHSNFQB.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://app.framerstatic.com/Inter-Regular.latin-ext-VZDUGU3Q.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://app.framerstatic.com/Inter-Regular.latin-JLQMKCHE.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://app.framerstatic.com/Inter-Regular.vietnamese-QK7VSWXK.woff2\",weight:\"400\"}]},...LogosFonts,...GraphicsButtonArrowFonts,...ArrowFonts,...getFontsFromSharedStyle(sharedStyle.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerAiU29R1w5\",\"slots\":[],\"annotations\":{\"framerVariables\":\"{\\\"gW2IdKNHn\\\":\\\"title\\\",\\\"OA2ahGR0N\\\":\\\"icon\\\",\\\"Urz2Ffy21\\\":\\\"icon1\\\",\\\"xjfxHTVGH\\\":\\\"arrow\\\",\\\"FdDV8gLxh\\\":\\\"background\\\",\\\"DZNn6_WWp\\\":\\\"link\\\",\\\"uirRaCarc\\\":\\\"newTab\\\",\\\"x_8VxILUS\\\":\\\"tap\\\",\\\"WJoF2TywT\\\":\\\"color\\\",\\\"CiwGQDcAN\\\":\\\"arrowVariant\\\",\\\"csPpyV4tk\\\":\\\"hoverArrowVariant\\\"}\",\"framerDisplayContentsDiv\":\"false\",\"framerIntrinsicWidth\":\"184\",\"framerComponentViewportWidth\":\"true\",\"framerImmutableVariables\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"L82Oy0Uy8\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"QOjFoD6FQ\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"LE7kF5pDg\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"uqgKD12hN\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"v93HMl6yN\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"lege8jhG5\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"koRnaCqak\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"gEEuBxcuo\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"OTxRsPyoT\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"OTbWN2TZT\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"Y1SXxShFA\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"K4IpWKVWV\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"TAjLhqqYm\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"qBt5SifOn\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"BXFrwHrga\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]}}}\",\"framerIntrinsicHeight\":\"34\",\"framerContractVersion\":\"1\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./AiU29R1w5.map", "// Generated by Framer (ba0a5a9)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,ResolveLinks,SVG,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useRouter,useVariantState,withCSS,withMappedReactProps}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import ButtonsButton from\"https://framerusercontent.com/modules/7AM6DNYiokdKmR3FgvBn/3VHILYFDaDVOMW9BbFdu/AiU29R1w5.js\";import{withHideIfTenants,withShowIfTenants}from\"https://framerusercontent.com/modules/pdRBrxZgIyvBss2CqANa/GwPe7hhMcRcQI7SMcoIS/TenantChecks.js\";import NavLaunchTwingateButton,*as NavLaunchTwingateButtonInfo from\"https://framerusercontent.com/modules/a6DfdqVVfgEK1lKSj4Np/D0GpDJ0nXNlwicdp34NE/OIB1sWCoj.js\";const ButtonsButtonFonts=getFonts(ButtonsButton);const ButtonsButtonWithHideIfTenants=withHideIfTenants(ButtonsButton);const NavLaunchTwingateButtonFonts=getFonts(NavLaunchTwingateButton);const NavLaunchTwingateButtonWithShowIfTenantsWithMappedReactPropspjn4ln=withMappedReactProps(withShowIfTenants(NavLaunchTwingateButton),NavLaunchTwingateButtonInfo);const cycleOrder=[\"qGF8MwIam\",\"uaUltiyeL\",\"u9zShA4FB\",\"Mr0BhNfsw\"];const serializationHash=\"framer-V83jk\";const variantClassNames={Mr0BhNfsw:\"framer-v-i2iy9e\",qGF8MwIam:\"framer-v-1xrd0a3\",u9zShA4FB:\"framer-v-1umtnt8\",uaUltiyeL:\"framer-v-3mdqzo\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={duration:0,type:\"tween\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const humanReadableVariantMap={\"Desktop - MSP\":\"Mr0BhNfsw\",\"Desktop \u2013\\xa0Home\":\"uaUltiyeL\",Desktop:\"qGF8MwIam\",Phone:\"u9zShA4FB\"};const getProps=({height,id,tapMenu,width,...props})=>{return{...props,jnvUEL2ut:tapMenu??props.jnvUEL2ut,variant:humanReadableVariantMap[props.variant]??props.variant??\"qGF8MwIam\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,jnvUEL2ut,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"qGF8MwIam\",variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onTap1gidreh=activeVariantCallback(async(...args)=>{if(jnvUEL2ut){const res=await jnvUEL2ut(...args);if(res===false)return false;}});const ref1=React.useRef(null);const isDisplayed=()=>{if(baseVariant===\"u9zShA4FB\")return false;return true;};const isDisplayed1=()=>{if(baseVariant===\"uaUltiyeL\")return false;return true;};const router=useRouter();const isDisplayed2=()=>{if(baseVariant===\"u9zShA4FB\")return true;return false;};const defaultLayoutId=React.useId();const sharedStyleClassNames=[];const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(serializationHash,...sharedStyleClassNames,\"framer-1xrd0a3\",className,classNames),\"data-framer-name\":\"Desktop\",layoutDependency:layoutDependency,layoutId:\"qGF8MwIam\",ref:ref??ref1,style:{...style},...addPropertyOverrides({Mr0BhNfsw:{\"data-framer-name\":\"Desktop - MSP\"},u9zShA4FB:{\"data-framer-name\":\"Phone\"},uaUltiyeL:{\"data-framer-name\":\"Desktop \u2013\\xa0Home\"}},baseVariant,gestureVariant),children:[isDisplayed()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1jikurq\",\"data-framer-name\":\"Desktop Buttons\",layoutDependency:layoutDependency,layoutId:\"cPqX5m7E7\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-oc2oky\",\"data-framer-name\":\"Button Container\",layoutDependency:layoutDependency,layoutId:\"e3jzsWhf1\",children:isDisplayed1()&&/*#__PURE__*/_jsx(ComponentViewportProvider,{height:34,y:(componentViewport?.y||0)+0+0+0,children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1fr4d0c-container\",layoutDependency:layoutDependency,layoutId:\"dXFyOILVJ-container\",children:/*#__PURE__*/_jsx(ButtonsButton,{CiwGQDcAN:\"BNbfbktEW\",csPpyV4tk:\"m9F2Vlw0F\",DZNn6_WWp:\"https://auth.twingate.com/\",FdDV8gLxh:\"var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95))\",gW2IdKNHn:\"Sign in\",height:\"100%\",id:\"dXFyOILVJ\",layoutId:\"dXFyOILVJ\",OA2ahGR0N:false,style:{height:\"100%\"},uirRaCarc:false,Urz2Ffy21:\"Terraform\",variant:\"QOjFoD6FQ\",width:\"100%\",WJoF2TywT:\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\",xjfxHTVGH:false})})})}),isDisplayed1()&&/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"Sgazhdlve\"},implicitPathVariables:undefined},{href:{webPageId:\"fM499XwEy\"},implicitPathVariables:undefined}],children:resolvedLinks=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:34,y:(componentViewport?.y||0)+0+0,children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-16d6ye4-container\",layoutDependency:layoutDependency,layoutId:\"Tyif2H_Rh-container\",children:/*#__PURE__*/_jsx(ButtonsButton,{CiwGQDcAN:\"BNbfbktEW\",csPpyV4tk:\"m9F2Vlw0F\",DZNn6_WWp:resolvedLinks[0],FdDV8gLxh:\"var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95))\",gW2IdKNHn:\"Request Demo\",height:\"100%\",id:\"Tyif2H_Rh\",layoutId:\"Tyif2H_Rh\",OA2ahGR0N:false,style:{height:\"100%\"},uirRaCarc:false,Urz2Ffy21:\"Terraform\",variant:\"YD2gIXV2L\",width:\"100%\",WJoF2TywT:\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\",xjfxHTVGH:false,...addPropertyOverrides({Mr0BhNfsw:{DZNn6_WWp:resolvedLinks[1]}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1jdoqt8\",\"data-framer-name\":\"Sign in or Launch\",layoutDependency:layoutDependency,layoutId:\"aPodLiIaM\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:34,y:(componentViewport?.y||0)+0+0+0,children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-uj52c7-container\",layoutDependency:layoutDependency,layoutId:\"JKMlPM06y-container\",children:/*#__PURE__*/_jsx(ButtonsButtonWithHideIfTenants,{CiwGQDcAN:\"BNbfbktEW\",csPpyV4tk:\"m9F2Vlw0F\",DZNn6_WWp:\"https://auth.twingate.com/signup\",FdDV8gLxh:\"var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95))\",gW2IdKNHn:\"Try for Free\",height:\"100%\",id:\"JKMlPM06y\",layoutId:\"JKMlPM06y\",OA2ahGR0N:false,style:{height:\"100%\"},uirRaCarc:false,Urz2Ffy21:\"Terraform\",variant:\"L82Oy0Uy8\",width:\"100%\",WJoF2TywT:\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\",xjfxHTVGH:false,...addPropertyOverrides({Mr0BhNfsw:{DZNn6_WWp:\"https://auth.twingate.com/msp-signup\"}},baseVariant,gestureVariant)})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:34,y:(componentViewport?.y||0)+0+0+0,children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-13agslr-container\",layoutDependency:layoutDependency,layoutId:\"bQv0VAFHC-container\",children:/*#__PURE__*/_jsx(NavLaunchTwingateButtonWithShowIfTenantsWithMappedReactPropspjn4ln,{height:\"100%\",id:\"bQv0VAFHC\",layoutId:\"bQv0VAFHC\",width:\"100%\"})})})]})]}),isDisplayed2()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1jw6yay\",\"data-framer-name\":\"Menu Button\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"if5GwIKQZ\",onTap:onTap1gidreh,style:{backgroundColor:\"rgba(240, 240, 240, 0.1)\",borderBottomLeftRadius:8,borderBottomRightRadius:8,borderTopLeftRadius:8,borderTopRightRadius:8},children:/*#__PURE__*/_jsx(SVG,{className:\"framer-1s5zp9j\",layout:\"position\",layoutDependency:layoutDependency,layoutId:\"vWBKWOu9g\",opacity:1,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 24 24\"><path d=\"M 3 7 C 3 6.448 3.448 6 4 6 L 20 6 C 20.552 6 21 6.448 21 7 L 21 7 C 21 7.552 20.552 8 20 8 L 4 8 C 3.448 8 3 7.552 3 7 Z\" fill=\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\"></path><path d=\"M 3 12 C 3 11.448 3.448 11 4 11 L 20 11 C 20.552 11 21 11.448 21 12 L 21 12 C 21 12.552 20.552 13 20 13 L 4 13 C 3.448 13 3 12.552 3 12 Z\" fill=\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\"></path><path d=\"M 3 17 C 3 16.448 3.448 16 4 16 L 20 16 C 20.552 16 21 16.448 21 17 L 21 17 C 21 17.552 20.552 18 20 18 L 4 18 C 3.448 18 3 17.552 3 17 Z\" fill=\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\"></path></svg>',svgContentId:11397363566,withExternalLayout:true})})]})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-V83jk.framer-10vbal7, .framer-V83jk .framer-10vbal7 { display: block; }\",\".framer-V83jk.framer-1xrd0a3 { align-content: flex-start; align-items: flex-start; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-end; overflow: visible; padding: 0px; position: relative; width: 463px; }\",\".framer-V83jk .framer-1jikurq { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 8px; height: 34px; justify-content: center; overflow: visible; padding: 0px; position: relative; width: min-content; }\",\".framer-V83jk .framer-oc2oky { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; overflow: visible; padding: 0px 8px 0px 0px; position: relative; width: min-content; }\",\".framer-V83jk .framer-1fr4d0c-container, .framer-V83jk .framer-16d6ye4-container, .framer-V83jk .framer-uj52c7-container { flex: none; height: 34px; position: relative; width: auto; }\",\".framer-V83jk .framer-1jdoqt8 { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: min-content; }\",\".framer-V83jk .framer-13agslr-container { flex: none; height: auto; position: relative; width: auto; }\",\".framer-V83jk .framer-1jw6yay { cursor: pointer; flex: none; height: 34px; overflow: hidden; position: relative; width: 54px; will-change: var(--framer-will-change-override, transform); }\",\".framer-V83jk .framer-1s5zp9j { flex: none; height: 24px; left: calc(50.00000000000002% - 24px / 2); position: absolute; top: calc(50.00000000000002% - 24px / 2); width: 24px; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-V83jk.framer-1xrd0a3, .framer-V83jk .framer-1jikurq, .framer-V83jk .framer-oc2oky, .framer-V83jk .framer-1jdoqt8 { gap: 0px; } .framer-V83jk.framer-1xrd0a3 > *, .framer-V83jk .framer-oc2oky > *, .framer-V83jk .framer-1jdoqt8 > * { margin: 0px; margin-left: calc(0px / 2); margin-right: calc(0px / 2); } .framer-V83jk.framer-1xrd0a3 > :first-child, .framer-V83jk .framer-1jikurq > :first-child, .framer-V83jk .framer-oc2oky > :first-child, .framer-V83jk .framer-1jdoqt8 > :first-child { margin-left: 0px; } .framer-V83jk.framer-1xrd0a3 > :last-child, .framer-V83jk .framer-1jikurq > :last-child, .framer-V83jk .framer-oc2oky > :last-child, .framer-V83jk .framer-1jdoqt8 > :last-child { margin-right: 0px; } .framer-V83jk .framer-1jikurq > * { margin: 0px; margin-left: calc(8px / 2); margin-right: calc(8px / 2); } }\",\".framer-V83jk.framer-v-3mdqzo.framer-1xrd0a3 { width: 343px; }\",\".framer-V83jk.framer-v-3mdqzo .framer-oc2oky { min-height: 34px; min-width: 101px; }\",\".framer-V83jk.framer-v-3mdqzo .framer-1jdoqt8 { justify-content: flex-end; }\",\".framer-V83jk.framer-v-1umtnt8.framer-1xrd0a3 { width: min-content; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 34\n * @framerIntrinsicWidth 463\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]},\"uaUltiyeL\":{\"layout\":[\"fixed\",\"auto\"]},\"u9zShA4FB\":{\"layout\":[\"auto\",\"auto\"]},\"Mr0BhNfsw\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerVariables {\"jnvUEL2ut\":\"tapMenu\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramernTx_gJVzD=withCSS(Component,css,\"framer-V83jk\");export default FramernTx_gJVzD;FramernTx_gJVzD.displayName=\"Nav / Primary Nav \u2013\\xa0Right Copy\";FramernTx_gJVzD.defaultProps={height:34,width:463};addPropertyControls(FramernTx_gJVzD,{variant:{options:[\"qGF8MwIam\",\"uaUltiyeL\",\"u9zShA4FB\",\"Mr0BhNfsw\"],optionTitles:[\"Desktop\",\"Desktop \u2013\\xa0Home\",\"Phone\",\"Desktop - MSP\"],title:\"Variant\",type:ControlType.Enum},jnvUEL2ut:{title:\"Tap Menu\",type:ControlType.EventHandler}});addFonts(FramernTx_gJVzD,[{explicitInter:true,fonts:[]},...ButtonsButtonFonts,...NavLaunchTwingateButtonFonts],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramernTx_gJVzD\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"34\",\"framerIntrinsicWidth\":\"463\",\"framerDisplayContentsDiv\":\"false\",\"framerComponentViewportWidth\":\"true\",\"framerImmutableVariables\":\"true\",\"framerContractVersion\":\"1\",\"framerVariables\":\"{\\\"jnvUEL2ut\\\":\\\"tapMenu\\\"}\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"uaUltiyeL\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"u9zShA4FB\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"Mr0BhNfsw\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}", "// Generated by Framer (cf240c2)\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,Floating,getFonts,getPropertyControls,Link,ResolveLinks,SVG,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useOverlayState,useRouter,useVariantState,withCSS,withFX}from\"framer\";import{AnimatePresence,LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{Glass_100}from\"https://framerusercontent.com/modules/fgQqOxgPS4ULab3yRfwu/65LMSsc3o3MGPNZhWzyq/Filters.js\";import NavMobileNav from\"https://framerusercontent.com/modules/ggcENFdVcTER4TONpu1P/Sm8CywxWEnaUvCdiRTsq/jtDh_M46J.js\";import ButtonsNavButton from\"https://framerusercontent.com/modules/tYAt9cH95mFrqlOMuyyO/yanjb73WcPFGvd13S0jO/ZVYe2Nhfy.js\";import NavPrimaryNavRight from\"https://framerusercontent.com/modules/mfhR5zRGIFndbbEvJa23/aiXbdfYymS8VVodLFmJV/m1Dw3gDw_.js\";import NavPrimaryNavRightCopy from\"https://framerusercontent.com/modules/Xyaya9g1loKqeLkOA9lF/oIrnEKPhcOZUMmeRh78f/nTx_gJVzD.js\";import NavMenu from\"https://framerusercontent.com/modules/ukyfgndQmGPyGl5LU54I/hFuQ655HqW24mBwz7R2w/QUH3pJRTz.js\";const NavMobileNavFonts=getFonts(NavMobileNav);const MotionDivGlass_100=Glass_100(motion.div);const ButtonsNavButtonFonts=getFonts(ButtonsNavButton);const NavMenuFonts=getFonts(NavMenu);const MotionDivWithFX=withFX(motion.div);const NavPrimaryNavRightCopyFonts=getFonts(NavPrimaryNavRightCopy);const NavPrimaryNavRightControls=getPropertyControls(NavPrimaryNavRight);const cycleOrder=[\"DKjC_1Y1L\",\"VPyheSmsX\",\"HuwE5BTTZ\",\"R8hW_WGWO\",\"zA9dvSi0U\",\"HdtAnp6Dh\",\"kVoSQin7b\",\"vKl5bg8uJ\"];const serializationHash=\"framer-3rKxF\";const variantClassNames={DKjC_1Y1L:\"framer-v-107dm4a\",HdtAnp6Dh:\"framer-v-16x6b3c\",HuwE5BTTZ:\"framer-v-1oxt3ju\",kVoSQin7b:\"framer-v-1dud3sj\",R8hW_WGWO:\"framer-v-zzvngj\",vKl5bg8uJ:\"framer-v-1ai3dvm\",VPyheSmsX:\"framer-v-pg7psv\",zA9dvSi0U:\"framer-v-1iyr5bs\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:50,delay:0,mass:1,stiffness:700,type:\"spring\"};const transition2={damping:30,delay:0,mass:1,stiffness:400,type:\"spring\"};const animation={opacity:0,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,transition:transition2,x:0,y:0};const animation1={opacity:1,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,transition:transition2,x:0,y:0};const animation2={opacity:0,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,x:0,y:0};const Overlay=({children,blockDocumentScrolling,enabled=true})=>{const[visible,setVisible]=useOverlayState({blockDocumentScrolling});return children({hide:()=>setVisible(false),show:()=>setVisible(true),toggle:()=>setVisible(!visible),visible:enabled&&visible});};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const humanReadableEnumMap={\"Desktop - MSP\":\"HoUu2fI1L\",\"Desktop \u2013\\xa0Home\":\"NUfbp9gV9\",Desktop:\"f1fa5L71s\",Phone:\"We5skBAdz\"};const humanReadableVariantMap={\"Desktop \u2013 Partners\":\"kVoSQin7b\",\"Home link\":\"vKl5bg8uJ\",\"MSP - Open\":\"HdtAnp6Dh\",\"No Links\":\"R8hW_WGWO\",\"Phone \u2013\\xa0Open\":\"HuwE5BTTZ\",Desktop:\"DKjC_1Y1L\",MSP:\"zA9dvSi0U\",Phone:\"VPyheSmsX\"};const getProps=({actions,bGBlur,foreground,height,id,shadow,width,...props})=>{return{...props,dqNTFu1r7:bGBlur??props.dqNTFu1r7??true,PiR5q7_Ls:foreground??props.PiR5q7_Ls??\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\",smQ_kJfRy:shadow??props.smQ_kJfRy??true,variant:humanReadableVariantMap[props.variant]??props.variant??\"DKjC_1Y1L\",YPx0WXa7x:humanReadableEnumMap[actions]??actions??props.YPx0WXa7x??\"f1fa5L71s\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,YPx0WXa7x,smQ_kJfRy,PiR5q7_Ls,dqNTFu1r7,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"DKjC_1Y1L\",variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onTapb1ubz5=activeVariantCallback(async(...args)=>{setVariant(\"VPyheSmsX\");});const onTapg4bequ=activeVariantCallback(async(...args)=>{setVariant(\"zA9dvSi0U\");});const lFvMJ0SS0b1ubz5=activeVariantCallback(async(...args)=>{setVariant(\"VPyheSmsX\");});const lFvMJ0SS0g4bequ=activeVariantCallback(async(...args)=>{setVariant(\"zA9dvSi0U\");});const onMouseEnter6ughds=activeVariantCallback(async(...args)=>{setVariant(\"DKjC_1Y1L\");});const wFwmGsvMBizu9gt=({overlay,paginationInfo})=>activeVariantCallback(async(...args)=>{overlay.show();});const aV_o9aCObizu9gt=({overlay,paginationInfo})=>activeVariantCallback(async(...args)=>{overlay.show();});const wFwmGsvMB6ughds=activeVariantCallback(async(...args)=>{setVariant(\"DKjC_1Y1L\");});const aV_o9aCOb6ughds=activeVariantCallback(async(...args)=>{setVariant(\"DKjC_1Y1L\");});const ref1=React.useRef(null);const isDisplayed=value=>{if(baseVariant===\"kVoSQin7b\")return true;return value;};const isDisplayed1=()=>{if([\"VPyheSmsX\",\"HuwE5BTTZ\",\"R8hW_WGWO\",\"zA9dvSi0U\",\"HdtAnp6Dh\",\"vKl5bg8uJ\"].includes(baseVariant))return false;return true;};const ref2=React.useRef(null);const ref3=React.useRef(null);const ref4=React.useRef(null);const ref5=React.useRef(null);const router=useRouter();const ref6=React.useRef(null);const ref7=React.useRef(null);const ref8=React.useRef(null);const ref9=React.useRef(null);const ref10=React.useRef(null);const ref11=React.useRef(null);const isDisplayed2=()=>{if([\"R8hW_WGWO\",\"vKl5bg8uJ\"].includes(baseVariant))return false;return true;};const defaultLayoutId=React.useId();const sharedStyleClassNames=[];const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(serializationHash,...sharedStyleClassNames,\"framer-107dm4a\",className,classNames),\"data-framer-name\":\"Desktop\",layoutDependency:layoutDependency,layoutId:\"DKjC_1Y1L\",ref:ref??ref1,style:{...style},...addPropertyOverrides({HdtAnp6Dh:{\"data-framer-name\":\"MSP - Open\"},HuwE5BTTZ:{\"data-framer-name\":\"Phone \u2013\\xa0Open\"},kVoSQin7b:{\"data-framer-name\":\"Desktop \u2013 Partners\"},R8hW_WGWO:{\"data-framer-name\":\"No Links\"},vKl5bg8uJ:{\"data-framer-name\":\"Home link\"},VPyheSmsX:{\"data-framer-name\":\"Phone\"},zA9dvSi0U:{\"data-framer-name\":\"MSP\"}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-sntln7\",\"data-framer-name\":\"Phone Nav\",layoutDependency:layoutDependency,layoutId:\"YvU_zjSwv\",style:{opacity:0},variants:{HdtAnp6Dh:{opacity:1},HuwE5BTTZ:{opacity:1}},children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-1vvd3w5\",\"data-framer-name\":\"Close Target\",layoutDependency:layoutDependency,layoutId:\"mzmZqsddS\",...addPropertyOverrides({HdtAnp6Dh:{\"data-highlight\":true,onTap:onTapg4bequ},HuwE5BTTZ:{\"data-highlight\":true,onTap:onTapb1ubz5}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1twbzb0\",\"data-framer-name\":\"Popover\",layoutDependency:layoutDependency,layoutId:\"MDKKMuiJy\",children:/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-15p4ywo-container\",layoutDependency:layoutDependency,layoutId:\"EX3FfyyQd-container\",children:/*#__PURE__*/_jsx(NavMobileNav,{height:\"100%\",id:\"EX3FfyyQd\",layoutId:\"EX3FfyyQd\",lFvMJ0SS0:lFvMJ0SS0b1ubz5,style:{width:\"100%\"},variant:\"gYbO3EfpD\",width:\"100%\",...addPropertyOverrides({HdtAnp6Dh:{lFvMJ0SS0:lFvMJ0SS0g4bequ},R8hW_WGWO:{lFvMJ0SS0:undefined},vKl5bg8uJ:{lFvMJ0SS0:undefined},VPyheSmsX:{lFvMJ0SS0:undefined},zA9dvSi0U:{lFvMJ0SS0:undefined}},baseVariant,gestureVariant)})})})})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1g4v7z6\",\"data-framer-name\":\"Primary Nav\",layoutDependency:layoutDependency,layoutId:\"x0OOhAYEA\",children:[isDisplayed(dqNTFu1r7)&&/*#__PURE__*/_jsx(MotionDivGlass_100,{className:\"framer-vuz043\",\"data-framer-name\":\"BG\",layoutDependency:layoutDependency,layoutId:\"eh3QHU30z\",style:{backgroundColor:\"rgba(14, 15, 17, 0.4)\"},variants:{kVoSQin7b:{backgroundColor:\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\"}}}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1jr8qy9\",\"data-framer-name\":\"Container\",layoutDependency:layoutDependency,layoutId:\"H7H9K4uDq\",children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1dsbtmo\",\"data-framer-name\":\"Left\",layoutDependency:layoutDependency,layoutId:\"lvfeT5H6u\",children:[/*#__PURE__*/_jsx(Link,{href:{webPageId:\"M5hbWPuKe\"},openInNewTab:false,...addPropertyOverrides({R8hW_WGWO:{href:undefined},vKl5bg8uJ:{href:{webPageId:\"pkZPzzffa\"}}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-1urzw1g framer-1uz4zvn\",\"data-framer-name\":\"Logo\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"Jp45qRVtR\",onMouseEnter:onMouseEnter6ughds,...addPropertyOverrides({HdtAnp6Dh:{\"data-highlight\":undefined,onMouseEnter:undefined},HuwE5BTTZ:{\"data-highlight\":undefined,onMouseEnter:undefined},R8hW_WGWO:{\"data-highlight\":undefined,onMouseEnter:undefined},vKl5bg8uJ:{\"data-highlight\":undefined,onMouseEnter:undefined},VPyheSmsX:{\"data-highlight\":undefined,onMouseEnter:undefined},zA9dvSi0U:{\"data-highlight\":undefined,onMouseEnter:undefined}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SVG,{className:\"framer-1v0o4uw\",\"data-framer-name\":\"Logo\",fill:\"black\",intrinsicHeight:20,intrinsicWidth:86,layoutDependency:layoutDependency,layoutId:\"L31lkBt6q\",svg:'<svg width=\"86\" height=\"20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M0 8.516V17.2s1.298-.89 2.75-1.91v-4.774c0-2.347.707-3.104 2.62-4.526l2.624-1.95V0S4.198 2.816 2.62 3.99C.707 5.412 0 6.17 0 8.516ZM4 20v-8.684c0-2.347.707-3.104 2.62-4.526 1.578-1.174 5.374-3.99 5.374-3.99v7.577c0 .218.001.425.003.624.018 2.099.027 3.218-2.12 4.841C8.105 17.184 4 20 4 20ZM26.8 5.617h-3.4v9.825h-2V5.617H18V3.72h8.802L26.8 5.617Zm5.336 3.947h.017l1.925 5.878h1.866l2.989-8.57h-2l-1.931 6.16-1.944-6.16h-1.814l-1.965 6.144-1.915-6.143h-2.032l2.995 8.57h1.865l1.944-5.88Zm8-2.691h2.47v8.57h-1.964v-6.82h-1.134l.627-1.75Zm.259-2.642a1.231 1.231 0 0 1 2.461 0c0 .71-.511 1.205-1.221 1.205-.71 0-1.242-.495-1.242-1.205h.002Zm8.451 2.444c-1.403 0-2.277.66-2.642 1.337l-.002-1.14h-1.814v8.576h1.965v-4.97c0-1.336.776-2.114 2.015-2.114 1.173 0 1.7.771 1.7 1.944v5.134h1.966V10.06c0-1.998-1.107-3.385-3.188-3.385Zm11.207.198h1.814v8.207c0 2.262-1.454 3.979-4.096 3.979-2.576 0-3.748-1.651-3.93-2.988h1.966c.181.66.759 1.303 1.998 1.303 1.354 0 2.096-.825 2.096-2.03v-1.337c-.48.742-1.388 1.32-2.708 1.32-2.444 0-3.947-1.964-3.947-4.326 0-2.362 1.503-4.326 3.947-4.326 1.32 0 2.295.528 2.857 1.425l.003-1.227ZM57.59 8.408c-1.425 0-2.378 1.09-2.378 2.591 0 1.502.958 2.592 2.378 2.592 1.452 0 2.394-1.107 2.394-2.591 0-1.485-.94-2.592-2.393-2.592h-.001ZM70 15.441h1.814V6.89h-1.817v1.227c-.546-.897-1.552-1.426-2.89-1.426-2.525 0-3.96 2.033-3.96 4.478s1.437 4.476 3.962 4.476c1.336 0 2.345-.534 2.89-1.426v1.222Zm-.068-4.276c0 1.537-.908 2.742-2.411 2.742-1.486 0-2.411-1.206-2.411-2.742 0-1.535.907-2.74 2.411-2.74s2.411 1.204 2.411 2.74Zm3.448-6.52h1.964v2.228h1.602v1.569h-1.602v4.326c0 .676.282 1.007.958 1.007a2.42 2.42 0 0 0 .611-.083v1.701a4.31 4.31 0 0 1-1.023.099c-1.75 0-2.51-.907-2.51-2.526V4.644Zm8.474 9.311c-1.371 0-2.246-.874-2.395-2.228h6.524s.017-.298.017-.612c0-2.51-1.668-4.441-4.211-4.441s-4.26 1.98-4.26 4.475c0 2.559 1.684 4.49 4.276 4.49 1.997 0 3.516-1.204 4.028-2.905h-1.981c-.314.759-1.091 1.221-1.998 1.221Zm2.196-3.682h-4.557c.198-1.173 1.024-1.998 2.295-1.998 1.27 0 2.097.81 2.262 1.998Z\" fill=\"#fff\"/></svg>',tabIndex:0,title:\"Twingate Logo\",withExternalLayout:true})})}),isDisplayed1()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-cor9mr\",\"data-framer-name\":\"Menu\",layoutDependency:layoutDependency,layoutId:\"fPK0zVuye\",children:[/*#__PURE__*/_jsx(Overlay,{blockDocumentScrolling:false,children:overlay=>/*#__PURE__*/_jsx(_Fragment,{children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:34,y:(componentViewport?.y||0)+0+0+0+0+0+16,children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-uni33f-container\",id:`${layoutId}-uni33f`,layoutDependency:layoutDependency,layoutId:\"K3kN6fxND-container\",ref:ref2,children:[/*#__PURE__*/_jsx(ButtonsNavButton,{aV_o9aCOb:aV_o9aCObizu9gt({overlay}),FKwB4UL9z:PiR5q7_Ls,height:\"100%\",id:\"K3kN6fxND\",layoutId:\"K3kN6fxND\",QsIcUGujF:\"Product\",variant:\"VgtzLAQ7z\",wFwmGsvMB:wFwmGsvMBizu9gt({overlay}),width:\"100%\"}),/*#__PURE__*/_jsx(AnimatePresence,{children:overlay.visible&&/*#__PURE__*/_jsx(Floating,{alignment:\"start\",anchorRef:ref2,className:cx(serializationHash,classNames,...sharedStyleClassNames),collisionDetection:true,collisionDetectionPadding:20,\"data-framer-portal-id\":`${layoutId}-uni33f`,offsetX:0,offsetY:6,onDismiss:overlay.hide,placement:\"bottom\",portalSelector:\"#overlay\",safeArea:true,zIndex:11,children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:739,y:(componentViewport?.y||0)+0+0+0+0+0+16+0,children:/*#__PURE__*/_jsx(MotionDivWithFX,{__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,animate:animation1,className:\"framer-15yjsss-container\",exit:animation,initial:animation2,layoutDependency:layoutDependency,layoutId:\"w7AVnGTWo-container\",ref:ref3,role:\"dialog\",children:/*#__PURE__*/_jsx(NavMenu,{height:\"100%\",id:\"w7AVnGTWo\",layoutId:\"w7AVnGTWo\",variant:\"tL7RJw2hg\",width:\"100%\"})})})})})]})})})}),/*#__PURE__*/_jsx(Overlay,{blockDocumentScrolling:false,children:overlay1=>/*#__PURE__*/_jsx(_Fragment,{children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:34,y:(componentViewport?.y||0)+0+0+0+0+0+16,children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-f66e4y-container\",id:`${layoutId}-f66e4y`,layoutDependency:layoutDependency,layoutId:\"Xu0t4tKJz-container\",ref:ref4,children:[/*#__PURE__*/_jsx(ButtonsNavButton,{aV_o9aCOb:aV_o9aCObizu9gt({overlay:overlay1}),FKwB4UL9z:PiR5q7_Ls,height:\"100%\",id:\"Xu0t4tKJz\",layoutId:\"Xu0t4tKJz\",QsIcUGujF:\"Docs\",variant:\"VgtzLAQ7z\",wFwmGsvMB:wFwmGsvMBizu9gt({overlay:overlay1}),width:\"100%\",WjB0saJsU:\"https://www.twingate.com/docs/\"}),/*#__PURE__*/_jsx(AnimatePresence,{children:overlay1.visible&&/*#__PURE__*/_jsx(Floating,{alignment:\"start\",anchorRef:ref4,className:cx(serializationHash,classNames,...sharedStyleClassNames),collisionDetection:true,collisionDetectionPadding:20,\"data-framer-portal-id\":`${layoutId}-f66e4y`,offsetX:0,offsetY:6,onDismiss:overlay1.hide,placement:\"bottom\",portalSelector:\"#overlay\",safeArea:true,zIndex:11,children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:739,y:(componentViewport?.y||0)+0+0+0+0+0+16+0,children:/*#__PURE__*/_jsx(MotionDivWithFX,{__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,animate:animation1,className:\"framer-103z4fy-container\",exit:animation,initial:animation2,layoutDependency:layoutDependency,layoutId:\"eE8ROuP79-container\",ref:ref5,role:\"dialog\",children:/*#__PURE__*/_jsx(NavMenu,{height:\"100%\",id:\"eE8ROuP79\",layoutId:\"eE8ROuP79\",variant:\"kLY1RZQuF\",width:\"100%\"})})})})})]})})})}),/*#__PURE__*/_jsx(Overlay,{blockDocumentScrolling:false,children:overlay2=>/*#__PURE__*/_jsx(_Fragment,{children:/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"hEjPykOVp\"},implicitPathVariables:undefined},{href:{webPageId:\"hEjPykOVp\"},implicitPathVariables:undefined}],children:resolvedLinks=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:34,y:(componentViewport?.y||0)+0+0+0+0+0+16,children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-8rwdjx-container\",id:`${layoutId}-8rwdjx`,layoutDependency:layoutDependency,layoutId:\"WpmDdU8Km-container\",ref:ref6,children:[/*#__PURE__*/_jsx(ButtonsNavButton,{aV_o9aCOb:aV_o9aCObizu9gt({overlay:overlay2}),FKwB4UL9z:PiR5q7_Ls,height:\"100%\",id:\"WpmDdU8Km\",layoutId:\"WpmDdU8Km\",QsIcUGujF:\"Customers\",variant:\"VgtzLAQ7z\",wFwmGsvMB:wFwmGsvMBizu9gt({overlay:overlay2}),width:\"100%\",WjB0saJsU:resolvedLinks[0],...addPropertyOverrides({kVoSQin7b:{WjB0saJsU:resolvedLinks[1]}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(AnimatePresence,{children:overlay2.visible&&/*#__PURE__*/_jsx(Floating,{alignment:\"start\",anchorRef:ref6,className:cx(serializationHash,classNames,...sharedStyleClassNames),collisionDetection:true,collisionDetectionPadding:20,\"data-framer-portal-id\":`${layoutId}-8rwdjx`,offsetX:0,offsetY:6,onDismiss:overlay2.hide,placement:\"bottom\",portalSelector:\"#overlay\",safeArea:true,zIndex:11,children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:739,y:(componentViewport?.y||0)+0+0+0+0+0+16+0,children:/*#__PURE__*/_jsx(MotionDivWithFX,{__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,animate:animation1,className:\"framer-14vmcre-container\",exit:animation,initial:animation2,layoutDependency:layoutDependency,layoutId:\"obCdWLE4I-container\",ref:ref7,role:\"dialog\",children:/*#__PURE__*/_jsx(NavMenu,{height:\"100%\",id:\"obCdWLE4I\",layoutId:\"obCdWLE4I\",variant:\"k97SfXEaS\",width:\"100%\"})})})})})]})})})})}),/*#__PURE__*/_jsx(Overlay,{blockDocumentScrolling:false,children:overlay3=>/*#__PURE__*/_jsx(_Fragment,{children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:34,y:(componentViewport?.y||0)+0+0+0+0+0+16,children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-cuq8n2-container\",id:`${layoutId}-cuq8n2`,layoutDependency:layoutDependency,layoutId:\"TX9mHhR92-container\",ref:ref8,children:[/*#__PURE__*/_jsx(ButtonsNavButton,{aV_o9aCOb:aV_o9aCObizu9gt({overlay:overlay3}),FKwB4UL9z:PiR5q7_Ls,height:\"100%\",id:\"TX9mHhR92\",layoutId:\"TX9mHhR92\",QsIcUGujF:\"Resources\",variant:\"VgtzLAQ7z\",wFwmGsvMB:wFwmGsvMBizu9gt({overlay:overlay3}),width:\"100%\"}),/*#__PURE__*/_jsx(AnimatePresence,{children:overlay3.visible&&/*#__PURE__*/_jsx(Floating,{alignment:\"start\",anchorRef:ref8,className:cx(serializationHash,classNames,...sharedStyleClassNames),collisionDetection:true,collisionDetectionPadding:20,\"data-framer-portal-id\":`${layoutId}-cuq8n2`,offsetX:0,offsetY:6,onDismiss:overlay3.hide,placement:\"bottom\",portalSelector:\"#overlay\",safeArea:true,zIndex:11,children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:739,y:(componentViewport?.y||0)+0+0+0+0+0+16+0,children:/*#__PURE__*/_jsx(MotionDivWithFX,{__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,animate:animation1,className:\"framer-9fjn7j-container\",exit:animation,initial:animation2,layoutDependency:layoutDependency,layoutId:\"OYq2TAQcH-container\",ref:ref9,role:\"dialog\",children:/*#__PURE__*/_jsx(NavMenu,{height:\"100%\",id:\"OYq2TAQcH\",layoutId:\"OYq2TAQcH\",variant:\"IhaMrdzYo\",width:\"100%\"})})})})})]})})})}),/*#__PURE__*/_jsx(Overlay,{blockDocumentScrolling:false,children:overlay4=>/*#__PURE__*/_jsx(_Fragment,{children:/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"fM499XwEy\"},implicitPathVariables:undefined},{href:{webPageId:\"fM499XwEy\"},implicitPathVariables:undefined}],children:resolvedLinks1=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:34,y:(componentViewport?.y||0)+0+0+0+0+0+16,children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1n6kgo6-container\",id:`${layoutId}-1n6kgo6`,layoutDependency:layoutDependency,layoutId:\"p3XwphC04-container\",ref:ref10,children:[/*#__PURE__*/_jsx(ButtonsNavButton,{aV_o9aCOb:aV_o9aCObizu9gt({overlay:overlay4}),FKwB4UL9z:PiR5q7_Ls,height:\"100%\",id:\"p3XwphC04\",layoutId:\"p3XwphC04\",QsIcUGujF:\"Partners\",variant:\"VgtzLAQ7z\",wFwmGsvMB:wFwmGsvMBizu9gt({overlay:overlay4}),width:\"100%\",WjB0saJsU:resolvedLinks1[0],...addPropertyOverrides({kVoSQin7b:{WjB0saJsU:resolvedLinks1[1]}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(AnimatePresence,{children:overlay4.visible&&/*#__PURE__*/_jsx(Floating,{alignment:\"start\",anchorRef:ref10,className:cx(serializationHash,classNames,...sharedStyleClassNames),collisionDetection:true,collisionDetectionPadding:20,\"data-framer-portal-id\":`${layoutId}-1n6kgo6`,offsetX:0,offsetY:6,onDismiss:overlay4.hide,placement:\"bottom\",portalSelector:\"#overlay\",safeArea:true,zIndex:11,children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:739,y:(componentViewport?.y||0)+0+0+0+0+0+16+0,children:/*#__PURE__*/_jsx(MotionDivWithFX,{__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,animate:animation1,className:\"framer-1hcu3k-container\",exit:animation,initial:animation2,layoutDependency:layoutDependency,layoutId:\"oSeSslFSb-container\",ref:ref11,role:\"dialog\",children:/*#__PURE__*/_jsx(NavMenu,{height:\"100%\",id:\"oSeSslFSb\",layoutId:\"oSeSslFSb\",variant:\"QJqGglw8e\",width:\"100%\"})})})})})]})})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"HDyY4Pa7U\"},implicitPathVariables:undefined},{href:{webPageId:\"HDyY4Pa7U\"},implicitPathVariables:undefined}],children:resolvedLinks2=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:34,y:(componentViewport?.y||0)+0+0+0+0+0+16,children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1kblhu9-container\",layoutDependency:layoutDependency,layoutId:\"CJq5z0a40-container\",children:/*#__PURE__*/_jsx(ButtonsNavButton,{aV_o9aCOb:aV_o9aCOb6ughds,FKwB4UL9z:PiR5q7_Ls,height:\"100%\",id:\"CJq5z0a40\",layoutId:\"CJq5z0a40\",QsIcUGujF:\"Pricing\",variant:\"VgtzLAQ7z\",wFwmGsvMB:wFwmGsvMB6ughds,width:\"100%\",WjB0saJsU:resolvedLinks2[0],...addPropertyOverrides({kVoSQin7b:{WjB0saJsU:resolvedLinks2[1]}},baseVariant,gestureVariant)})})})})]})]}),isDisplayed2()&&/*#__PURE__*/_jsx(ComponentViewportProvider,{height:34,y:(componentViewport?.y||0)+0+0+0+15,children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-62iti4-container\",layoutDependency:layoutDependency,layoutId:\"Uvab2viYj-container\",children:/*#__PURE__*/_jsx(NavPrimaryNavRightCopy,{height:\"100%\",id:\"Uvab2viYj\",layoutId:\"Uvab2viYj\",style:{height:\"100%\"},variant:YPx0WXa7x,width:\"100%\",...addPropertyOverrides({HdtAnp6Dh:{variant:\"u9zShA4FB\"},HuwE5BTTZ:{variant:\"u9zShA4FB\"},VPyheSmsX:{variant:\"u9zShA4FB\"},zA9dvSi0U:{variant:\"u9zShA4FB\"}},baseVariant,gestureVariant)})})}),isDisplayed(smQ_kJfRy)&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-z4ran6\",\"data-framer-name\":\"Shadow\",layoutDependency:layoutDependency,layoutId:\"nj8CDLKzu\",style:{boxShadow:\"0px 0.5px 0px 0px rgba(255, 255, 255, 0.1)\"}})]})]})]})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-3rKxF.framer-1uz4zvn, .framer-3rKxF .framer-1uz4zvn { display: block; }\",\".framer-3rKxF.framer-107dm4a { align-content: flex-start; align-items: flex-start; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: 64px; justify-content: flex-start; padding: 0px; position: relative; width: 1200px; }\",\".framer-3rKxF .framer-sntln7 { align-content: flex-end; align-items: flex-end; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; left: 0px; overflow: visible; padding: 0px; pointer-events: none; position: absolute; right: 0px; top: 0px; z-index: 4; }\",\".framer-3rKxF .framer-1vvd3w5 { bottom: -600px; cursor: default; flex: none; left: 0px; overflow: visible; position: absolute; right: 0px; top: 0px; }\",\".framer-3rKxF .framer-1twbzb0 { align-content: flex-end; align-items: flex-end; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; max-width: 400px; overflow: visible; padding: 12px; pointer-events: none; position: relative; width: 100%; }\",\".framer-3rKxF .framer-15p4ywo-container { flex: none; height: auto; position: relative; width: 100%; }\",\".framer-3rKxF .framer-1g4v7z6 { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: 64px; justify-content: center; overflow: visible; padding: 0px 24px 0px 24px; pointer-events: auto; position: relative; width: 100%; z-index: 3; }\",\".framer-3rKxF .framer-vuz043 { bottom: 0px; flex: none; left: 0px; overflow: visible; position: absolute; right: 0px; top: 0px; }\",\".framer-3rKxF .framer-1jr8qy9 { align-content: center; align-items: center; display: flex; flex: 1 0 0px; flex-direction: row; flex-wrap: nowrap; height: min-content; justify-content: space-between; max-width: 1056px; overflow: visible; padding: 0px; position: relative; width: 1px; }\",\".framer-3rKxF .framer-1dsbtmo { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: 64px; justify-content: center; overflow: hidden; padding: 0px; position: relative; width: min-content; }\",\".framer-3rKxF .framer-1urzw1g { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; text-decoration: none; width: min-content; }\",\".framer-3rKxF .framer-1v0o4uw { aspect-ratio: 4.3 / 1; flex: none; height: var(--framer-aspect-ratio-supported, 20px); position: relative; width: 86px; }\",\".framer-3rKxF .framer-cor9mr { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: 100%; justify-content: center; overflow: visible; padding: 2px 0px 0px 0px; position: relative; width: min-content; }\",\".framer-3rKxF .framer-uni33f-container, .framer-3rKxF .framer-f66e4y-container, .framer-3rKxF .framer-8rwdjx-container, .framer-3rKxF .framer-cuq8n2-container, .framer-3rKxF .framer-1n6kgo6-container { cursor: pointer; flex: none; height: auto; position: relative; width: auto; }\",\".framer-3rKxF .framer-15yjsss-container, .framer-3rKxF .framer-103z4fy-container, .framer-3rKxF .framer-14vmcre-container, .framer-3rKxF .framer-9fjn7j-container, .framer-3rKxF .framer-1hcu3k-container { height: auto; position: relative; width: auto; }\",\".framer-3rKxF .framer-1kblhu9-container { flex: none; height: auto; position: relative; width: auto; }\",\".framer-3rKxF .framer-62iti4-container { flex: none; height: 34px; position: relative; width: auto; z-index: 3; }\",\".framer-3rKxF .framer-z4ran6 { bottom: 1px; flex: none; height: 1px; left: 0px; overflow: visible; position: absolute; right: 0px; z-index: 2; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-3rKxF.framer-107dm4a, .framer-3rKxF .framer-sntln7, .framer-3rKxF .framer-1twbzb0, .framer-3rKxF .framer-1g4v7z6, .framer-3rKxF .framer-1dsbtmo, .framer-3rKxF .framer-1urzw1g, .framer-3rKxF .framer-cor9mr { gap: 0px; } .framer-3rKxF.framer-107dm4a > *, .framer-3rKxF .framer-sntln7 > *, .framer-3rKxF .framer-1twbzb0 > * { margin: 0px; margin-bottom: calc(0px / 2); margin-top: calc(0px / 2); } .framer-3rKxF.framer-107dm4a > :first-child, .framer-3rKxF .framer-sntln7 > :first-child, .framer-3rKxF .framer-1twbzb0 > :first-child { margin-top: 0px; } .framer-3rKxF.framer-107dm4a > :last-child, .framer-3rKxF .framer-sntln7 > :last-child, .framer-3rKxF .framer-1twbzb0 > :last-child { margin-bottom: 0px; } .framer-3rKxF .framer-1g4v7z6 > *, .framer-3rKxF .framer-cor9mr > * { margin: 0px; margin-left: calc(0px / 2); margin-right: calc(0px / 2); } .framer-3rKxF .framer-1g4v7z6 > :first-child, .framer-3rKxF .framer-1dsbtmo > :first-child, .framer-3rKxF .framer-1urzw1g > :first-child, .framer-3rKxF .framer-cor9mr > :first-child { margin-left: 0px; } .framer-3rKxF .framer-1g4v7z6 > :last-child, .framer-3rKxF .framer-1dsbtmo > :last-child, .framer-3rKxF .framer-1urzw1g > :last-child, .framer-3rKxF .framer-cor9mr > :last-child { margin-right: 0px; } .framer-3rKxF .framer-1dsbtmo > *, .framer-3rKxF .framer-1urzw1g > * { margin: 0px; margin-left: calc(10px / 2); margin-right: calc(10px / 2); } }\",\".framer-3rKxF.framer-v-pg7psv.framer-107dm4a, .framer-3rKxF.framer-v-1oxt3ju.framer-107dm4a, .framer-3rKxF.framer-v-zzvngj.framer-107dm4a, .framer-3rKxF.framer-v-1iyr5bs.framer-107dm4a, .framer-3rKxF.framer-v-16x6b3c.framer-107dm4a, .framer-3rKxF.framer-v-1ai3dvm.framer-107dm4a { width: 800px; }\",\".framer-3rKxF.framer-v-pg7psv .framer-1twbzb0, .framer-3rKxF.framer-v-zzvngj .framer-1twbzb0, .framer-3rKxF.framer-v-1iyr5bs .framer-1twbzb0, .framer-3rKxF.framer-v-1ai3dvm .framer-1twbzb0 { max-height: 100%; }\",\".framer-3rKxF.framer-v-1oxt3ju .framer-sntln7, .framer-3rKxF.framer-v-1oxt3ju .framer-15p4ywo-container, .framer-3rKxF.framer-v-16x6b3c .framer-sntln7, .framer-3rKxF.framer-v-16x6b3c .framer-15p4ywo-container { pointer-events: auto; }\",\".framer-3rKxF.framer-v-1dud3sj.framer-107dm4a { height: min-content; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 64\n * @framerIntrinsicWidth 1200\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"VPyheSmsX\":{\"layout\":[\"fixed\",\"fixed\"]},\"HuwE5BTTZ\":{\"layout\":[\"fixed\",\"fixed\"]},\"R8hW_WGWO\":{\"layout\":[\"fixed\",\"fixed\"]},\"zA9dvSi0U\":{\"layout\":[\"fixed\",\"fixed\"]},\"HdtAnp6Dh\":{\"layout\":[\"fixed\",\"fixed\"]},\"kVoSQin7b\":{\"layout\":[\"fixed\",\"auto\"]},\"vKl5bg8uJ\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerVariables {\"YPx0WXa7x\":\"actions\",\"smQ_kJfRy\":\"shadow\",\"PiR5q7_Ls\":\"foreground\",\"dqNTFu1r7\":\"bGBlur\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerRqCSc6AzT=withCSS(Component,css,\"framer-3rKxF\");export default FramerRqCSc6AzT;FramerRqCSc6AzT.displayName=\"Nav / Primary Nav \u2013 Core Popover\";FramerRqCSc6AzT.defaultProps={height:64,width:1200};addPropertyControls(FramerRqCSc6AzT,{variant:{options:[\"DKjC_1Y1L\",\"VPyheSmsX\",\"HuwE5BTTZ\",\"R8hW_WGWO\",\"zA9dvSi0U\",\"HdtAnp6Dh\",\"kVoSQin7b\",\"vKl5bg8uJ\"],optionTitles:[\"Desktop\",\"Phone\",\"Phone \u2013\\xa0Open\",\"No Links\",\"MSP\",\"MSP - Open\",\"Desktop \u2013 Partners\",\"Home link\"],title:\"Variant\",type:ControlType.Enum},YPx0WXa7x:NavPrimaryNavRightControls?.[\"variant\"]&&{...NavPrimaryNavRightControls[\"variant\"],defaultValue:\"f1fa5L71s\",description:undefined,hidden:undefined,title:\"Actions\"},smQ_kJfRy:{defaultValue:true,title:\"Shadow\",type:ControlType.Boolean},PiR5q7_Ls:{defaultValue:'var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255)) /* {\"name\":\"White\"} */',title:\"Foreground\",type:ControlType.Color},dqNTFu1r7:{defaultValue:true,title:\"BG Blur\",type:ControlType.Boolean}});addFonts(FramerRqCSc6AzT,[{explicitInter:true,fonts:[]},...NavMobileNavFonts,...ButtonsNavButtonFonts,...NavMenuFonts,...NavPrimaryNavRightCopyFonts],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerRqCSc6AzT\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"64\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"VPyheSmsX\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"HuwE5BTTZ\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"R8hW_WGWO\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"zA9dvSi0U\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"HdtAnp6Dh\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"kVoSQin7b\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"vKl5bg8uJ\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerComponentViewportWidth\":\"true\",\"framerVariables\":\"{\\\"YPx0WXa7x\\\":\\\"actions\\\",\\\"smQ_kJfRy\\\":\\\"shadow\\\",\\\"PiR5q7_Ls\\\":\\\"foreground\\\",\\\"dqNTFu1r7\\\":\\\"bGBlur\\\"}\",\"framerDisplayContentsDiv\":\"false\",\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"1200\",\"framerImmutableVariables\":\"true\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}", "// Generated by Framer (3266cfb)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,Link,RichText,SmartComponentScopedContainer,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import{Icon as Feather}from\"https://framerusercontent.com/modules/f0DboytQenYh21kfme7W/zb1zVBMZJKgPMiedOi0y/Feather.js\";import ButtonsButton from\"https://framerusercontent.com/modules/7AM6DNYiokdKmR3FgvBn/DNb9r8GouMuBcZXr5kzS/AiU29R1w5.js\";const FeatherFonts=getFonts(Feather);const ButtonsButtonFonts=getFonts(ButtonsButton);const cycleOrder=[\"ViTbbpJeL\",\"amkGv8h3m\",\"FhJ9OGgAJ\"];const serializationHash=\"framer-sDYR5\";const variantClassNames={amkGv8h3m:\"framer-v-1uky5fi\",FhJ9OGgAJ:\"framer-v-c0lgbo\",ViTbbpJeL:\"framer-v-2zykdi\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const humanReadableVariantMap={Desktop:\"ViTbbpJeL\",Phone:\"amkGv8h3m\",Tablet:\"FhJ9OGgAJ\"};const getProps=({height,id,width,...props})=>{return{...props,variant:humanReadableVariantMap[props.variant]??props.variant??\"ViTbbpJeL\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"ViTbbpJeL\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);const isDisplayed=()=>{if(baseVariant===\"amkGv8h3m\")return true;return false;};const isDisplayed1=()=>{if(baseVariant===\"amkGv8h3m\")return false;return true;};return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-2zykdi\",className,classNames),\"data-framer-name\":\"Desktop\",layoutDependency:layoutDependency,layoutId:\"ViTbbpJeL\",ref:refBinding,style:{backgroundColor:\"var(--token-c56a32ea-f83e-43cf-bff1-5cd87f6fecfe, rgb(182, 171, 255))\",...style},...addPropertyOverrides({amkGv8h3m:{\"data-framer-name\":\"Phone\"},FhJ9OGgAJ:{\"data-framer-name\":\"Tablet\"}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(Link,{href:\"https://www.twingate.com/webinars/office-hours\",motionChild:true,nodeId:\"zX8cYrOEZ\",openInNewTab:true,scopeId:\"Rv1dlQk6f\",children:/*#__PURE__*/_jsxs(motion.a,{className:\"framer-l5up28 framer-5d7c0e\",layoutDependency:layoutDependency,layoutId:\"zX8cYrOEZ\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1RUIEhvdmVzIE1lZGl1bQ==\",\"--framer-font-family\":'\"TT Hoves Medium\", \"TT Hoves Medium Placeholder\", sans-serif',\"--framer-line-height\":\"1.5em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17)))\"},children:\"Twingate Office Hours\"})}),className:\"framer-pm6w5v\",fonts:[\"CUSTOM;TT Hoves Medium\"],layoutDependency:layoutDependency,layoutId:\"DKIakcc1X\",style:{\"--extracted-r6o4lv\":\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({amkGv8h3m:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1RUIEhvdmVzIE1lZGl1bQ==\",\"--framer-font-family\":'\"TT Hoves Medium\", \"TT Hoves Medium Placeholder\", sans-serif',\"--framer-font-size\":\"13px\",\"--framer-line-height\":\"1.5em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17)))\"},children:\"Twingate Office Hours\"})})}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1uzo9sj\",layoutDependency:layoutDependency,layoutId:\"NsHfAOQto\",children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-12qm7lf\",\"data-framer-name\":\"Workshop\",layoutDependency:layoutDependency,layoutId:\"u2x6uF21Y\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1vvsjkh-container\",isAuthoredByUser:true,isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"vY057nZs2-container\",nodeId:\"vY057nZs2\",rendersWithMotion:true,scopeId:\"Rv1dlQk6f\",children:/*#__PURE__*/_jsx(Feather,{color:\"var(--token-9cd45774-fe90-4931-bc24-bcdad47dc54c, rgb(123, 102, 255))\",height:\"100%\",iconSearch:\"Home\",iconSelection:\"video\",id:\"vY057nZs2\",layoutId:\"vY057nZs2\",mirrored:false,selectByList:true,style:{height:\"100%\",width:\"100%\"},width:\"100%\"})})}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1RUIEhvdmVzIFJlZ3VsYXI=\",\"--framer-font-family\":'\"TT Hoves Regular\", \"TT Hoves Regular Placeholder\", sans-serif',\"--framer-line-height\":\"1.5em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17)))\"},children:\"Live Workshop\"})}),className:\"framer-1fx23bc\",\"data-framer-name\":\"Type\",fonts:[\"CUSTOM;TT Hoves Regular\"],layoutDependency:layoutDependency,layoutId:\"r5KqgtRc_\",style:{\"--extracted-r6o4lv\":\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-g3zwcd\",\"data-framer-name\":\"Date\",layoutDependency:layoutDependency,layoutId:\"kW1yCAnJc\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-q7fzml-container\",isAuthoredByUser:true,isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"IPRHc83RY-container\",nodeId:\"IPRHc83RY\",rendersWithMotion:true,scopeId:\"Rv1dlQk6f\",children:/*#__PURE__*/_jsx(Feather,{color:\"var(--token-9cd45774-fe90-4931-bc24-bcdad47dc54c, rgb(123, 102, 255))\",height:\"100%\",iconSearch:\"Home\",iconSelection:\"calendar\",id:\"IPRHc83RY\",layoutId:\"IPRHc83RY\",mirrored:false,selectByList:true,style:{height:\"100%\",width:\"100%\"},width:\"100%\"})})}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"Q1VTVE9NO1RUIEhvdmVzIFJlZ3VsYXI=\",\"--framer-font-family\":'\"TT Hoves Regular\", \"TT Hoves Regular Placeholder\", sans-serif',\"--framer-line-height\":\"1.5em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17)))\"},children:\"May 29\"})}),className:\"framer-h2qfcf\",\"data-framer-name\":\"Date\",fonts:[\"CUSTOM;TT Hoves Regular\"],layoutDependency:layoutDependency,layoutId:\"XAwTxSlU_\",style:{\"--extracted-r6o4lv\":\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})]})]})]})}),isDisplayed()&&/*#__PURE__*/_jsx(ComponentViewportProvider,{...addPropertyOverrides({amkGv8h3m:{height:20,y:(componentViewport?.y||0)+(4+((componentViewport?.height||53.5)-8-20)/2)}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-5qbhew-container\",layoutDependency:layoutDependency,layoutId:\"qezfymrpl-container\",nodeId:\"qezfymrpl\",rendersWithMotion:true,scopeId:\"Rv1dlQk6f\",children:/*#__PURE__*/_jsx(ButtonsButton,{CiwGQDcAN:\"BNbfbktEW\",csPpyV4tk:\"m9F2Vlw0F\",DZNn6_WWp:\"https://www.twingate.com/webinars/office-hours\",FdDV8gLxh:\"var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95))\",gW2IdKNHn:\"Register\",height:\"100%\",id:\"qezfymrpl\",layoutId:\"qezfymrpl\",OA2ahGR0N:false,style:{height:\"100%\"},uirRaCarc:true,Urz2Ffy21:\"Terraform\",variant:\"QOjFoD6FQ\",width:\"100%\",WJoF2TywT:\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\",xjfxHTVGH:true})})}),isDisplayed1()&&/*#__PURE__*/_jsx(ComponentViewportProvider,{height:20,y:(componentViewport?.y||0)+(0+((componentViewport?.height||32)-0-20)/2),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1fm0zna-container\",layoutDependency:layoutDependency,layoutId:\"Gniln03qH-container\",nodeId:\"Gniln03qH\",rendersWithMotion:true,scopeId:\"Rv1dlQk6f\",children:/*#__PURE__*/_jsx(ButtonsButton,{CiwGQDcAN:\"BNbfbktEW\",csPpyV4tk:\"m9F2Vlw0F\",DZNn6_WWp:\"https://www.twingate.com/webinars/office-hours\",FdDV8gLxh:\"var(--token-3f8e0110-e6bf-44dd-b47f-9ff8ecf01b7f, rgb(238, 243, 95))\",gW2IdKNHn:\"Register\",height:\"100%\",id:\"Gniln03qH\",layoutId:\"Gniln03qH\",OA2ahGR0N:false,style:{height:\"100%\"},uirRaCarc:true,Urz2Ffy21:\"Terraform\",variant:\"QOjFoD6FQ\",width:\"100%\",WJoF2TywT:\"var(--token-94bd9d9a-3125-4cdd-b304-365d49669465, rgb(14, 15, 17))\",xjfxHTVGH:true})})})]})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-sDYR5.framer-5d7c0e, .framer-sDYR5 .framer-5d7c0e { display: block; }\",\".framer-sDYR5.framer-2zykdi { align-content: center; align-items: center; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 54px; height: 32px; justify-content: center; padding: 0px; position: relative; width: 1200px; }\",\".framer-sDYR5 .framer-l5up28 { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 12px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; text-decoration: none; width: min-content; }\",\".framer-sDYR5 .framer-pm6w5v, .framer-sDYR5 .framer-1fx23bc, .framer-sDYR5 .framer-h2qfcf { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-sDYR5 .framer-1uzo9sj { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: min-content; }\",\".framer-sDYR5 .framer-12qm7lf, .framer-sDYR5 .framer-g3zwcd { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: hidden; padding: 0px; position: relative; width: min-content; }\",\".framer-sDYR5 .framer-1vvsjkh-container, .framer-sDYR5 .framer-q7fzml-container { flex: none; height: 16px; position: relative; width: 16px; z-index: 1; }\",\".framer-sDYR5 .framer-5qbhew-container, .framer-sDYR5 .framer-1fm0zna-container { flex: none; height: 20px; position: relative; width: auto; }\",\".framer-sDYR5.framer-v-1uky5fi.framer-2zykdi { gap: unset; height: min-content; justify-content: space-between; padding: 4px 16px 4px 16px; width: 380px; }\",\".framer-sDYR5.framer-v-1uky5fi .framer-l5up28 { align-content: flex-start; align-items: flex-start; flex-direction: column; gap: 2px; order: 0; }\",\".framer-sDYR5.framer-v-1uky5fi .framer-5qbhew-container { order: 1; }\",\".framer-sDYR5.framer-v-c0lgbo.framer-2zykdi { width: 800px; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 32\n * @framerIntrinsicWidth 1200\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"amkGv8h3m\":{\"layout\":[\"fixed\",\"auto\"]},\"FhJ9OGgAJ\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerRv1dlQk6f=withCSS(Component,css,\"framer-sDYR5\");export default FramerRv1dlQk6f;FramerRv1dlQk6f.displayName=\"Nav banner/Desktop\";FramerRv1dlQk6f.defaultProps={height:32,width:1200};addPropertyControls(FramerRv1dlQk6f,{variant:{options:[\"ViTbbpJeL\",\"amkGv8h3m\",\"FhJ9OGgAJ\"],optionTitles:[\"Desktop\",\"Phone\",\"Tablet\"],title:\"Variant\",type:ControlType.Enum}});addFonts(FramerRv1dlQk6f,[{explicitInter:true,fonts:[{family:\"TT Hoves Medium\",source:\"custom\",url:\"https://framerusercontent.com/assets/M4cAr8oQzbyO9Ynb0WkinOqcoI.woff2\"},{family:\"TT Hoves Regular\",source:\"custom\",url:\"https://framerusercontent.com/assets/wgABDVIWK1vZ3ZH97n7INv3AEY.woff2\"}]},...FeatherFonts,...ButtonsButtonFonts],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerRv1dlQk6f\",\"slots\":[],\"annotations\":{\"framerComponentViewportWidth\":\"true\",\"framerColorSyntax\":\"true\",\"framerAutoSizeImages\":\"true\",\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"1200\",\"framerDisplayContentsDiv\":\"false\",\"framerImmutableVariables\":\"true\",\"framerIntrinsicHeight\":\"32\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"amkGv8h3m\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"FhJ9OGgAJ\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Rv1dlQk6f.map", "// Generated by Framer (9e4da83)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,getPropertyControls,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import NavPrimaryNavCore from\"https://framerusercontent.com/modules/8Iyxz968nf5QdJlvJvDg/YI6EWDDEMj5UuD7754Ww/DrqqrAzJ3.js\";import NavPrimaryNavCorePopover from\"https://framerusercontent.com/modules/6sOetyaAob2s3xIlrzcO/XlrqZwjJPQVkQMVqdg3C/RqCSc6AzT.js\";import NavBannerDesktop from\"https://framerusercontent.com/modules/98Audp2sji4nGnpc7Hgc/O0AGuS5H6FMargOurAtu/Rv1dlQk6f.js\";const NavBannerDesktopFonts=getFonts(NavBannerDesktop);const NavPrimaryNavCoreFonts=getFonts(NavPrimaryNavCore);const NavPrimaryNavCorePopoverFonts=getFonts(NavPrimaryNavCorePopover);const NavPrimaryNavCoreControls=getPropertyControls(NavPrimaryNavCore);const NavBannerDesktopControls=getPropertyControls(NavBannerDesktop);const cycleOrder=[\"gDzogYuZd\",\"NHPUig0pR\",\"PRaFW6PeD\",\"eYSN92u4e\",\"ITPujHJEG\",\"SZp3I9XcS\",\"G2FHEB54R\",\"mSbCwRBU6\"];const serializationHash=\"framer-8UwDM\";const variantClassNames={eYSN92u4e:\"framer-v-1venrjo\",G2FHEB54R:\"framer-v-huk2th\",gDzogYuZd:\"framer-v-u8l635\",ITPujHJEG:\"framer-v-vvkal7\",mSbCwRBU6:\"framer-v-1b1a3k3\",NHPUig0pR:\"framer-v-1m35a6r\",PRaFW6PeD:\"framer-v-1ot2ct8\",SZp3I9XcS:\"framer-v-eaxxbe\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const humanReadableEnumMap={\"Desktop - MSP\":\"HoUu2fI1L\",\"Desktop \u2013\\xa0Home\":\"NUfbp9gV9\",Desktop:\"f1fa5L71s\",Phone:\"We5skBAdz\"};const humanReadableEnumMap1={Desktop:\"ViTbbpJeL\",Phone:\"amkGv8h3m\",Tablet:\"FhJ9OGgAJ\"};const humanReadableVariantMap={\"Desktop Popover\":\"mSbCwRBU6\",\"Landing Page (home link)\":\"SZp3I9XcS\",\"Landing Page (no links)\":\"eYSN92u4e\",\"Landing Phone\":\"G2FHEB54R\",\"Phone - MSP\":\"ITPujHJEG\",Desktop:\"gDzogYuZd\",Phone:\"NHPUig0pR\",Tablet:\"PRaFW6PeD\"};const getProps=({actions,banner,bannerBreakpoint,bGBlur,foreground,height,id,shadow,width,...props})=>{return{...props,bJB6Cpf4k:foreground??props.bJB6Cpf4k??\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\",cjfUt_xA0:bGBlur??props.cjfUt_xA0??true,datiB0mOU:humanReadableEnumMap1[bannerBreakpoint]??bannerBreakpoint??props.datiB0mOU??\"ViTbbpJeL\",sBIfpPE42:banner??props.sBIfpPE42??true,tjJZTeoJ5:humanReadableEnumMap[actions]??actions??props.tjJZTeoJ5??\"f1fa5L71s\",variant:humanReadableVariantMap[props.variant]??props.variant??\"gDzogYuZd\",WQa2_EmDN:shadow??props.WQa2_EmDN??true};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,tjJZTeoJ5,WQa2_EmDN,bJB6Cpf4k,cjfUt_xA0,sBIfpPE42,datiB0mOU,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"gDzogYuZd\",variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);const ref1=React.useRef(null);const isDisplayed=()=>{if([\"NHPUig0pR\",\"PRaFW6PeD\",\"eYSN92u4e\",\"ITPujHJEG\",\"SZp3I9XcS\",\"G2FHEB54R\"].includes(baseVariant))return true;return false;};const isDisplayed1=()=>{if([\"NHPUig0pR\",\"PRaFW6PeD\",\"eYSN92u4e\",\"ITPujHJEG\",\"SZp3I9XcS\",\"G2FHEB54R\"].includes(baseVariant))return false;return true;};const defaultLayoutId=React.useId();const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-u8l635\",className,classNames),\"data-framer-name\":\"Desktop\",layoutDependency:layoutDependency,layoutId:\"gDzogYuZd\",ref:ref??ref1,style:{...style},...addPropertyOverrides({eYSN92u4e:{\"data-framer-name\":\"Landing Page (no links)\"},G2FHEB54R:{\"data-framer-name\":\"Landing Phone\"},ITPujHJEG:{\"data-framer-name\":\"Phone - MSP\"},mSbCwRBU6:{\"data-framer-name\":\"Desktop Popover\"},NHPUig0pR:{\"data-framer-name\":\"Phone\"},PRaFW6PeD:{\"data-framer-name\":\"Tablet\"},SZp3I9XcS:{\"data-framer-name\":\"Landing Page (home link)\"}},baseVariant,gestureVariant),children:[sBIfpPE42&&/*#__PURE__*/_jsx(ComponentViewportProvider,{height:32,width:componentViewport?.width||\"100vw\",y:(componentViewport?.y||0)+0+(((componentViewport?.height||96)-0-96)/2+0+0),...addPropertyOverrides({G2FHEB54R:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||117.5)-0-96)/2+0+0)},ITPujHJEG:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||117.5)-0-96)/2+0+0)},NHPUig0pR:{y:(componentViewport?.y||0)+0+(((componentViewport?.height||117.5)-0-96)/2+0+0)}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-xwy14c-container\",layoutDependency:layoutDependency,layoutId:\"fm8mdIi6I-container\",children:/*#__PURE__*/_jsx(NavBannerDesktop,{height:\"100%\",id:\"fm8mdIi6I\",layoutId:\"fm8mdIi6I\",style:{height:\"100%\",width:\"100%\"},variant:\"ViTbbpJeL\",width:\"100%\",...addPropertyOverrides({eYSN92u4e:{variant:datiB0mOU},G2FHEB54R:{style:{width:\"100%\"},variant:\"amkGv8h3m\"},ITPujHJEG:{style:{width:\"100%\"},variant:\"amkGv8h3m\"},NHPUig0pR:{style:{width:\"100%\"},variant:\"amkGv8h3m\"},PRaFW6PeD:{variant:\"FhJ9OGgAJ\"}},baseVariant,gestureVariant)})})}),isDisplayed()&&/*#__PURE__*/_jsx(ComponentViewportProvider,{...addPropertyOverrides({eYSN92u4e:{height:64,width:componentViewport?.width||\"100vw\",y:(componentViewport?.y||0)+0+(((componentViewport?.height||96)-0-96)/2+32+0)},G2FHEB54R:{height:64,width:componentViewport?.width||\"100vw\",y:(componentViewport?.y||0)+0+(((componentViewport?.height||117.5)-0-96)/2+32+0)},ITPujHJEG:{height:64,width:componentViewport?.width||\"100vw\",y:(componentViewport?.y||0)+0+(((componentViewport?.height||117.5)-0-96)/2+32+0)},NHPUig0pR:{height:64,width:componentViewport?.width||\"100vw\",y:(componentViewport?.y||0)+0+(((componentViewport?.height||117.5)-0-96)/2+32+0)},PRaFW6PeD:{height:64,width:componentViewport?.width||\"100vw\",y:(componentViewport?.y||0)+0+(((componentViewport?.height||96)-0-96)/2+32+0)},SZp3I9XcS:{height:64,width:componentViewport?.width||\"100vw\",y:(componentViewport?.y||0)+0+(((componentViewport?.height||96)-0-96)/2+32+0)}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-8sqxzf-container\",layoutDependency:layoutDependency,layoutId:\"CwtiU354h-container\",children:/*#__PURE__*/_jsx(NavPrimaryNavCore,{dqNTFu1r7:cjfUt_xA0,height:\"100%\",id:\"CwtiU354h\",layoutId:\"CwtiU354h\",PiR5q7_Ls:bJB6Cpf4k,smQ_kJfRy:WQa2_EmDN,style:{height:\"100%\",width:\"100%\"},variant:\"yYBsmAK2C\",width:\"100%\",YPx0WXa7x:tjJZTeoJ5,...addPropertyOverrides({eYSN92u4e:{variant:\"vIqAF4tNe\",YPx0WXa7x:\"We5skBAdz\"},G2FHEB54R:{variant:\"scXuOxBX3\",YPx0WXa7x:\"We5skBAdz\"},ITPujHJEG:{variant:\"V3CTLD12k\",YPx0WXa7x:\"We5skBAdz\"},NHPUig0pR:{variant:\"rTXApURFW\",YPx0WXa7x:\"We5skBAdz\"},PRaFW6PeD:{variant:\"rTXApURFW\",YPx0WXa7x:\"We5skBAdz\"},SZp3I9XcS:{variant:\"scXuOxBX3\",YPx0WXa7x:\"We5skBAdz\"}},baseVariant,gestureVariant)})})}),isDisplayed1()&&/*#__PURE__*/_jsx(ComponentViewportProvider,{height:64,width:componentViewport?.width||\"100vw\",y:(componentViewport?.y||0)+0+(((componentViewport?.height||96)-0-96)/2+32+0),children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-8ayq5m-container\",layoutDependency:layoutDependency,layoutId:\"NXTTXmbJK-container\",children:/*#__PURE__*/_jsx(NavPrimaryNavCorePopover,{dqNTFu1r7:true,height:\"100%\",id:\"NXTTXmbJK\",layoutId:\"NXTTXmbJK\",PiR5q7_Ls:\"var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255))\",smQ_kJfRy:true,style:{height:\"100%\",width:\"100%\"},variant:\"DKjC_1Y1L\",width:\"100%\",YPx0WXa7x:\"f1fa5L71s\"})})})]})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-8UwDM.framer-1hcx5i, .framer-8UwDM .framer-1hcx5i { display: block; }\",\".framer-8UwDM.framer-u8l635 { align-content: center; align-items: center; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 1200px; }\",\".framer-8UwDM .framer-xwy14c-container { flex: none; height: 32px; position: relative; width: 100%; }\",\".framer-8UwDM .framer-8sqxzf-container, .framer-8UwDM .framer-8ayq5m-container { flex: none; height: 64px; position: relative; width: 100%; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-8UwDM.framer-u8l635 { gap: 0px; } .framer-8UwDM.framer-u8l635 > * { margin: 0px; margin-bottom: calc(0px / 2); margin-top: calc(0px / 2); } .framer-8UwDM.framer-u8l635 > :first-child { margin-top: 0px; } .framer-8UwDM.framer-u8l635 > :last-child { margin-bottom: 0px; } }\",\".framer-8UwDM.framer-v-1m35a6r.framer-u8l635, .framer-8UwDM.framer-v-vvkal7.framer-u8l635, .framer-8UwDM.framer-v-huk2th.framer-u8l635 { width: 380px; }\",\".framer-8UwDM.framer-v-1m35a6r .framer-xwy14c-container, .framer-8UwDM.framer-v-vvkal7 .framer-xwy14c-container, .framer-8UwDM.framer-v-huk2th .framer-xwy14c-container { height: auto; }\",\".framer-8UwDM.framer-v-1ot2ct8.framer-u8l635 { width: 800px; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 96\n * @framerIntrinsicWidth 1200\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]},\"NHPUig0pR\":{\"layout\":[\"fixed\",\"auto\"]},\"PRaFW6PeD\":{\"layout\":[\"fixed\",\"auto\"]},\"eYSN92u4e\":{\"layout\":[\"fixed\",\"auto\"]},\"ITPujHJEG\":{\"layout\":[\"fixed\",\"auto\"]},\"SZp3I9XcS\":{\"layout\":[\"fixed\",\"auto\"]},\"G2FHEB54R\":{\"layout\":[\"fixed\",\"auto\"]},\"mSbCwRBU6\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerVariables {\"tjJZTeoJ5\":\"actions\",\"WQa2_EmDN\":\"shadow\",\"bJB6Cpf4k\":\"foreground\",\"cjfUt_xA0\":\"bGBlur\",\"sBIfpPE42\":\"banner\",\"datiB0mOU\":\"bannerBreakpoint\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramermWRre6RGT=withCSS(Component,css,\"framer-8UwDM\");export default FramermWRre6RGT;FramermWRre6RGT.displayName=\"Nav / Primary Nav\";FramermWRre6RGT.defaultProps={height:96,width:1200};addPropertyControls(FramermWRre6RGT,{variant:{options:[\"gDzogYuZd\",\"NHPUig0pR\",\"PRaFW6PeD\",\"eYSN92u4e\",\"ITPujHJEG\",\"SZp3I9XcS\",\"G2FHEB54R\",\"mSbCwRBU6\"],optionTitles:[\"Desktop\",\"Phone\",\"Tablet\",\"Landing Page (no links)\",\"Phone - MSP\",\"Landing Page (home link)\",\"Landing Phone\",\"Desktop Popover\"],title:\"Variant\",type:ControlType.Enum},tjJZTeoJ5:NavPrimaryNavCoreControls?.[\"YPx0WXa7x\"]&&{...NavPrimaryNavCoreControls[\"YPx0WXa7x\"],defaultValue:\"f1fa5L71s\",description:undefined,hidden:undefined,title:\"Actions\"},WQa2_EmDN:{defaultValue:true,title:\"Shadow\",type:ControlType.Boolean},bJB6Cpf4k:{defaultValue:'var(--token-87e2a834-dce3-4842-8e11-43fd460dff18, rgb(255, 255, 255)) /* {\"name\":\"White\"} */',title:\"Foreground\",type:ControlType.Color},cjfUt_xA0:{defaultValue:true,title:\"BG Blur\",type:ControlType.Boolean},sBIfpPE42:{defaultValue:true,title:\"Banner\",type:ControlType.Boolean},datiB0mOU:NavBannerDesktopControls?.[\"variant\"]&&{...NavBannerDesktopControls[\"variant\"],defaultValue:\"ViTbbpJeL\",description:undefined,hidden:undefined,title:\"Banner breakpoint\"}});addFonts(FramermWRre6RGT,[{explicitInter:true,fonts:[]},...NavBannerDesktopFonts,...NavPrimaryNavCoreFonts,...NavPrimaryNavCorePopoverFonts],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramermWRre6RGT\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"96\",\"framerIntrinsicWidth\":\"1200\",\"framerDisplayContentsDiv\":\"false\",\"framerContractVersion\":\"1\",\"framerImmutableVariables\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"NHPUig0pR\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"PRaFW6PeD\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"eYSN92u4e\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"ITPujHJEG\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"SZp3I9XcS\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"G2FHEB54R\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"mSbCwRBU6\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerComponentViewportWidth\":\"true\",\"framerVariables\":\"{\\\"tjJZTeoJ5\\\":\\\"actions\\\",\\\"WQa2_EmDN\\\":\\\"shadow\\\",\\\"bJB6Cpf4k\\\":\\\"foreground\\\",\\\"cjfUt_xA0\\\":\\\"bGBlur\\\",\\\"sBIfpPE42\\\":\\\"banner\\\",\\\"datiB0mOU\\\":\\\"bannerBreakpoint\\\"}\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],
  "mappings": "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I,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,QAAQ,CAAC,IAAIC,GAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,iBAAiBN,GAAE,WAAW,CAAC,KAAK,WAAW,EAAE,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,wCAAwC,8FAA8F,EAAE,IAAI,CAAC,EAAE,IAAIM,GAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,iBAAiBN,GAAE,WAAW,CAAC,YAAY,WAAW,EAAE,MAAM,CAAC,KAAK,KAAK,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,wCAAwC,8FAA8F,EAAE,IAAI,CAAC,EAAE,IAAIM,GAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,iBAAiBN,GAAE,WAAW,CAAC,YAAY,WAAW,EAAE,MAAM,CAAC,KAAK,KAAK,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,wCAAwC,8FAA8F,EAAE,IAAI,CAAC,EAAE,IAAIM,GAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,iBAAiBN,GAAE,WAAW,CAAC,YAAY,WAAW,EAAE,MAAM,CAAC,KAAK,KAAK,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,wCAAwC,8FAA8F,EAAE,IAAI,CAAC,EAAE,IAAIM,GAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,iBAAiBN,GAAE,WAAW,CAAC,YAAY,WAAW,EAAE,MAAM,CAAC,KAAK,KAAK,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,wCAAwC,8FAA8F,EAAE,IAAI,CAAC,EAAE,IAAIM,GAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,iBAAiBN,GAAE,WAAW,CAAC,YAAY,WAAW,EAAE,MAAM,CAAC,KAAK,KAAK,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,wCAAwC,8FAA8F,EAAE,IAAI,CAAC,EAAE,IAAIM,GAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,iBAAiBN,GAAE,WAAW,CAAC,YAAY,WAAW,EAAE,MAAM,CAAC,KAAK,KAAK,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,wCAAwC,8FAA8F,EAAE,IAAI,CAAC,EAAE,IAAIM,GAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,iBAAiBN,GAAE,WAAW,CAAC,YAAY,WAAW,EAAE,MAAM,CAAC,KAAK,MAAM,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,wCAAwC,8FAA8F,EAAE,IAAI,CAAC,CAAC,EAAE,gBAAgBO,GAAE,OAAOP,EAAC,CAAC,CAAC,EAAE,YAAY,WAAW,EAASQ,GAAQJ,GAAEK,GAAEL,GAAE,CAAC,UAAU,CAAC,aAAa,GAAG,MAAM,YAAY,KAAKH,EAAE,OAAO,EAAE,UAAU,CAAC,aAAa,iDAAiD,MAAM,QAAQ,KAAKA,EAAE,MAAM,EAAE,UAAU,CAAC,aAAa,GAAG,YAAY,oDAAoD,MAAM,cAAc,KAAKA,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,OAAO,KAAKA,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,QAAQ,KAAKA,EAAE,eAAe,EAAE,UAAU,CAAC,MAAM,OAAO,KAAKA,EAAE,IAAI,EAAE,UAAU,CAAC,aAAa,GAAG,MAAM,UAAU,KAAKA,EAAE,QAAQ,CAAC,CAAC,ECAnn5G,IAAIS,EAAE,YAAYC,EAAE,YAAYC,EAAE,YAAYC,EAAE,YAAYC,EAAE,YAAYC,EAAE,YAAYC,EAAE,YAAYC,EAAE,YAAYC,EAAE,YAAYC,EAAE,YAAYC,EAAE,YAAYC,EAAE,YAAYC,EAAE,CAACC,EAAEC,IAAI,CAAC,GAAGD,GAAa,OAAOA,GAAjB,SAAmB,MAAM,CAAC,GAAGA,EAAE,IAAIC,CAAC,CAAE,EAAEC,GAAE,CAAC,CAAC,MAAM,EAAE,GAAG,YAAY,CAACf,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,uCAAuC,CAACC,CAAC,EAAE,6BAA6B,CAACC,CAAC,EAAE,6BAA6B,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,WAAW,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,6JAAwJ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qBAAgB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oCAAoC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU,eAAe,oBAAoB,8DAA8D,qBAAqB,OAAO,oBAAoB,OAAO,OAAO,MAAM,IAAI,uEAAuE,OAAO,qWAAqW,MAAM,CAAC,YAAY,aAAa,EAAE,MAAM,MAAM,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,sDAAsD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,yCAAyC,CAAC,CAAC,CAAC,EAAE,mNAA8M,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mLAAmL,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,+BAA+B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAE,mDAAgEA,EAAEe,EAAE,CAAC,KAAK,wEAAwE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,IAAiBA,EAAE,KAAK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iCAAiC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU,eAAe,oBAAoB,8DAA8D,qBAAqB,OAAO,oBAAoB,OAAO,OAAO,MAAM,IAAI,uEAAuE,OAAO,qWAAqW,MAAM,CAAC,YAAY,aAAa,EAAE,MAAM,MAAM,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,eAA4BD,EAAEe,EAAE,CAAC,KAAK,mGAAmG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uDAAuD,CAAC,CAAC,CAAC,EAAE,mFAAmF,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,kDAAkD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,kHAAkH,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+BAA+B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wKAA8J,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAoBD,EAAEe,EAAE,CAAC,KAAK,kDAAkD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,EAAE,8GAAyG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAoBD,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAE,wCAAwC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,2CAAwDD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,4EAA4E,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAoBD,EAAEe,EAAE,CAAC,KAAK,kDAAkD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,gEAAgE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6GAAmG,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,mIAAgJD,EAAEe,EAAE,CAAC,KAAK,qDAAqD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oCAAoC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6HAA6H,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uIAAkI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kBAAkB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mJAA8I,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2FAA2F,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,yCAAyC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAgB,CAAC,CAAC,CAAC,EAAE,oCAAoC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,qDAAqD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,2DAA2D,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,mDAAmD,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,yCAAyC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,iEAAiE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2GAAmHD,EAAEe,EAAE,CAAC,KAAK,gCAAgC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,qBAAkCA,EAAEe,EAAE,CAAC,KAAK,6BAA6B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,wCAAwC,CAACC,CAAC,EAAE,kBAAkB,CAACC,CAAC,EAAE,kBAAkB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,eAAe,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,yLAAyL,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,sJAAoJD,EAAEe,EAAE,CAAC,KAAK,uFAAuF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sOAAsO,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6RAAwR,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kVAAkV,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mBAA2BD,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gCAAgC,CAAC,CAAC,CAAC,EAAE,2GAA2G,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gSAA2R,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oJAAoJ,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+BAA4CD,EAAEe,EAAE,CAAC,KAAK,uFAAuF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,yBAAyB,CAAC,CAAC,CAAC,EAAE,sBAAmCA,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sBAAsB,CAAC,CAAC,CAAC,EAAE,iEAAiE,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2GAAmHD,EAAEe,EAAE,CAAC,KAAK,gCAAgC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,qBAAkCA,EAAEe,EAAE,CAAC,KAAK,mCAAmC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,8BAA8B,CAACC,CAAC,EAAE,oBAAoB,CAACC,CAAC,EAAE,oBAAoB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,cAAc,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,uQAAuQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6bAAwb,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wEAAgFD,EAAE,KAAK,CAAC,SAAS,MAAM,CAAC,EAAE,2MAAsM,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,eAAe,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,4BAA4B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,0HAA0H,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0tBAAqtB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0lBAAglB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kBAAkB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iNAAiN,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,ieAAud,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0PAA0P,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iMAAiM,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kBAAkB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6MAAwM,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8VAA8V,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yJAAsKD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,eAA4BA,EAAEe,EAAE,CAAC,KAAK,yCAAyC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,mFAAmF,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4GAAyHD,EAAEe,EAAE,CAAC,KAAK,4CAA4C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,mGAA2GA,EAAEe,EAAE,CAAC,KAAK,gCAAgC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAE,qBAAkCA,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,yDAAyD,CAACC,CAAC,EAAE,yDAAyD,CAACC,CAAC,EAAE,yDAAyD,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,gBAAgB,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,KAAK,CAAC,SAAS,wDAAwD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2IAA2I,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0QAA0Q,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6IAAwI,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sDAAsD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kOAAkO,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2NAA2N,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wBAAwB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mQAAmQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kNAAkN,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8QAA8Q,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0CAA0C,CAAC,EAAeC,EAAE,KAAK,CAAC,MAAM,CAAC,qBAAqB,OAAO,0BAA0B,QAAQ,sBAAsB,kBAAkB,0BAA0B,MAAM,EAAE,SAAS,CAAcA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAS,CAAcA,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,yCAAyC,CAAC,EAAE,kPAAkP,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yMAAyM,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAS,CAAcA,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,yBAAyB,CAAC,EAAE,yMAAyM,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kMAAkM,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAS,CAAcA,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,gCAAgC,CAAC,EAAE,uMAAuM,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wPAAwP,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAS,CAAcA,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,0CAA0C,CAAC,EAAE,qSAAqS,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gIAAgI,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yDAAyD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gNAAgN,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8NAA8N,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6LAA6L,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6BAA6B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2bAA2b,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oBAAiCD,EAAEe,EAAE,CAAC,KAAK,mDAAmD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2CAA2C,CAAC,CAAC,CAAC,EAAE,8XAA8X,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oGAA4GD,EAAEe,EAAE,CAAC,KAAK,kFAAkF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,iFAAiF,CAACC,CAAC,EAAE,iFAAiF,CAACC,CAAC,EAAE,gFAAgF,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,gBAAgB,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,gFAAgF,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,gFAAgF,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,+FAA+F,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0RAA0R,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,oEAAoE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,sHAAsH,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6DAA6D,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAE,OAAO,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,wCAAwC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAE,OAAO,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,2CAA2C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAE,OAAO,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,6DAA6D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAE,OAAO,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,wDAAwD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAE,OAAO,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAE,OAAO,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAE,OAAO,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAE,OAAO,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,uEAAuE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAE,OAAO,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,6CAA6C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAE,OAAO,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,8BAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,iEAAiE,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qJAAqJ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+JAA+J,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,wDAAwD,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4JAA4J,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2OAA2O,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qPAAqP,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,sDAAsD,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gLAAgL,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mVAAmV,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,kDAAkD,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uHAAuH,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2LAA2L,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iJAAiJ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,2DAA2D,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAS,CAAcA,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,MAAM,CAAC,EAAE,8IAA8I,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4PAA4P,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAS,CAAcA,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,MAAM,CAAC,EAAE,wIAAwI,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kTAAkT,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAS,CAAcA,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,OAAO,CAAC,EAAE,oIAAoI,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mSAAmS,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAS,CAAcA,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,SAAS,CAAC,EAAE,6GAA6G,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mPAAmP,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAS,CAAcA,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,KAAK,CAAC,EAAE,iIAAiI,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4MAA4M,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAS,CAAcA,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,EAAE,4JAAuJ,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uOAAuO,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAS,CAAcA,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,8BAA8B,CAAC,EAAE,wKAAmK,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gTAAgT,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAS,CAAcA,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,QAAQ,CAAC,EAAE,sIAAiI,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6NAA6N,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAS,CAAcA,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,MAAM,CAAC,EAAE,0IAAqI,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sOAAsO,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAS,CAAcA,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,8BAAyB,CAAC,EAAE,4HAA4H,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oQAAoQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,sDAAsD,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+LAA+L,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+VAA+V,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mBAA2BD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,+OAA+O,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uFAAoGD,EAAEe,EAAE,CAAC,KAAK,6DAA6D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,gJAAwJA,EAAEe,EAAE,CAAC,KAAK,kGAAkG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,yDAAsEA,EAAE,KAAK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,kEAAkE,CAACC,CAAC,EAAE,kEAAkE,CAACC,CAAC,EAAE,kEAAkE,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,gBAAgB,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,2FAA2F,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oQAAoQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iNAAiN,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qQAAqQ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,6CAA6C,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gaAAga,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,8BAA8B,CAAC,EAAE,+KAA+K,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,8CAA8C,CAAC,EAAE,uLAAuL,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,6BAA6B,CAAC,EAAE,6JAA6J,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,6CAA6C,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qZAAqZ,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,kCAAkC,CAAC,EAAE,yPAAyP,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,0CAA0C,CAAC,EAAE,mLAAmL,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,4BAA4B,CAAC,EAAE,6KAA6K,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,oDAAoD,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4TAAuT,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6UAAwU,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iHAA4G,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcA,EAAE,KAAK,CAAC,kBAAkB,KAAK,SAAS,CAAcD,EAAE,KAAK,CAAC,SAAS,uCAAuC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yWAAyW,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,kBAAkB,KAAK,MAAM,CAAC,qBAAqB,OAAO,sBAAsB,kBAAkB,2BAA2B,MAAM,EAAE,SAAS,CAAcD,EAAE,KAAK,CAAC,SAAS,wBAAwB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gMAAwMD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,EAAE,sFAAsF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,kBAAkB,KAAK,MAAM,CAAC,qBAAqB,OAAO,sBAAsB,kBAAkB,2BAA2B,MAAM,EAAE,SAAS,CAAcD,EAAE,KAAK,CAAC,SAAS,sCAAsC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0TAA0T,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,mCAAmC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mJAAmJ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uOAAuO,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gPAA2O,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mBAA2BD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,gQAA6QA,EAAEe,EAAE,CAAC,KAAK,6DAA6D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,2GAA2G,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uBAA+BD,EAAEe,EAAE,CAAC,KAAK,kGAAkG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,4DAAyEA,EAAEe,EAAE,CAAC,KAAK,+FAA+F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,4EAA4E,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,yDAAyD,CAACC,CAAC,EAAE,yDAAyD,CAACC,CAAC,EAAE,yDAAyD,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,gBAAgB,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,wDAAwD,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yYAA+X,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qNAAqN,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,wDAAwD,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4GAA4G,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mTAAmT,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kOAAkO,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,qEAAqE,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oKAAoK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,ySAAyS,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,2DAA2D,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mQAAmQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wKAAwK,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,mDAAmD,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wJAAwJ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6JAA6J,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oIAAoI,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,+CAA+C,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iKAA4J,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iaAAia,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,sHAAmID,EAAEe,EAAE,CAAC,KAAK,gCAAgC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,gOAA6OA,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,wDAAwD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,sCAAsC,CAACC,CAAC,EAAE,sCAAsC,CAACC,CAAC,EAAE,sCAAsC,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,gBAAgB,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,qCAAqC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4IAA4I,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+GAA4HD,EAAEe,EAAE,CAAC,KAAK,gFAAgF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4CAA4C,CAAC,CAAC,CAAC,EAAE,8GAA8G,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,mDAAmD,UAAU,eAAe,oBAAoB,6DAA6D,qBAAqB,MAAM,oBAAoB,OAAO,OAAO,MAAM,IAAI,sEAAsE,OAAO,iWAAiW,MAAM,CAAC,YAAY,YAAY,EAAE,MAAM,MAAM,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6aAAqbD,EAAE,KAAK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,MAAM,CAAC,qBAAqB,OAAO,sBAAsB,eAAe,2BAA2B,MAAM,EAAE,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAE,OAAO,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,MAAM,CAAC,qBAAqB,OAAO,sBAAsB,eAAe,2BAA2B,MAAM,EAAE,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAE,OAAO,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,MAAM,CAAC,qBAAqB,OAAO,sBAAsB,eAAe,2BAA2B,MAAM,EAAE,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,OAAO,CAAC,SAAS,iBAAiB,CAAC,EAAeA,EAAE,KAAK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,CAAC,EAAE,+fAA0f,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iQAAoQD,EAAE,KAAK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+NAA+N,CAAC,EAAeC,EAAE,KAAK,CAAC,MAAM,CAAC,qBAAqB,OAAO,0BAA0B,QAAQ,sBAAsB,kBAAkB,0BAA0B,MAAM,EAAE,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,YAAY,CAAC,EAAE,uLAAuL,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,gBAAgB,CAAC,EAAE,qNAAqN,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,oMAAoM,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,wBAAwB,CAAC,EAAE,2RAA2R,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,oBAAoB,CAAC,EAAE,qbAA2a,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2MAA2M,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8NAA8N,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sSAAsS,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6QAAqRD,EAAE,KAAK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wTAAwT,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6UAA6U,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yCAAyC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mRAA+Q,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,giBAAkiB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,OAAO,CAAC,SAAS,+KAA+K,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,+CAA+C,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qWAAgW,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oEAAiFD,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,4eAA4e,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4BAAyCD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,yPAAsQA,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,oIAA+H,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yOAAyO,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gDAA6DD,EAAEe,EAAE,CAAC,KAAK,mGAAmG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,wBAAqCA,EAAEe,EAAE,CAAC,KAAK,gGAAgG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,+DAA+D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,6EAA6E,CAACC,CAAC,EAAE,wDAAwD,CAACC,CAAC,EAAE,uDAAuD,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,gBAAgB,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,qDAAqD,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,qDAAqD,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,4EAA4E,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8DAA8D,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0SAA0S,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2EAAwFD,EAAEe,EAAE,CAAC,KAAK,2BAA2B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,yBAAyB,UAAU,eAAe,oBAAoB,6DAA6D,qBAAqB,OAAO,oBAAoB,OAAO,OAAO,MAAM,IAAI,sEAAsE,OAAO,iWAAiW,MAAM,CAAC,YAAY,aAAa,EAAE,MAAM,MAAM,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,6DAA6D,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4OAA4O,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6LAA6L,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kFAAkF,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,MAAM,CAAC,qBAAqB,OAAO,sBAAsB,kBAAkB,2BAA2B,MAAM,EAAE,SAAsBA,EAAE,IAAI,CAAC,SAAS,sJAAsJ,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,MAAM,CAAC,qBAAqB,OAAO,sBAAsB,kBAAkB,2BAA2B,MAAM,EAAE,SAAsBA,EAAE,IAAI,CAAC,SAAS,0KAA0K,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,kBAAkB,IAAI,MAAM,CAAC,qBAAqB,OAAO,sBAAsB,kBAAkB,2BAA2B,MAAM,EAAE,SAAS,CAAcD,EAAE,IAAI,CAAC,SAAS,sJAAsJ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,0CAA0C,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wIAAwI,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2QAA2Q,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,sDAAsD,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcA,EAAE,KAAK,CAAC,kBAAkB,KAAK,MAAM,CAAC,qBAAqB,OAAO,sBAAsB,kBAAkB,2BAA2B,MAAM,EAAE,SAAS,CAAcD,EAAE,KAAK,CAAC,SAAS,oBAAoB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0MAA0M,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,kBAAkB,KAAK,MAAM,CAAC,qBAAqB,OAAO,sBAAsB,kBAAkB,2BAA2B,MAAM,EAAE,SAAS,CAAcD,EAAE,KAAK,CAAC,SAAS,qBAAqB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wRAAwR,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,kBAAkB,KAAK,MAAM,CAAC,qBAAqB,OAAO,sBAAsB,kBAAkB,2BAA2B,MAAM,EAAE,SAAS,CAAcD,EAAE,KAAK,CAAC,SAAS,6BAA6B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iVAAiV,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,kBAAkB,KAAK,MAAM,CAAC,qBAAqB,OAAO,sBAAsB,kBAAkB,2BAA2B,MAAM,EAAE,SAAS,CAAcD,EAAE,KAAK,CAAC,SAAS,wBAAwB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gQAAgQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,8CAA8C,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yRAAyR,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,gCAAgC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,qEAAqE,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,wCAAwC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iMAAiM,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcA,EAAE,KAAK,CAAC,kBAAkB,KAAK,MAAM,CAAC,qBAAqB,OAAO,sBAAsB,kBAAkB,2BAA2B,MAAM,EAAE,SAAS,CAAcD,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2QAA2Q,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,kBAAkB,KAAK,MAAM,CAAC,qBAAqB,OAAO,sBAAsB,kBAAkB,2BAA2B,MAAM,EAAE,SAAS,CAAcD,EAAE,KAAK,CAAC,SAAS,2BAA2B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qNAAqN,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,kBAAkB,KAAK,MAAM,CAAC,qBAAqB,OAAO,sBAAsB,kBAAkB,2BAA2B,MAAM,EAAE,SAAS,CAAcD,EAAE,KAAK,CAAC,SAAS,mCAAmC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8RAA8R,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,kBAAkB,KAAK,MAAM,CAAC,qBAAqB,OAAO,sBAAsB,kBAAkB,2BAA2B,MAAM,EAAE,SAAS,CAAcD,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kNAAkN,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,kBAAkB,KAAK,MAAM,CAAC,qBAAqB,OAAO,sBAAsB,kBAAkB,2BAA2B,MAAM,EAAE,SAAS,CAAcD,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sPAAsP,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gJAAgJ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4RAA4R,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6NAA6N,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2NAA2N,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBd,EAAE,IAAI,CAAC,SAAS,CAAC,qCAAkDD,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,qCAAqC,CAACC,CAAC,EAAE,qCAAqC,CAACC,CAAC,EAAE,qCAAqC,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,gBAAgB,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,kcAAkc,EAAE,gCAAgC,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,kcAAkc,EAAE,gCAAgC,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,oCAAoC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2HAA2H,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6PAA6P,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gTAAgT,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wDAAwD,CAAC,EAAeA,EAAEgB,EAAE,IAAI,CAAC,UAAU,qBAAqB,MAAM,CAAC,OAAO,OAAO,MAAM,MAAM,EAAE,SAAsBhB,EAAEiB,GAAE,CAAC,oBAAoB,wEAAwE,SAASL,GAAgBZ,EAAEkB,GAAE,CAAC,GAAGN,EAAE,KAAK;AAAA;AAAA;AAAA;AAAA,gCAAgL,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeZ,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,gCAAgC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kHAAkH,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uRAAuR,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0KAA0K,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,qCAAqC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kMAAkM,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+LAA+L,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mIAAmI,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mLAAmL,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6aAA6a,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,mGAAmG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,0DAA0D,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oLAAoL,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2KAA2K,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8LAA8L,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mKAAmK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mOAAmO,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8IAA8I,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gmBAAgmB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6MAA6M,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,2BAA2B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oCAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,uCAAuC,CAACC,CAAC,EAAE,6BAA6B,CAACC,CAAC,EAAE,6BAA6B,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,WAAW,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,iJAA4I,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yHAA+G,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yBAAoB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6BAA6B,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU,eAAe,oBAAoB,6DAA6D,qBAAqB,MAAM,oBAAoB,OAAO,OAAO,MAAM,IAAI,sEAAsE,OAAO,uKAAuK,MAAM,CAAC,YAAY,YAAY,EAAE,MAAM,KAAK,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2BAAmCD,EAAEe,EAAE,CAAC,KAAK,mDAAmD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,EAAE,uFAAuF,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kPAAkP,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+BAA4CD,EAAEe,EAAE,CAAC,KAAK,mDAAmD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,yCAAyC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mCAAmC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU,eAAe,oBAAoB,4DAA4D,qBAAqB,MAAM,oBAAoB,OAAO,OAAO,MAAM,IAAI,qEAAqE,OAAO,iQAAiQ,MAAM,CAAC,YAAY,YAAY,EAAE,MAAM,KAAK,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oBAA4BD,EAAEe,EAAE,CAAC,KAAK,iEAAiE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAE,uBAAoCA,EAAEe,EAAE,CAAC,KAAK,qDAAqD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,sCAAmDD,EAAEe,EAAE,CAAC,KAAK,iEAAiE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,2JAAsJ,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6GAAmG,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAoBD,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,yBAAyB,CAAC,CAAC,CAAC,EAAE,6EAA6E,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,8CAAsDD,EAAEe,EAAE,CAAC,KAAK,kDAAkD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,+EAA+E,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,4EAAyFD,EAAEe,EAAE,CAAC,KAAK,+BAA+B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uIAAkI,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iLAA4K,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,eAAe,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6HAAwH,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAoBD,EAAEe,EAAE,CAAC,KAAK,sFAAsF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAE,6FAA6F,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gGAAsF,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,MAAM,CAAC,qBAAqB,OAAO,sBAAsB,eAAe,2BAA2B,MAAM,EAAE,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,wDAAwD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,MAAM,CAAC,qBAAqB,OAAO,sBAAsB,eAAe,2BAA2B,MAAM,EAAE,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8CAA8C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,MAAM,CAAC,qBAAqB,OAAO,sBAAsB,eAAe,2BAA2B,MAAM,EAAE,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,iEAAiE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sCAAsC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2HAAmID,EAAEe,EAAE,CAAC,KAAK,6DAA6D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,oDAAoD,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,sBAAmCD,EAAEe,EAAE,CAAC,KAAK,8DAA8D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,mJAAmJ,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mGAA8F,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,iCAA8CD,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,gIAAgI,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,uEAAuE,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,kEAA+ED,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gCAA2B,CAAC,CAAC,CAAC,EAAE,qEAAqE,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,kBAA+BD,EAAEe,EAAE,CAAC,KAAK,8DAA8D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,uGAA+GA,EAAEe,EAAE,CAAC,KAAK,wDAAwD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,oBAAiCD,EAAEe,EAAE,CAAC,KAAK,0HAA0H,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,iHAAiH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iCAAyCD,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,4KAAoLA,EAAEe,EAAE,CAAC,KAAK,6EAA6E,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sBAAsB,CAAC,CAAC,CAAC,EAAE,2DAAwEA,EAAEe,EAAE,CAAC,KAAK,kGAAkG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6IAAqJD,EAAEe,EAAE,CAAC,KAAK,mCAAmC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,+BAA+B,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,uEAAuE,CAACC,CAAC,EAAE,oBAAoB,CAACC,CAAC,EAAE,oBAAoB,CAACC,CAAC,EAAE,wHAAwH,CAACC,CAAC,EAAE,WAAW,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,yXAAyX,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iCAAiC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,waAAwa,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qMAAkND,EAAEe,EAAE,CAAC,KAAK,oKAAoK,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU,eAAe,oBAAoB,8DAA8D,qBAAqB,MAAM,oBAAoB,OAAO,OAAO,MAAM,IAAI,uEAAuE,OAAO,uQAAuQ,MAAM,CAAC,YAAY,YAAY,EAAE,MAAM,KAAK,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,0OAAuPD,EAAEe,EAAE,CAAC,KAAK,8HAA8H,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8BAA2CD,EAAEe,EAAE,CAAC,KAAK,8BAA8B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,kFAAkF,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,eAAe,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oIAAoI,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,4MAAyND,EAAEe,EAAE,CAAC,KAAK,+DAA+D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,gIAA6ID,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,mDAAmD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,sIAAmJD,EAAEe,EAAE,CAAC,KAAK,wLAAwL,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,4FAA4F,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4cAAkc,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU,eAAe,oBAAoB,8DAA8D,qBAAqB,OAAO,oBAAoB,OAAO,OAAO,MAAM,IAAI,uEAAuE,OAAO,uQAAuQ,MAAM,CAAC,YAAY,aAAa,EAAE,MAAM,KAAK,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iBAAiB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sbAAsb,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,+GAA+G,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,8HAA8H,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oRAAqQ,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iOAA+OD,EAAE,OAAO,CAAC,SAAS,UAAU,CAAC,EAAE,OAAoBA,EAAE,OAAO,CAAC,SAAS,aAAa,CAAC,EAAE,aAA0BA,EAAE,OAAO,CAAC,SAAS,OAAO,CAAC,EAAE,gIAAgI,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU,eAAe,oBAAoB,8DAA8D,qBAAqB,OAAO,oBAAoB,OAAO,OAAO,MAAM,IAAI,uEAAuE,OAAO,qWAAqW,MAAM,CAAC,YAAY,aAAa,EAAE,MAAM,MAAM,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8BAA8B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gPAAgP,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2CAAwDD,EAAEe,EAAE,CAAC,KAAK,wCAAwC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,sYAA8X,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iPAAiP,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0GAA0G,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU,eAAe,oBAAoB,6DAA6D,qBAAqB,MAAM,oBAAoB,OAAO,OAAO,MAAM,IAAI,sEAAsE,OAAO,oQAAoQ,MAAM,CAAC,YAAY,YAAY,EAAE,MAAM,KAAK,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uFAAoGD,EAAEe,EAAE,CAAC,KAAK,8BAA8B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,sEAAsE,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mBAAmB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0VAAgV,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU,eAAe,oBAAoB,6DAA6D,qBAAqB,OAAO,oBAAoB,OAAO,OAAO,MAAM,IAAI,sEAAsE,OAAO,oQAAoQ,MAAM,CAAC,YAAY,aAAa,EAAE,MAAM,KAAK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,kCAAkC,CAACC,CAAC,EAAE,wBAAwB,CAACC,CAAC,EAAE,wBAAwB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,eAAe,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,uCAA+CD,EAAEe,EAAE,CAAC,KAAK,kDAAkD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oCAAoC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+RAA+R,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8LAA8L,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wDAAwD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+DAA+D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iDAA8DD,EAAEe,EAAE,CAAC,KAAK,kDAAkD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,EAAE,0LAA0L,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iCAAiC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,ibAA4a,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kVAAkV,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qUAA2T,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yCAAyC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+NAA+N,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0LAAqL,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,YAAY,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2aAAia,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+CAA4DD,EAAEe,EAAE,CAAC,KAAK,mDAAmD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,qBAAkCA,EAAEe,EAAE,CAAC,KAAK,kDAAkD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sBAAsB,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8IAAsJD,EAAEe,EAAE,CAAC,KAAK,mCAAmC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,wDAAwD,CAACC,CAAC,EAAE,wBAAwB,CAACC,CAAC,EAAE,wBAAwB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,cAAc,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,oPAA0O,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kDAAkD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qSAAqS,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2PAA2P,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6FAA0GD,EAAEe,EAAE,CAAC,KAAK,gDAAgD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,kNAAkN,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6FAA0GD,EAAEe,EAAE,CAAC,KAAK,kDAAkD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,2YAA2Y,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+EAA+E,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,MAAM,CAAC,qBAAqB,OAAO,sBAAsB,eAAe,2BAA2B,MAAM,EAAE,SAAsBA,EAAE,IAAI,CAAC,SAAS,wLAAwL,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,MAAM,CAAC,qBAAqB,OAAO,sBAAsB,eAAe,2BAA2B,MAAM,EAAE,SAAsBA,EAAE,IAAI,CAAC,SAAS,2FAA2F,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,MAAM,CAAC,qBAAqB,OAAO,sBAAsB,eAAe,2BAA2B,MAAM,EAAE,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,8IAA2JD,EAAEe,EAAE,CAAC,KAAK,uCAAuC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,iEAAiE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oHAAoH,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kCAAkC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uMAAuM,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yXAAsYD,EAAEe,EAAE,CAAC,KAAK,yBAAyB,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,0OAAuPD,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,OAAoBA,EAAEe,EAAE,CAAC,KAAK,yDAAyD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sFAAsF,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,MAAM,CAAC,qBAAqB,OAAO,sBAAsB,eAAe,2BAA2B,MAAM,EAAE,SAAsBA,EAAE,IAAI,CAAC,SAAS,kIAAkI,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,MAAM,CAAC,qBAAqB,OAAO,sBAAsB,eAAe,2BAA2B,MAAM,EAAE,SAAsBA,EAAE,IAAI,CAAC,SAAS,sMAAsM,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,MAAM,CAAC,qBAAqB,OAAO,sBAAsB,eAAe,2BAA2B,MAAM,EAAE,SAAsBA,EAAE,IAAI,CAAC,SAAS,4MAA4M,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU,eAAe,oBAAoB,6DAA6D,qBAAqB,OAAO,oBAAoB,OAAO,OAAO,MAAM,IAAI,sEAAsE,OAAO,oQAAoQ,MAAM,CAAC,YAAY,aAAa,EAAE,MAAM,MAAM,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0iBAA0iB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6JAA0KD,EAAE,SAAS,CAAC,SAAS,wDAAwD,CAAC,EAAE,qKAAqK,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU,eAAe,oBAAoB,8DAA8D,qBAAqB,MAAM,oBAAoB,MAAM,OAAO,MAAM,IAAI,uEAAuE,OAAO,4EAA4E,MAAM,CAAC,YAAY,WAAW,EAAE,MAAM,KAAK,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8XAAsYD,EAAEe,EAAE,CAAC,KAAK,kEAAkE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,OAAoBA,EAAEe,EAAE,CAAC,KAAK,iDAAiD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+BAA+B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2MAAwND,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,yCAAyC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,wCAAwC,CAACC,CAAC,EAAE,iCAAiC,CAACC,CAAC,EAAE,iCAAiC,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,eAAe,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,qEAAqE,OAAO,gQAAgQ,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,8GAAsHD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,mCAAmC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wLAAwL,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+JAA4KD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sBAAsB,CAAC,CAAC,CAAC,EAAE,8KAA8K,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4DAAuD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAqBD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,iIAA8IA,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,uCAAoDA,EAAEe,EAAE,CAAC,KAAK,yCAAyC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,kEAAkE,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8BAA8B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2IAAiI,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4JAAyKD,EAAEe,EAAE,CAAC,KAAK,sGAAsG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mCAAmC,CAAC,CAAC,CAAC,EAAE,qHAAqH,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kFAAqFD,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,yCAAyC,CAAC,CAAC,CAAC,EAAE,oJAAoJ,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sIAAiI,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,aAA0BD,EAAEe,EAAE,CAAC,KAAK,uEAAuE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,uYAAmX,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,yCAAyC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,uRAAuR,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8EAA8E,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2DAA2D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU,eAAe,oBAAoB,8DAA8D,qBAAqB,OAAO,oBAAoB,OAAO,OAAO,MAAM,IAAI,uEAAuE,OAAO,qWAAqW,MAAM,CAAC,YAAY,aAAa,EAAE,MAAM,MAAM,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4JAAyKD,EAAEe,EAAE,CAAC,KAAK,6BAA6B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oUAAoU,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sIAAsI,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,eAAe,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8TAAoT,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uVAAkV,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mGAAgHD,EAAEe,EAAE,CAAC,KAAK,wCAAwC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,mOAAmO,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2WAA2W,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iEAA8ED,EAAEe,EAAE,CAAC,KAAK,yCAAyC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,QAAqBA,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,4FAAoGA,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2GAAmHD,EAAEe,EAAE,CAAC,KAAK,gCAAgC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,qBAAkCA,EAAEe,EAAE,CAAC,KAAK,mCAAmC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,wCAAwC,CAACC,CAAC,EAAE,mBAAmB,CAACC,CAAC,EAAE,0BAA0B,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,eAAe,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,sKAAsK,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,6DAAqED,EAAEe,EAAE,CAAC,KAAK,8DAA8D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,+PAA0P,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uRAAuR,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sPAAsP,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yZAAsaD,EAAE,KAAK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wBAAwB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0GAA0G,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8OAAyO,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iDAA8DD,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,+FAA4GA,EAAE,KAAK,CAAC,CAAC,EAAE,qJAA2I,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,0SAA6SD,EAAE,KAAK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kCAAkC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8CAA8C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2hBAAshB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mBAA2BD,EAAEe,EAAE,CAAC,KAAK,mDAAmD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,yCAAyC,CAAC,CAAC,CAAC,EAAE,8TAAyT,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2NAA2N,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+FAA4GD,EAAEe,EAAE,CAAC,KAAK,wCAAwC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAE,iMAAyMA,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,qLAAqL,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gdAAic,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yJAAiKD,EAAEe,EAAE,CAAC,KAAK,kDAAkD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,QAAqBA,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAuBA,EAAEe,EAAE,CAAC,KAAK,6DAA6D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAgB,CAAC,CAAC,CAAC,EAAE,iFAAiF,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6CAA6C,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,0BAAkCD,EAAEe,EAAE,CAAC,KAAK,8DAA8D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,wHAAwH,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kdAAwc,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4KAA4K,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mPAAmP,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wEAAgFD,EAAEe,EAAE,CAAC,KAAK,8DAA8D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,6GAAqHA,EAAEe,EAAE,CAAC,KAAK,gCAAgC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,qBAAkCA,EAAEe,EAAE,CAAC,KAAK,mCAAmC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,+CAA+C,CAACC,CAAC,EAAE,oCAAoC,CAACC,CAAC,EAAE,oCAAoC,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,eAAe,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,0NAAqN,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+DAA0D,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oHAAoH,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,0BAA0B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+JAAkKD,EAAEe,EAAE,CAAC,KAAK,0BAA0B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAE,6MAAwM,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+RAAqR,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iCAAiC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uCAAoDD,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,EAAE,oNAAoN,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+KAAuLD,EAAE,KAAK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wFAAwF,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,qHAAqH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mMAAmM,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,UAAuBD,EAAEe,EAAE,CAAC,KAAK,qHAAqH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,8RAA8R,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qFAAqF,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAqBD,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,iTAAiT,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wGAAwG,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uEAAuE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,yEAAyE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0QAAgQ,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uBAAoCD,EAAEe,EAAE,CAAC,KAAK,yEAAyE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sBAAsB,CAAC,CAAC,CAAC,EAAE,4KAAyLA,EAAE,KAAK,CAAC,SAAS,MAAM,CAAC,EAAE,cAAc,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,CAAC,EAAE,yEAAsFA,EAAEe,EAAE,CAAC,KAAK,kHAAkH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,sEAAsE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,iDAAiD,CAACC,CAAC,EAAE,sCAAsC,CAACC,CAAC,EAAE,sCAAsC,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,eAAe,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,sLAAiL,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uLAAkL,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sFAAsF,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,mDAAmD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2QAA4P,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,ycAA0b,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kFAAkF,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,oGAAoG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qUAAqU,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oFAAoF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kDAAkD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uJAAuJ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uTAAuT,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iGAAiG,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oNAAoN,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+VAA+V,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iEAAiE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gMAAgM,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mXAAmX,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6BAA6B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yEAAsFD,EAAEe,EAAE,CAAC,KAAK,kHAAkH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,sEAAsE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,uEAAuE,CAACC,CAAC,EAAE,0BAA0B,CAACC,CAAC,EAAE,0BAA0B,CAACC,CAAC,EAAE,sEAAsE,CAACC,CAAC,EAAE,cAAc,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,iZAAyZD,EAAEe,EAAE,CAAC,KAAK,oEAAoE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sBAAsB,CAAC,CAAC,CAAC,EAAE,2IAAwJA,EAAEe,EAAE,CAAC,KAAK,uDAAuD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,EAAE,6HAAwH,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yaAAoa,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uDAAuD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8eAAye,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oWAAoW,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU,eAAe,oBAAoB,2DAA2D,qBAAqB,MAAM,oBAAoB,OAAO,OAAO,MAAM,IAAI,oEAAoE,OAAO,yVAAyV,MAAM,CAAC,YAAY,YAAY,EAAE,MAAM,MAAM,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wEAAwE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+XAAgX,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+LAA+L,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+FAA0F,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gFAAgF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4EAA4E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gLAA6LD,EAAE,KAAK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sDAAsD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gmBAA2lB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2NAA2N,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iJAAyJD,EAAEe,EAAE,CAAC,KAAK,gCAAgC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,yJAAsKA,EAAEe,EAAE,CAAC,KAAK,mCAAmC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,qFAAqF,CAACC,CAAC,EAAE,cAAc,CAACC,CAAC,EAAE,cAAc,CAACC,CAAC,EAAE,uBAAuB,CAACC,CAAC,EAAE,eAAe,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,wSAAwS,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4GAAuG,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,mFAAmF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oFAAoF,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAoBD,EAAEe,EAAE,CAAC,KAAK,mFAAmF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6CAA6C,CAAC,CAAC,CAAC,EAAE,uVAAoWA,EAAEe,EAAE,CAAC,KAAK,uEAAuE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0VAA0V,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sNAA+M,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yNAAkN,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6JAA0I,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,sFAAsF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,EAAE,mEAAmE,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8CAA8C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4DAA4D,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,8cAA8c,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iFAAiF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mEAAmE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yEAAyE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wGAAwG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,gCAAgC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qCAAkDD,EAAEe,EAAE,CAAC,KAAK,8GAA8G,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uDAAuD,CAAC,CAAC,CAAC,EAAE,oHAAoH,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8GAA8G,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oEAAoE,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+CAA+C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sLAAsL,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iHAAiH,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yCAAyC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mDAAgED,EAAEe,EAAE,CAAC,KAAK,6HAA6H,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,+BAA+B,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gPAAgP,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mJAAmJ,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+OAA+O,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4JAA4J,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qEAAqE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0HAA0H,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uHAAuH,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uCAAuC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yBAAyB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qDAAqD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oGAAoG,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mEAAmE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sDAAsD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,8FAA8F,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qCAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,oCAAoC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,sNAAmOD,EAAEe,EAAE,CAAC,KAAK,4GAA4G,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mCAAmC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yBAAyB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,gDAAgD,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oPAAoP,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,qCAAqC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kKAAkK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,mCAAmC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gKAAgK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,oHAAoH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mDAAmD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,4GAA4G,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mCAAmC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,2BAA2B,CAAC,EAAeA,EAAEe,EAAE,CAAC,KAAK,oCAAoC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yLAAyL,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0JAA0J,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,mFAAmF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0DAA0D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,0GAA0G,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,MAAM,CAAC,qBAAqB,OAAO,sBAAsB,eAAe,2BAA2B,MAAM,EAAE,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,4DAA4D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,yCAAyC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,YAAY,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wWAAwW,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+GAA4HD,EAAEe,EAAE,CAAC,KAAK,sHAAsH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,QAAqBA,EAAEe,EAAE,CAAC,KAAK,sGAAsG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,EAAE,aAA0BA,EAAEe,EAAE,CAAC,KAAK,+FAA+F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,QAAqBA,EAAEe,EAAE,CAAC,KAAK,4FAA4F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,qCAAqC,CAACC,CAAC,EAAE,sBAAsB,CAACC,CAAC,EAAE,0BAA0B,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,eAAe,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,2CAAmDD,EAAEe,EAAE,CAAC,KAAK,+BAA+B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,sIAAmJA,EAAEe,EAAE,CAAC,KAAK,+BAA+B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,qKAAgK,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gUAA2T,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kZAAyX,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6BAA6B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yUAAyU,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4MAA4M,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4RAAuR,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yQAAoQ,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gBAA6BD,EAAEe,EAAE,CAAC,KAAK,+BAA+B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,8EAAsFA,EAAEe,EAAE,CAAC,KAAK,oCAAoC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,EAAE,yPAA+O,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iQAAiQ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mCAAmC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8RAA+Q,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,ydAAyd,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,sTAAyTD,EAAEe,EAAE,CAAC,KAAK,oCAAoC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,+FAAqF,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kYAA6X,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8CAA2DD,EAAEe,EAAE,CAAC,KAAK,qDAAqD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sBAAsB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wCAAwC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sSAAuR,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8CAA8C,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2BAAwCD,EAAEe,EAAE,CAAC,KAAK,+BAA+B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,4FAAyGA,EAAEe,EAAE,CAAC,KAAK,oCAAoC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,qBAAkCA,EAAEe,EAAE,CAAC,KAAK,uCAAuC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,yBAAyB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,0CAA0C,CAACC,CAAC,EAAE,+BAA+B,CAACC,CAAC,EAAE,gCAAgC,CAACC,CAAC,EAAE,iDAAiD,CAACC,CAAC,EAAE,eAAe,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,scAA6a,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kSAAwR,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,SAAS,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU,eAAe,oBAAoB,6DAA6D,qBAAqB,OAAO,oBAAoB,OAAO,OAAO,MAAM,IAAI,sEAAsE,OAAO,oQAAoQ,MAAM,CAAC,YAAY,aAAa,EAAE,MAAM,MAAM,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4EAAyFD,EAAEe,EAAE,CAAC,KAAK,mDAAmD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,wBAAqCA,EAAEe,EAAE,CAAC,KAAK,6BAA6B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yPAAyP,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iSAAySD,EAAEe,EAAE,CAAC,KAAK,kDAAkD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,iEAA4D,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kFAAkF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iEAAiE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yEAAyE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2EAA2E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iBAA8BD,EAAEe,EAAE,CAAC,KAAK,kHAAkH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,qBAAkCA,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,aAAa,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uDAAoED,EAAEe,EAAE,CAAC,KAAK,kDAAkD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,iBAA8BA,EAAEe,EAAE,CAAC,KAAK,+BAA+B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,EAAE,2EAA2E,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oGAAoG,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kIAAkI,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gDAA6DD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,SAAS,CAAC,EAAeA,EAAE,QAAQ,CAAC,SAAS,GAAG,UAAU,eAAe,oBAAoB,8DAA8D,KAAK,GAAG,MAAM,GAAG,YAAY,GAAG,IAAI,sEAAsE,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6DAA0ED,EAAEe,EAAE,CAAC,KAAK,wCAAwC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAE,sLAAsL,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,4HAA4H,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,wIAAwI,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6OAAwO,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+RAA0R,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yKAAyK,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mCAAgDD,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,QAAqBA,EAAEe,EAAE,CAAC,KAAK,4BAA4B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,QAAQ,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,yBAAyB,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE,iHAAiH,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uMAAuM,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oDAAiED,EAAEe,EAAE,CAAC,KAAK,qDAAqD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iCAA4B,CAAC,CAAC,CAAC,EAAE,gNAAgN,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2BAAwCD,EAAEe,EAAE,CAAC,KAAK,qDAAqD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kCAAkC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kPAAkP,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8IAAsJD,EAAEe,EAAE,CAAC,KAAK,mCAAmC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,mEAAmE,CAACC,CAAC,EAAE,iCAAiC,CAACC,CAAC,EAAE,iCAAiC,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,cAAc,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,mFAAgGD,EAAEe,EAAE,CAAC,KAAK,yCAAyC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,iDAAiD,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oBAAoB,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0FAAgF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sGAAsG,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oPAA0O,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yBAAyB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8IAAiJD,EAAEe,EAAE,CAAC,KAAK,yCAAyC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2CAAsC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0RAAqR,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gVAAgV,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+EAA4FD,EAAEe,EAAE,CAAC,KAAK,yCAAyC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yCAAyC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4VAA4V,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gDAA6DD,EAAEe,EAAE,CAAC,KAAK,yCAAyC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAmBD,EAAE,SAAS,CAAC,SAAS,mEAAmE,CAAC,EAAE,+pBAA+pB,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAmBD,EAAE,SAAS,CAAC,SAAS,yEAAoE,CAAC,EAAE,ktBAAktB,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAmBD,EAAE,SAAS,CAAC,SAAS,+FAA+F,CAAC,EAAE,8sBAA8sB,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAmBD,EAAE,SAAS,CAAC,SAAS,iEAAiE,CAAC,EAAE,ohBAAohB,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,YAAY,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qTAAkUD,EAAEe,EAAE,CAAC,KAAK,yCAAyC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,gHAAgH,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,SAAS,mQAAmQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,0EAA0E,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,2FAA2F,CAACC,CAAC,EAAE,cAAc,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,uYAAuY,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sNAAsN,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gFAAwFD,EAAEe,EAAE,CAAC,KAAK,uCAAuC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,otBAAqsB,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mOAAmO,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+WAA2V,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iCAAiC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yLAAyL,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yHAAyH,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uWAAuW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2fAA4e,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uYAAgYD,EAAE,KAAK,CAAC,SAAS,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uHAAuH,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yHAAyH,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,8FAA8F,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4GAA4G,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4SAA4S,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2GAAsG,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sfAAue,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qLAA2K,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2hBAA+gB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gPAAiO,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sGAAsG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,+FAA+F,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,0BAA0B,CAACC,CAAC,EAAE,8FAA8F,CAACC,CAAC,EAAE,aAAa,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAsBC,EAAE,KAAK,CAAC,SAAS,CAAC,wGAAqHD,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0cAA0c,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8RAAsSD,EAAE,KAAK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+FAA4GD,EAAEe,EAAE,CAAC,KAAK,iFAAiF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,uBAAoCA,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,QAAqBA,EAAEe,EAAE,CAAC,KAAK,2EAA2E,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wFAAwF,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8oBAA0nB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qjBAAiiB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,SAAS,uOAAwN,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yCAAyC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,ooBAA2mB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yPAAyP,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,SAAS,uYAA8W,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6DAA6D,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,ygBAA+f,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,ibAAobD,EAAE,KAAK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,SAAS,uPAAwO,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mFAAgGD,EAAEe,EAAE,CAAC,KAAK,gCAAgC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,kBAA+BA,EAAE,KAAK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,whBAAwhB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,+CAA+C,CAACC,CAAC,EAAE,0BAA0B,CAACC,CAAC,EAAE,yBAAyB,CAACC,CAAC,EAAE,2KAAsK,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,wLAAoK,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kKAA+KD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAeA,EAAEgB,EAAE,IAAI,CAAC,UAAU,qBAAqB,MAAM,CAAC,iBAAiB,YAAY,YAAY,sBAAsB,OAAO,OAAO,MAAM,MAAM,EAAE,SAAsBhB,EAAEiB,GAAE,CAAC,oBAAoB,sEAAsE,SAASL,GAAgBZ,EAAEmB,GAAE,CAAC,GAAGP,EAAE,KAAK,OAAO,WAAW,GAAG,UAAU,eAAe,IAAI,qCAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeX,EAAE,IAAI,CAAC,SAAS,CAAC,ufAA0fD,EAAE,KAAK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gPAAgP,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8EAA8E,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,MAAM,CAAC,qBAAqB,OAAO,sBAAsB,eAAe,2BAA2B,MAAM,EAAE,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,+CAA0C,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,MAAM,CAAC,qBAAqB,OAAO,sBAAsB,eAAe,2BAA2B,MAAM,EAAE,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,0BAA0B,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,MAAM,CAAC,qBAAqB,OAAO,sBAAsB,eAAe,2BAA2B,MAAM,EAAE,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,wCAAwC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,MAAM,CAAC,qBAAqB,OAAO,sBAAsB,eAAe,2BAA2B,MAAM,EAAE,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,wCAAwC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,qCAAqC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,MAAM,CAAC,qBAAqB,OAAO,sBAAsB,eAAe,2BAA2B,MAAM,EAAE,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,wCAAwC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,gCAAgC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,MAAM,CAAC,qBAAqB,OAAO,sBAAsB,eAAe,2BAA2B,MAAM,EAAE,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,wCAAwC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,yHAAyH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0GAA0G,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,iDAAiD,CAACC,CAAC,EAAE,sBAAsB,CAACC,CAAC,EAAE,wBAAwB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,eAAe,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,2ZAAuY,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2DAAwED,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,SAAsBA,EAAEe,EAAE,CAAC,KAAK,kDAAkD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,yCAAsDA,EAAEe,EAAE,CAAC,KAAK,0CAA0C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,wRAA8Q,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,sBAAsB,UAAU,eAAe,oBAAoB,uGAAuG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+MAA8LD,EAAEe,EAAE,CAAC,KAAK,8EAA8E,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,gIAA2H,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2PAAwQD,EAAEe,EAAE,CAAC,KAAK,+EAA+E,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,aAA0BA,EAAEe,EAAE,CAAC,KAAK,+EAA+E,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sDAAsD,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6VAAqWD,EAAEe,EAAE,CAAC,KAAK,oFAAoF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,QAAqBA,EAAEe,EAAE,CAAC,KAAK,yEAAyE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,+GAA+G,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oFAAoF,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mBAAmB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,sCAAmDD,EAAEe,EAAE,CAAC,KAAK,mCAAmC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,4JAA4J,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8VAAsWD,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2IAA2I,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,qCAAqC,CAAC,EAAE,gKAA2J,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,oCAAoC,CAAC,EAAE,yOAAoO,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,6BAA6B,CAAC,EAAE,qRAAgR,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uKAAwJ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2aAA2a,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2JAA2J,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yIAAyI,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6TAA6T,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wRAAmR,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qEAA6ED,EAAEe,EAAE,CAAC,KAAK,4EAA4E,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,6GAAqHA,EAAEe,EAAE,CAAC,KAAK,gCAAgC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,qBAAkCA,EAAEe,EAAE,CAAC,KAAK,mCAAmC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,mEAAmE,CAACC,CAAC,EAAE,sBAAsB,CAACC,CAAC,EAAE,sBAAsB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,eAAe,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,kFAA0FD,EAAEe,EAAE,CAAC,KAAK,6BAA6B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,oXAAoX,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,sBAAmCD,EAAEe,EAAE,CAAC,KAAK,8EAA8E,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,4LAA+LA,EAAEe,EAAE,CAAC,KAAK,yDAAyD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,iXAAiX,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mFAAgGD,EAAEe,EAAE,CAAC,KAAK,mDAAmD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,4OAAoPA,EAAEe,EAAE,CAAC,KAAK,kDAAkD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,iEAA4D,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,aAAa,UAAU,eAAe,oBAAoB,6FAA6F,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gXAAgX,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+LAA+L,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iFAA8FD,EAAEe,EAAE,CAAC,KAAK,mDAAmD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,8GAAsHA,EAAEe,EAAE,CAAC,KAAK,gCAAgC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,qBAAkCA,EAAEe,EAAE,CAAC,KAAK,mCAAmC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,qDAAqD,CAACC,CAAC,EAAE,sBAAsB,CAACC,CAAC,EAAE,sBAAsB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,cAAc,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,uCAA+CD,EAAE,KAAK,CAAC,SAAS,IAAI,CAAC,EAAE,sDAAmEA,EAAEe,EAAE,CAAC,KAAK,wCAAwC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iCAAiC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,2BAA2B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,uOAAuO,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qNAAqN,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0SAA0S,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yKAAyK,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wFAAqGD,EAAEe,EAAE,CAAC,KAAK,wCAAwC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,wCAAwC,CAACC,CAAC,EAAE,+BAA+B,CAACC,CAAC,EAAE,0BAA0B,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,cAAc,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,2EAAmFD,EAAEe,EAAE,CAAC,KAAK,iCAAiC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,qKAAkLA,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,wUAAmU,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oFAAiGD,EAAEe,EAAE,CAAC,KAAK,mDAAmD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAE,oTAA+S,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wcAA8b,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,sCAA8CD,EAAEe,EAAE,CAAC,KAAK,iCAAiC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,weAA2eA,EAAEe,EAAE,CAAC,KAAK,4DAA4D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mCAAmC,CAAC,CAAC,CAAC,EAAE,wBAAwB,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mCAAgDD,EAAEe,EAAE,CAAC,KAAK,iCAAiC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,0EAAkFA,EAAEe,EAAE,CAAC,KAAK,iCAAiC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,oDAAoD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,2DAA2D,CAACC,CAAC,EAAE,oBAAoB,CAACC,CAAC,EAAE,oBAAoB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,aAAa,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,KAAK,CAAC,SAAS,oBAAoB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4aAA4a,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8QAAyQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0bAAqb,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gRAAgR,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4UAAuU,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6BAA6B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iDAAiD,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iCAAiC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oDAAoD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qDAAqD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kCAA6B,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oBAAoB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iNAAiN,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,sBAAsB,CAAC,EAAE,ocAA0b,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,wBAAwB,CAAC,EAAE,iNAAiN,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4CAA4C,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+BAA+B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yLAAsMD,EAAE,KAAK,CAAC,SAAS,aAAa,CAAC,EAAE,8GAA8G,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uEAAuE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8BAA8B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wMAAwM,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,wBAAwB,CAAC,EAAE,qJAAqJ,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,qCAAqC,CAAC,EAAE,+KAA0K,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gFAAgF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8NAA8N,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8BAA8B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oJAA4JD,EAAEe,EAAE,CAAC,KAAK,0GAA0G,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,+BAA+B,UAAU,eAAe,oBAAoB,uGAAuG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0NAA0N,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,SAAS,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wDAAwD,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,8EAA8E,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6FAA6F,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mMAA8L,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mCAAmC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uGAAuG,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yhBAAyhB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6BAA6B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4fAAuf,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wBAAwB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uOAA+OD,EAAEe,EAAE,CAAC,KAAK,6FAA6F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,mBAAgCA,EAAEe,EAAE,CAAC,KAAK,2DAA2D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAE,4DAAyEA,EAAEe,EAAE,CAAC,KAAK,oHAAoH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6UAAwU,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6BAA0CD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+BAA0B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2RAAiR,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8cAAyc,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yRAAyR,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gDAAgD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gCAA6CD,EAAEe,EAAE,CAAC,KAAK,gDAAgD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oDAAoD,CAAC,CAAC,CAAC,EAAE,4DAAyEA,EAAEe,EAAE,CAAC,KAAK,+DAA+D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,EAAE,qHAAgH,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,+FAA+F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,oGAAoG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,+DAA+D,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,aAAa,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,KAAK,CAAC,SAAS,2BAA2B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mUAAmU,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8PAAoP,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2MAAsM,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0YAAqY,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2KAAiK,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oCAAoC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gEAAgE,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uCAAuC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mFAAmF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,8DAA8D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yFAAoF,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oBAAoB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4hBAA4hB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6HAA6H,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qZAA2Y,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2CAA2C,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kCAAkC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8SAA8S,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mIAAmI,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kFAAkF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qFAAqF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mMAAmM,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qKAAqK,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gEAAgE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8BAA8B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8bAA8b,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6JAA6J,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,sBAAsB,CAAC,EAAE,maAAma,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6QAA6Q,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6DAA6D,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,yBAAyB,CAAC,EAAE,mMAAmM,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,SAAS,cAAc,CAAC,EAAE,yQAAoQ,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4NAA4N,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,SAAS,eAAe,CAAC,EAAE,qNAAqN,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0OAA0O,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8TAAyT,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kFAAkF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oFAAoF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qCAAqC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,sGAA8GD,EAAEe,EAAE,CAAC,KAAK,uGAAuG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qCAAqC,CAAC,CAAC,CAAC,EAAE,0EAA0E,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,sCAAsC,UAAU,eAAe,oBAAoB,oGAAoG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qCAAqC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iOAAiO,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,SAAS,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yJAAyJ,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iEAAiE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qFAAqF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,8EAA8E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kCAAkC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mSAAmS,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mCAAmC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4NAAyOD,EAAEe,EAAE,CAAC,KAAK,oEAAoE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,0FAA0F,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6cAA6c,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6BAA6B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,ujBAAujB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wBAAwB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6PAAqQD,EAAEe,EAAE,CAAC,KAAK,2DAA2D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAE,wBAAwB,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8PAAyP,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6BAA0CD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+BAA0B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yRAA+Q,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8cAAyc,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qRAAqR,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8CAA8C,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gCAA6CD,EAAEe,EAAE,CAAC,KAAK,gDAAgD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oDAAoD,CAAC,CAAC,CAAC,EAAE,4DAAyEA,EAAEe,EAAE,CAAC,KAAK,+DAA+D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,EAAE,qHAAgH,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,sGAAsG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,oGAAoG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,iDAAiD,CAACC,CAAC,EAAE,uBAAuB,CAACC,CAAC,EAAE,mBAAmB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,gBAAgB,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,KAAK,CAAC,SAAS,oBAAoB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wDAAqED,EAAEe,EAAE,CAAC,KAAK,sBAAsB,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,4IAA4I,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,geAAid,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+WAA0W,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4CAA4C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yhBAA0gB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iBAAiB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wTAA8S,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+BAA+B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qdAAgd,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uRAAuR,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,UAAU,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4ZAAuZ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,scAA4b,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qFAAkGD,EAAEe,EAAE,CAAC,KAAK,sDAAsD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,quBAAmuBD,EAAEe,EAAE,CAAC,KAAK,kKAAkK,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6DAA6D,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qCAAkDD,EAAEe,EAAE,CAAC,KAAK,4GAA4G,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,+EAA+E,CAACC,CAAC,EAAE,mCAAmC,CAACC,CAAC,EAAE,iCAAiC,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,KAAK,CAAC,SAAS,YAAY,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,0CAA0C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,iCAAiC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,uDAAuD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,iDAAiD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,okBAA+jB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qMAAqM,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gGAAgG,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mDAAmD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sDAAsD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,meAA8d,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6TAA6T,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0YAA0Y,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4fAAuf,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8UAA8U,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4WAAuW,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,kDAAkD,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gaAAga,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uYAAuY,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uyBAA6xB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uWAAuW,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iBAAiB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,giBAAshB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uMAA+MD,EAAEe,EAAE,CAAC,KAAK,kKAAkK,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6DAA6D,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+BAA4CD,EAAEe,EAAE,CAAC,KAAK,4GAA4G,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,2BAA2B,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,aAAa,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,eAA4BD,EAAEe,EAAE,CAAC,KAAK,oBAAoB,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oEAAoE,CAAC,CAAC,CAAC,EAAE,kKAAkK,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oCAAiDD,EAAEe,EAAE,CAAC,KAAK,wBAAwB,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,OAAoBA,EAAEe,EAAE,CAAC,KAAK,qDAAqD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,sCAAsC,CAACC,CAAC,EAAE,kCAAkC,CAACC,CAAC,EAAE,iCAAiC,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,cAAc,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,KAAK,CAAC,SAAS,YAAY,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,0CAA0C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,iCAAiC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,uDAAuD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,iDAAiD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,SAAS,IAAI,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,aAAa,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,EAAE,oGAAoG,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,EAAE,+BAA0B,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,EAAE,+vBAAsuB,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,cAAc,CAAC,EAAE,yaAA+Z,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,EAAE,oyBAA2wB,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iBAAiB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,giBAAshB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uMAA+MD,EAAEe,EAAE,CAAC,KAAK,kKAAkK,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6DAA6D,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+BAA4CD,EAAEe,EAAE,CAAC,KAAK,4GAA4G,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,2BAA2B,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,aAAa,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,eAA4BD,EAAEe,EAAE,CAAC,KAAK,oBAAoB,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oEAAoE,CAAC,CAAC,CAAC,EAAE,kKAAkK,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oCAAiDD,EAAEe,EAAE,CAAC,KAAK,wBAAwB,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,OAAoBA,EAAEe,EAAE,CAAC,KAAK,qDAAqD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,gEAAgE,CAACC,CAAC,EAAE,6BAA6B,CAACC,CAAC,EAAE,4CAA4C,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,cAAc,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,yCAAsDD,EAAEe,EAAE,CAAC,KAAK,8GAA8G,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,sSAA8SA,EAAEe,EAAE,CAAC,KAAK,mDAAmD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,+BAA+B,CAAC,CAAC,CAAC,EAAE,8GAA8G,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6RAA0SD,EAAE,KAAK,CAAC,SAAS,KAAK,CAAC,EAAE,qCAAqC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8GAA8G,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,gFAA6FD,EAAEe,EAAE,CAAC,KAAK,gCAAgC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qDAAqD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,aAA0BD,EAAEe,EAAE,CAAC,KAAK,wEAAwE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,OAAoBA,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,SAAsBD,EAAEe,EAAE,CAAC,KAAK,0CAA0C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,EAAE,0CAA0C,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,WAAwBD,EAAEe,EAAE,CAAC,KAAK,mDAAmD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mCAAmC,CAAC,CAAC,CAAC,EAAE,iCAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mHAAmH,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,YAAY,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wCAAwC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,WAAW,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2ZAAsZ,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yEAAyE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0EAA0E,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,oBAAiCD,EAAE,KAAK,CAAC,SAAS,iBAAiB,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wBAAwB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qQAAkRD,EAAE,KAAK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iCAAiC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oGAA4GD,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wEAAqFD,EAAEe,EAAE,CAAC,KAAK,mDAAmD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sCAAsC,CAAC,CAAC,CAAC,EAAE,kIAAkI,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qEAAkFD,EAAEe,EAAE,CAAC,KAAK,0CAA0C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,gDAA6DA,EAAE,OAAO,CAAC,SAAS,wBAAwB,CAAC,EAAE,uGAAuG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iCAAiC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yJAAsKD,EAAEe,EAAE,CAAC,KAAK,6DAA6D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,EAAE,SAAsBA,EAAEe,EAAE,CAAC,KAAK,kDAAkD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,8HAA2IA,EAAEe,EAAE,CAAC,KAAK,uGAAuG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,OAAoBA,EAAEe,EAAE,CAAC,KAAK,oGAAoG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oFAA4FD,EAAEe,EAAE,CAAC,KAAK,8GAA8G,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,6DAA6D,CAACC,CAAC,EAAE,sBAAsB,CAACC,CAAC,EAAE,mBAAmB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,qBAAqB,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,4DAA4D,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+VAA+V,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wMAAwM,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mBAAmB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mXAAmX,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sLAAsL,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gHAA6HD,EAAEe,EAAE,CAAC,KAAK,iCAAiC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,qPAAqP,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wRAAwR,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oHAAiID,EAAEe,EAAE,CAAC,KAAK,qDAAqD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6EAAmE,CAAC,CAAC,CAAC,EAAE,2LAA2L,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yBAAyB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+WAAgW,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yBAAyB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mhBAAygB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2MAA4L,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4LAA4L,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oNAAoN,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uBAAuB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kOAA6N,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8QAA8Q,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2DAA2D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uEAAuE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kEAA6D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gGAA2F,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iGAAiG,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iIAAiI,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sEAAsE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4EAA4E,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0EAAqE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4NAA4N,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yBAAyB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qGAAqG,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,8CAA8C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mEAAmE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6CAA6C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wEAAwE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wCAAwC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sDAAsD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wCAAwC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0DAA0D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gEAAgE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+FAA0F,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oRAAoR,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qOAA2N,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oBAAoB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+OAA0O,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2HAA2H,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kUAAwT,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0BAA0B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mVAAyU,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uRAA6Q,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mBAAmB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gQAAgQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8PAA+O,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gRAA2Q,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2CAA2C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sHAAiH,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,WAAW,CAAC,EAAE,mKAAgLA,EAAEe,EAAE,CAAC,KAAK,yFAAyF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8EAA8E,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iKAAyKD,EAAEe,EAAE,CAAC,KAAK,0FAA0F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2CAA2C,CAAC,CAAC,CAAC,EAAE,uDAAuD,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,2BAA2B,CAAC,EAAE,qVAAgV,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kSAAkS,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6BAA6B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8ZAA2aD,EAAEe,EAAE,CAAC,KAAK,uFAAuF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sDAAsD,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yPAAyP,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uCAAuC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oaAA0Z,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8aAA8a,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8JAAsKD,EAAEe,EAAE,CAAC,KAAK,iGAAiG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gCAAgC,CAAC,CAAC,CAAC,EAAE,8GAAsHA,EAAEe,EAAE,CAAC,KAAK,6GAA6G,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAE,qHAAqH,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kDAAkD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mfAA8e,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kDAAkD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wcAA8b,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,wEAAwE,CAACC,CAAC,EAAE,kDAAkD,CAACC,CAAC,EAAE,kDAAkD,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,cAAc,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,8EAAsFD,EAAEe,EAAE,CAAC,KAAK,oBAAoB,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,yFAAyF,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+eAA0e,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+CAA+C,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,8GAA8G,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uFAAuF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6DAA6D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,+FAA4GD,EAAEe,EAAE,CAAC,KAAK,yCAAyC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,MAAmBA,EAAEe,EAAE,CAAC,KAAK,wCAAwC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,oCAAoC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yaAAya,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wUAAmU,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,imBAAulB,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU,eAAe,oBAAoB,0GAA0G,IAAI,uEAAuE,OAAO,sQAAsQ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,cAA2BD,EAAEe,EAAE,CAAC,KAAK,oCAAoC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,aAA0BD,EAAEe,EAAE,CAAC,KAAK,mDAAmD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qCAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gEAAwED,EAAEe,EAAE,CAAC,KAAK,qFAAqF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,mFAAmF,CAACC,CAAC,EAAE,uBAAuB,CAACC,CAAC,EAAE,oCAAoC,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,qBAAqB,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,qZAAgZ,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oPAAiQD,EAAEe,EAAE,CAAC,KAAK,iCAAiC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,uDAAuD,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4CAA4C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8RAAyR,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+JAA+J,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,mBAAmB,CAAC,EAAE,oPAA+O,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,EAAE,0PAA0P,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yCAAyC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+bAA2a,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2bAAib,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sQAAiQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8WAAyW,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oUAA0T,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qCAAqC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4WAA4W,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0OAAqO,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uXAAkX,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4DAA4D,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mWAAyV,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8OAAoO,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6MAA8L,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gPAAgP,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oCAAoC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oRAAoR,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kBAAkB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,ySAA+R,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uDAAoED,EAAEe,EAAE,CAAC,KAAK,8DAA8D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,QAAqBA,EAAEe,EAAE,CAAC,KAAK,iCAAiC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,iIAA4H,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oCAAoC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8aAAoa,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kKAAkK,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sXAAiX,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wDAAwD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2MAA2M,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gTAAgT,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yDAAyD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wDAAwD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mEAAmE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qEAAgE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8QAA8Q,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4KAA4K,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mEAAmE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4VAAkV,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kdAA6c,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,kHAAkH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,uFAAoGA,EAAEe,EAAE,CAAC,KAAK,+GAA+G,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAE,+EAA+E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,0DAA0D,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,cAAc,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,yIAAiJD,EAAEe,EAAE,CAAC,KAAK,sDAAsD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,4MAAoNA,EAAEe,EAAE,CAAC,KAAK,iCAAiC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,sGAAsG,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+VAA0V,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8BAA8B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4CAAyDD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,+VAAgV,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0BAA0B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0iBAAqiB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gCAAgC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oVAAoV,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mCAAmC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iPAA4O,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6FAA0GD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,qOAAqO,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uCAAuC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6RAAqSD,EAAEe,EAAE,CAAC,KAAK,kEAAkE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,kHAA6G,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yFAAoF,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,YAAY,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sQAA4P,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8aAAya,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mBAAmB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gPAAgP,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6QAAwQ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iBAAiB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8OAA8O,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,cAAc,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sRAAsR,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oCAAoC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iRAAiR,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6CAA6C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oLAA0K,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wNAAmN,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kSAAkS,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yCAAyC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0WAAqW,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+QAA+Q,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0RAAqR,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wCAAwC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mPAAmP,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8VAAyV,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8CAA8C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8GAA8G,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,4LAAoMA,EAAEe,EAAE,CAAC,KAAK,8DAA8D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,0BAA0B,CAAC,EAAE,2BAAwCA,EAAEe,EAAE,CAAC,KAAK,wCAAwC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,6KAA0LA,EAAEe,EAAE,CAAC,KAAK,wCAAwC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,EAAE,sQAAmRA,EAAEe,EAAE,CAAC,KAAK,kDAAkD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,2EAA2E,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mZAA8Y,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+XAAqX,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0DAA0D,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wWAAyV,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,mGAAmG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4CAA4C,CAAC,CAAC,CAAC,EAAE,iGAAiG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,gFAAgF,CAACC,CAAC,EAAE,qCAAqC,CAACC,CAAC,EAAE,8CAA8C,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,qBAAqB,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,8BAA2CD,EAAEe,EAAE,CAAC,KAAK,iCAAiC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,scAAwa,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6KAA2KD,EAAEe,EAAE,CAAC,KAAK,uCAAuC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAE,sCAAsC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uDAAuD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+PAA4QD,EAAEe,EAAE,CAAC,KAAK,uHAAuH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qEAAqE,CAAC,CAAC,CAAC,EAAE,8LAAsMA,EAAEe,EAAE,CAAC,KAAK,2FAA2F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sDAAsD,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uYAAkY,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oDAAoD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uEAAuE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,8DAA8D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2CAA2C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2iBAA2iB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0XAAqX,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6DAA6D,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mCAAgDD,EAAEe,EAAE,CAAC,KAAK,sDAAsD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAE,eAA4BA,EAAEe,EAAE,CAAC,KAAK,wCAAwC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,0JAA0J,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6UAAwU,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2OAA2O,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wPAAwP,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sDAAsD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oOAAoO,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qEAAgE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yEAAyE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iEAAiE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,obAA+a,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uOAAuO,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qEAAqE,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,uCAAuC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAE,+gBAA0gB,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,igBAA4f,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,klBAAmkB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0DAA0D,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sRAA4Q,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yBAAyB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oCAAoC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mbAAmb,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kEAAkE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2kBAAujB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oDAA+C,CAAC,CAAC,CAAC,EAAE,sbAAsb,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wDAAqED,EAAEe,EAAE,CAAC,KAAK,4HAA4H,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAE,QAAqBA,EAAEe,EAAE,CAAC,KAAK,yHAAyH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,yGAAoG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,gCAAgC,CAACC,CAAC,EAAE,gCAAgC,CAACC,CAAC,EAAE,qBAAqB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,qBAAqB,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,6PAAqQD,EAAEe,EAAE,CAAC,KAAK,iCAAiC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,QAAqBA,EAAEe,EAAE,CAAC,KAAK,yCAAyC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mCAAmC,CAAC,CAAC,CAAC,EAAE,0EAA0E,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yEAAsFD,EAAEe,EAAE,CAAC,KAAK,0EAA0E,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,gFAAgF,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,EAAE,6IAA6I,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,mBAAmB,CAAC,EAAE,uJAAuJ,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,qNAAqN,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oBAAiCD,EAAEe,EAAE,CAAC,KAAK,+FAA+F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,iSAAuR,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gDAAgD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+BAA+B,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6aAA6a,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+BAA+B,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qBAAqB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8UAA8U,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6RAAwR,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,maAAma,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,eAAe,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2PAAsP,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,uCAAuC,CAAC,EAAE,+OAA0O,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,uBAAuB,CAAC,EAAE,2HAA2H,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,oBAAoB,CAAC,EAAE,2IAAsI,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,uBAAuB,CAAC,EAAE,kJAAkJ,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,2BAA2B,CAAC,EAAE,uJAA6I,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wMAAwM,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAqBD,EAAEe,EAAE,CAAC,KAAK,wGAAwG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,kKAA0KA,EAAEe,EAAE,CAAC,KAAK,yEAAyE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,+BAA+B,CAAC,CAAC,CAAC,EAAE,kCAAkC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+CAA+C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qHAAgH,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2EAA2E,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0DAA0D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4EAA4E,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gGAAgG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mKAA8J,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yBAAyB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yPAAoP,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6UAA6U,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mDAAmD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2LAA2L,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kFAAkF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6GAAwG,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2HAA2H,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oFAAoF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+FAA+F,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uHAAoID,EAAEe,EAAE,CAAC,KAAK,kIAAkI,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mDAAmD,CAAC,CAAC,CAAC,EAAE,4GAA4G,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+UAAqU,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0OAAqO,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uBAAuB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+fAAqf,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2PAAiP,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,EAAE,6JAAwJ,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,WAAW,CAAC,EAAE,sKAAiK,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,YAAY,CAAC,EAAE,0JAA0J,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uJAAkJ,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wEAAwE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4FAA4F,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sJAAsJ,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oIAAoI,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0GAA0G,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kEAA6D,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8YAAyY,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yXAAoX,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAoBD,EAAEe,EAAE,CAAC,KAAK,mGAAmG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,oEAAiFA,EAAEe,EAAE,CAAC,KAAK,gGAAgG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAE,4DAAuD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,wDAAwD,CAACC,CAAC,EAAE,mCAAmC,CAACC,CAAC,EAAE,+BAA+B,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,qBAAqB,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,oIAAiJD,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,qIAAgI,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uQAA+QD,EAAEe,EAAE,CAAC,KAAK,iCAAiC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,kIAA6H,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8CAA8C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yRAA+Q,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gCAAgC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0CAA0C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2DAA2D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0CAA0C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yLAAoL,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yUAAyU,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8EAA8E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iVAAiV,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,KAAK,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,sDAAsD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,+BAA+B,CAAC,CAAC,CAAC,EAAE,mKAAmK,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8NAA8N,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iLAA4K,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0ZAAqZ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gUAA2T,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,QAAQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,ufAAwe,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,KAAK,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,wCAAwC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,+BAA+B,CAAC,CAAC,CAAC,EAAE,uQAAuQ,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mcAAmc,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4NAAuN,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oBAAoB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uYAA6X,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qSAAgS,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oDAAoD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,yDAAyD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,2mBAAimB,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6GAA6G,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2BAA2B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oZAAoZ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6KAA6K,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iBAAiB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mfAA8e,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gDAAgD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iUAAuT,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qLAAgL,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iCAAiC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oCAAoC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,8CAAyC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sSAAiS,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2DAA2D,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,ueAAue,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oDAA+C,CAAC,CAAC,CAAC,EAAE,iLAA4K,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0OAA0O,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gTAA2S,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mQAAyP,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kDAA+DD,EAAEe,EAAE,CAAC,KAAK,6GAA6G,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gCAAgC,CAAC,CAAC,CAAC,EAAE,wCAAqDA,EAAEe,EAAE,CAAC,KAAK,0GAA0G,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gCAAgC,CAAC,CAAC,CAAC,EAAE,+GAA0G,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,iEAAiE,CAACC,CAAC,EAAE,uCAAuC,CAACC,CAAC,EAAE,uCAAuC,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,gBAAgB,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,gOAAsN,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uBAAuB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0SAA0S,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oBAAoB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gJAAwJD,EAAEe,EAAE,CAAC,KAAK,gFAAgF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,EAAE,uEAAuE,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8PAAyP,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yKAAyK,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qCAAqC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6BAA0CD,EAAEe,EAAE,CAAC,KAAK,yCAAyC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,mYAA8X,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mYAAmY,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iCAAiC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oaAA+Z,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oRAAoR,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2GAA2G,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yCAAiDD,EAAEe,EAAE,CAAC,KAAK,kDAAkD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,8eAA8e,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qGAAqG,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yCAAyC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mCAAmC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kDAAkD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,sBAAsB,UAAU,eAAe,oBAAoB,uGAAuG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6BAA6B,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gLAAgL,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wIAAmI,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6BAA6B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mJAAyI,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6DAA6D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yFAAyF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oNAAoN,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8DAA8D,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yEAAsFD,EAAEe,EAAE,CAAC,KAAK,qGAAqG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,oFAAoF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,gCAAgC,CAACC,CAAC,EAAE,gCAAgC,CAACC,CAAC,EAAE,gCAAgC,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,gBAAgB,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,whBAAmhB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qTAAgT,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wOAA8N,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0HAA0H,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mCAAmC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2CAA2C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oXAA+W,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kCAAkC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+NAA2M,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wCAA2CD,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gCAAgC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mEAA2ED,EAAEe,EAAE,CAAC,KAAK,8GAA8G,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0BAA0B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yOAAsPD,EAAEe,EAAE,CAAC,KAAK,oCAAoC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,KAAkBA,EAAEe,EAAE,CAAC,KAAK,oCAAoC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,KAAkBA,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,mDAAgEA,EAAEe,EAAE,CAAC,KAAK,yCAAyC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,QAAqBA,EAAEe,EAAE,CAAC,KAAK,wDAAwD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2BAA2B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+JAA0J,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0CAA0C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uGAAkG,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wIAAwI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iBAAiB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qCAAkDD,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,iHAAuG,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,6BAA6B,UAAU,eAAe,oBAAoB,6GAA6G,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4IAAkI,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wDAAwD,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mJAAmJ,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,qBAAqB,UAAU,eAAe,oBAAoB,sGAAsG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wLAAwL,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,0BAA0B,UAAU,eAAe,oBAAoB,0GAA0G,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,gBAAgB,UAAU,eAAe,oBAAoB,+FAA+F,IAAI,qEAAqE,OAAO,mKAAmK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yXAAyX,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+HAA+H,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,2BAA2B,UAAU,eAAe,oBAAoB,2GAA2G,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAmBD,EAAE,SAAS,CAAC,SAAS,gBAAgB,CAAC,EAAE,KAAK,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+MAA0M,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,oCAAoC,CAACC,CAAC,EAAE,oCAAoC,CAACC,CAAC,EAAE,uCAAuC,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,qBAAqB,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,iYAAuX,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gDAAgD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2UAAwVD,EAAEe,EAAE,CAAC,KAAK,sDAAsD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,wKAAmK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mDAA8C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+UAA+U,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yUAAyU,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qIAA2H,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yUAAyU,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yCAAyC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+bAA+b,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,gBAAgB,CAAC,EAAE,kKAAkK,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,cAAc,CAAC,EAAE,kFAAkF,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,gBAAgB,CAAC,EAAE,2PAA2P,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oBAAoB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qRAAqR,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+BAA+B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2UAA2U,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4OAA4O,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4PAA4P,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0CAA0C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uXAAwW,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+BAA+B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gYAAwYD,EAAEe,EAAE,CAAC,KAAK,uCAAuC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,sDAAsD,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qaAAqa,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wBAAwB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oVAAoV,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,QAAQ,CAAC,EAAE,oFAAoF,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,QAAQ,CAAC,EAAE,mJAAmJ,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,QAAQ,CAAC,EAAE,kIAA6H,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,QAAQ,CAAC,EAAE,iFAAuE,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,QAAQ,CAAC,EAAE,iFAAuE,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sGAAsG,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qBAAqB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0UAA0U,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sSAAsS,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6HAAmH,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qDAAqD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+BAA+B,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,oEAAiFD,EAAEe,EAAE,CAAC,KAAK,kDAAkD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wEAAwE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6EAA6E,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yDAAoD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4LAA4L,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oSAAoS,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kBAAkB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0ZAAgZ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8MAAoM,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oBAAoB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iBAA8BD,EAAEe,EAAE,CAAC,KAAK,oCAAoC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,uYAAuY,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mWAAyV,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wDAAwD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4CAA4C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iEAAiE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0DAA0D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iMAAiM,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yJAAyJ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,ymBAA+lB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uCAAuC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kIAA+ID,EAAEe,EAAE,CAAC,KAAK,iCAAiC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,2JAA2J,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4iBAAuiB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qTAAgT,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oIAAiJD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uEAAuE,CAAC,CAAC,CAAC,EAAE,iLAA4K,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qIAAgI,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uIAA+ID,EAAEe,EAAE,CAAC,KAAK,yFAAyF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,mEAAmE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,wCAAwC,CAACC,CAAC,EAAE,gBAAgB,CAACC,CAAC,EAAE,wBAAwB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,qBAAqB,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,wEAAqFD,EAAEe,EAAE,CAAC,KAAK,sDAAsD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAE,sHAAmIA,EAAEe,EAAE,CAAC,KAAK,kCAAkC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,QAAqBA,EAAEe,EAAE,CAAC,KAAK,4CAA4C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,6LAA6L,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wBAAwB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+TAA0T,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,aAAa,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qLAAqL,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+MAA+M,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oNAA+M,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mBAAmB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kOAAkO,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kBAAkB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kXAAkX,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2YAA2Y,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wYAA8X,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uBAAuB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sOAAsO,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6QAAwQ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0BAA0B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,sTAAyTD,EAAEe,EAAE,CAAC,KAAK,qGAAqG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2JAAkI,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oHAAoH,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+VAA+V,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mHAAmH,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uCAAuC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+WAA+W,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uCAAuC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+QAAqQ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kCAAkC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yNAAyN,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0MAAqM,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2DAA2D,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kWAA6V,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wCAA8B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yTAAyT,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0eAA2d,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4CAA4C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iaAA4Z,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0CAA0C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2XAA2X,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,ybAAob,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wBAAwB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6SAA6S,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2CAA2C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iEAAiE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4CAA4C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6EAA6E,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gDAAgD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sVAA4U,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4CAA4C,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yFAAsGD,EAAEe,EAAE,CAAC,KAAK,gDAAgD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sBAAsB,CAAC,CAAC,CAAC,EAAE,2JAA2J,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sSAAiS,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4TAA4T,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,sJAAmKD,EAAEe,EAAE,CAAC,KAAK,sGAAsG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,QAAqBA,EAAEe,EAAE,CAAC,KAAK,mGAAmG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,uEAAuE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,sCAAsC,CAACC,CAAC,EAAE,wBAAwB,CAACC,CAAC,EAAE,wBAAwB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,gBAAgB,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,8gBAA8gB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wSAAyR,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uCAAuC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAoBD,EAAEe,EAAE,CAAC,KAAK,mGAAmG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,EAAE,wMAAqNA,EAAEe,EAAE,CAAC,KAAK,yBAAyB,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,8KAA0J,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,OAAO,CAAC,SAAS,gCAAgC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qHAAqH,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0OAA0O,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kgBAAkgB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0CAA0C,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,ieAA8eD,EAAEe,EAAE,CAAC,KAAK,uDAAuD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sBAAsB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4fAAwe,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,OAAO,CAAC,SAAS,gCAAgC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kIAAkI,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4iBAAuiB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,OAAO,CAAC,SAAS,gCAAgC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+FAA+F,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sDAAsD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4YAAyZD,EAAEe,EAAE,CAAC,KAAK,4DAA4D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAE,sKAA4J,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+OAA+O,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,sBAAsB,UAAU,eAAe,oBAAoB,uGAAuG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kXAA6W,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iUAAyUD,EAAEe,EAAE,CAAC,KAAK,8FAA8F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,+GAA0G,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iMAAiM,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qHAAqH,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+DAA+D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6FAA6F,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sEAAsE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gEAA2D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iDAA8DD,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,8BAA2CA,EAAEe,EAAE,CAAC,KAAK,+BAA+B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,+BAA+B,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,sGAAsG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,4BAA4B,CAACC,CAAC,EAAE,4BAA4B,CAACC,CAAC,EAAE,4BAA4B,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,qBAAqB,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,sfAA8fD,EAAEe,EAAE,CAAC,KAAK,2GAA2G,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,8CAA8C,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gEAAgE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4hBAAuhB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iVAAiV,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kCAAkC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gbAAsa,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oYAAqX,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gNAAsM,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iCAAiC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kTAAkT,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iUAA4T,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uCAAuC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2WAA4V,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kCAAkC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qRAAqR,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0QAA0Q,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mLAAmL,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0LAA0L,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uDAAuD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qFAAkGD,EAAEe,EAAE,CAAC,KAAK,kHAAkH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,8SAAyS,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6BAA6B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+IAA+I,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6CAA6C,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oBAA4BD,EAAEe,EAAE,CAAC,KAAK,+GAA+G,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,+BAA+B,CAAC,CAAC,CAAC,EAAE,kYAAmX,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gSAA2R,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qCAAqC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yXAA+W,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mSAA8R,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,gHAAgH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mCAAmC,CAAC,CAAC,CAAC,EAAE,mkBAAyjB,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iEAAiE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+QAA+Q,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kWAAkW,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2SAA2S,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kQAAkQ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uBAAuB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mYAAyX,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qRAAgR,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oQAAoQ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mDAA8C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uUAAkU,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qNAAqN,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4UAA4U,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2DAA2D,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+TAA0T,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8YAAyY,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2LAAmMD,EAAEe,EAAE,CAAC,KAAK,uHAAuH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,6KAA6K,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iCAA8CD,EAAEe,EAAE,CAAC,KAAK,gIAAgI,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAE,gTAAsS,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,ghBAAghB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kXAA6W,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4CAAuC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gTAAsS,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sCAAsC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mDAAmD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+DAA+D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yDAAyD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0KAA0K,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mWAAyV,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qjBAAqjB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,WAAwBD,EAAEe,EAAE,CAAC,KAAK,0GAA0G,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,0IAA0I,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,sHAAsH,CAACC,CAAC,EAAE,uBAAuB,CAACC,CAAC,EAAE,uBAAuB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,gKAAgK,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,sJAA8JD,EAAEe,EAAE,CAAC,KAAK,oBAAoB,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,0WAA0W,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iDAA8DD,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,yLAAoL,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6KAA6K,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mFAAmF,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4RAAoSD,EAAEe,EAAE,CAAC,KAAK,oBAAoB,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,gHAAgH,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qPAAqP,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iNAAiN,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8GAAyG,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2FAAmGD,EAAEe,EAAE,CAAC,KAAK,oBAAoB,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,+BAA+B,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qXAAsW,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uTAAkT,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kDAAkD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qfAAqf,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sJAAiJ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uGAAuG,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6QAAwQ,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yFAAsGD,EAAEe,EAAE,CAAC,KAAK,oBAAoB,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,8LAAyL,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oIAAoI,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yHAAyH,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sgBAAigB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uLAAuL,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uiBAAuiB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,cAAc,CAAC,EAAeA,EAAEe,EAAE,CAAC,KAAK,uFAAuF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,SAAS,CAAC,SAAS,gBAAgB,CAAC,EAAE,IAAiBA,EAAE,KAAK,CAAC,SAAS,UAAU,CAAC,EAAeA,EAAEe,EAAE,CAAC,KAAK,wBAAwB,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,MAAM,CAAC,EAAeA,EAAEe,EAAE,CAAC,KAAK,iGAAiG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,yCAAyC,CAACC,CAAC,EAAE,yCAAyC,CAACC,CAAC,EAAE,wCAAwC,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,qBAAqB,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,sWAAsW,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wLAAqMD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,iGAAiG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uCAAuC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gPAAgP,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iRAAuQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2JAAsJ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4FAA4F,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uCAAuC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4CAA4C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qCAAqC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uCAAuC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6DAA6D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mDAAmD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yHAAsID,EAAEe,EAAE,CAAC,KAAK,sDAAsD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0CAA0C,CAAC,CAAC,CAAC,EAAE,iLAA8LA,EAAEe,EAAE,CAAC,KAAK,yCAAyC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,sHAAsH,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iDAAiD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,keAAke,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yXAAoX,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mUAA8T,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yTAAyT,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4GAAyHD,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,2JAAsJ,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gCAAgC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0PAAqP,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,8BAA8B,CAAC,EAAE,iWAAuV,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,8BAA8B,CAAC,EAAE,kaAA6Z,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,oCAAoC,CAAC,EAAE,mUAA8T,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8BAA8B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wNAAmN,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,cAAc,CAAC,EAAE,kVAAkV,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,EAAE,iTAAuS,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,cAAc,CAAC,EAAE,6TAAwT,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,aAAa,CAAC,EAAE,qVAAgV,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6OAA6O,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2CAA2C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uUAAkU,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uQAAkQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iJAAiJ,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,4BAA4B,CAAC,EAAE,mSAAyR,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,cAAc,CAAC,EAAE,qUAAqU,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,8BAA8B,CAAC,EAAE,2XAA2X,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,YAAY,CAAC,EAAE,wRAAwR,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4DAA4D,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6QAA6Q,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,YAAY,CAAC,EAAE,qNAAgN,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,mBAAmB,CAAC,EAAE,gJAAgJ,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,uBAAuB,CAAC,EAAE,2MAAsM,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,+CAA+C,CAAC,EAAE,8NAA8N,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,WAAW,CAAC,EAAE,sTAA4S,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,2BAA2B,CAAC,EAAE,kPAA6O,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mCAAmC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uNAAkN,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iPAAiP,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iSAA4R,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mBAAmB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0eAA0e,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uCAAuC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yVAAyV,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+SAA0S,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8BAA8B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,ofAA+e,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yBAAyB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iIAA4H,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gVAA2U,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yRAAyR,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gSAAiR,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uDAAuD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,ujBAAwiB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2TAAsT,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sYAAsY,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4CAA4C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yhBAAqgB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qWAA6WD,EAAEe,EAAE,CAAC,KAAK,gDAAgD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,wIAAwI,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,+GAA+G,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,iCAAiC,CAACC,CAAC,EAAE,iCAAiC,CAACC,CAAC,EAAE,gCAAgC,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,qBAAqB,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,2QAAwRD,EAAEe,EAAE,CAAC,KAAK,gDAAgD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,sMAAmNA,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wCAAwC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oXAAqW,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wCAAwC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+SAAgS,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,wBAAwB,CAAC,EAAE,mUAA8T,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,sBAAsB,CAAC,EAAE,0RAAqR,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,wBAAwB,CAAC,EAAE,0TAAgT,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wCAAwC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kIAA6H,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,wBAAwB,CAAC,EAAE,uTAAkT,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,2BAA2B,CAAC,EAAE,0NAA0N,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,yBAAyB,CAAC,EAAE,8QAA8Q,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qNAAqN,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iCAAiC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mgBAA8f,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wCAAwC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iWAA4V,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oCAAoC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0KAAqK,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,EAAE,iPAAiP,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,mBAAmB,CAAC,EAAE,kTAAmS,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oOAA+N,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6BAA6B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0nBAAgnB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sCAAsC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oTAA+S,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kCAAkC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oaAAoa,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qCAAqC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4SAAuS,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sCAAsC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wYAAwY,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uBAAuB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+LAAuMD,EAAEe,EAAE,CAAC,KAAK,wDAAwD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,QAAqBA,EAAEe,EAAE,CAAC,KAAK,wDAAwD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE,0LAAuMA,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,qGAAqG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kDAAkD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gQAA6QD,EAAEe,EAAE,CAAC,KAAK,4DAA4D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gDAAgD,CAAC,CAAC,CAAC,EAAE,gKAAgK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mDAAmD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qIAAkJD,EAAEe,EAAE,CAAC,KAAK,uCAAuC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6CAA6C,CAAC,CAAC,CAAC,EAAE,uGAAuG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8BAA8B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iGAAyGD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,iRAAiR,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wCAAwC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8iBAAoiB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,mGAAmG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,kDAAkD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,wCAAwC,CAACC,CAAC,EAAE,wCAAwC,CAACC,CAAC,EAAE,0BAA0B,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,eAAe,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,KAAK,CAAC,SAAS,cAAc,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0cAA0c,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kBAAkB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2jBAA2jB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wPAAqQD,EAAEe,EAAE,CAAC,KAAK,wDAAwD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iBAAiB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kDAAkD,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sGAAsG,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+GAA+G,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,YAAyBD,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,MAAmBA,EAAEe,EAAE,CAAC,KAAK,6BAA6B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,MAAmBA,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,YAAyBD,EAAEe,EAAE,CAAC,KAAK,yCAAyC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,0LAAkMD,EAAEe,EAAE,CAAC,KAAK,wEAAwE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,+BAA+B,CAAC,CAAC,CAAC,EAAE,iCAA8CA,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,0DAAuED,EAAEe,EAAE,CAAC,KAAK,wGAAwG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,8FAA2GA,EAAEe,EAAE,CAAC,KAAK,yGAAyG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yBAAyB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+FAAqF,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,uBAAuB,UAAU,eAAe,oBAAoB,wGAAwG,IAAI,sEAAsE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6GAA6G,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,wBAAwB,UAAU,eAAe,oBAAoB,wGAAwG,IAAI,qEAAqE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8EAA8E,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,mDAAmD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2CAA2C,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,mDAAmD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,yCAAyC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,mDAAmD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,yCAAyC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,oDAA+C,CAACC,CAAC,EAAE,oDAA+C,CAACC,CAAC,EAAE,oCAAoC,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,qBAAqB,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,KAAK,CAAC,SAAS,mDAA8C,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6JAAqKD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,oBAAiCA,EAAEe,EAAE,CAAC,KAAK,gDAAgD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAmB,CAAC,CAAC,CAAC,EAAE,wRAAmR,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wMAA8L,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2DAA2D,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sZAA4Y,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2XAAiX,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wcAAmc,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kCAAkC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qJAAkKD,EAAEe,EAAE,CAAC,KAAK,qJAAqJ,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,+DAA+D,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,idAA8dD,EAAEe,EAAE,CAAC,KAAK,4GAA4G,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mCAAmC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iDAAiD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oLAA4LD,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4CAA4C,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2PAAuO,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4KAA4K,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yaAAqZ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uDAAuD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wPAA8O,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0BAA0B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qVAAqV,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+VAA0V,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iCAAiC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uUAAkU,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uSAAuS,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,cAAc,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oVAA0U,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sDAAsD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8cAA8c,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2PAA2P,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mDAAmD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yYAAoY,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wDAAwD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sUAA6S,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0XAAqX,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iCAAiC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gDAAgD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2bAA2b,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qTAAqT,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yCAAyC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uOAAkO,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gUAAsT,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yKAAoK,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yCAAyC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0DAA0D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uEAAuE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+OAA0O,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,8DAAyD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sEAAsE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wDAAwD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,8DAA8D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6EAA6E,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oEAAoE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oDAAoD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gCAAgC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2OAAsO,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mVAA8U,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0FAA0F,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oaAA0Z,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uFAAoGD,EAAEe,EAAE,CAAC,KAAK,gCAAgC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+CAA+C,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wBAAqCD,EAAEe,EAAE,CAAC,KAAK,gDAAgD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wCAAwC,CAAC,CAAC,CAAC,EAAE,wPAAmP,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iLAAiL,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iEAAiE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kbAA6a,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sQAA4P,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qUAAgU,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2OAA2O,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6FAA6F,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,4BAA4B,CAACC,CAAC,EAAE,4BAA4B,CAACC,CAAC,EAAE,qBAAqB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,eAAe,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,gHAAgH,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gIAA6ID,EAAEe,EAAE,CAAC,KAAK,0EAA0E,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qCAAqC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gCAAgC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4NAA4N,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6LAAmL,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAiBD,EAAE,OAAO,CAAC,SAAS,qLAAqL,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qEAAqE,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAiBD,EAAE,OAAO,CAAC,SAAS,sMAAsM,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yNAAsOD,EAAEe,EAAE,CAAC,KAAK,8EAA8E,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,oCAAoC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+FAA+F,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yBAAyB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yHAA+G,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,mBAAmB,UAAU,eAAe,oBAAoB,gGAAgG,IAAI,kEAAkE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+EAA+E,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,kBAAkB,UAAU,eAAe,oBAAoB,mGAAmG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oFAAoF,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iCAAiC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2GAAwHD,EAAEe,EAAE,CAAC,KAAK,oCAAoC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,wCAAwC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uMAAuM,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAiBD,EAAE,OAAO,CAAC,SAAS,6eAA6e,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8EAA8E,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,oBAAoB,UAAU,eAAe,oBAAoB,qGAAqG,IAAI,sEAAsE,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kCAAkC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kIAAkI,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8GAA8G,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,qBAAqB,UAAU,eAAe,oBAAoB,qGAAqG,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uEAAuE,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,wBAAwB,UAAU,eAAe,oBAAoB,yGAAyG,IAAI,uEAAuE,OAAO,2EAA2E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iHAAiH,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,kBAAkB,UAAU,eAAe,oBAAoB,gGAAgG,IAAI,mEAAmE,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yBAAyB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6TAA8S,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mGAAmG,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAiBD,EAAE,OAAO,CAAC,SAAS,wDAAwD,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAiBD,EAAE,OAAO,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAiBD,EAAE,OAAO,CAAC,SAAS,2FAA2F,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wJAAqKD,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,4BAA4B,UAAU,eAAe,oBAAoB,qHAAqH,IAAI,qEAAqE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2FAA2F,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAiBD,EAAE,OAAO,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wDAAwD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAiBD,EAAE,OAAO,CAAC,SAAS,8JAA8J,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kJAAkJ,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,uBAAuB,UAAU,eAAe,oBAAoB,wGAAwG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4DAA4D,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,gCAAgC,CAACC,CAAC,EAAE,gCAAgC,CAACC,CAAC,EAAE,qBAAqB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,eAAe,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,gHAAgH,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gIAA6ID,EAAEe,EAAE,CAAC,KAAK,yEAAyE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wBAAwB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6KAAmK,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,mBAAmB,UAAU,eAAe,oBAAoB,mGAAmG,IAAI,qEAAqE,OAAO,mKAAmK,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,oBAAoB,UAAU,eAAe,oBAAoB,qGAAqG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8FAAoF,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,kBAAkB,UAAU,eAAe,oBAAoB,iGAAiG,IAAI,qEAAqE,OAAO,mKAAmK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qGAAqG,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gCAAgC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yTAAyT,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4KAAoLD,EAAEe,EAAE,CAAC,KAAK,kFAAkF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,0DAAuED,EAAEe,EAAE,CAAC,KAAK,oCAAoC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oGAAiHD,EAAEe,EAAE,CAAC,KAAK,6BAA6B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,qCAAkDA,EAAEe,EAAE,CAAC,KAAK,oCAAoC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yCAAyC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAqBD,EAAE,OAAO,CAAC,SAAS,YAAY,CAAC,EAAE,SAAsBA,EAAE,OAAO,CAAC,SAAS,yBAAyB,CAAC,EAAE,4CAA4C,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAoBD,EAAE,OAAO,CAAC,SAAS,cAAc,CAAC,EAAE,QAAqBA,EAAE,OAAO,CAAC,SAAS,eAAe,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAoBD,EAAE,OAAO,CAAC,SAAS,MAAM,CAAC,EAAE,yHAAoH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAiBD,EAAE,OAAO,CAAC,SAAS,snBAAsnB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0DAA0D,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qDAAqD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAiBD,EAAE,OAAO,CAAC,SAAS,uGAAuG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yIAAyI,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2FAA2F,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,wEAAqFD,EAAE,OAAO,CAAC,SAAS,2BAA2B,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2EAA2E,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iEAAiE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mEAAmE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mEAAmE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAiBD,EAAE,OAAO,CAAC,SAAS,4RAA4R,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+FAA+F,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2IAA2I,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,kBAAkB,UAAU,eAAe,oBAAoB,iGAAiG,IAAI,oEAAoE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kHAAkH,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,kBAAkB,UAAU,eAAe,oBAAoB,kGAAkG,IAAI,qEAAqE,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yBAAyB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gIAAgI,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mEAAyD,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,eAAe,UAAU,eAAe,oBAAoB,gGAAgG,IAAI,sEAAsE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2EAA2E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mFAAmF,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,eAAe,UAAU,eAAe,oBAAoB,8FAA8F,IAAI,qEAAqE,OAAO,yEAAyE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iEAAiE,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,gBAAgB,UAAU,eAAe,oBAAoB,iGAAiG,IAAI,sEAAsE,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uKAAkK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qDAAqD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAiBD,EAAE,OAAO,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wEAAwE,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAiBD,EAAE,OAAO,CAAC,SAAS,4FAA4F,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8IAA8I,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAiBD,EAAE,OAAO,CAAC,SAAS,sIAAsI,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wFAAwF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,2CAA2C,CAACC,CAAC,EAAE,2CAA2C,CAACC,CAAC,EAAE,+BAA+B,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,8DAA2ED,EAAEe,EAAE,CAAC,KAAK,iCAAiC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,+FAA+F,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,qBAAkCD,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mCAAmC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4SAAuS,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iDAAiD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4WAAkW,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,oBAAoB,CAAC,EAAE,6EAA6E,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,uBAAuB,CAAC,EAAE,eAA4BA,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,qCAAqC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,uBAAuB,CAAC,EAAE,8DAA8D,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,wBAAwB,CAAC,EAAE,8FAAyF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0GAAqG,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,EAAE,kHAAkH,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,mBAAmB,CAAC,EAAE,MAAmBA,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,2BAAwCA,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,6CAA6C,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,qBAAkCA,EAAEe,EAAE,CAAC,KAAK,6DAA6D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAE,gCAAgC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yMAAoM,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,wBAAwB,CAAC,EAAE,mGAAmG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,mCAAmC,CAAC,EAAE,oHAA0G,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,uCAAuC,CAAC,EAAE,oDAA4DA,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,wDAAmD,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,mBAAmB,CAAC,EAAE,oCAAiDA,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,4CAA4C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uDAAuD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,udAAwc,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8IAAyI,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uCAAuC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mXAAyW,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mCAAmC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+IAA+I,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mQAAyP,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oMAAoM,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yRAAoR,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mDAAmD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,YAAyBD,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,uWAAkW,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mVAAmV,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+BAA+B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,sLAAmMD,EAAEe,EAAE,CAAC,KAAK,sEAAsE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,4QAA4Q,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6BAA6B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uZAAuZ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0DAA0D,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+LAA+L,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yBAAyB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,0SAAkTD,EAAEe,EAAE,CAAC,KAAK,oEAAoE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2CAA2C,CAAC,CAAC,CAAC,EAAE,2DAA2D,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qBAAqB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uDAAoED,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,2SAA2S,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qBAAqB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uIAAoJD,EAAEe,EAAE,CAAC,KAAK,iDAAiD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,oSAAoS,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kEAAkE,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oEAAiFD,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,4eAA4e,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4BAAyCD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,yPAAsQA,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,oIAA+H,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yOAAyO,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gDAA6DD,EAAEe,EAAE,CAAC,KAAK,mGAAmG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,wBAAqCA,EAAEe,EAAE,CAAC,KAAK,gGAAgG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,+DAA+D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,yDAAyD,CAACC,CAAC,EAAE,4CAA4C,CAACC,CAAC,EAAE,kBAAkB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,WAAW,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,+WAA2V,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,kBAAkB,UAAU,eAAe,oBAAoB,mGAAmG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kQAAkQ,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kKAAgKD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sBAAsB,CAAC,CAAC,CAAC,EAAE,yPAAyP,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iSAAuR,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0BAA0B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sLAA4K,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2CAA2C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oCAAoC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wEAAwE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kIAAkI,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qcAAgc,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gnBAAimB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6XAAmX,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uBAAuB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6VAAyU,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+HAA+H,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,qDAAqD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iCAAiC,CAAC,CAAC,CAAC,EAAE,gFAAgF,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mKAAmK,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kEAAkE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8HAA8H,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8WAAyW,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8cAAyc,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+VAA2U,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wlBAAmlB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0CAAqC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8SAA8S,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,uBAAuB,UAAU,eAAe,oBAAoB,qGAAqG,IAAI,oEAAoE,OAAO,iKAAiK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qWAA2V,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,spBAAuoB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sbAAua,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6BAA6B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6eAAme,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,iBAAiB,UAAU,eAAe,oBAAoB,kGAAkG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8YAAyY,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,weAAwe,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,cAAc,UAAU,eAAe,oBAAoB,+FAA+F,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mUAAyT,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,YAAY,UAAU,eAAe,oBAAoB,6FAA6F,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4VAA4V,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mLAA8K,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,gCAAgC,CAACC,CAAC,EAAE,gCAAgC,CAACC,CAAC,EAAE,cAAc,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,6WAAqXD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,uFAAuF,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,0KAA6KD,EAAEe,EAAE,CAAC,KAAK,0EAA0E,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gEAAgE,CAAC,CAAC,CAAC,EAAE,8LAAoL,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8CAA8C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yQAAyQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gKAA2J,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wBAAwB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,sKAAsK,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qDAAqD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,8CAA8C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gDAAgD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iCAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qKAAkLD,EAAEe,EAAE,CAAC,KAAK,6DAA6D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,yBAAyB,CAAC,CAAC,CAAC,EAAE,8HAA8H,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yIAAsJD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,iUAA4T,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mVAAoU,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yBAAyB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,4RAAuR,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,EAAE,qBAAkCA,EAAEe,EAAE,CAAC,KAAK,4DAA4D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,EAAE,mCAAmC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,aAAa,CAAC,EAAE,iCAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yHAAyH,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uDAAuD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qYAAqY,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,oBAAoB,CAAC,EAAE,sCAAmDA,EAAEe,EAAE,CAAC,KAAK,4DAA4D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,wIAAwI,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,EAAE,qLAAgL,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,qBAAqB,CAAC,EAAE,oHAAoH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gbAA2a,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kVAAgVD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iDAA4C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2UAAsU,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gJAA6JD,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,2IAAmJA,EAAEe,EAAE,CAAC,KAAK,0EAA0E,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gEAAgE,CAAC,CAAC,CAAC,EAAE,SAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,oEAAoE,CAACC,CAAC,EAAE,sCAAsC,CAACC,CAAC,EAAE,sCAAsC,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,iBAAiB,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,0jBAAgjB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,cAAc,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oFAAiGD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,idAAuc,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+OAA4PD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,qJAA6JA,EAAE,OAAO,CAAC,SAAS,aAAa,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,eAAe,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6FAAwF,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,UAAU,CAAC,EAAE,gYAA2X,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,sBAAsB,CAAC,EAAE,mUAAmU,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,yBAAyB,CAAC,EAAE,uGAAuG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,uBAAuB,CAAC,EAAE,8GAA2HA,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,qFAAqF,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,sBAAsB,CAAC,EAAE,8kBAA8kB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4CAA4C,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,WAAW,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uHAAuH,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,qEAAqE,UAAU,eAAe,oBAAoB,uFAAuF,IAAI,sEAAsE,OAAO,0EAA0E,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,eAAe,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2FAA2F,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAS,CAAcD,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,mCAAgDD,EAAEe,EAAE,CAAC,KAAK,0EAA0E,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAE,8GAA2HA,EAAE,OAAO,CAAC,SAAS,uCAAuC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,8GAA8G,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAS,CAAcD,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,sDAAmED,EAAEe,EAAE,CAAC,KAAK,0EAA0E,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAE,kHAAkH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8LAA8L,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2CAA2C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qFAAqF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qCAAqC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,sDAAmED,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,EAAE,gLAA6LA,EAAEe,EAAE,CAAC,KAAK,yDAAyD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gDAA6DD,EAAE,SAAS,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,4CAA4C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,gVAAgV,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,0OAAkPD,EAAEe,EAAE,CAAC,KAAK,sEAAsE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,wRAAmR,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+BAA+B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mJAAgKD,EAAEe,EAAE,CAAC,KAAK,oHAAoH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,8BAA2CA,EAAE,OAAO,CAAC,SAAS,QAAQ,CAAC,EAAE,yBAAsCA,EAAE,OAAO,CAAC,SAAS,kBAAkB,CAAC,EAAE,uCAAoDA,EAAE,OAAO,CAAC,SAAS,kBAAkB,CAAC,EAAE,4EAAyFA,EAAE,OAAO,CAAC,SAAS,oBAAoB,CAAC,EAAE,mBAAgCA,EAAEe,EAAE,CAAC,KAAK,0EAA0E,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iCAAiC,CAAC,CAAC,CAAC,EAAE,wDAAqEA,EAAE,OAAO,CAAC,SAAS,kBAAkB,CAAC,EAAE,2BAAwCA,EAAE,OAAO,CAAC,SAAS,cAAc,CAAC,EAAE,uEAAoFA,EAAE,OAAO,CAAC,SAAS,kBAAkB,CAAC,EAAE,8CAA2DA,EAAE,OAAO,CAAC,SAAS,kBAAkB,CAAC,EAAE,iKAAiK,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,0IAA0I,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0CAA0C,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAC,iBAA8BD,EAAE,OAAO,CAAC,SAAS,UAAU,CAAC,EAAE,0BAAuCA,EAAE,OAAO,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oFAAoF,CAAC,EAAeA,EAAEgB,EAAE,IAAI,CAAC,UAAU,qBAAqB,MAAM,CAAC,OAAO,OAAO,MAAM,MAAM,EAAE,SAAsBhB,EAAEiB,GAAE,CAAC,oBAAoB,wEAAwE,SAASL,GAAgBZ,EAAEkB,GAAE,CAAC,GAAGN,EAAE,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uCAAs7B,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeZ,EAAE,KAAK,CAAC,SAAS,iCAAiC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8CAA8C,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,6HAA0ID,EAAE,OAAO,CAAC,SAAS,cAAc,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kaAAka,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8FAA2GD,EAAE,OAAO,CAAC,SAAS,aAAa,CAAC,EAAE,kCAAkC,CAAC,CAAC,EAAeA,EAAEgB,EAAE,IAAI,CAAC,UAAU,qBAAqB,MAAM,CAAC,OAAO,OAAO,MAAM,MAAM,EAAE,SAAsBhB,EAAEiB,GAAE,CAAC,oBAAoB,wEAAwE,SAASL,GAAgBZ,EAAEkB,GAAE,CAAC,GAAGN,EAAE,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uCAAq3B,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeZ,EAAE,IAAI,CAAC,SAAS,yOAAyO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,8DAA8D,CAACC,CAAC,EAAE,wBAAwB,CAACC,CAAC,EAAE,wBAAwB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,mCAAmC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2SAA2S,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wHAAqID,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,0JAAkKA,EAAEe,EAAE,CAAC,KAAK,4DAA4D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,KAAkBA,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,KAAkBA,EAAEe,EAAE,CAAC,KAAK,uDAAuD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,kDAAkD,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sLAAsL,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yMAA+L,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6DAAgED,EAAEe,EAAE,CAAC,KAAK,uGAAuG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6CAA6C,CAAC,CAAC,CAAC,EAAE,2HAAmIA,EAAEe,EAAE,CAAC,KAAK,wCAAwC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,mZAA8Y,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uNAA6M,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAoBD,EAAEe,EAAE,CAAC,KAAK,uGAAuG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,oNAA+M,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAoBD,EAAEe,EAAE,CAAC,KAAK,sGAAsG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,yRAAoR,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wIAA8H,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mEAAmE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+YAAgY,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oLAAoL,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8PAA8P,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iCAAiC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2EAA2E,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iGAAiG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,sCAAsC,UAAU,eAAe,oBAAoB,gGAAgG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qCAAqC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wFAAmF,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,gCAA6CD,EAAEe,EAAE,CAAC,KAAK,6EAA6E,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,8IAAyI,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uNAAuN,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,mDAAgED,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,4GAA4G,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6TAA6T,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+NAA0N,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mMAA2MD,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+CAA+C,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4JAAoKD,EAAEe,EAAE,CAAC,KAAK,kDAAkD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sCAAsC,CAAC,CAAC,CAAC,EAAE,+KAA4LA,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAE,wIAAmI,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wXAAmX,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+GAA+G,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6BAA0CD,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,4IAAkI,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+FAA+F,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,8BAA8B,UAAU,eAAe,oBAAoB,mGAAmG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6BAA0CD,EAAE,KAAK,CAAC,SAAS,aAAa,CAAC,EAAE,mYAAmY,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mOAAmO,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qZAAqZ,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2HAAwID,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,OAAoBA,EAAEe,EAAE,CAAC,KAAK,uDAAuD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6LAA6L,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,gDAAgD,UAAU,eAAe,oBAAoB,mHAAmH,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+CAA+C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yKAAyK,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uCAAoDD,EAAE,SAAS,CAAC,SAAS,gBAAgB,CAAC,EAAE,2EAA2E,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uCAAuC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0FAA0F,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,eAA4BD,EAAE,SAAS,CAAC,SAAS,qBAAqB,CAAC,EAAE,kDAAkD,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,2FAA2F,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,yBAAsCD,EAAEe,EAAE,CAAC,KAAK,sEAAsE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,iDAAiD,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,sBAAsB,CAAC,EAAE,wCAAwC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iCAAiC,CAAC,EAAE,iCAA8CA,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,EAAE,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sIAAsI,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qHAAkID,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oCAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oMAAoM,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6CAA6C,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oKAAoK,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uHAAuH,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2EAA2E,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,gGAA6GD,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,0FAAuGA,EAAEe,EAAE,CAAC,KAAK,oEAAoE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qDAAqD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qDAAkED,EAAEe,EAAE,CAAC,KAAK,mDAAmD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,wOAAwO,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4FAAyGD,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,iLAA8LA,EAAEe,EAAE,CAAC,KAAK,sDAAsD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+JAA+J,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wBAAwB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uPAAkP,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,SAAS,UAAU,eAAe,oBAAoB,yFAAyF,IAAI,sEAAsE,OAAO,sKAAsK,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iGAA8GD,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,EAAE,qCAAqC,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,YAAY,UAAU,eAAe,oBAAoB,qFAAqF,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iMAAkL,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kBAAa,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wGAAwG,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4JAAyKD,EAAEe,EAAE,CAAC,KAAK,sGAAsG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,2CAA2C,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sEAA4D,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,wBAAqCD,EAAEe,EAAE,CAAC,KAAK,oEAAoE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iCAAiC,CAAC,CAAC,CAAC,EAAE,uGAAuG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,mGAAgHD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAE,0DAA0D,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6KAA6K,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oJAAoJ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+CAA4DD,EAAEe,EAAE,CAAC,KAAK,iCAAiC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAc,CAAC,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yDAAiED,EAAEe,EAAE,CAAC,KAAK,sGAAsG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4CAAoDD,EAAEe,EAAE,CAAC,KAAK,uGAAuG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oCAAoC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mDAAyC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,4CAA4C,CAACC,CAAC,EAAE,4CAA4C,CAACC,CAAC,EAAE,+BAA+B,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,6XAA0YD,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,kDAAkD,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4NAAuN,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8BAA8B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,2gBAAigB,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kCAAkC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qVAAsU,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8NAA8N,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gkBAAsjB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qCAAqC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4ZAA6Y,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4QAA4Q,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2CAA2C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qRAAqR,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gBAA6BD,EAAEe,EAAE,CAAC,KAAK,6DAA6D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAE,+LAA0L,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sPAAsP,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iHAAuG,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+DAA+D,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iSAAuR,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0DAA0D,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yRAAyR,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uDAAuD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yMAAyM,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2CAA2C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2QAAsQ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2DAA2D,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6OAAmO,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kEAAkE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wOAAwO,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mDAAmD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qNAAqN,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mDAAmD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iMAAuL,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,EAAE,+MAA+M,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,mBAAmB,CAAC,EAAE,0NAAqN,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,MAAmBA,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,4NAA4N,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iDAAiD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yRAAyR,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,+BAA+B,CAAC,EAAE,oHAAoH,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,aAAa,CAAC,EAAeA,EAAEe,EAAE,CAAC,KAAK,iDAAiD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,wBAAgCA,EAAEe,EAAE,CAAC,KAAK,6DAA6D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,wKAAwK,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,8BAA8B,CAAC,EAAE,qIAAqI,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,kCAAkC,CAAC,EAAE,oHAAoH,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,wBAAwB,CAAC,EAAE,iBAA8BA,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,6EAA6E,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,+BAA+B,CAAC,EAAE,yJAAyJ,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,+BAA+B,CAAC,EAAE,qLAAqL,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+CAA+C,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wMAAqND,EAAEe,EAAE,CAAC,KAAK,kIAAkI,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,+BAA+B,CAAC,CAAC,CAAC,EAAE,2DAA2D,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8aAAya,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4LAAuL,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sSAAiS,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iLAAiL,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qDAAgD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qbAAgb,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iQAAyQD,EAAEe,EAAE,CAAC,KAAK,8DAA8D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gDAA6DD,EAAEe,EAAE,CAAC,KAAK,8GAA8G,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,mCAAmC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,gCAAgC,CAACC,CAAC,EAAE,gCAAgC,CAACC,CAAC,EAAE,qBAAqB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,kRAA0RD,EAAEe,EAAE,CAAC,KAAK,gFAAgF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,qKAA2J,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,sHAAmID,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gDAAgD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6EAA0FD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,+UAA+U,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2BAA2B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+SAA+S,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wLAAwL,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wBAAwB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2ZAAsZ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uUAAkU,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qBAAqB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0bAAgb,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yBAAyB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+OAA0O,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mBAAmB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gCAAwCD,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mCAAmC,CAAC,CAAC,CAAC,EAAE,4RAAkR,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kCAAkC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sZAAiZ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wQAA8P,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kCAAkC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yCAAsDD,EAAEe,EAAE,CAAC,KAAK,0CAA0C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qCAAqC,CAAC,CAAC,CAAC,EAAE,wUAA8T,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sZAA4Y,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,EAAE,2OAA2O,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,+BAA+B,CAAC,EAAE,kUAAkU,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,qBAAqB,CAAC,EAAE,2QAAsQ,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,kCAAkC,CAAC,EAAE,6QAA6Q,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oCAAoC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0bAA0b,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qiBAAshB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uBAAuB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,yZAA+Y,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qKAAkLD,EAAEe,EAAE,CAAC,KAAK,6DAA6D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,yBAAyB,CAAC,CAAC,CAAC,EAAE,2KAA2K,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6WAA8V,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kZAAqZD,EAAEe,EAAE,CAAC,KAAK,4DAA4D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,iDAAiD,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+CAA+C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+WAA2V,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2RAAsR,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qEAA6ED,EAAEe,EAAE,CAAC,KAAK,sGAAsG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,yIAAyI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,oBAAoB,CAACC,CAAC,EAAE,oBAAoB,CAACC,CAAC,EAAE,UAAU,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,mTAA2TD,EAAEe,EAAE,CAAC,KAAK,6DAA6D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mPAA8O,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4QAAyRD,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,0CAA0C,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wBAAwB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wSAAmS,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,oBAAoB,CAAC,EAAE,mHAA8G,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,wBAAwB,CAAC,EAAE,sGAAsG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,uBAAuB,CAAC,EAAE,+FAA+F,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,EAAE,2GAA2G,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6ZAAmZ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kBAAkB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2JAA2J,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wRAAwR,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gTAAgT,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iUAA4T,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sQAAsQ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2JAA2J,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,gBAAgB,CAAC,EAAE,wRAAwR,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,cAAc,CAAC,EAAE,4IAA4I,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,gJAAgJ,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,gCAAgC,CAAC,EAAE,0NAA0N,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uBAAuB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qXAA2W,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uRAA+RD,EAAEe,EAAE,CAAC,KAAK,0CAA0C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,4KAA4K,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wIAAwI,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+CAA+C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kWAAkW,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0PAA0P,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iVAA4U,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qaAAga,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uBAAuB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qIAAkJD,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,6BAA0CA,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,kEAAkE,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gDAAgD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6hBAAwhB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wYAAmY,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wCAAwC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wMAAwM,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6OAAwO,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,iRAAiR,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,ufAAkf,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wDAAwD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iPAAiP,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mSAAmS,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qJAA6JD,EAAEe,EAAE,CAAC,KAAK,yFAAyF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,8EAA8E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,6CAA6C,CAACC,CAAC,EAAE,6CAA6C,CAACC,CAAC,EAAE,4BAA4B,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,iXAA4W,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oMAA4MD,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,wGAAmG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,eAAe,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yQAAsRD,EAAEe,EAAE,CAAC,KAAK,iDAAiD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,EAAE,yGAAyG,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,sDAAsD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,gXAA2W,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wDAAwD,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,OAAO,CAAC,EAAE,oGAAoG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,OAAO,CAAC,EAAE,6KAA6K,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,aAAa,CAAC,EAAE,sIAAiI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gTAAgT,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iFAAiF,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2DAA2D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oEAAoE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wDAAwD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oDAAoD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0JAA0J,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gCAAgC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4DAAyED,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,sHAAsH,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,aAAa,CAAC,EAAE,8NAAyN,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,qBAAqB,CAAC,EAAE,qPAAqP,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,4BAA4B,CAAC,EAAE,mMAAmM,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,qBAAqB,CAAC,EAAE,iMAA4L,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oSAA+R,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kBAAkB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2bAA2b,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,WAAW,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iRAAiR,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gMAA2L,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mBAAmB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0LAA0L,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qTAAqT,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+FAA+F,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kBAAkB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gMAAgM,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4SAA4S,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iSAAiS,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4YAA4Y,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uBAAuB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gJAAgJ,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,oBAAoB,CAAC,EAAE,wQAAwQ,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,oCAAoC,CAAC,EAAE,8SAA8S,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,+BAA+B,CAAC,EAAE,uQAAuQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+SAA+S,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uBAAuB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oKAA4KD,EAAEe,EAAE,CAAC,KAAK,qDAAqD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,mMAAmM,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+NAA+N,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yCAAyC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uXAAuX,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAoBD,EAAEe,EAAE,CAAC,KAAK,0GAA0G,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,sLAAsL,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,oCAAoC,CAACC,CAAC,EAAE,oCAAoC,CAACC,CAAC,EAAE,sBAAsB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,uLAAoMD,EAAEe,EAAE,CAAC,KAAK,qDAAqD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,0LAAqL,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uRAAoSD,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6BAA6B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4PAA6O,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,yBAAyB,CAAC,EAAE,oXAAoX,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,qBAAqB,CAAC,EAAE,wSAAwS,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,sBAAsB,CAAC,EAAE,mSAAmS,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,2BAA2B,CAAC,EAAE,+OAA+O,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,8BAA8B,CAAC,EAAE,gRAAsQ,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+CAA+C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wVAA8U,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,yBAAyB,CAAC,EAAE,mQAAyP,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,qBAAqB,CAAC,EAAE,SAAsBA,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAE,8QAA8Q,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,sBAAsB,CAAC,EAAE,2OAAsO,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,2BAA2B,CAAC,EAAE,0MAAqM,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,8BAA8B,CAAC,EAAE,uMAAuM,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oCAAoC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yIAAoI,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,EAAE,SAAsBA,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,0XAA2W,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,EAAE,4SAA4S,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,SAAS,CAAC,EAAE,+RAA+R,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,uBAAuB,CAAC,EAAE,qUAAqU,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2CAA2C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8QAAoQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+NAAqN,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8TAAoT,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+TAA+T,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yVAAyV,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uBAAuB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,ySAAoS,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iQAA4P,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qFAAqF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qFAAqF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oDAAoD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uZAAwY,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0QAAqQ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oCAAoC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0VAAqV,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6TAAmT,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,kGAAkG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,qJAAgJ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,qBAAqB,CAACC,CAAC,EAAE,qBAAqB,CAACC,CAAC,EAAE,yBAAyB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,mTAA2TD,EAAEe,EAAE,CAAC,KAAK,yCAAyC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sBAAsB,CAAC,CAAC,CAAC,EAAE,kJAA6I,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4IAAyJD,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,WAAW,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iBAAiB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8PAA8P,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wFAAwF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+HAA+H,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6JAA8I,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,cAAc,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2DAA2D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4CAA4C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wCAAwC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6CAA6C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+CAA+C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,UAAU,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yDAAyD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sCAAsC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+DAA+D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kEAAkE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2FAA2F,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4FAA4F,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kDAAkD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wEAAwE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0FAA0F,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mEAAmE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mEAAmE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oEAA+D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,UAAU,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8CAA2DD,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,0LAAqL,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kRAA6Q,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uWAAkW,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,cAAc,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oEAAoE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wDAAwD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gEAAgE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,UAAU,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6CAA6C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iFAAiF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wEAAwE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,8DAA8D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2CAA2C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wDAAwD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mEAAmE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6DAA6D,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oeAAqd,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+VAA0V,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sRAAiR,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oCAAoC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,saAAsa,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8RAAyR,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oCAAoC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mHAAgID,EAAEe,EAAE,CAAC,KAAK,iDAAiD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,8SAA8S,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oUAAoU,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yNAAyN,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mCAAmC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uBAAoCD,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,EAAE,0IAAkJA,EAAEe,EAAE,CAAC,KAAK,qDAAqD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sBAAsB,CAAC,CAAC,CAAC,EAAE,wIAAwI,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8MAA8M,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gbAAsa,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wCAAwC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sRAAsR,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kCAAkC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4EAAoFD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,sJAAsJ,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iRAAyRD,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,EAAE,uGAAkG,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2PAAsP,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sWAAiW,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wEAAmE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yNAAyN,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,0LAA6LD,EAAEe,EAAE,CAAC,KAAK,uGAAuG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,iIAAiI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,0DAA0D,CAACC,CAAC,EAAE,6BAA6B,CAACC,CAAC,EAAE,qBAAqB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,gBAAgB,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,uFAAoGD,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,woBAAwoB,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0CAA0C,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAqBD,EAAEe,EAAE,CAAC,KAAK,4CAA4C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,wlBAAwlB,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0aAAqa,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wiBAA8hB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4YAA4Y,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uYAAkY,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,gGAAgG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,2FAAmGA,EAAEe,EAAE,CAAC,KAAK,mCAAmC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,yEAAyE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,0CAA0C,CAACC,CAAC,EAAE,gBAAgB,CAACC,CAAC,EAAE,aAAa,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,WAAW,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,oEAAoE,OAAO,wVAAwV,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,oEAAoE,OAAO,wVAAwV,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,yMAAiND,EAAEe,EAAE,CAAC,KAAK,gDAAgD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,kDAA+DA,EAAEe,EAAE,CAAC,KAAK,2FAA2F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6UAAwU,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mFAAmF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8BAA2CD,EAAEe,EAAE,CAAC,KAAK,8BAA8B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,uFAAkF,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,eAAe,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sKAA4J,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uUAAwT,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iCAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kJAA0JD,EAAEe,EAAE,CAAC,KAAK,2FAA2F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,sKAAsK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4NAAwM,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gCAAgC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oBAAoB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4OAAyPD,EAAEe,EAAE,CAAC,KAAK,kEAAkE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,0DAAuEA,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,QAAqBA,EAAEe,EAAE,CAAC,KAAK,4DAA4D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2BAA2B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4JAAuJ,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yCAAyC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uGAAkG,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qIAAqI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4CAA4C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8fAAof,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wBAA2BD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mBAAmB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sQAAiQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0ZAAuX,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iCAAiC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iSAAuR,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6CAA0DD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,oEAAiFA,EAAE,OAAO,CAAC,SAAS,OAAO,CAAC,EAAE,YAAyBA,EAAE,OAAO,CAAC,SAAS,oBAAoB,CAAC,EAAE,2YAAwW,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sIAA4H,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uDAAuD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iTAA4S,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gXAA2W,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kBAA+BD,EAAEe,EAAE,CAAC,KAAK,8BAA8B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,2EAAsE,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mXAA+V,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,gBAAgB,UAAU,eAAe,oBAAoB,gGAAgG,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,2CAA2C,CAACC,CAAC,EAAE,iBAAiB,CAACC,CAAC,EAAE,cAAc,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,WAAW,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,0MAAkND,EAAEe,EAAE,CAAC,KAAK,gDAAgD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,kDAA+DA,EAAEe,EAAE,CAAC,KAAK,4FAA4F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8UAAyU,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wBAA2BD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oFAAoF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8BAA2CD,EAAEe,EAAE,CAAC,KAAK,8BAA8B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,uFAAkF,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,eAAe,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sKAA4J,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uUAAwT,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wBAA2BD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iCAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kJAA0JD,EAAEe,EAAE,CAAC,KAAK,4FAA4F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,sKAAsK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4NAAwM,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gCAAgC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oBAAoB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4OAAyPD,EAAEe,EAAE,CAAC,KAAK,kEAAkE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,0DAAuEA,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,QAAqBA,EAAEe,EAAE,CAAC,KAAK,4DAA4D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2BAA2B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4JAAuJ,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yCAAyC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uGAAkG,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qIAAqI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4CAA4C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8fAAof,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mBAAmB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sQAAiQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2ZAAwX,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iCAAiC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iSAAuR,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6CAA0DD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,oEAAiFA,EAAE,OAAO,CAAC,SAAS,OAAO,CAAC,EAAE,YAAyBA,EAAE,OAAO,CAAC,SAAS,oBAAoB,CAAC,EAAE,2YAAwW,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sIAA4H,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uDAAuD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kTAA6S,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gXAA2W,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kBAA+BD,EAAEe,EAAE,CAAC,KAAK,8BAA8B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,2EAAsE,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mXAA+V,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,gBAAgB,UAAU,eAAe,oBAAoB,gGAAgG,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,2CAA2C,CAACC,CAAC,EAAE,iBAAiB,CAACC,CAAC,EAAE,cAAc,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,WAAW,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,0MAAkND,EAAEe,EAAE,CAAC,KAAK,gDAAgD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,kDAA+DA,EAAEe,EAAE,CAAC,KAAK,4FAA4F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8UAAyU,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wBAA2BD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oFAAoF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8BAA2CD,EAAEe,EAAE,CAAC,KAAK,8BAA8B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,uFAAkF,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,eAAe,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sKAA4J,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uUAAwT,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wBAA2BD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iCAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kJAA0JD,EAAEe,EAAE,CAAC,KAAK,4FAA4F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,sKAAsK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4NAAwM,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gCAAgC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oBAAoB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4OAAyPD,EAAEe,EAAE,CAAC,KAAK,kEAAkE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,0DAAuEA,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,QAAqBA,EAAEe,EAAE,CAAC,KAAK,4DAA4D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2BAA2B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4JAAuJ,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yCAAyC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uGAAkG,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qIAAqI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4CAA4C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8fAAof,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mBAAmB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sQAAiQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2ZAAwX,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iCAAiC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iSAAuR,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6CAA0DD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,oEAAiFA,EAAE,OAAO,CAAC,SAAS,OAAO,CAAC,EAAE,YAAyBA,EAAE,OAAO,CAAC,SAAS,oBAAoB,CAAC,EAAE,2YAAwW,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sIAA4H,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uDAAuD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kTAA6S,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gXAA2W,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kBAA+BD,EAAEe,EAAE,CAAC,KAAK,8BAA8B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,2EAAsE,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mXAA+V,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,gBAAgB,UAAU,eAAe,oBAAoB,gGAAgG,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,0CAA0C,CAACC,CAAC,EAAE,gBAAgB,CAACC,CAAC,EAAE,aAAa,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,WAAW,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,yMAAiND,EAAEe,EAAE,CAAC,KAAK,gDAAgD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,kDAA+DA,EAAEe,EAAE,CAAC,KAAK,2FAA2F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6UAAwU,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wBAA2BD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mFAAmF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8BAA2CD,EAAEe,EAAE,CAAC,KAAK,8BAA8B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,uFAAkF,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,eAAe,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sKAA4J,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uUAAwT,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iCAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kJAA0JD,EAAEe,EAAE,CAAC,KAAK,2FAA2F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,sKAAsK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4NAAwM,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gCAAgC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oBAAoB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4OAAyPD,EAAEe,EAAE,CAAC,KAAK,kEAAkE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,0DAAuEA,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,QAAqBA,EAAEe,EAAE,CAAC,KAAK,4DAA4D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2BAA2B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4JAAuJ,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yCAAyC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uGAAkG,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qIAAqI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4CAA4C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8fAAof,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mBAAmB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sQAAiQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0ZAAuX,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iCAAiC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iSAAuR,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6CAA0DD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,oEAAiFA,EAAE,OAAO,CAAC,SAAS,OAAO,CAAC,EAAE,YAAyBA,EAAE,OAAO,CAAC,SAAS,oBAAoB,CAAC,EAAE,2YAAwW,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sIAA4H,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uDAAuD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iTAA4S,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gXAA2W,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kBAA+BD,EAAEe,EAAE,CAAC,KAAK,8BAA8B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,2EAAsE,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mXAA+V,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,gBAAgB,UAAU,eAAe,oBAAoB,gGAAgG,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,2CAA2C,CAACC,CAAC,EAAE,iBAAiB,CAACC,CAAC,EAAE,cAAc,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,WAAW,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,0MAAkND,EAAEe,EAAE,CAAC,KAAK,gDAAgD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,kDAA+DA,EAAEe,EAAE,CAAC,KAAK,4FAA4F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8UAAyU,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oFAAoF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8BAA2CD,EAAEe,EAAE,CAAC,KAAK,8BAA8B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,uFAAkF,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,eAAe,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sKAA4J,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uUAAwT,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iCAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kJAA0JD,EAAEe,EAAE,CAAC,KAAK,4FAA4F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,sKAAsK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4NAAwM,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gCAAgC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oBAAoB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4OAAyPD,EAAEe,EAAE,CAAC,KAAK,kEAAkE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,0DAAuEA,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,QAAqBA,EAAEe,EAAE,CAAC,KAAK,4DAA4D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2BAA2B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4JAAuJ,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yCAAyC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uGAAkG,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qIAAqI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4CAA4C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8fAAof,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mBAAmB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sQAAiQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2ZAAwX,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iCAAiC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iSAAuR,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6CAA0DD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,oEAAiFA,EAAE,OAAO,CAAC,SAAS,OAAO,CAAC,EAAE,YAAyBA,EAAE,OAAO,CAAC,SAAS,oBAAoB,CAAC,EAAE,2YAAwW,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sIAA4H,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uDAAuD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kTAA6S,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gXAA2W,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kBAA+BD,EAAEe,EAAE,CAAC,KAAK,8BAA8B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,2EAAsE,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mXAA+V,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,gBAAgB,UAAU,eAAe,oBAAoB,gGAAgG,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,0BAA0B,CAACC,CAAC,EAAE,kBAAkB,CAACC,CAAC,EAAE,iBAAiB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,+HAA4ID,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mCAAmC,CAAC,CAAC,CAAC,EAAE,wHAAgIA,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gRAAgR,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+NAA+N,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,8CAA8C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yCAAyC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mDAAmD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yCAAyC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oCAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gKAAgK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oPAA+O,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2OAAsO,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,cAAc,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wDAAwD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6CAA6C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wCAAwC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kDAAkD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,UAAU,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oDAAoD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oEAA+D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0DAA0D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,8CAA8C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2CAA2C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uEAAuE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sFAAiF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4EAA4E,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mDAAmD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uEAAuE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4EAAuE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,UAAU,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iDAA8DD,EAAEe,EAAE,CAAC,KAAK,sDAAsD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,aAA0BA,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,wHAAwH,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+RAA6RD,EAAEe,EAAE,CAAC,KAAK,iDAAiD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iGAA8GD,EAAEe,EAAE,CAAC,KAAK,6DAA6D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,oMAAoM,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oWAAoW,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,cAAc,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oDAAoD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,8DAA8D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qDAAqD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,UAAU,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2DAA2D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sDAAsD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2CAA2C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2DAA2D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uCAAuC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gDAAgD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yCAAyC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yDAAyD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2DAA2D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8DAA8D,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4WAAwV,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uLAAuL,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qZAAsY,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iWAAiW,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qCAAqC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iVAAiV,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oXAAgW,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yeAA+d,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qCAAqC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qUAAqU,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yPAAoP,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yRAAoR,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wTAAmT,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qCAAqC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kJAAkJ,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wNAAgOD,EAAEe,EAAE,CAAC,KAAK,qDAAqD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sBAAsB,CAAC,CAAC,CAAC,EAAE,gEAAgE,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gMAA2L,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yCAAyC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8RAA8R,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kCAAkC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gUAA2T,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2RAAsR,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qSAAqS,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6DAAwD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0OAAgO,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kQAAkQ,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qCAAkDD,EAAEe,EAAE,CAAC,KAAK,+FAA+F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,iJAA4I,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,uCAAuC,CAACC,CAAC,EAAE,iBAAiB,CAACC,CAAC,EAAE,iBAAiB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,WAAW,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,6LAAqMD,EAAEe,EAAE,CAAC,KAAK,gDAAgD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,kDAA+DA,EAAEe,EAAE,CAAC,KAAK,+FAA+F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,2TAAsT,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wBAA2BD,EAAE,SAAS,CAAC,SAAS,+BAA+B,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,mFAAmF,UAAU,eAAe,oBAAoB,iGAAiG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kFAAkF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8BAA2CD,EAAEe,EAAE,CAAC,KAAK,8BAA8B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,uFAAkF,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,eAAe,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sKAA4J,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qUAAsT,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2IAAmJD,EAAEe,EAAE,CAAC,KAAK,mHAAmH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,sKAAsK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4NAAwM,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gCAAgC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oBAAoB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4OAAyPD,EAAEe,EAAE,CAAC,KAAK,kEAAkE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,0DAAuEA,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,QAAqBA,EAAEe,EAAE,CAAC,KAAK,4DAA4D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2BAA2B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4JAAuJ,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yCAAyC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uGAAkG,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qIAAqI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4CAA4C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4fAAkf,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mBAAmB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sQAAiQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8ZAAsX,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iCAAiC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iSAAuR,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6CAA0DD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,oEAAiFA,EAAE,OAAO,CAAC,SAAS,OAAO,CAAC,EAAE,YAAyBA,EAAE,OAAO,CAAC,SAAS,oBAAoB,CAAC,EAAE,2YAAwW,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sIAA4H,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,IAAiBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uDAAuD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+TAA0T,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gXAA2W,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kBAA+BD,EAAEe,EAAE,CAAC,KAAK,8BAA8B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,2EAAsE,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uXAAmW,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,gBAAgB,UAAU,eAAe,oBAAoB,gGAAgG,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,kCAAkC,CAACC,CAAC,EAAE,0BAA0B,CAACC,CAAC,EAAE,yBAAyB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,KAAK,CAAC,SAAS,iCAAiC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wEAAqFD,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,8UAAsVA,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wBAAwB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,eAAe,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iYAAuX,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kUAAmT,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gNAA2M,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gLAAgL,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mOAAmO,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,cAAc,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yDAAyD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4EAA4E,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mEAAmE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uCAAuC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,UAAU,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sDAAsD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wFAAwF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+CAA+C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sEAAsE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0FAAqF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4EAA4E,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4HAAuH,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,8FAAyF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,UAAU,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oTAA4TD,EAAEe,EAAE,CAAC,KAAK,qDAAqD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,EAAE,8BAA8B,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,icAAkb,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6LAA6L,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mBAA2BD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,yJAAyJ,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,cAAc,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uFAAuF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0EAA0E,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wDAAwD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,UAAU,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wFAAwF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,yDAAsED,EAAEe,EAAE,CAAC,KAAK,6DAA6D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oDAAoD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wDAAwD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,wDAAqED,EAAEe,EAAE,CAAC,KAAK,sDAAsD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sCAAsC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oFAAoF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qDAAqD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kEAAkE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0EAA0E,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yEAAsFD,EAAEe,EAAE,CAAC,KAAK,wCAAwC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,yNAAyN,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wRAA8Q,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4RAA4R,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oJAAoJ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iDAAiD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6bAA6b,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2MAA4L,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mOAA8N,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6KAA6K,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iDAAiD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gNAAgN,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iNAA4M,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gDAAgD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iVAA4U,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4NAA4N,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qDAAqD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oWAA+V,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4TAAkT,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sDAAsD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2QAAmRD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAE,gDAAgD,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6OAA6O,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0EAAqE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0MAA0M,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6VAAwV,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,oGAAoG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,uMAAuM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,6CAA6C,CAACC,CAAC,EAAE,iBAAiB,CAACC,CAAC,EAAE,iBAAiB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,gCAA6CD,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,mMAAmM,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mPAA2PD,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,2BAA2B,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4DAAyED,EAAEe,EAAE,CAAC,KAAK,qDAAqD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,2YAAiY,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mWAAmW,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0cAA2b,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8EAA8E,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,WAAW,CAAC,EAAE,0BAAuCA,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,iFAAiF,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,EAAE,gKAA2J,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,aAAa,CAAC,EAAE,oJAAoJ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mKAAmK,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0DAA0D,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6MAA6M,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sCAAsC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yIAAyI,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wHAAwH,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gJAAgJ,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uIAAuI,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6JAA6J,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0SAAqS,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wCAAwC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wMAA8L,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oUAA0T,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4CAA4C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sLAAiL,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0DAA0D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yDAAyD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yCAAyC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,aAAa,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,ySAAyS,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2GAAwHD,EAAEe,EAAE,CAAC,KAAK,sDAAsD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,wHAAwH,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oCAAoC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gTAA2S,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iCAAiC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0QAA0Q,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qRAAgR,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qCAAqC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yTAAoT,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0KAA0K,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0CAA0C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yQAAyQ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iCAAiC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mTAAmT,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mOAAsOD,EAAEe,EAAE,CAAC,KAAK,iDAAiD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,kCAAkC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gCAAgC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qEAAkFD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,mYAA8X,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mcAAyb,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2CAA2C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uGAAkG,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,mBAAmB,CAAC,EAAE,uGAAuG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,sBAAsB,CAAC,EAAE,sKAAiK,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,yBAAyB,CAAC,EAAE,0HAAqH,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,sBAAsB,CAAC,EAAE,+EAA+E,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,oBAAoB,CAAC,EAAE,8FAA8F,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8CAA8C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0TAAgT,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yPAAoP,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gEAAgE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yNAAoN,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yWAA0V,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,4FAA4F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,8KAAyK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,4BAA4B,CAACC,CAAC,EAAE,oBAAoB,CAACC,CAAC,EAAE,kBAAkB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,KAAK,CAAC,SAAS,2BAA2B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2WAAyWD,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,oCAAoC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,WAAwBD,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mCAAmC,CAAC,CAAC,CAAC,EAAE,0IAAuJA,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,uIAAkI,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uIAAwH,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iEAAiE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2CAA2C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gDAAgD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4EAA4E,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6CAA6C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qEAAqE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qEAAqE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6CAA6C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6DAA6D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kBAAkB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uBAAuB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uLAAuL,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2CAA2C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0CAA0C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sCAAsC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gDAAgD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+CAA+C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iCAAiC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sCAAsC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4DAA4D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gEAAgE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yEAAyE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6DAA6D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mEAAmE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4EAAkE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kEAAkE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4FAA4F,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4EAA4E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,UAAU,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kJAA+JD,EAAEe,EAAE,CAAC,KAAK,6DAA6D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,cAA2BA,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,EAAE,4GAAuG,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iDAAiD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oDAAoD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+CAA+C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yCAAyC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qDAAqD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qDAAqD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gDAAgD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mDAAmD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0CAA0C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6CAA6C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yCAAyC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uEAAuE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kEAAkE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mDAAmD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gEAAgE,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6FAA0GD,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,+BAA0B,CAAC,CAAC,CAAC,EAAE,wVAAwV,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wBAAqCD,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,qMAAkNA,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uCAAuC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sWAAsW,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4cAAkc,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uCAAuC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iTAAiT,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6TAA6T,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gTAAgT,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qGAAkHD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAAuB,CAAC,CAAC,CAAC,EAAE,4NAA+NA,EAAEe,EAAE,CAAC,KAAK,oEAAoE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uCAAuC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iCAA8CD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAE,mLAAmL,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6PAA6P,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2lBAA4kB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2CAA2C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8UAAyU,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sSAAuR,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sDAAsD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iYAAuX,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uWAAkW,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kUAAkU,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wUAAmU,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6EAAwE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+hBAA0hB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6BAAqCD,EAAEe,EAAE,CAAC,KAAK,gGAAgG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,0EAA0E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,kDAAkD,CAACC,CAAC,EAAE,yBAAyB,CAACC,CAAC,EAAE,oCAAoC,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,WAAW,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,oPAAiQD,EAAEe,EAAE,CAAC,KAAK,kGAAkG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,kQAA6P,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kLAA0LD,EAAEe,EAAE,CAAC,KAAK,kEAAkE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,mKAA8J,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wBAA2BD,EAAE,SAAS,CAAC,SAAS,+BAA+B,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,mHAAmH,UAAU,eAAe,oBAAoB,wGAAwG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kHAAkH,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8BAA2CD,EAAEe,EAAE,CAAC,KAAK,8BAA8B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,uFAAkF,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,eAAe,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yHAAsID,EAAEe,EAAE,CAAC,KAAK,gCAAgC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,2hBAAihB,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wBAA2BD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,iDAAiD,UAAU,eAAe,oBAAoB,uGAAuG,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gDAAgD,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2IAAmJD,EAAEe,EAAE,CAAC,KAAK,sHAAsH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,sKAAsK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4NAAwM,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wBAA2BD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,qEAAqE,UAAU,eAAe,oBAAoB,wGAAwG,IAAI,qEAAqE,OAAO,mKAAmK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oEAAoE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oBAAoB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kPAA+PD,EAAEe,EAAE,CAAC,KAAK,kEAAkE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,0DAAuEA,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,QAAqBA,EAAEe,EAAE,CAAC,KAAK,4DAA4D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2BAA2B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4JAAuJ,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yCAAyC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uGAAkG,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2IAA2I,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wBAA2BD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,wEAAwE,UAAU,eAAe,oBAAoB,wGAAwG,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uEAAuE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4CAA4C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kFAA6E,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uFAAuF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,kHAA0HD,EAAEe,EAAE,CAAC,KAAK,gCAAgC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+UAA4S,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wBAA2BD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,wDAAwD,UAAU,eAAe,oBAAoB,6GAA6G,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uDAAuD,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wPAAwP,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wBAA2BD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,kGAAkG,UAAU,eAAe,oBAAoB,qGAAqG,IAAI,qEAAqE,OAAO,mKAAmK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iGAAiG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mBAAmB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uTAA6S,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kZAAoX,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wBAA2BD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,qDAAqD,UAAU,eAAe,oBAAoB,8GAA8G,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oDAAoD,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iCAAiC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iSAAuR,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6CAA0DD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,oEAAiFA,EAAE,OAAO,CAAC,SAAS,OAAO,CAAC,EAAE,YAAyBA,EAAE,OAAO,CAAC,SAAS,oBAAoB,CAAC,EAAE,qZAAkX,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wBAA2BD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,wEAAwE,UAAU,eAAe,oBAAoB,wGAAwG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uEAAuE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kIAAwH,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oXAA4XD,EAAEe,EAAE,CAAC,KAAK,8BAA8B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,2EAAsE,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4ZAAwY,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,qBAAqB,UAAU,eAAe,oBAAoB,gGAAgG,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,2DAA2D,CAACC,CAAC,EAAE,kBAAkB,CAACC,CAAC,EAAE,qDAAqD,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,WAAW,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,MAAM,CAAC,IAAI,oCAAoC,UAAU,eAAe,oBAAoB,8FAA8F,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mCAAmC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mYAAyX,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iCAAiC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qNAAqN,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,mCAAmC,UAAU,eAAe,oBAAoB,wGAAwG,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qQAAqQ,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qMAAkND,EAAEe,EAAE,CAAC,KAAK,6FAA6F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,sHAAsH,UAAU,eAAe,oBAAoB,kGAAkG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qHAAqH,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oGAAiHD,EAAEe,EAAE,CAAC,KAAK,kDAAkD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,uJAAkJ,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8BAA2CD,EAAEe,EAAE,CAAC,KAAK,8BAA8B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,uFAAkF,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,eAAe,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qQAAsP,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8CAA8C,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iLAAoLD,EAAEe,EAAE,CAAC,KAAK,+DAA+D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,aAAa,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8LAA8L,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yEAAsFD,EAAE,OAAO,CAAC,SAAS,gBAAgB,CAAC,EAAE,wHAA8G,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,0CAA0C,UAAU,eAAe,oBAAoB,wGAAwG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yCAAyC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6DAA0ED,EAAE,OAAO,CAAC,SAAS,eAAe,CAAC,EAAE,mHAAmH,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,iBAAiB,UAAU,eAAe,oBAAoB,8FAA8F,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2FAAmGD,EAAEe,EAAE,CAAC,KAAK,uDAAuD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gNAAwND,EAAEe,EAAE,CAAC,KAAK,kDAAkD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,iBAA8BA,EAAE,OAAO,CAAC,SAAS,8BAA8B,CAAC,EAAE,4BAA4B,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mHAAyG,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,sCAAsC,UAAU,eAAe,oBAAoB,wGAAwG,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qCAAqC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gLAAgL,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,4BAA4B,UAAU,eAAe,oBAAoB,gGAAgG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2IAAmJD,EAAEe,EAAE,CAAC,KAAK,iHAAiH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,4FAA4F,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0eAAkc,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,uBAAuB,UAAU,eAAe,oBAAoB,qGAAqG,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iBAAiB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+ZAA+Z,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qYAAsX,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,uBAAuB,UAAU,eAAe,oBAAoB,mGAAmG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qVAAiU,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qIAAgI,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yFAAsGD,EAAE,OAAO,CAAC,SAAS,QAAQ,CAAC,EAAE,qCAAqC,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,cAAc,UAAU,eAAe,oBAAoB,8FAA8F,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,aAAa,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mJAAgKD,EAAE,OAAO,CAAC,SAAS,MAAM,CAAC,EAAE,qFAAqF,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,wBAAwB,UAAU,eAAe,oBAAoB,mGAAmG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6GAAgHD,EAAE,OAAO,CAAC,SAAS,oBAAoB,CAAC,EAAE,kDAA+DA,EAAE,OAAO,CAAC,SAAS,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,+BAA+B,UAAU,eAAe,oBAAoB,oGAAoG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oLAA+K,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,yBAAyB,UAAU,eAAe,oBAAoB,sGAAsG,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sMAAkL,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wTAAuSD,EAAE,OAAO,CAAC,SAAS,UAAU,CAAC,EAAE,OAAoBA,EAAE,OAAO,CAAC,SAAS,aAAa,CAAC,EAAE,aAA0BA,EAAE,OAAO,CAAC,SAAS,OAAO,CAAC,EAAE,0IAAgI,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,iBAAiB,UAAU,eAAe,oBAAoB,gGAAgG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8BAA8B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4PAAkP,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2CAAwDD,EAAEe,EAAE,CAAC,KAAK,wCAAwC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,maAAqY,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sPAAiP,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mHAAyG,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,oCAAoC,UAAU,eAAe,oBAAoB,8FAA8F,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mCAAmC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4FAAoGD,EAAEe,EAAE,CAAC,KAAK,8BAA8B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,2EAAsE,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mBAAmB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0VAAgV,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,qBAAqB,UAAU,eAAe,oBAAoB,0FAA0F,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,mCAAmC,CAACC,CAAC,EAAE,oBAAoB,CAACC,CAAC,EAAE,oBAAoB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,8KAA2LD,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,uEAAkE,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,sJAAmKD,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAc,CAAC,CAAC,CAAC,EAAE,qCAAqC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8BAA8B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mKAA8J,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6CAAwC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mEAA8D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qJAAgJ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sJAAsJ,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,cAAc,CAAC,EAAE,mMAAmM,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,UAAU,CAAC,EAAE,wNAAmN,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,UAAU,CAAC,EAAE,qJAAqJ,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yDAAyD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,wPAAmP,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0YAAqY,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gVAAsU,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qDAAqD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+QAA+Q,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0NAA0N,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sMAAsM,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qDAAqD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,cAA2BD,EAAEe,EAAE,CAAC,KAAK,oEAAoE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAE,kXAAmW,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gEAA6ED,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,4RAA4R,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+GAA+G,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAS,CAAcD,EAAE,IAAI,CAAC,SAAS,+CAA+C,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6GAAwG,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,gCAA6CD,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,iGAAiG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAS,CAAcD,EAAE,IAAI,CAAC,SAAS,oDAAoD,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,YAAyBD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,4CAA4C,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kEAAkE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iEAA8ED,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,iIAA8IA,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,4JAA4J,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iFAA8FD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,0HAAuIA,EAAEe,EAAE,CAAC,KAAK,iDAAiD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,wDAAmD,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yDAAyD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,wNAAwN,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mCAAgDD,EAAEe,EAAE,CAAC,KAAK,oEAAoE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,8MAA8M,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uDAAuD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iDAAiD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uEAAuE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6FAA6F,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,UAAuBD,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,0GAAuHA,EAAEe,EAAE,CAAC,KAAK,oEAAoE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,EAAE,2OAA2O,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+BAA+B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6DAA0ED,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,yBAAyB,CAAC,CAAC,CAAC,EAAE,6QAA6Q,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,sFAAyFD,EAAEe,EAAE,CAAC,KAAK,iLAAiL,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kEAAkE,CAAC,CAAC,CAAC,EAAE,+JAAqJ,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4OAA4O,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,0BAAkCD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,+GAA+G,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iCAAiC,CAAC,EAAE,oIAA4IA,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,6BAA6B,CAAC,EAAE,iLAAuK,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,6BAA6B,CAAC,EAAE,4JAAuJ,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,kBAAkB,CAAC,EAAE,uCAAoDA,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,wHAAwH,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,kBAAkB,CAAC,EAAE,kGAA6F,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mEAAgFD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,kNAA+NA,EAAEe,EAAE,CAAC,KAAK,qFAAqF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oCAAoC,CAAC,CAAC,CAAC,EAAE,+DAA+D,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wCAAwC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6OAAwO,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mBAA2BD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,sQAAmRA,EAAEe,EAAE,CAAC,KAAK,6DAA6D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,2HAA2H,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uBAA+BD,EAAEe,EAAE,CAAC,KAAK,kGAAkG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,4DAAyEA,EAAEe,EAAE,CAAC,KAAK,+FAA+F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,4EAA4E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,8DAA8D,CAACC,CAAC,EAAE,yBAAyB,CAACC,CAAC,EAAE,oCAAoC,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,WAAW,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,oPAAiQD,EAAEe,EAAE,CAAC,KAAK,kGAAkG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,kQAA6P,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4OAAoPD,EAAEe,EAAE,CAAC,KAAK,8BAA8B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,uFAAkF,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,eAAe,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8OAA2PD,EAAEe,EAAE,CAAC,KAAK,6EAA6E,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,4DAAuD,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4CAA4C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wVAAoU,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,uBAAuB,UAAU,eAAe,oBAAoB,wGAAwG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8FAAyF,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,uBAAuB,UAAU,eAAe,oBAAoB,qGAAqG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4LAAuL,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2IAAmJD,EAAEe,EAAE,CAAC,KAAK,sHAAsH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,4FAA4F,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yBAAyB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iOAA6M,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,0BAA0B,UAAU,eAAe,oBAAoB,4GAA4G,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iBAAiB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oTAAoT,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,4DAA4D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+KAA0K,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yCAAyC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uGAAkG,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAS,CAAcA,EAAE,IAAI,CAAC,SAAS,CAAC,gJAA6JD,EAAE,OAAO,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,uBAAuB,UAAU,eAAe,oBAAoB,oGAAoG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kHAAmG,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,0CAA0C,UAAU,eAAe,oBAAoB,yGAAyG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mNAAmN,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,qCAAqC,UAAU,eAAe,oBAAoB,wGAAwG,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mNAA8M,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,yBAAyB,UAAU,eAAe,oBAAoB,uGAAuG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qgBAAmd,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,iBAAiB,UAAU,eAAe,oBAAoB,gGAAgG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8BAA8B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iSAAuR,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6CAA0DD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,oEAAiFA,EAAE,OAAO,CAAC,SAAS,OAAO,CAAC,EAAE,YAAyBA,EAAE,OAAO,CAAC,SAAS,oBAAoB,CAAC,EAAE,wNAAoM,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,sBAAsB,UAAU,eAAe,oBAAoB,kGAAkG,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wNAAoM,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,gBAAgB,UAAU,eAAe,oBAAoB,+FAA+F,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oKAA0J,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8RAAsSD,EAAEe,EAAE,CAAC,KAAK,8BAA8B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,2EAAsE,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mBAAmB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4ZAAwY,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,qBAAqB,UAAU,eAAe,oBAAoB,gGAAgG,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,gGAAgG,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,yBAAyB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,WAAW,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,mRAA2RD,EAAEe,EAAE,CAAC,KAAK,kGAAkG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,sHAAsH,UAAU,eAAe,oBAAoB,kGAAkG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qHAAqH,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6OAAwO,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,4DAA4D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uIAAuI,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,4DAA4D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,kDAAkD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yBAAsCD,EAAEe,EAAE,CAAC,KAAK,8BAA8B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,qDAAqD,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,eAAe,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gIAA6ID,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2IAAmJD,EAAEe,EAAE,CAAC,KAAK,8FAA8F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,4JAA4J,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8MAA+L,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,oBAAoB,UAAU,eAAe,oBAAoB,oGAAoG,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iEAAiE,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,kBAAkB,UAAU,eAAe,oBAAoB,mGAAmG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0eAAkc,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,uBAAuB,UAAU,eAAe,oBAAoB,qGAAqG,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iBAAiB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kbAAkb,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,kBAAkB,UAAU,eAAe,oBAAoB,gGAAgG,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iTAAkS,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,4DAA4D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+MAA0M,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,yBAAyB,UAAU,eAAe,oBAAoB,kHAAkH,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,sTAA0SD,EAAEe,EAAE,CAAC,KAAK,8BAA8B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,iFAA4E,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,4DAA4D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,kDAAkD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mBAAmB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6VAAmV,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,qBAAqB,UAAU,eAAe,oBAAoB,yFAAyF,IAAI,qEAAqE,OAAO,mKAAmK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,oCAAoC,CAACC,CAAC,EAAE,oCAAoC,CAACC,CAAC,EAAE,kBAAkB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,8MAA2ND,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,8DAA2EA,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,sHAAiH,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2IAAwJD,EAAEe,EAAE,CAAC,KAAK,4BAA4B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,0LAAgL,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kBAAkB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sRAAiR,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,8CAA8C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gCAAgC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,UAAuBD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,0CAA0C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6RAA6R,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kUAA6T,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yDAAyD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAoBD,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,gRAA6RA,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,qDAAqD,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,mBAAmB,CAAC,EAAE,+GAA+G,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,gBAAgB,CAAC,EAAE,mGAAmG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,4LAAkL,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+DAA4ED,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAE,8HAA2IA,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAE,uBAAoCA,EAAEe,EAAE,CAAC,KAAK,6DAA6D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,8BAAsCA,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,oIAA0H,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kCAAkC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kaAA8Y,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,oBAAoB,CAAC,EAAE,MAAmBA,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,4LAA4L,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,2LAAsL,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kRAA0RD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,4FAA4F,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kCAAkC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wXAAmX,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6TAAqUD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qSAAqS,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kCAAkC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mDAAgED,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,aAA0BA,EAAEe,EAAE,CAAC,KAAK,qDAAqD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sBAAsB,CAAC,CAAC,CAAC,EAAE,iOAAiO,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iRAAyRD,EAAEe,EAAE,CAAC,KAAK,mDAAmD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAE,kEAA6D,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,0CAAuDD,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,8QAA8Q,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8BAA8B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oaAAoa,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8IAA2JD,EAAEe,EAAE,CAAC,KAAK,8BAA8B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,8IAAoI,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sDAAsD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2BAAmCD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAE,uHAAuH,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,mCAAmC,CAAC,EAAE,yDAAsEA,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,0GAAuHA,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,oCAAoC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,qBAAqB,CAAC,EAAE,2DAAwEA,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,+PAAkQA,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,kBAAkB,CAAC,EAAE,+QAA0Q,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,EAAE,+KAA0K,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uFAAkF,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qJAAkKD,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,sQAAiQ,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,0DAAkED,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,ycAAgb,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,6FAA6F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,wCAAgDA,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,mFAAgGA,EAAEe,EAAE,CAAC,KAAK,gGAAgG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,iIAAiI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,2DAA2D,CAACC,CAAC,EAAE,eAAe,CAACC,CAAC,EAAE,eAAe,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,WAAW,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,+WAA0W,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oMAAiND,EAAEe,EAAE,CAAC,KAAK,6FAA6F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,sHAAsH,UAAU,eAAe,oBAAoB,kGAAkG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qHAAqH,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uOAA+OD,EAAEe,EAAE,CAAC,KAAK,8BAA8B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,qDAAqD,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,eAAe,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wIAAwI,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,4EAA4E,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,sEAAsE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qCAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2IAAmJD,EAAEe,EAAE,CAAC,KAAK,iHAAiH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,oNAAoN,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iBAAiB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+aAA+a,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,kBAAkB,UAAU,eAAe,oBAAoB,gGAAgG,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sOAAuN,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mBAAmB,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,6BAA6B,UAAU,eAAe,oBAAoB,wGAAwG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yYAAqX,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,kBAAkB,UAAU,eAAe,oBAAoB,8GAA8G,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qDAAqD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,sGAAyGD,EAAE,OAAO,CAAC,SAAS,UAAU,CAAC,EAAE,YAAyBA,EAAE,OAAO,CAAC,SAAS,oBAAoB,CAAC,EAAE,iDAAuC,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,4CAA4C,UAAU,eAAe,oBAAoB,mGAAmG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2CAA2C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kPAA0M,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,oCAAoC,UAAU,eAAe,oBAAoB,2GAA2G,IAAI,oEAAoE,OAAO,iKAAiK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mCAAmC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iKAAmI,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,qCAAqC,UAAU,eAAe,oBAAoB,+GAA+G,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oCAAoC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+GAAkHD,EAAE,OAAO,CAAC,SAAS,eAAe,CAAC,EAAE,KAAkBA,EAAE,OAAO,CAAC,SAAS,cAAc,CAAC,EAAE,SAAsBA,EAAE,OAAO,CAAC,SAAS,YAAY,CAAC,EAAE,mKAAgLA,EAAE,OAAO,CAAC,SAAS,6BAA6B,CAAC,EAAE,IAAI,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,yCAAyC,UAAU,eAAe,oBAAoB,kHAAkH,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wCAAwC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,waAAgY,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8KAAyK,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,yBAAyB,UAAU,eAAe,oBAAoB,kHAAkH,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2CAA2C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0GAA0G,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,yEAA4ED,EAAE,OAAO,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,gDAAmDD,EAAE,OAAO,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uGAAyE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,eAA4BD,EAAE,OAAO,CAAC,SAAS,oBAAoB,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kdAAubD,EAAE,OAAO,CAAC,SAAS,UAAU,CAAC,EAAE,OAAoBA,EAAE,OAAO,CAAC,SAAS,aAAa,CAAC,EAAE,8EAAoE,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,iBAAiB,UAAU,eAAe,oBAAoB,yGAAyG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sEAAsE,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,oBAAoB,UAAU,eAAe,oBAAoB,0GAA0G,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qPAA2O,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2CAAwDD,EAAEe,EAAE,CAAC,KAAK,wCAAwC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,kaAAoY,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wOAAmO,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iHAAuG,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gKAA2J,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qEAAqE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oEAAoE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gEAAgE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kBAA+BD,EAAEe,EAAE,CAAC,KAAK,8BAA8B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,2EAAsE,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,eAAe,UAAU,eAAe,oBAAoB,uGAAuG,IAAI,qEAAqE,OAAO,mKAAmK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mBAAmB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uWAA6V,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,qBAAqB,UAAU,eAAe,oBAAoB,yFAAyF,IAAI,qEAAqE,OAAO,mKAAmK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,4EAA4E,CAACC,CAAC,EAAE,gCAAgC,CAACC,CAAC,EAAE,8BAA8B,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,WAAW,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,wHAAwH,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4UAAkU,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oMAAiND,EAAEe,EAAE,CAAC,KAAK,4GAA4G,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,sHAAsH,UAAU,eAAe,oBAAoB,kGAAkG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qHAAqH,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yJAAiKD,EAAEe,EAAE,CAAC,KAAK,8BAA8B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,qDAAqD,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,eAAe,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qIAAqI,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,2EAA2E,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,yDAAyD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6CAA6C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,gIAA6ID,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2IAAmJD,EAAEe,EAAE,CAAC,KAAK,gIAAgI,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,4JAA4J,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iBAAiB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+aAA+a,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,kBAAkB,UAAU,eAAe,oBAAoB,gGAAgG,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gSAA4Q,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mBAAmB,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,6BAA6B,UAAU,eAAe,oBAAoB,wGAAwG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6VAAyU,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,kBAAkB,UAAU,eAAe,oBAAoB,8GAA8G,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iKAA8KD,EAAE,OAAO,CAAC,SAAS,MAAM,CAAC,EAAE,qBAAqB,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,eAAe,UAAU,eAAe,oBAAoB,8GAA8G,IAAI,qEAAqE,OAAO,mKAAmK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+HAA4ID,EAAE,OAAO,CAAC,SAAS,MAAM,CAAC,EAAE,yEAAsFA,EAAE,OAAO,CAAC,SAAS,gBAAgB,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,kBAAkB,UAAU,eAAe,oBAAoB,2GAA2G,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qMAAgM,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,yBAAyB,UAAU,eAAe,oBAAoB,kHAAkH,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kBAAkB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yFAAsGD,EAAEe,EAAE,CAAC,KAAK,4EAA4E,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,wGAA8F,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,4BAA4B,UAAU,eAAe,oBAAoB,uGAAuG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0KAAqK,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,kBAAkB,UAAU,eAAe,oBAAoB,8GAA8G,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8LAAyL,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,eAAe,UAAU,eAAe,oBAAoB,+GAA+G,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yKAAoK,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,yBAAyB,UAAU,eAAe,oBAAoB,gHAAgH,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yUAAqT,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6WAA0U,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,iBAAiB,UAAU,eAAe,oBAAoB,+FAA+F,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wEAAwE,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,oBAAoB,UAAU,eAAe,oBAAoB,kGAAkG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sQAA4P,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2CAAwDD,EAAEe,EAAE,CAAC,KAAK,wCAAwC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,oaAAsY,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mPAA8O,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6HAAmH,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wGAAgHD,EAAEe,EAAE,CAAC,KAAK,8BAA8B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,0EAAqE,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,eAAe,UAAU,eAAe,oBAAoB,+FAA+F,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mBAAmB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oWAA0V,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,qBAAqB,UAAU,eAAe,oBAAoB,yFAAyF,IAAI,qEAAqE,OAAO,mKAAmK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,sDAAsD,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,WAAW,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,kBAA+BD,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,mYAA8X,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mQAAgRD,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,EAAE,kDAAkD,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mBAAmB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8PAA2QD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE,gLAA2K,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gQAAgQ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oBAAoB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wQAAwQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mSAAmS,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2DAA2D,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iGAA8GD,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,8SAAoS,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8BAA8B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+QAA0Q,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,yBAAyB,CAAC,EAAE,0LAAqL,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,sBAAsB,CAAC,EAAE,gNAAgN,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,sBAAsB,CAAC,EAAE,2MAA2M,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,8BAA8B,CAAC,EAAE,gXAA2W,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+JAA+J,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,EAAE,qGAAqG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,uFAAuF,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,kBAAkB,CAAC,EAAE,sFAAsF,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,sBAAsB,CAAC,EAAE,yGAAoG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uDAAoED,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,iEAA4D,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,6TAA6T,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,cAAc,CAAC,EAAE,0PAA0P,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,aAAa,CAAC,EAAE,8MAA8M,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uBAAuB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6eAAme,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0XAA0X,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iDAAiD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2GAAwHD,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,gWAAgW,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,2VAAyVA,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,QAAqBA,EAAEe,EAAE,CAAC,KAAK,sDAAsD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAE,+FAA4GA,EAAEe,EAAE,CAAC,KAAK,6DAA6D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,+BAA+B,CAAC,CAAC,CAAC,EAAE,4EAA4E,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sDAAsD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mBAA2BD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,iNAA4M,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,aAAa,CAAC,EAAE,uIAAoJA,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,oDAAoD,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,gBAAgB,CAAC,EAAE,yPAAoP,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,6BAA6B,CAAC,EAAE,iCAA8CA,EAAEe,EAAE,CAAC,KAAK,mDAAmD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAE,QAAqBA,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,wFAAwF,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,0BAAuCA,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,aAA0BA,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,8HAA8H,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,wBAAwB,CAAC,EAAE,gJAAgJ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2CAA2C,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,0DAAuED,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAE,6RAAwR,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mBAA2BD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,4PAA4P,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,sFAAsF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,8EAAyE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,gDAAgD,CAACC,CAAC,EAAE,gDAAgD,CAACC,CAAC,EAAE,sBAAsB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,yWAAyW,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gNAA6ND,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,yBAAyB,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uBAAuB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kPAA+PD,EAAEe,EAAE,CAAC,KAAK,4BAA4B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,8BAA8B,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kZAA6Y,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oWAA0V,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+CAA+C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oIAAoI,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oBAAoB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2MAAsM,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6OAAwO,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iBAAiB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wJAAwJ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sQAAiQ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,SAAS,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6RAAwR,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6RAA6R,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,UAAU,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wYAAmY,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8QAAoQ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uCAAuC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gbAAia,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qdAA2c,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4RAA6Q,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+aAAqa,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4KAA4K,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kDAAkD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iSAAySD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,6DAA6D,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8UAA8U,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mBAAgCD,EAAEe,EAAE,CAAC,KAAK,yLAAyL,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAE,kSAAkS,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0OAA0O,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wWAAmW,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,sPAAyPD,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,yFAAyF,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4CAAoDD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAE,2LAA2L,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mlBAAykB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0DAAqD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,obAAob,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uNAAkN,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4DAAoED,EAAEe,EAAE,CAAC,KAAK,2DAA2D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,wDAAgEA,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAE,+KAA+K,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,iGAAiG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,uBAAoCA,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,kDAAkD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,4DAA4D,CAACC,CAAC,EAAE,uBAAuB,CAACC,CAAC,EAAE,sCAAsC,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,gBAAgB,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,kTAA0TD,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,iJAAiJ,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6CAAqDD,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gCAAgC,CAAC,CAAC,CAAC,EAAE,gVAAgV,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kHAA+HD,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,EAAE,qHAA6HA,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,0OAAgO,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8BAA8B,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,+BAA+B,UAAU,eAAe,oBAAoB,uFAAuF,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,gXAAwXA,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oZAAoZ,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qUAAqU,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kQAAkQ,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,4FAAyGD,EAAEe,EAAE,CAAC,KAAK,iDAAiD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,EAAE,kFAAkF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sRAAsR,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kSAA+SD,EAAEe,EAAE,CAAC,KAAK,qDAAqD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sBAAsB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uCAAuC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,uBAAuB,UAAU,eAAe,oBAAoB,4FAA4F,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yWAAoW,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,geAAsd,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0aAAsZ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sGAAiG,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,wDAAwD,CAAC,EAAE,sPAAsP,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,oBAAoB,CAAC,EAAE,oTAA0S,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8CAA8C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0VAA0V,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,0PAAkQD,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,mCAAmC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,qDAAqD,UAAU,eAAe,oBAAoB,8FAA8F,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oDAAoD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wLAAqMD,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,EAAE,uDAAoEA,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,+QAAqQ,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2GAAsG,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,oBAAoB,CAAC,EAAE,sEAAsE,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,oBAAoB,CAAC,EAAE,qGAAqG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,sBAAsB,CAAC,EAAE,kFAAkF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6cAA6c,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kJAA+JD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAE,yBAAyB,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uGAAkG,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,gDAAgD,UAAU,eAAe,oBAAoB,yFAAyF,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+CAA+C,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mBAAmB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6UAA0VD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,yCAAyC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oMAAoM,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,qBAAqB,CAAC,EAAE,+GAA+G,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,UAAU,CAAC,EAAE,sFAAsF,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,WAAW,CAAC,EAAE,kDAA+DA,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sFAAsF,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mBAAmB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qRAAqR,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sDAAsD,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,4DAAyEA,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,2FAAwGA,EAAEe,EAAE,CAAC,KAAK,mDAAmD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,EAAE,mCAAmC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,oBAAoB,CAAC,EAAE,oLAAoL,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qBAAqB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gIAAgI,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iDAAiD,CAAC,EAAE,8ZAA8Z,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,kEAAkE,CAAC,EAAE,6RAA0SA,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,qPAAqP,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mLAAmL,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yGAAoG,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kDAA6C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mOAAyN,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,sbAAmcD,EAAEe,EAAE,CAAC,KAAK,gDAAgD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,6JAA0KA,EAAEe,EAAE,CAAC,KAAK,gDAAgD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,8TAAyT,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,keAAmd,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2dAAodD,EAAEe,EAAE,CAAC,KAAK,uCAAuC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE,qHAAgH,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iaAAuZ,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,cAAc,CAAC,EAAE,iaAAkZ,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,kBAAkB,CAAC,EAAE,sCAAmDA,EAAEe,EAAE,CAAC,KAAK,yBAAyB,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,sjBAAsjB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,gBAAgB,CAAC,EAAE,6fAAmf,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,aAAa,CAAC,EAAE,+nBAA+nB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,UAAU,CAAC,EAAE,uZAAkZ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qcAA2b,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gLAAgL,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,mlBAA8kB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,kBAAkB,CAAC,EAAE,sbAAka,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oCAAoC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mQAA8P,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,mCAAmC,CAAC,EAAE,mSAAsSA,EAAEe,EAAE,CAAC,KAAK,yDAAyD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,mGAAmG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,mBAAmB,CAAC,EAAE,uXAA6W,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+iBAA0iB,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,iCAAiC,UAAU,eAAe,oBAAoB,yFAAyF,IAAI,oEAAoE,OAAO,iKAAiK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gCAAgC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gEAAgE,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,gCAAgC,CAAC,EAAE,qJAAmJA,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,iWAAkV,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,oCAAoC,CAAC,EAAE,6OAA6O,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,oCAAoC,CAAC,EAAE,kLAAkL,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,uCAAuC,CAAC,EAAE,6JAA6J,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yBAAyB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,seAA4d,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,aAAa,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,8IAA8I,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,EAAE,iGAAiG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,6CAA0DD,EAAE,SAAS,CAAC,SAAS,kBAAkB,CAAC,EAAE,6CAA6C,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,0CAAuDD,EAAE,SAAS,CAAC,SAAS,iCAAiC,CAAC,EAAE,uCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAiB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uuBAA8sB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,sFAAmGD,EAAEe,EAAE,CAAC,KAAK,gDAAgD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,mdAAmd,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2BAAwCD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,oOAAoO,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,4BAA4B,UAAU,eAAe,oBAAoB,wFAAwF,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,YAAyBD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,+XAAqX,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,ykBAA+jB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iJAAiJ,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,kCAAkC,CAAC,EAAE,oKAAoK,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iDAAiD,CAAC,EAAE,uGAAuG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,sBAAsB,CAAC,EAAE,wQAAyP,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,uCAAuC,CAAC,EAAE,uBAAoCA,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,wFAAqGA,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,2KAAsK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uBAAuB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8BAAsCD,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iCAAiC,CAAC,CAAC,CAAC,EAAE,gUAAsT,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,oGAAoG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,OAAoBA,EAAEe,EAAE,CAAC,KAAK,8BAA8B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,uDAAuD,CAACC,CAAC,EAAE,aAAa,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,kCAA+CD,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2CAA2C,CAAC,CAAC,CAAC,EAAE,kKAAkK,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qUAAkVD,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iGAA8GD,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mCAAmC,CAAC,CAAC,CAAC,EAAE,uSAAkS,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iCAAiC,CAAC,EAAE,qFAAgF,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,kCAAkC,CAAC,EAAE,qGAAgG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oBAAoB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gKAAwKD,EAAEe,EAAE,CAAC,KAAK,qDAAqD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,EAAE,qDAAqD,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,qBAAqB,CAAC,EAAE,qHAA6HA,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,8DAA8D,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,oCAAoC,CAAC,EAAE,kUAAkU,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,EAAE,+KAA+K,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,qBAAqB,CAAC,EAAE,sKAAsK,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,EAAE,oSAA+R,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8DAA8D,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oPAA4PD,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uCAAuC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iHAA8HD,EAAEe,EAAE,CAAC,KAAK,yDAAyD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,EAAE,uOAAoPA,EAAEe,EAAE,CAAC,KAAK,4DAA4D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,EAAE,2DAA2D,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+HAA+H,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8CAA8C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mZAA8Y,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uFAAuF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kEAAkE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yMAAyM,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8BAA8B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yEAAsFD,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,oMAA+L,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mGAAmG,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mDAAmD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uQAAkQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yOAAoO,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,YAAY,CAAC,EAAE,sNAAiN,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,kBAAkB,CAAC,EAAE,8BAA2CA,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,2KAA2K,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,gCAAgC,CAAC,EAAE,yNAAiOA,EAAEe,EAAE,CAAC,KAAK,iDAAiD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,+CAA+C,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mFAAgGD,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,sJAAmKA,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,aAA0BA,EAAEe,EAAE,CAAC,KAAK,uDAAuD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+EAA+E,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,6VAAmV,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uXAA+XD,EAAEe,EAAE,CAAC,KAAK,6DAA6D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,6BAA6B,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iBAA8BD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oCAAoC,CAAC,CAAC,CAAC,EAAE,iBAA8BA,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,qBAAkCA,EAAEe,EAAE,CAAC,KAAK,mDAAmD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,yHAAyH,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,wBAAwB,CAAC,EAAE,sBAA8BA,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,uKAAuK,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,+BAA+B,CAAC,EAAE,yDAAiEA,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,eAA4BA,EAAEe,EAAE,CAAC,KAAK,mDAAmD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,EAAE,6BAA6B,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,kBAAkB,CAAC,EAAE,8CAAsDA,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,2MAAwNA,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sBAAsB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,+BAA+B,CAAC,EAAE,kUAAwT,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,wBAAwB,CAAC,EAAE,4RAAuR,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,2BAA2B,CAAC,EAAE,gMAA2L,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,yBAAyB,CAAC,EAAE,wKAAmK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mEAA8D,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qSAAgS,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2EAAwFD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,EAAE,kEAA+EA,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,8GAAsHA,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,uFAAuF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,yGAAyG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,4DAA4D,CAACC,CAAC,EAAE,cAAc,CAACC,CAAC,EAAE,cAAc,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,4OAAuO,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4QAAoRD,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,yDAAyD,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wBAAwB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8UAA8U,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oQAAuQD,EAAEe,EAAE,CAAC,KAAK,uDAAuD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,0EAA0E,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kLAAkL,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kCAAkC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4JAAyKD,EAAEe,EAAE,CAAC,KAAK,uDAAuD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,yBAAyB,CAAC,CAAC,CAAC,EAAE,+BAA4CA,EAAEe,EAAE,CAAC,KAAK,iDAAiD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,0DAA0D,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0JAAqJ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oCAAoC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2FAA2F,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kDAAkD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mDAAmD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+CAA+C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mOAAmO,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8BAA8B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8MAA8M,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oCAAoC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kNAA6M,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sCAAsC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8NAA8N,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2BAA2B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2EAAwFD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,uRAAkR,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0aAAga,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6YAA6Y,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qDAAqD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oOAA+N,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qBAAqB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6QAAwQ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6BAA6B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4PAA4P,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8BAA8B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iHAA8HD,EAAEe,EAAE,CAAC,KAAK,wCAAwC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,iNAAiN,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gCAA2B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8ZAA8Z,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wDAAwD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8LAA8L,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,cAAc,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mJAAgKD,EAAEe,EAAE,CAAC,KAAK,iDAAiD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,oOAAoO,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iFAA8FD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,yHAAyH,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8CAA8C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+MAA+M,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gNAA2M,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gGAA2F,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8BAA8B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sPAAuO,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mBAAmB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uNAAkN,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uKAAuK,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iFAAiF,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kUAA+UD,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,gEAAgE,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iDAAyDD,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,0OAAuPA,EAAEe,EAAE,CAAC,KAAK,6DAA6D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iCAAiC,CAAC,CAAC,CAAC,EAAE,gBAA6BA,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,mEAAmE,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mBAA2BD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,+FAA4GA,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAE,kQAA6P,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wCAAwC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qOAAkPD,EAAEe,EAAE,CAAC,KAAK,qDAAqD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,EAAE,0HAA0H,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kHAA0HD,EAAEe,EAAE,CAAC,KAAK,yFAAyF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,iCAAiC,CAACC,CAAC,EAAE,iCAAiC,CAACC,CAAC,EAAE,eAAe,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,uPAAoQD,EAAEe,EAAE,CAAC,KAAK,wCAAwC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,EAAE,6IAAwI,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oOAA0N,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yBAAyB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kDAA+DD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,2MAAwNA,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,0EAA0E,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0TAA0T,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sRAAiR,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uTAAuT,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2PAAsP,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6WAAwW,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,saAA4Z,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kNAA+ND,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,KAAkBA,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,mGAAmG,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAqBD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,oJAAiKA,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,kFAAkF,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sDAAsD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wQAAqRD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,4KAAuK,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mDAAmD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+CAA+C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0DAA0D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,wCAAqDD,EAAEe,EAAE,CAAC,KAAK,sEAAsE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,EAAE,6BAA6B,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2DAA2D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yUAAyU,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAkBD,EAAEe,EAAE,CAAC,KAAK,yFAAyF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,0GAA0G,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uFAAuF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mEAAmE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qGAAqG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wCAAqDD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,yRAAoR,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wCAAqDD,EAAEe,EAAE,CAAC,KAAK,uFAAuF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sDAAiD,CAAC,CAAC,CAAC,EAAE,+KAA+K,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wDAAwD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8IAAyI,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yBAAyB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uTAAkT,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0BAA0B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iDAA8DD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,6SAA6S,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,YAAY,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sRAAsR,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kFAAkF,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gIAA6ID,EAAEe,EAAE,CAAC,KAAK,4CAA4C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,KAAkBA,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,4RAA4R,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,0WAAkXD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,8BAA2CA,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,uHAA+HA,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,oNAAiOA,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,gCAA6CA,EAAEe,EAAE,CAAC,KAAK,6DAA6D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mBAA2BD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,sGAAmHA,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6CAA6C,CAAC,CAAC,CAAC,EAAE,6GAA6G,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6QAAwQ,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4BAAyCD,EAAEe,EAAE,CAAC,KAAK,sEAAsE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,EAAE,qPAA2O,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0NAA0N,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wEAAmE,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,wXAAmX,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gNAA2M,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mBAA2BD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oCAAoC,CAAC,CAAC,CAAC,EAAE,qPAAgP,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,0FAA0F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,0FAA0F,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,2CAA2C,CAACC,CAAC,EAAE,gCAAgC,CAACC,CAAC,EAAE,OAAO,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,6WAA6W,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kPAA+PD,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,eAAe,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mYAAyX,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,sBAAmCD,EAAEe,EAAE,CAAC,KAAK,2EAA2E,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iDAAiD,CAAC,CAAC,CAAC,EAAE,0FAAuGA,EAAEe,EAAE,CAAC,KAAK,mGAAmG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mCAAmC,CAAC,CAAC,CAAC,EAAE,8LAA8L,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yEAAyE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gEAAgE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0DAA0D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2EAA2E,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,8CAA8C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gDAAgD,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yDAAyD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gEAAgE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6DAA6D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wEAAwE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0EAAqE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kCAAkC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yRAAyR,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uBAAuB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oHAAiID,EAAEe,EAAE,CAAC,KAAK,sFAAsF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kDAAkD,CAAC,CAAC,CAAC,EAAE,+BAA4CA,EAAEe,EAAE,CAAC,KAAK,kEAAkE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sCAAsC,CAAC,CAAC,CAAC,EAAE,uCAAuC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wUAAqVD,EAAEe,EAAE,CAAC,KAAK,wFAAwF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAE,qDAAqD,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qBAAqB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gPAAgP,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0CAA0C,CAAC,CAAC,CAAC,EAAE,mWAAyV,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iTAA4S,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qLAAqL,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,mBAAmB,CAAC,EAAE,uJAAkJ,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,oBAAoB,CAAC,EAAE,4GAA4G,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,2BAA2B,CAAC,EAAE,+GAA0G,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,cAAc,CAAC,EAAE,iGAAyGA,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oOAA0N,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0CAA0C,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oHAA4HD,EAAEe,EAAE,CAAC,KAAK,wGAAwG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gEAAgE,CAAC,CAAC,CAAC,EAAE,wBAAwB,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wGAAwG,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yBAAyB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2CAA2C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+JAA0J,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uDAAuD,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,uDAAuD,CAAC,EAAE,8KAA8K,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,oEAAoE,CAAC,EAAE,gFAAgF,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,kDAAkD,CAAC,EAAE,mEAAmE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sYAA4X,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wDAAwD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,4LAAyMA,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,iCAAiC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oEAAoE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oEAAoE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAqBD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,8CAAyC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iCAA8CD,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,uKAA6J,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oEAAiFD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,6HAA0IA,EAAEe,EAAE,CAAC,KAAK,6DAA6D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,+BAA+B,CAAC,CAAC,CAAC,EAAE,kIAA0IA,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,qFAAqF,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mBAA2BD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,8CAAsDA,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,4JAAyKA,EAAEe,EAAE,CAAC,KAAK,sEAAsE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iCAA4B,CAAC,CAAC,CAAC,EAAE,wGAAwG,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,eAA4BD,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gCAA2B,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wCAAwC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qGAAkHD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,0TAAqT,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2BAAwCD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,sWAAsW,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4NAAyOD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,sHAAiH,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oDAAoD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kZAA6Y,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mBAA2BD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,uHAAoIA,EAAEe,EAAE,CAAC,KAAK,kFAAkF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,6DAA6D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,yCAAyC,CAACC,CAAC,EAAE,aAAa,CAACC,CAAC,EAAE,aAAa,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,wRAAwR,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yRAAyR,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,cAAc,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uVAAuV,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2TAAiT,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,eAAe,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sGAAsG,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4FAA4F,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sFAAsF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+DAA+D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mUAAoT,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yZAAoZ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6QAA6Q,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,cAAc,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yNAAyN,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,eAAe,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uMAAkM,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iWAA4V,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gCAAgC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,aAAa,UAAU,eAAe,oBAAoB,+GAA+G,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,aAAa,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2RAA2R,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,UAAU,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oLAAoL,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,8CAA8C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qCAAqC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sBAAsB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gCAAgC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6FAA6F,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,SAAS,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kNAA6M,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sLAAiL,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uCAAuC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0FAA0F,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mCAAmC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iDAAiD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8TAAyT,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6KAA6K,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qZAAqZ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6BAA6B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kLAAkL,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gNAAgN,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gdAAgd,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mZAAmZ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oPAAoP,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iDAA4C,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,sDAA8DD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAE,kKAA+KA,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,6GAA0HA,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,uFAAuF,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,kbAAkb,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mBAA2BD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,oVAA0U,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0OAAqO,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+CAA+C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mSAAmS,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uCAA+CD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,8HAA8H,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,wFAAwF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,yEAAyE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,mDAAmD,CAACC,CAAC,EAAE,gBAAgB,CAACC,CAAC,EAAE,eAAe,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,mSAAmS,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6JAAqKD,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,yFAAoF,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yBAAyB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wKAAmK,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iPAA4O,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yMAAyM,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oBAAoB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wZAAyY,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mNAAmN,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2BAA2B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yIAAyI,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0TAAgT,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,0IAAkJD,EAAEe,EAAE,CAAC,KAAK,qDAAqD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,kHAAkH,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iCAAiC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2VAAsV,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kLAAkL,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kEAAkE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uJAA6I,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oDAAoD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kJAA0JD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6CAA6C,CAAC,CAAC,CAAC,EAAE,6EAAqFA,EAAEe,EAAE,CAAC,KAAK,iDAAiD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,uGAAuG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gDAAgD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uUAAuU,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0BAA0B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4RAA4R,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wPAAwP,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+QAA+Q,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+VAA+V,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wCAAwC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yVAAyV,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2IAAsI,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qEAAqE,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8QAA2RD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,4EAAuE,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kRAA6Q,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kCAAkC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0PAA0P,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kCAAkC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8LAAyL,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6BAA6B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+EAA4FD,EAAEe,EAAE,CAAC,KAAK,sDAAsD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,iHAAiH,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iCAAiC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wRAAwR,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+BAA+B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+IAAuJD,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,kJAAkJ,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sCAAsC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wLAAyK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qOAAqO,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oFAAiGD,EAAEe,EAAE,CAAC,KAAK,qDAAqD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,yGAAyG,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wOAAwO,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uBAAoCD,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,yOAAyO,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mEAA8D,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mBAA2BD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oCAAoC,CAAC,CAAC,CAAC,EAAE,wJAAwJ,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kSAA6R,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,kCAA+CD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,sLAA8LD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,+CAA4DA,EAAEe,EAAE,CAAC,KAAK,sDAAsD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,qGAAqG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oDAAoD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kOAAkO,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+BAAuCD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,kIAAkI,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,0FAA0F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,8GAA8G,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,+CAA+C,CAACC,CAAC,EAAE,iBAAiB,CAACC,CAAC,EAAE,gBAAgB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,yFAAsGD,EAAEe,EAAE,CAAC,KAAK,4DAA4D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,mSAAmS,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kEAA+ED,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,uVAAuV,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,eAAe,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0QAA0Q,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uKAA+KD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,2FAA2F,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8DAA8D,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iFAAiF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sFAAsF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wGAAwG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6CAA6C,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uCAAuC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gDAAgD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mCAAmC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mDAAmD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gCAAgC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,0QAAkRD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,4FAAuF,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,ggBAA2f,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gcAA4a,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8DAA8D,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+FAA+F,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gFAAgF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yFAAyF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sEAAsE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+DAA+D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2DAAsD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wEAAwE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gEAAgE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,8DAA8D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oDAAoD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iKAAyKD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,mKAAyJ,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+NAA+N,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gRAAiQ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gDAAgD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8YAAsZD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,sEAAsE,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sTAAsT,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iDAAiD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gJAAgJ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oCAAoC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4ZAAuZ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yPAAoP,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sCAAsC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4PAA4P,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6LAA6L,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qBAAqB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kVAAwU,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iDAA4C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kVAA6U,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,0DAAkED,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,iDAA8DA,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,uJAAoKA,EAAEe,EAAE,CAAC,KAAK,mDAAmD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,yBAAyB,CAAC,CAAC,CAAC,EAAE,wIAAqJA,EAAEe,EAAE,CAAC,KAAK,qFAAqF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mCAAmC,CAAC,CAAC,CAAC,EAAE,sHAAiH,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+CAA4DD,EAAEe,EAAE,CAAC,KAAK,sDAAsD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oCAAoC,CAAC,CAAC,CAAC,EAAE,oOAAiPA,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAsBA,EAAEe,EAAE,CAAC,KAAK,sEAAsE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,0HAA0H,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sDAAsD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,maAAma,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mBAA2BD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oCAAoC,CAAC,CAAC,CAAC,EAAE,2GAA2G,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iEAAiE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mEAAmE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+EAA+E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,2FAA2F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,iHAAiH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,yDAAyD,CAACC,CAAC,EAAE,0BAA0B,CAACC,CAAC,EAAE,4BAA4B,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,mBAAmB,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,yZAA0Y,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4iBAAwhB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kWAAmV,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2BAA2B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oDAAiED,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,qOAAgO,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mfAA2fD,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,4BAA4B,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,2EAAwFA,EAAE,SAAS,CAAC,SAAS,YAAY,CAAC,EAAE,8EAA2FA,EAAE,KAAK,CAAC,SAAS,WAAW,CAAC,EAAE,uLAA0LA,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAE,iCAA8CA,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,oRAA4RA,EAAEe,EAAE,CAAC,KAAK,gDAAgD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,wGAAwG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iCAAiC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+CAA+C,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,4BAA4B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,SAAS,CAAC,SAAS,GAAG,CAAC,EAAE,kHAAkH,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,EAAE,2CAA2C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0CAA0C,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qLAAkMD,EAAE,KAAK,CAAC,SAAS,KAAK,CAAC,EAAE,gQAA8PA,EAAEe,EAAE,CAAC,KAAK,6EAA6E,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAE,wEAAwE,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uLAA+LD,EAAEe,EAAE,CAAC,KAAK,iFAAiF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iFAAiF,CAAC,CAAC,CAAC,EAAE,0KAA0K,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wFAAwF,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iCAAiC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6CAA6C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8DAA2ED,EAAEe,EAAE,CAAC,KAAK,mHAAmH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0EAA0E,CAAC,CAAC,CAAC,EAAE,gbAA2a,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4PAA4P,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mDAAmD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qCAAqC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,cAAc,CAAC,EAAE,qHAAqH,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,EAAE,qJAAqJ,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,cAAc,CAAC,EAAE,6LAAwL,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mCAAmC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8LAA2MD,EAAEe,EAAE,CAAC,KAAK,sDAAsD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iFAAiF,CAAC,CAAC,CAAC,EAAE,2OAA2O,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,sFAAsF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sEAAsE,CAAC,CAAC,CAAC,EAAE,qiBAAshB,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4CAA4C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qCAAqC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,SAAS,CAAC,EAAE,8GAA8G,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,OAAO,CAAC,EAAE,yIAAyI,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,EAAE,6FAA6F,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8BAA8B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yCAAsDD,EAAEe,EAAE,CAAC,KAAK,wEAAwE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gDAAgD,CAAC,CAAC,CAAC,EAAE,6WAAmW,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gMAAwMD,EAAEe,EAAE,CAAC,KAAK,wGAAwG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iDAAiD,CAAC,CAAC,CAAC,EAAE,6OAAwO,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4WAAoXD,EAAEe,EAAE,CAAC,KAAK,yEAAyE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sEAAsE,CAAC,CAAC,CAAC,EAAE,2XAAsX,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,saAAsa,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uCAAuC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qDAAqD,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,SAAS,CAAC,EAAE,6LAA6L,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,cAAc,CAAC,EAAE,+HAA+H,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sCAAsC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qDAAkED,EAAEe,EAAE,CAAC,KAAK,+FAA+F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sFAAsF,CAAC,CAAC,CAAC,EAAE,scAAic,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4cAA4c,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qDAAqD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sCAAsC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,OAAO,CAAC,EAAE,wFAAwF,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,MAAM,CAAC,EAAE,qGAAqG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,aAAa,CAAC,EAAE,iFAAiF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,YAAY,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2YAA4X,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4HAAyID,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,0MAA0M,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uJAAoKD,EAAEe,EAAE,CAAC,KAAK,uGAAuG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,2DAA2D,CAACC,CAAC,EAAE,6BAA6B,CAACC,CAAC,EAAE,+BAA+B,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,yQAAiRD,EAAEe,EAAE,CAAC,KAAK,iDAAiD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6CAA6C,CAAC,CAAC,CAAC,EAAE,iJAAiJ,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+NAA0N,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uCAAuC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6WAA6W,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,sVAAmWD,EAAEe,EAAE,CAAC,KAAK,2JAA2J,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wEAAwE,CAAC,CAAC,CAAC,EAAE,2EAAsE,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6KAA0LD,EAAEe,EAAE,CAAC,KAAK,6DAA6D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,4CAAyDA,EAAEe,EAAE,CAAC,KAAK,sDAAsD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,+BAA0B,CAAC,CAAC,CAAC,EAAE,6DAA6D,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mcAAubD,EAAEe,EAAE,CAAC,KAAK,iDAAiD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,mEAAmE,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+BAA+B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6PAAwP,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mCAAmC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6OAA6O,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8BAA8B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iRAAiR,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+BAA+B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mVAAgWD,EAAEe,EAAE,CAAC,KAAK,iDAAiD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oBAAoB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oLAAoL,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kQAAkQ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8EAA8E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4YAA4Y,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wCAAwC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6NAAmN,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,oCAAoC,CAAC,EAAE,uKAAuK,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iCAAiC,CAAC,EAAE,qNAAqN,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,+BAA+B,CAAC,EAAE,sMAAsM,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qCAAqC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iOAA4N,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,kBAAkB,CAAC,EAAE,qGAAqG,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,cAAc,CAAC,EAAE,4HAA4H,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,mBAAmB,CAAC,EAAE,+IAA+I,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wBAAwB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sSAAsS,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iDAAiD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kPAAkP,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2CAA2C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uZAAuZ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gSAAgS,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oDAAoD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8KAA8K,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iWAAiW,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mUAAmU,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sCAAsC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mUAAmU,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qCAAqC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,sWAAmXD,EAAEe,EAAE,CAAC,KAAK,gDAAgD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,+CAA+C,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kDAAkD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8FAAsGD,EAAEe,EAAE,CAAC,KAAK,6DAA6D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,yCAAyC,CAAC,CAAC,CAAC,EAAE,gCAA6CA,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,EAAE,YAAyBA,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oCAAoC,CAAC,CAAC,CAAC,EAAE,wDAAwD,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6QAA6Q,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yCAAsDD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,kDAA+DA,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,yDAAsEA,EAAEe,EAAE,CAAC,KAAK,sEAAsE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iCAAiC,CAAC,CAAC,CAAC,EAAE,+GAA4HA,EAAEe,EAAE,CAAC,KAAK,sDAAsD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,4DAA4D,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wCAAwC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qJAAkKD,EAAEe,EAAE,CAAC,KAAK,iDAAiD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gDAAgD,CAAC,CAAC,CAAC,EAAE,yNAAyN,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mBAA2BD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,kPAA6O,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,0GAA0G,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,+FAA+F,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,+CAA+C,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,mBAAmB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,mTAAmT,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gIAA6ID,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,+BAA+B,CAAC,CAAC,CAAC,EAAE,uDAAuD,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2BAA2B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6XAA8W,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sCAAiC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,8CAA8C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sCAAsC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wPAAmP,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gFAA6FD,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,iHAAiH,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8PAAyP,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wBAAwB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4QAA4Q,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uKAAoLD,EAAEe,EAAE,CAAC,KAAK,wFAAwF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wCAAwC,CAAC,CAAC,CAAC,EAAE,sRAAsR,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wOAAwO,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mCAAmC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sFAAsF,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2HAAsH,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4OAA4O,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iSAAiS,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+EAA+E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wHAAwH,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,SAAS,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oBAAiCD,EAAEe,EAAE,CAAC,KAAK,4HAA4H,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,4CAAyDA,EAAE,SAAS,CAAC,SAAS,qCAAqC,CAAC,EAAE,8RAAyR,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mBAAmB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4FAAoGD,EAAEe,EAAE,CAAC,KAAK,mHAAmH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8CAA8C,CAAC,CAAC,CAAC,EAAE,+DAA4EA,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,EAAE,uCAAuC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,YAAY,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oMAAuMD,EAAEe,EAAE,CAAC,KAAK,wFAAwF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oCAAoC,CAAC,CAAC,CAAC,EAAE,+GAA4HA,EAAEe,EAAE,CAAC,KAAK,yFAAyF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,+BAA+B,CAAC,CAAC,CAAC,EAAE,iHAA8HA,EAAEe,EAAE,CAAC,KAAK,0IAA0I,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4CAA4C,CAAC,CAAC,CAAC,EAAE,wBAAwB,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gCAAgC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gJAAgJ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yBAAyB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mRAAmR,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iOAA4N,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sMAAsM,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,SAAS,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kHAA+HD,EAAEe,EAAE,CAAC,KAAK,2GAA2G,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iCAA4B,CAAC,CAAC,CAAC,EAAE,2DAAsD,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4DAA4D,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kMAAqMD,EAAEe,EAAE,CAAC,KAAK,0CAA0C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,+BAA0B,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,yBAAyB,CAAC,EAAE,oGAAoG,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,6BAA6B,CAAC,EAAE,2CAAwDA,EAAEe,EAAE,CAAC,KAAK,wCAAwC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,uDAAuD,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,mCAAmC,CAAC,EAAE,8JAA8J,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,wBAAwB,CAAC,EAAE,6KAAwK,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,qBAAqB,CAAC,EAAE,mKAA8J,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2DAA2D,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yDAAsED,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,gaAAga,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,0SAAkTA,EAAEe,EAAE,CAAC,KAAK,sEAAsE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,QAAqBA,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,+IAA+I,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,0CAAuDD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oCAAoC,CAAC,CAAC,CAAC,EAAE,4YAAuY,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uBAAoCD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,+HAA4IA,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,0RAAqR,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oFAAiGD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,6MAA6M,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8CAA8C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4bAAub,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oEAA4ED,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,iNAA4M,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,sEAAmFD,EAAEe,EAAE,CAAC,KAAK,8FAA8F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,yDAAyD,CAACC,CAAC,EAAE,sBAAsB,CAACC,CAAC,EAAE,sBAAsB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,iCAA8CD,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,wSAAmS,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yEAAsFD,EAAE,KAAK,CAAC,SAAS,qCAAqC,CAAC,EAAE,yKAA+J,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4QAAyRD,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2CAA2C,CAAC,CAAC,CAAC,EAAE,mIAAmI,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+HAA0H,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4DAA4D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qEAAqE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gDAAgD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4OAA4O,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qBAAqB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8IAA2JD,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,6DAA6D,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uTAAkT,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8NAAsOD,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,KAAkBA,EAAEe,EAAE,CAAC,KAAK,wCAAwC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,mJAAmJ,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wWAAmW,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2BAA2B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kRAAkR,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+MAA+M,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4NAA4N,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0JAAqJ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8BAA8B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wVAAwV,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oMAAoM,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uBAAuB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yTAAyT,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6QAA8P,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mCAAmC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uQAAuQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oSAAoS,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sIAAsI,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wBAAwB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6PAAqQD,EAAEe,EAAE,CAAC,KAAK,wCAAwC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oCAAoC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gCAA6CD,EAAEe,EAAE,CAAC,KAAK,kDAAkD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,uVAA6U,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,mBAAmB,CAAC,EAAE,kGAA6F,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,qBAAqB,CAAC,EAAE,2IAA2I,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,gBAAgB,CAAC,EAAE,8HAA8H,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,0BAA0B,CAAC,EAAE,mHAA8G,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,yBAAyB,CAAC,EAAE,sHAAsH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kLAA0LD,EAAEe,EAAE,CAAC,KAAK,wEAAwE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uCAAuC,CAAC,CAAC,CAAC,EAAE,uPAAoQA,EAAEe,EAAE,CAAC,KAAK,4DAA4D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wCAAwC,CAAC,CAAC,CAAC,EAAE,6CAA0DA,EAAEe,EAAE,CAAC,KAAK,kIAAkI,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,qDAAqD,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oDAAoD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,odAAgc,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mJAAgKD,EAAEe,EAAE,CAAC,KAAK,6DAA6D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,wGAAwG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,eAAe,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4NAA4N,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0OAA0O,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4XAA4X,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mBAAmB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wRAA8Q,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6BAA0CD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,0CAAuDA,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,gLAAgL,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8BAA2CD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,+SAA0S,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iOAAiO,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wBAAwB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mFAAgGD,EAAEe,EAAE,CAAC,KAAK,6DAA6D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,kRAAkR,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wEAAgFD,EAAEe,EAAE,CAAC,KAAK,oLAAoL,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,uKAAuK,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iFAA8FD,EAAEe,EAAE,CAAC,KAAK,4GAA4G,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,oKAAoK,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,0CAAuDD,EAAEe,EAAE,CAAC,KAAK,yEAAyE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,oPAAoP,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qLAA6LD,EAAEe,EAAE,CAAC,KAAK,2JAA2J,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,EAAE,yJAAyJ,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8jBAA8jB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2IAAmJD,EAAEe,EAAE,CAAC,KAAK,6DAA6D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mEAAmE,CAAC,CAAC,CAAC,EAAE,SAAI,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sCAAsC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4MAA4M,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iCAAiC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,wHAAgIA,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,EAAE,oWAA0V,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8FAAsGD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,EAAE,8MAA8M,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mCAAmC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qcAAqc,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iEAA8ED,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,EAAE,+MAA4NA,EAAEe,EAAE,CAAC,KAAK,qDAAqD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0BAA0B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uDAAoED,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,8LAA8L,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kKAA6J,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8BAA8B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6FAA0GD,EAAEe,EAAE,CAAC,KAAK,kDAAkD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,qQAAqQ,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4cAAkc,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qDAAqD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wJAAqKD,EAAEe,EAAE,CAAC,KAAK,uDAAuD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAE,KAAkBA,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iCAAiC,CAAC,CAAC,CAAC,EAAE,KAAkBA,EAAEe,EAAE,CAAC,KAAK,4CAA4C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,+BAA+B,CAAC,CAAC,CAAC,EAAE,kGAAkG,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+ZAA+Z,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sMAAiM,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+OAA0O,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,8BAA8B,UAAU,eAAe,oBAAoB,8GAA8G,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2EAA2E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uaAAua,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sCAAsC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,kDAAkD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0BAAqB,CAAC,CAAC,CAAC,EAAE,ySAAyS,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uFAAoGD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,EAAE,qDAAqD,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gCAAgC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2OAA2O,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8bAAyb,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oCAAoC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gPAA8OD,EAAEe,EAAE,CAAC,KAAK,6DAA6D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mTAAmT,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,sKAA8KD,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,EAAE,8JAA8J,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oDAAoD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2RAA4Q,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+SAA+S,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6BAA0CD,EAAEe,EAAE,CAAC,KAAK,sEAAsE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,8LAA8L,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uCAAuC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yEAAsFD,EAAEe,EAAE,CAAC,KAAK,kDAAkD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0BAAqB,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+BAA+B,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6CAA6C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qCAAqC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6IAA6I,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iCAA8CD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oCAAoC,CAAC,CAAC,CAAC,EAAE,0KAAqK,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qNAAqN,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6CAA6C,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uUAA0UD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,wEAAwE,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,ucAAkc,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sDAAsD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kZAAkZ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6DAA6D,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kHAA+HD,EAAEe,EAAE,CAAC,KAAK,kDAAkD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,mHAAmH,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qNAAkOD,EAAEe,EAAE,CAAC,KAAK,qDAAqD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sBAAsB,CAAC,CAAC,CAAC,EAAE,0OAAqO,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uHAA+HD,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kDAAkD,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0CAA0C,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kBAA+BD,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,+SAA+S,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mQAAmQ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qDAAqD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sYAAiY,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4MAA4M,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mCAAmC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kUAAwT,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gCAA6CD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAE,+JAA+J,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kDAAkD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qPAAqP,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uQAAuQ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2BAA2B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6PAA6P,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wRAAqSD,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,2CAA2C,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iDAAiD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mDAAgED,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,gMAAgM,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iCAA8CD,EAAEe,EAAE,CAAC,KAAK,sEAAsE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,KAAkBA,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,sMAAiM,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yKAAoK,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2BAA2B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,YAAyBD,EAAEe,EAAE,CAAC,KAAK,sEAAsE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAA6B,CAAC,CAAC,CAAC,EAAE,2FAAwGA,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qCAAqC,CAAC,CAAC,CAAC,EAAE,qHAAqH,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oCAAoC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2DAAwED,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,iLAAiL,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6BAA6B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qOAA6OD,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAE,+HAA0H,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qCAAqC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qQAAqQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gUAAgU,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kEAAkE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qaAAga,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6PAA0QD,EAAEe,EAAE,CAAC,KAAK,6DAA6D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,2FAAsF,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2TAAsT,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gCAAwCD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,+CAA+C,CAAC,CAAC,CAAC,EAAE,uDAAoEA,EAAEe,EAAE,CAAC,KAAK,iGAAiG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,uCAAuC,CAACC,CAAC,EAAE,oBAAoB,CAACC,CAAC,EAAE,oBAAoB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,gOAA6OD,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,8GAA2HA,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAE,0KAA0K,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,0FAAuGD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,uRAAkR,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mCAAmC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oLAAuLD,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,+CAA+C,CAAC,CAAC,CAAC,EAAE,kKAA+KA,EAAEe,EAAE,CAAC,KAAK,6DAA6D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qEAAgE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oCAA4CD,EAAEe,EAAE,CAAC,KAAK,iDAAiD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,gNAA8MA,EAAEe,EAAE,CAAC,KAAK,qEAAqE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oBAAe,CAAC,CAAC,CAAC,EAAE,6SAA8R,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sSAAsS,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qCAAqC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4TAA4T,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kCAAkC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qSAAgS,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+CAA+C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sDAAsD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,sBAAmCD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kJAA6I,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sCAAsC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0OAA0O,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qBAAqB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4LAAkL,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uBAAuB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qOAAgO,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4CAA4C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kUAAkU,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0BAA0B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0UAAgU,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,sFAAmGD,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,oDAAoD,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iFAA4E,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,WAAwBD,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,mEAAmE,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0EAA0E,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,2DAAyDD,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4FAAuF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0KAA0K,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8CAA8C,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,UAAuBD,EAAEe,EAAE,CAAC,KAAK,uDAAuD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,EAAE,gHAAwHA,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,uNAAuN,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,aAA0BD,EAAEe,EAAE,CAAC,KAAK,wCAAwC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mCAA8B,CAAC,CAAC,CAAC,EAAE,mYAAgZA,EAAEe,EAAE,CAAC,KAAK,kIAAkI,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uCAAuC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,0IAAkJD,EAAEe,EAAE,CAAC,KAAK,iDAAiD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,EAAE,mMAAyL,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mCAAmC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qCAAqC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oCAAoC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kCAAkC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qOAAgO,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uQAAuQ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oCAAoC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uUAAkU,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mCAAmC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kXAA6W,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0BAA0B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uOAAkO,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iSAAiS,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yBAAyB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gUAA2T,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qCAAqC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yRAAoR,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yEAAsFD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wCAAmC,CAAC,CAAC,CAAC,EAAE,SAAsBA,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAE,qRAAqR,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0TAA0T,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gEAAgE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gTAA2S,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oBAAiCD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oCAAoC,CAAC,CAAC,CAAC,EAAE,2LAAmMA,EAAEe,EAAE,CAAC,KAAK,+FAA+F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,uDAAkD,CAACC,CAAC,EAAE,sBAAsB,CAACC,CAAC,EAAE,iBAAiB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,iRAAoRD,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,8FAA8F,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+YAA+Y,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qBAAqB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,wGAAwG,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wNAAqOD,EAAEe,EAAE,CAAC,KAAK,6DAA6D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,mdAA0b,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,eAAe,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2KAAwLD,EAAEe,EAAE,CAAC,KAAK,wCAAwC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,EAAE,iIAAiI,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0TAAsS,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mBAAmB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4TAA6S,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+JAA6JD,EAAEe,EAAE,CAAC,KAAK,sEAAsE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sBAAiB,CAAC,CAAC,CAAC,EAAE,SAAsBA,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uBAAkB,CAAC,CAAC,CAAC,EAAE,iCAAiC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iBAAiB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+NAA0N,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wCAA2CD,EAAEe,EAAE,CAAC,KAAK,6DAA6D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,wLAA8K,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iCAAiC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6NAAqOD,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,8FAAyF,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sUAAuT,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gWAAgW,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iSAAiS,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qdAAqd,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6cAA8b,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gDAAgD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4WAA4W,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qDAAqD,CAAC,CAAC,CAAC,EAAE,+WAA0W,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,sCAAsC,UAAU,eAAe,oBAAoB,mHAAmH,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qCAAqC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qBAAqB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sBAAsB,CAAC,CAAC,CAAC,EAAE,0KAA0K,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uCAAuC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gDAAgD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kEAAkE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0DAA0D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+BAA+B,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mOAAmO,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iEAAiE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mUAAmU,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+MAAuND,EAAEe,EAAE,CAAC,KAAK,kEAAkE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,oGAAoG,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uQAAkQ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uDAAuD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iBAA8BD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAE,uUAA6T,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iVAAkU,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8CAA8C,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,6PAAmP,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+KAA4LD,EAAEe,EAAE,CAAC,KAAK,6DAA6D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+IAAuJD,EAAEe,EAAE,CAAC,KAAK,4FAA4F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,oEAAoE,CAACC,CAAC,EAAE,+BAA+B,CAACC,CAAC,EAAE,+BAA+B,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,4eAA+eD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,qGAAqG,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+PAA+P,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2CAA2C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gPAA2O,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4KAAyLD,EAAEe,EAAE,CAAC,KAAK,sDAAsD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,6NAAwN,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gCAAgC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,ySAAiTD,EAAEe,EAAE,CAAC,KAAK,wCAAwC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iDAA4C,CAAC,CAAC,CAAC,EAAE,mMAA8L,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6MAA0ND,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,+BAA+B,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gTAAwTD,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gGAA2F,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gHAA6HD,EAAEe,EAAE,CAAC,KAAK,sFAAsF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4CAA4C,CAAC,CAAC,CAAC,EAAE,iRAA4Q,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wRAAsRD,EAAEe,EAAE,CAAC,KAAK,2JAA2J,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iCAAiC,CAAC,CAAC,CAAC,EAAE,sMAAiM,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gCAAgC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,0MAA6MD,EAAEe,EAAE,CAAC,KAAK,yEAAyE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oFAAoF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iFAAiF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sFAA4E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sPAAsP,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wCAAwC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gGAAwGD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,+BAA4CA,EAAEe,EAAE,CAAC,KAAK,oHAAoH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mCAA8B,CAAC,CAAC,CAAC,EAAE,8JAA8J,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yEAAyE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0MAA0M,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wBAAwB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2LAAiL,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mMAAmM,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wBAAwB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qLAAqL,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2UAAsU,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wBAAwB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qNAA6ND,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,EAAE,8HAA8H,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mBAAmB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oPAAiQD,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sDAAsD,CAAC,CAAC,CAAC,EAAE,qCAAqC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+DAA+D,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iBAA8BD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,yBAAyB,CAAC,CAAC,CAAC,EAAE,sNAAsN,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qBAAqB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uUAAwT,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2MAAsM,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uKAAuK,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iCAAiC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qDAAkED,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oCAAoC,CAAC,CAAC,CAAC,EAAE,kHAAkH,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qIAAkJD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAE,wBAAwB,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kNAA6M,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,0IAAuJD,EAAEe,EAAE,CAAC,KAAK,kEAAkE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2CAA2C,CAAC,CAAC,CAAC,EAAE,4CAA4C,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2CAA2C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+OAA+O,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oKAAiLD,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,qHAAgH,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,+KAA+K,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wBAAwB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+RAA+R,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4DAA4D,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kHAA0HD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,iDAA8DA,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAE,6FAA6F,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yPAAyP,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iEAAiE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+XAAqX,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,0GAA0G,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,2JAA2J,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,2CAA2C,CAACC,CAAC,EAAE,gBAAgB,CAACC,CAAC,EAAE,OAAO,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,8VAAoV,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wQAAwQ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6iBAA0jBD,EAAEe,EAAE,CAAC,KAAK,4EAA4E,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,EAAE,mLAA8K,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,mBAAmB,CAAC,EAAE,MAAmBA,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,4GAA4G,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,uJAAuJ,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,oBAAoB,CAAC,EAAE,6JAA6J,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4FAA4F,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gMAA2L,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,MAAM,CAAC,EAAE,qFAA2E,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,MAAM,CAAC,EAAE,6DAA6D,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,MAAM,CAAC,EAAE,qEAA2D,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,MAAM,CAAC,EAAE,oEAAoE,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,MAAM,CAAC,EAAE,+BAA4CA,EAAEe,EAAE,CAAC,KAAK,kIAAkI,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,2CAA2C,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mJAAgKD,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uDAAuD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wVAA8U,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8BAA8B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,mBAAmB,CAAC,EAAE,2TAAiT,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,qBAAqB,CAAC,EAAE,2QAAsQ,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,8BAA8B,CAAC,EAAE,kQAAkQ,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,YAAY,CAAC,EAAE,iDAA8DA,EAAEe,EAAE,CAAC,KAAK,wCAAwC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,6JAAwJ,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mCAAmC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,0BAA0B,CAAC,EAAE,mJAAmJ,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,yBAAyB,CAAC,EAAE,yHAAsIA,EAAEe,EAAE,CAAC,KAAK,qDAAqD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sBAAsB,CAAC,CAAC,CAAC,EAAE,kBAA+BA,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,mMAAyL,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,uBAAuB,CAAC,EAAE,gOAA2N,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,oBAAoB,CAAC,EAAE,4RAAySA,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,yBAAyB,CAAC,CAAC,CAAC,EAAE,wBAAwB,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,4BAA4B,CAAC,EAAE,2NAA2N,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,8BAA8B,CAAC,EAAE,0PAA0P,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,0BAA0B,CAAC,EAAE,wPAAwP,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wCAAwC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gUAAgU,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,4BAA4B,CAAC,EAAE,0GAAuHA,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAE,oFAAoF,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,0BAA0B,CAAC,EAAE,wQAAwQ,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,wBAAwB,CAAC,EAAE,MAAmBA,EAAEe,EAAE,CAAC,KAAK,kEAAkE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gDAAgD,CAAC,CAAC,CAAC,EAAE,8MAAyM,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iCAAiC,CAAC,EAAE,mGAAgHA,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wCAAwC,CAAC,CAAC,CAAC,EAAE,6DAA6D,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qBAAqB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yGAAyG,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,gBAAgB,CAAC,EAAE,uKAAkK,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,yBAAyB,CAAC,EAAE,8BAA2CA,EAAEe,EAAE,CAAC,KAAK,sEAAsE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,+BAA+B,CAAC,CAAC,CAAC,EAAE,yFAAyF,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,0BAA0B,CAAC,EAAE,0GAAkHA,EAAEe,EAAE,CAAC,KAAK,sDAAsD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,4JAAkJ,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,aAAa,CAAC,EAAE,yLAAoL,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,uBAAuB,CAAC,EAAE,gOAAgO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iDAAiD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oCAAiDD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,+KAA4LA,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wCAAwC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6EAA6E,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6EAA6E,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,mBAA2BD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wDAAwD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yDAAyD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iEAAiE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4DAA4D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mFAAmF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sFAAsF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gFAAgF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gEAAgE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gFAAgF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oDAA+C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iTAAiT,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mBAA2BD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,+PAA0P,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oGAA4GD,EAAEe,EAAE,CAAC,KAAK,kFAAkF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,8DAA8D,CAACC,CAAC,EAAE,uBAAuB,CAACC,CAAC,EAAE,QAAQ,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,iBAAiB,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,2bAAwcD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,oDAAoD,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iLAAuK,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kBAAkB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iTAAyTD,EAAEe,EAAE,CAAC,KAAK,0CAA0C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,yIAAyI,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6LAA0MD,EAAEe,EAAE,CAAC,KAAK,wBAAwB,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,kRAAkR,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8IAA2JD,EAAEe,EAAE,CAAC,KAAK,kDAAkD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gCAAgC,CAAC,CAAC,CAAC,EAAE,uRAAuR,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oGAAiHD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,wBAAwB,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iBAAiB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yVAAoV,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,WAAW,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+ZAA0Z,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uMAAuM,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iBAAiB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kMAAkM,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,krBAA6qB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2MAAmND,EAAEe,EAAE,CAAC,KAAK,mCAAmC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,0cAA0c,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,YAAY,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4CAAyDD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,ycAAyc,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,ufAAuf,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2JAAmKD,EAAEe,EAAE,CAAC,KAAK,yEAAyE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qCAAqC,CAAC,CAAC,CAAC,EAAE,kQAAkQ,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sCAAsC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,0CAAkDD,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gCAAgC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,eAAe,UAAU,eAAe,oBAAoB,4GAA4G,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAmBD,EAAE,KAAK,CAAC,SAAS,aAAa,CAAC,EAAE,iWAAkV,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4CAA4C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,8CAA8C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yCAAyC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAmBD,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAE,2GAAmHA,EAAEe,EAAE,CAAC,KAAK,8FAA8F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,EAAE,0FAA0F,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gCAAgC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0CAA0C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oFAAoF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4EAA4E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uCAAuC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,wWAAwW,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,YAAY,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,ugBAAugB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4dAAyeD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,oSAAiTA,EAAEe,EAAE,CAAC,KAAK,mFAAmF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,oEAAoE,CAACC,CAAC,EAAE,8BAA8B,CAACC,CAAC,EAAE,8BAA8B,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,qPAAqP,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2KAA2K,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sCAAsC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gBAA6BD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,6FAA0GA,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sCAAiC,CAAC,CAAC,CAAC,EAAE,oMAAoM,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kMAAkM,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iMAAyMD,EAAEe,EAAE,CAAC,KAAK,uGAAuG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAE,4DAAuD,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+GAA4HD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,2GAA2G,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kCAAkC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2KAA2K,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mCAAmC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2OAA2O,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+BAA+B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8LAAoL,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6BAA6B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6BAA0CD,EAAEe,EAAE,CAAC,KAAK,yDAAyD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,+CAA+C,CAAC,CAAC,CAAC,EAAE,sNAAiN,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8CAA8C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2NAAsN,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mCAAmC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8GAA2HD,EAAEe,EAAE,CAAC,KAAK,wGAAwG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gCAAgC,CAAC,CAAC,CAAC,EAAE,uCAAuC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uDAAuD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4IAA4I,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6CAA6C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qKAAqK,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wCAAwC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0OAA0O,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iCAAiC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sMAAsM,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sCAAsC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6OAAwO,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oDAAoD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAmBD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAE,iYAA4X,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0BAA0B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mUAA8T,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qBAAqB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,sEAAsE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,EAAE,iPAAiP,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,eAAe,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+KAA+K,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,UAAU,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yOAAiPD,EAAEe,EAAE,CAAC,KAAK,8EAA8E,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uCAAuC,CAAC,CAAC,CAAC,EAAE,qIAAqI,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4CAA4C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6FAAwF,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sBAAsB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uCAAuC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oQAA+P,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4CAA4C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kUAAkU,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qfAAse,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sXAAsX,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6DAA6D,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uTAAuT,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iCAAiC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6TAAwT,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kBAAkB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kbAAkb,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yVAA0U,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4CAA4C,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+cAAwcD,EAAEe,EAAE,CAAC,KAAK,0GAA0G,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,yBAAyB,CAAC,CAAC,CAAC,EAAE,SAAI,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kCAAkC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oQAA+P,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4GAA4G,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mCAAmC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6KAAgLD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,2BAA2B,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oGAAiHD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,4MAA4M,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,yGAAyG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,uHAAuH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,6CAA6C,CAACC,CAAC,EAAE,mBAAmB,CAACC,CAAC,EAAE,mBAAmB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,mBAAmB,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,uSAAuS,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,khBAAwgB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gHAAsG,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,YAAY,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2EAA8ED,EAAEe,EAAE,CAAC,KAAK,uEAAuE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,KAAkBA,EAAEe,EAAE,CAAC,KAAK,0CAA0C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,+CAA+C,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mZAAyY,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+dAAgd,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wCAAqDD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,4HAAyIA,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAE,yLAA+K,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8TAA4TD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,2CAA2C,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6IAA6I,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,YAAY,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yNAAyN,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,SAAsBD,EAAEe,EAAE,CAAC,KAAK,uEAAuE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wCAAwC,CAAC,CAAC,CAAC,EAAE,gLAAgL,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,cAA2BD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,+BAA+B,CAAC,CAAC,CAAC,EAAE,oWAAoW,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yLAAyL,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,kDAAkD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qCAAqC,CAAC,CAAC,CAAC,EAAE,yDAAsEA,EAAE,SAAS,CAAC,SAAS,gBAAgB,CAAC,EAAE,0GAA0G,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,WAAwBD,EAAE,SAAS,CAAC,SAAS,aAAa,CAAC,EAAE,8SAAoS,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,ucAA6b,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,udAAud,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mjBAAmjB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qEAAwED,EAAEe,EAAE,CAAC,KAAK,sEAAsE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAE,4TAAuT,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,glBAAglB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uIAA+ID,EAAEe,EAAE,CAAC,KAAK,0CAA0C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,4BAAyCA,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,mDAAmD,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6BAA6B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+WAAqW,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wOAAmO,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kGAA+GD,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,iQAAiQ,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8jBAAojB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yOAA+N,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,0EAAuFD,EAAEe,EAAE,CAAC,KAAK,gHAAgH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sDAAsD,CAAC,CAAC,CAAC,EAAE,+JAA0J,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kTAAwS,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,YAAY,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wZAA2ZD,EAAEe,EAAE,CAAC,KAAK,wHAAwH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,yEAAyE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+OAAgO,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4DAAyED,EAAEe,EAAE,CAAC,KAAK,iCAAiC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,sDAAsD,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2DAAwED,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,iPAAiP,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8LAAiMD,EAAEe,EAAE,CAAC,KAAK,8FAA8F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,mEAAmE,CAACC,CAAC,EAAE,uBAAuB,CAACC,CAAC,EAAE,eAAe,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,kSAAkS,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qDAAqD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wDAAwD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oEAAoE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,0NAAkOD,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+jBAAqjB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gLAAgL,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0DAA0D,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gDAAgD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+BAA+B,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qCAAqC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yEAAsFD,EAAEe,EAAE,CAAC,KAAK,wGAAwG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,+BAA+B,CAAC,CAAC,CAAC,EAAE,kMAAwL,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uDAAuD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mSAAmS,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,oBAAoB,CAAC,EAAE,wSAAwS,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,oBAAoB,CAAC,EAAE,iNAAiN,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,oBAAoB,CAAC,EAAE,+MAA+M,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,kBAAkB,CAAC,EAAE,mOAAgPA,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,wBAAwB,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,qBAAqB,CAAC,EAAE,iTAAmR,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+IAA0I,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wDAAwD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,qBAAkCD,EAAEe,EAAE,CAAC,KAAK,sDAAsD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sDAAsD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,YAAyBD,EAAEe,EAAE,CAAC,KAAK,qDAAqD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,EAAE,+BAA+B,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yCAAyC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+CAA+C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oJAAoJ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uCAAuC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yKAAoK,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uCAAuC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,obAA0a,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uBAAuB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gRAAgR,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oBAAoB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8ZAAoZ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uBAAuB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sWAAsW,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2BAA2B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,0NAAuOD,EAAEe,EAAE,CAAC,KAAK,2DAA2D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,EAAE,qIAAqI,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,2RAAwSA,EAAEe,EAAE,CAAC,KAAK,sEAAsE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,+BAA4CA,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,oCAAoC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iDAAiD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+RAA0R,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,yBAAyB,CAAC,EAAE,sRAAiR,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,cAAc,CAAC,EAAE,qOAAqO,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,uBAAuB,CAAC,EAAE,kRAAkR,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uPAA6O,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6EAAwE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yDAAyD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4EAA4E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uDAA+DD,EAAEe,EAAE,CAAC,KAAK,yEAAyE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,+BAA+B,CAAC,CAAC,CAAC,EAAE,oLAAgK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yCAAyC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4UAAuU,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+HAA0H,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sGAAsG,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oFAAoF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2EAAwFD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,sBAAmCA,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,2TAAuS,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mEAAmE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gVAA2U,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAE,uDAAuD,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,eAA4BD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,gEAAgE,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iEAAiE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+LAAkMD,EAAEe,EAAE,CAAC,KAAK,0FAA0F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,4DAA4D,CAACC,CAAC,EAAE,uBAAuB,CAACC,CAAC,EAAE,uBAAuB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,oEAAoE,OAAO,wVAAwV,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,oEAAoE,OAAO,wVAAwV,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,sUAA4T,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yVAAoV,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+BAA+B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oVAA0U,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,kBAAkB,CAAC,EAAE,0VAA0V,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,mBAAmB,CAAC,EAAE,2PAA2P,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,oDAAoD,CAAC,EAAE,sQAAsQ,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,uCAAuC,CAAC,EAAE,0MAAuNA,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,wBAAqCA,EAAEe,EAAE,CAAC,KAAK,sDAAsD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0LAA0L,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,gBAAgB,CAAC,EAAE,yXAA+W,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,uBAAuB,CAAC,EAAE,6QAAwQ,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,EAAE,sLAAsL,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uDAAuD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mJAAmJ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kBAAkB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sVAA4U,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iOAAiO,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iBAAiB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8PAA8P,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6KAA0LD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oBAAoB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+aAA4bD,EAAEe,EAAE,CAAC,KAAK,yDAAyD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,iCAAiC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,wQAAqRA,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uEAAuE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+PAA0P,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,gBAAgB,CAAC,EAAE,4JAA4J,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,WAAW,CAAC,EAAE,wIAAwI,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,aAAa,CAAC,EAAE,qKAAqK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mEAAmE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gKAAgK,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,gBAAgB,CAAC,EAAE,6SAA6S,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,8BAA8B,CAAC,EAAE,uSAAuS,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,YAAY,CAAC,EAAE,8SAA8S,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+JAA+J,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iEAAiE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iKAAiK,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,mBAAmB,CAAC,EAAE,mHAAmH,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,kBAAkB,CAAC,EAAE,2HAA2H,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,sBAAsB,CAAC,EAAE,8HAA8H,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,8BAA8B,CAAC,EAAE,wNAAwN,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uDAAuD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uDAA+DD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oCAAoC,CAAC,CAAC,CAAC,EAAE,iBAA8BA,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,+FAA0F,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,uBAAuB,CAAC,EAAE,+FAA4GA,EAAEe,EAAE,CAAC,KAAK,wCAAwC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,0GAA0G,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,wBAAwB,CAAC,EAAE,mHAAgIA,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,+JAA+J,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,gBAAgB,CAAC,EAAE,WAAwBA,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAE,kSAA6R,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,yBAAyB,CAAC,EAAE,iLAAiL,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uEAAuE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2UAAsU,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4OAA4O,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kCAA0CD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,QAAqBA,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,4FAAyGA,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAE,oJAA+I,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,kGAAkG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,oGAAoG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,qDAAqD,CAACC,CAAC,EAAE,qDAAqD,CAACC,CAAC,EAAE,wBAAwB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,gBAAgB,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,mQAAmQ,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,mQAAmQ,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,yEAAsFD,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,4dAAoeA,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,oGAAoG,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mVAA8U,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8YAAyY,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8CAA8C,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8MAA2ND,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,4LAA4L,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iBAA8BD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE,yfAAyf,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,mCAAmC,UAAU,eAAe,oBAAoB,iGAAiG,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2FAAsF,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,4EAA4E,CAAC,EAAE,2EAAmFA,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,4MAAkM,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,2CAA2C,CAAC,EAAE,8QAA+P,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,gDAAgD,CAAC,EAAE,uGAAoHA,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,oKAAoK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uDAA+DD,EAAEe,EAAE,CAAC,KAAK,qEAAqE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gCAAgC,CAAC,CAAC,CAAC,EAAE,aAA0BA,EAAEe,EAAE,CAAC,KAAK,uEAAuE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,QAAqBA,EAAEe,EAAE,CAAC,KAAK,4FAA4F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,gPAAgP,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4EAAyFD,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,yEAAyE,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kDAA6C,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mWAAgXD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE,qFAAgF,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8BAA2CD,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,EAAE,6UAA6U,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,qBAAqB,UAAU,eAAe,oBAAoB,2FAA2F,IAAI,qEAAqE,OAAO,mKAAmK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gDAAgD,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uFAAuF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wDAAwD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6EAA6E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kDAA+DD,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,wTAAmT,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mCAAmC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6LAAqMD,EAAE,KAAK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,CAAC,EAAE,uDAAuD,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kUAAgUD,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+QAA4RD,EAAEe,EAAE,CAAC,KAAK,2BAA2B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,QAAqBA,EAAEe,EAAE,CAAC,KAAK,mBAAmB,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,yFAAoF,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,0BAA0B,UAAU,eAAe,oBAAoB,4FAA4F,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yBAAyB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6EAA0FD,EAAE,KAAK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,CAAC,EAAE,qDAAqD,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sYAAiY,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uKAA+KD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,wDAAqEA,EAAEe,EAAE,CAAC,KAAK,oGAAoG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,6BAAqCA,EAAEe,EAAE,CAAC,KAAK,oGAAoG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,kEAAkE,CAACC,CAAC,EAAE,kEAAkE,CAACC,CAAC,EAAE,UAAU,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,wEAAgFD,EAAEe,EAAE,CAAC,KAAK,4CAA4C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,yBAAyB,CAAC,CAAC,CAAC,EAAE,oNAAoN,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4EAAyFD,EAAEe,EAAE,CAAC,KAAK,2DAA2D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mCAAmC,CAAC,CAAC,CAAC,EAAE,qIAAqI,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4TAA4T,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wCAAwC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0RAAqR,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,eAAe,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gLAAgL,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8LAAsMD,EAAEe,EAAE,CAAC,KAAK,4DAA4D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iOAAiO,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+BAA+B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sIAAiI,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yIAAyI,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0BAA0B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oNAA+M,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,eAAe,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qNAAsM,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mBAAmB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wCAAwC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gMAAgM,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2BAA2B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6KAA6K,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mKAAmK,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0CAA0C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+OAA+O,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,eAAe,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6LAAwL,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iOAAkN,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wKAAmK,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oCAAoC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2MAAsM,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oBAAoB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yIAAoI,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mBAAmB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mCAAmC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gNAA2M,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,WAAW,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+FAA4GD,EAAEe,EAAE,CAAC,KAAK,gDAAgD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gCAAgC,CAAC,CAAC,CAAC,EAAE,yBAAyB,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wBAAwB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8QAA8Q,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uBAAuB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wPAAwP,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8BAA8B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8RAAoR,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0BAAqB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6DAA6D,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wCAAwC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iDAAiD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6DAA6D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0BAAqB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6DAA6D,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oCAAoC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iCAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iCAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iOAAuN,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4FAA4F,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uEAAuE,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wGAAqHD,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,0BAAuCA,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2BAA2B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8TAA8T,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6NAAwN,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iBAAiB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6HAA0ID,EAAEe,EAAE,CAAC,KAAK,sDAAsD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,0DAA0D,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mBAAmB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mEAAgFD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,kFAA+FA,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,uEAAuE,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6BAA6B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iJAA8JD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,0NAA6NA,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,qMAAqM,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6CAA6C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kHAAkH,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oBAAoB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mSAAmS,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gCAAgC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uRAAkR,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8BAA8B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAqBD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAE,6UAAwU,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,aAAa,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,sPAAsP,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kFAAkF,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2UAAsU,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uEAAoFD,EAAEe,EAAE,CAAC,KAAK,+GAA+G,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8CAA8C,CAAC,CAAC,CAAC,EAAE,kIAAkI,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0SAA0S,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oPAA+O,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wDAAwD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2aAAsa,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wCAAgDD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,8LAA2MA,EAAEe,EAAE,CAAC,KAAK,qFAAqF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,wDAAwD,CAACC,CAAC,EAAE,oBAAoB,CAACC,CAAC,EAAE,oBAAoB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,cAAc,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,gRAAmRD,EAAEe,EAAE,CAAC,KAAK,0CAA0C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,4GAAoHA,EAAEe,EAAE,CAAC,KAAK,8CAA8C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAkBD,EAAE,KAAK,CAAC,SAAS,KAAK,CAAC,EAAE,6IAA6I,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,SAAS,OAAO,CAAC,EAAE,iMAAiM,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uNAAuN,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iFAAiF,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yNAAoN,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,ySAAoS,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0RAAqR,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uTAA6S,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8IAAoI,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,SAAS,iBAAiB,CAAC,EAAE,4FAA4F,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,SAAS,YAAY,CAAC,EAAE,iDAAiD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mCAAmC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8GAA8G,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8TAA2UD,EAAEe,EAAE,CAAC,KAAK,2FAA2F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sBAAsB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6UAAwU,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+UAA+U,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4TAA4T,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wNAAwN,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uFAAkF,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,YAAY,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,8IAA8I,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,eAAe,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oKAAoK,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uKAAuK,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iNAAiN,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2BAA2B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wKAAwK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uSAAuS,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oGAAoG,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sFAAiF,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,YAAY,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uFAAuF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kHAAkH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,cAAc,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kNAAkN,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,YAAY,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yFAAyF,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qaAAqa,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kBAA+BD,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6CAA6C,CAAC,CAAC,CAAC,EAAE,uBAAoCA,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,+BAA+B,CAAC,CAAC,CAAC,EAAE,+OAAuPA,EAAEe,EAAE,CAAC,KAAK,+FAA+F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,iDAAiD,CAACC,CAAC,EAAE,eAAe,CAACC,CAAC,EAAE,cAAc,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,oEAAoE,OAAO,wVAAwV,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,oEAAoE,OAAO,wVAAwV,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,2XAAsX,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yUAAqT,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wCAAwC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,yGAAyG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8CAA8C,CAAC,CAAC,CAAC,EAAE,8aAA0Z,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4bAAub,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+UAA0U,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oCAAiDD,EAAEe,EAAE,CAAC,KAAK,gHAAgH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAE,0MAA0M,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oBAAoB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mUAAmU,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4TAA4T,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qbAA2a,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gPAA6PD,EAAEe,EAAE,CAAC,KAAK,oFAAoF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2CAA2C,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yDAAyD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sIAAiI,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0BAA0B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6TAAmT,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8HAA2ID,EAAEe,EAAE,CAAC,KAAK,mGAAmG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sDAAiD,CAAC,CAAC,CAAC,EAAE,wGAAwG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,cAAc,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wVAA8U,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kBAAkB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mPAA8O,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wCAAwC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4YAA4Y,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8DAA8D,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sMAAsM,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sCAAsC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kSAAmR,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kOAA6N,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mLAAmL,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0BAA0B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wLAAmL,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,mBAAgCD,EAAEe,EAAE,CAAC,KAAK,mHAAmH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wCAAwC,CAAC,CAAC,CAAC,EAAE,gDAAgD,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,gBAA6BD,EAAEe,EAAE,CAAC,KAAK,iDAAiD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mDAAmD,CAAC,CAAC,CAAC,EAAE,6DAA6D,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,kHAA+HD,EAAEe,EAAE,CAAC,KAAK,kFAAkF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gDAAgD,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,iBAA8BD,EAAEe,EAAE,CAAC,KAAK,gCAAgC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,iGAAyGA,EAAEe,EAAE,CAAC,KAAK,oEAAoE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,+CAA+C,CAAC,CAAC,CAAC,EAAE,SAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qKAAqK,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kCAAkC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kQAA+QD,EAAEe,EAAE,CAAC,KAAK,sEAAsE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gCAAgC,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wVAAmV,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gPAAsO,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gEAAgE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qFAAqF,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iRAA4Q,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,uBAAoCD,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,QAAqBA,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sBAAsB,CAAC,CAAC,CAAC,EAAE,4EAA4E,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gOAAgO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8DAA8D,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qHAAkID,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2CAA2C,CAAC,CAAC,CAAC,EAAE,qBAAkCA,EAAEe,EAAE,CAAC,KAAK,gCAAgC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,sOAAiO,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yBAAsCD,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,yMAAyM,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6BAA0CD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oCAAoC,CAAC,CAAC,CAAC,EAAE,gHAAgH,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qEAAgE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0XAAgX,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,yFAAyF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,4DAAyEA,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,4GAAuG,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4CAA4C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iEAAiE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4DAA4D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yCAAyC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2BAAwCD,EAAEe,EAAE,CAAC,KAAK,2DAA2D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,QAAqBA,EAAEe,EAAE,CAAC,KAAK,yFAAyF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,uFAAuF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,iDAAiD,CAACC,CAAC,EAAE,4BAA4B,CAACC,CAAC,EAAE,4BAA4B,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,oEAAoE,OAAO,wVAAwV,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,oEAAoE,OAAO,wVAAwV,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,qbAA2a,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uRAAuR,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yBAAyB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2DAA2D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iDAAiD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qEAAqE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kEAAkE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+EAA+E,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uEAAuE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iYAAiY,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sTAA4S,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6KAAwK,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yBAAyB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4SAA4S,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8BAA8B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0IAA0I,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2CAA2C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mDAAmD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mHAAmH,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,ySAAyS,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,miBAA8hB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8BAA8B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,keAAke,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mZAA8Y,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,waAA8Z,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sCAAsC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2SAA2S,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mXAA8W,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6BAA6B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uPAAuP,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+BAA+B,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2DAA2D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+DAA+D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+DAA+D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wcAA8b,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iJAA8JD,EAAEe,EAAE,CAAC,KAAK,gDAAgD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0CAA0C,CAAC,CAAC,CAAC,EAAE,4GAAkG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2DAA2D,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wIAAwI,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qTAA6TD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6DAA6D,CAAC,CAAC,CAAC,EAAE,oCAA+B,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4PAA4P,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qGAAgG,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oIAA0H,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mJAAyI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8WAA8W,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,eAAe,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4NAAuN,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mPAAoO,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+QAA0Q,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wBAAqCD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAE,kPAAkP,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iSAA4R,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0aAA0a,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qBAAqB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oRAAoR,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,oCAAoC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,8CAA8C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uDAAuD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8aAA8a,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+dAA+d,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iDAAiD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0LAA0L,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oLAA4LD,EAAEe,EAAE,CAAC,KAAK,sDAAsD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wDAAwD,CAAC,CAAC,CAAC,EAAE,SAAI,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0BAA0B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6PAA6P,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mVAA8U,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gPAAgP,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0XAA0X,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8BAA8B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uWAAuW,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uUAAuU,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2BAA2B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4RAAkR,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iRAAuQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oQAAoQ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8BAA8B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yWAAqV,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iVAAiV,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qEAAqE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sLAAiL,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yBAAyB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2KAAsK,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2WAAsW,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gKAAgK,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kBAAkB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gRAA2Q,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iBAAiB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kNAAkN,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kBAAkB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qIAAqI,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yTAAoT,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yBAAyB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uBAAoCD,EAAEe,EAAE,CAAC,KAAK,2DAA2D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,+BAA+B,CAAC,CAAC,CAAC,EAAE,8PAA8P,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6gBAAyf,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0NAA0N,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oRAA+Q,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mGAAgHD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6CAA6C,CAAC,CAAC,CAAC,EAAE,6KAA6K,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mWAA8V,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mXAAmX,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2BAA2B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,uPAAuP,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kQAAmP,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uIAAuI,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,6BAA0CD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,+HAA+H,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,oEAA4ED,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,yBAAyB,CAAC,CAAC,CAAC,EAAE,sGAAsG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0QAAqQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qBAAkCD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,QAAqBA,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,oUAAoU,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kEAAkE,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6OAA0PD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,4FAA4F,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0FAA0F,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,8EAA8E,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2HAA2H,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qJAAqJ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mCAAmC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mQAAmQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kPAA6O,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kNAAkN,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sCAAsC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8LAA8L,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,WAAW,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mHAAmH,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,OAAO,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4GAA4G,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,YAAY,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+GAA+G,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kCAAkC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4MAA4M,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,eAAe,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yXAAyX,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oBAAoB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,obAAob,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oBAAoB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2PAA2P,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wFAAgGD,EAAEe,EAAE,CAAC,KAAK,uDAAuD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oDAAoD,CAAC,CAAC,CAAC,EAAE,QAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+EAA+E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4RAA4R,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mCAA2CD,EAAEe,EAAE,CAAC,KAAK,oDAAoD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6DAA6D,CAAC,CAAC,CAAC,EAAE,6TAAmT,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mOAAyN,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kGAAkG,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mEAAmE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mGAAmG,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sHAAsH,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wFAAwF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0DAA0D,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qSAAqS,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qUAAqU,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mPAAmP,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kcAAkc,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gYAAsX,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uEAAuE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iaAA4Z,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qDAA6DD,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,yDAAyD,CAAC,CAAC,CAAC,EAAE,QAAG,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2TAA2T,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mSAAmS,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yBAAyB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sMAAsM,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0UAAgU,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+RAA+R,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,0DAAkED,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,+FAA4GA,EAAEe,EAAE,CAAC,KAAK,sEAAsE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,wOAAwO,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0DAA0D,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sVAAiV,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iOAA4N,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+HAA+H,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6EAA6E,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6EAA6E,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2EAA2E,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,uDAAoED,EAAEe,EAAE,CAAC,KAAK,kEAAkE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4DAA4D,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yEAAsFD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,oCAAiDA,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAE,6JAA0KA,EAAEe,EAAE,CAAC,KAAK,uGAAuG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,qDAAqD,CAACC,CAAC,EAAE,yBAAyB,CAACC,CAAC,EAAE,yBAAyB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,+RAA0R,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wLAAmL,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yIAAyI,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sBAAiB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uCAAuC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sPAAsP,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sCAAsC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mNAAgOD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,+BAA+B,CAAC,CAAC,CAAC,EAAE,4BAA4B,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,0FAAuGD,EAAEe,EAAE,CAAC,KAAK,sDAAsD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,yFAAoF,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+FAA4GD,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gCAA2B,CAAC,CAAC,CAAC,EAAE,6GAA6G,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uCAAuC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8SAA8S,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wDAAwD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oKAAoK,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uBAAuB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,waAAyZ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,YAAY,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,ySAAoS,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8BAA8B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sPAA4O,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6DAA6D,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mZAAmZ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sMAAsM,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,uJAA0JD,EAAEe,EAAE,CAAC,KAAK,gFAAgF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,6GAA0HD,EAAEe,EAAE,CAAC,KAAK,+KAA+K,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,mIAAgJD,EAAEe,EAAE,CAAC,KAAK,uGAAuG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,yBAAyB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4SAAoTD,EAAEe,EAAE,CAAC,KAAK,iFAAiF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uCAAuC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+GAA4HD,EAAEe,EAAE,CAAC,KAAK,kEAAkE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0DAA0D,CAAC,CAAC,CAAC,EAAE,wJAAwJ,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kDAAkD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6EAA0FD,EAAEe,EAAE,CAAC,KAAK,2DAA2D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iDAAiD,CAAC,CAAC,CAAC,EAAE,mSAA8R,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4SAAuS,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,+DAA+D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,sCAAiC,CAAC,CAAC,CAAC,EAAE,2IAA2I,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,6DAA0ED,EAAEe,EAAE,CAAC,KAAK,iGAAiG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,QAAqBA,EAAEe,EAAE,CAAC,KAAK,iDAAiD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,+EAA+E,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,8CAA2DD,EAAEe,EAAE,CAAC,KAAK,wHAAwH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0DAA0D,CAAC,CAAC,CAAC,EAAE,iDAAiD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2MAA2M,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oDAA+C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mJAAmJ,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wEAAqFD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAE,qOAAqO,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wFAAqGD,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,kNAA+NA,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4CAAuC,CAAC,CAAC,CAAC,EAAE,0HAA0H,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gBAA6BD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,mQAAmQ,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qFAAqF,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yPAAyP,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mCAAmC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wTAAwT,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qDAAkED,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,8RAA+Q,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yRAAyR,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uCAAuC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iWAAiW,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8PAA8P,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oDAAoD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,0HAAkID,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAE,qOAA2N,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qNAA2M,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,4FAA4F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,yGAAsHA,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,6QAA0RA,EAAEe,EAAE,CAAC,KAAK,4FAA4F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,mDAAmD,CAACC,CAAC,EAAE,aAAa,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,cAAc,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,wQAAyP,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8UAA8U,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oQAA+P,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sNAAsN,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oDAAoD,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yEAAyE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gHAA2G,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iFAAiF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,kBAAkB,UAAU,eAAe,oBAAoB,yFAAyF,IAAI,qEAAqE,OAAO,4VAA4V,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAEe,EAAE,CAAC,KAAK,qDAAqD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,SAAS,2DAA2D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4FAAyGD,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,4IAA4I,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sLAAsL,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8HAAyH,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6MAAwM,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6OAA6O,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uKAAuK,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iQAAiQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yEAAyE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kYAAkY,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,sCAAmDD,EAAEe,EAAE,CAAC,KAAK,kDAAkD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sDAAiD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4DAAuD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oXAA+W,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gCAAgC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sVAAiV,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qaAAga,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mCAAmC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iJAAiJ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uHAAkH,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wCAAwC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kDAAkD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wCAAwC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mRAAmR,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yIAAyI,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAiBA,EAAE,OAAO,CAAC,SAAS,CAAcD,EAAE,OAAO,CAAC,SAAS,GAAG,CAAC,EAAE,iBAA8BA,EAAE,OAAO,CAAC,SAAS,SAAS,CAAC,EAAE,IAAiBA,EAAE,OAAO,CAAC,SAAS,qBAAqB,CAAC,EAAE,iBAA8BA,EAAE,OAAO,CAAC,SAAS,SAAS,CAAC,EAAE,IAAiBA,EAAE,OAAO,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yGAAyG,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sIAAsI,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAiBD,EAAE,OAAO,CAAC,SAAS,2GAA2G,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iCAAiC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAiBA,EAAE,OAAO,CAAC,SAAS,CAAcD,EAAE,OAAO,CAAC,SAAS,MAAM,CAAC,EAAE,4BAAyCA,EAAE,OAAO,CAAC,SAAS,IAAI,CAAC,EAAE,eAA4BA,EAAE,OAAO,CAAC,SAAS,0CAA0C,CAAC,EAAE,IAAiBA,EAAE,OAAO,CAAC,SAAS,qBAAqB,CAAC,EAAE,KAAkBA,EAAE,OAAO,CAAC,SAAS,iCAAiC,CAAC,EAAE,IAAiBA,EAAE,OAAO,CAAC,SAAS,MAAM,CAAC,EAAE,IAAiBA,EAAE,OAAO,CAAC,SAAS,IAAI,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wCAAwC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kCAA+CD,EAAEe,EAAE,CAAC,KAAK,yBAAyB,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,wKAAwK,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAiBD,EAAE,OAAO,CAAC,SAAS,8FAA8F,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+JAA0J,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mCAAmC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8QAAyQ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,oBAAoB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2CAAwDD,EAAEe,EAAE,CAAC,KAAK,gFAAgF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,mJAA8I,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+DAA+D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,UAAuBD,EAAE,SAAS,CAAC,SAAS,iCAAiC,CAAC,EAAE,2DAAwEA,EAAE,SAAS,CAAC,SAAS,kCAAkC,CAAC,EAAE,gBAA6BA,EAAE,SAAS,CAAC,SAAS,4BAA4B,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,SAAsBD,EAAE,SAAS,CAAC,SAAS,oCAAoC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,UAAuBD,EAAE,SAAS,CAAC,SAAS,wBAAwB,CAAC,EAAE,cAA2BA,EAAE,SAAS,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,SAAsBD,EAAE,SAAS,CAAC,SAAS,kCAAkC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,SAAsBD,EAAE,OAAO,CAAC,SAAS,oBAAoB,CAAC,EAAE,WAAwBA,EAAE,SAAS,CAAC,SAAS,kBAAkB,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,kCAA+CD,EAAE,SAAS,CAAC,SAAS,kBAAkB,CAAC,EAAE,0BAAuCA,EAAE,SAAS,CAAC,SAAS,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,aAA0BD,EAAE,SAAS,CAAC,SAAS,4BAA4B,CAAC,EAAE,wBAAqCA,EAAE,SAAS,CAAC,SAAS,yBAAyB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,+CAA4DD,EAAE,SAAS,CAAC,SAAS,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,aAA0BD,EAAE,SAAS,CAAC,SAAS,UAAU,CAAC,EAAE,gBAA6BA,EAAE,SAAS,CAAC,SAAS,oDAAoD,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,SAAsBD,EAAE,SAAS,CAAC,SAAS,uBAAuB,CAAC,EAAE,eAA4BA,EAAE,SAAS,CAAC,SAAS,oDAAoD,CAAC,EAAE,QAAqBA,EAAE,SAAS,CAAC,SAAS,uCAAuC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,SAAsBD,EAAE,SAAS,CAAC,SAAS,mBAAmB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,UAAuBD,EAAE,SAAS,CAAC,SAAS,sCAAsC,CAAC,EAAE,cAA2BA,EAAE,OAAO,CAAC,SAAS,oBAAoB,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,SAAsBD,EAAE,SAAS,CAAC,SAAS,IAAI,CAAC,EAAE,iBAA8BA,EAAE,SAAS,CAAC,SAAS,mBAAmB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,SAAsBD,EAAE,SAAS,CAAC,SAAS,IAAI,CAAC,EAAE,sCAAsC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,cAAc,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qCAAkDD,EAAEe,EAAE,CAAC,KAAK,6EAA6E,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,uIAAuI,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAqBD,EAAE,SAAS,CAAC,SAAS,oBAAoB,CAAC,EAAE,kBAA+BA,EAAE,SAAS,CAAC,SAAS,SAAS,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,aAA0BD,EAAE,SAAS,CAAC,SAAS,GAAG,CAAC,EAAE,iDAAiD,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,UAAuBD,EAAE,SAAS,CAAC,SAAS,KAAK,CAAC,EAAE,aAA0BA,EAAE,SAAS,CAAC,SAAS,WAAW,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,UAAuBD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,aAA0BA,EAAE,SAAS,CAAC,SAAS,UAAU,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+CAA+C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,SAAsBD,EAAE,SAAS,CAAC,SAAS,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,SAAsBD,EAAE,OAAO,CAAC,SAAS,oBAAoB,CAAC,EAAE,0BAA0B,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,SAAsBD,EAAE,OAAO,CAAC,SAAS,mBAAmB,CAAC,EAAE,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,aAA0BD,EAAE,SAAS,CAAC,SAAS,yBAAyB,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,UAAuBD,EAAE,SAAS,CAAC,SAAS,qBAAqB,CAAC,EAAE,wBAAqCA,EAAE,SAAS,CAAC,SAAS,UAAU,CAAC,EAAE,2BAAwCA,EAAE,OAAO,CAAC,SAAS,mBAAmB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,UAAuBD,EAAE,SAAS,CAAC,SAAS,wBAAwB,CAAC,EAAE,oBAAiCA,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,EAAE,cAA2BA,EAAE,OAAO,CAAC,SAAS,oBAAoB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,SAAsBD,EAAE,SAAS,CAAC,SAAS,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,aAA0BD,EAAE,SAAS,CAAC,SAAS,yBAAyB,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,SAAsBD,EAAE,SAAS,CAAC,SAAS,UAAU,CAAC,EAAE,sBAAmCA,EAAE,SAAS,CAAC,SAAS,sCAAsC,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,aAA0BD,EAAE,SAAS,CAAC,SAAS,QAAQ,CAAC,EAAE,sBAAmCA,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,uBAAoCA,EAAE,SAAS,CAAC,SAAS,gBAAgB,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,SAAsBD,EAAE,SAAS,CAAC,SAAS,IAAI,CAAC,EAAE,oBAAiCA,EAAE,SAAS,CAAC,SAAS,OAAO,CAAC,EAAE,0CAA0C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,cAAc,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kDAA+DD,EAAEe,EAAE,CAAC,KAAK,yEAAyE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,oBAAiCA,EAAE,OAAO,CAAC,SAAS,KAAK,CAAC,EAAE,oEAAiFA,EAAEe,EAAE,CAAC,KAAK,8EAA8E,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,SAAsBD,EAAE,SAAS,CAAC,SAAS,0BAA0B,CAAC,EAAE,eAA4BA,EAAE,SAAS,CAAC,SAAS,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,UAAuBD,EAAE,SAAS,CAAC,SAAS,mCAAmC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,kCAA+CD,EAAE,SAAS,CAAC,SAAS,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,SAAsBD,EAAE,OAAO,CAAC,SAAS,oBAAoB,CAAC,EAAE,YAAyBA,EAAE,SAAS,CAAC,SAAS,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,SAAsBD,EAAE,OAAO,CAAC,SAAS,mBAAmB,CAAC,EAAE,YAAyBA,EAAE,SAAS,CAAC,SAAS,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,mBAAgCD,EAAE,SAAS,CAAC,SAAS,GAAG,CAAC,EAAE,WAAwBA,EAAE,SAAS,CAAC,SAAS,UAAU,CAAC,EAAE,qBAAkCA,EAAE,SAAS,CAAC,SAAS,uCAAuC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,SAAsBD,EAAE,OAAO,CAAC,SAAS,mBAAmB,CAAC,EAAE,YAAyBA,EAAE,SAAS,CAAC,SAAS,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,aAA0BD,EAAE,SAAS,CAAC,SAAS,WAAW,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,aAA0BD,EAAE,SAAS,CAAC,SAAS,sBAAiB,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,aAA0BD,EAAE,SAAS,CAAC,SAAS,kCAAkC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,aAA0BD,EAAE,SAAS,CAAC,SAAS,YAAY,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,SAAsBD,EAAE,OAAO,CAAC,SAAS,oBAAoB,CAAC,EAAE,YAAyBA,EAAE,SAAS,CAAC,SAAS,gBAAgB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,cAA2BD,EAAE,SAAS,CAAC,SAAS,UAAU,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,SAAsBD,EAAE,OAAO,CAAC,SAAS,sBAAsB,CAAC,EAAE,YAAyBA,EAAE,SAAS,CAAC,SAAS,mBAAmB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,SAAsBD,EAAE,OAAO,CAAC,SAAS,aAAa,CAAC,EAAE,YAAyBA,EAAE,SAAS,CAAC,SAAS,mBAAmB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,SAAsBD,EAAE,SAAS,CAAC,SAAS,IAAI,CAAC,EAAE,gBAA6BA,EAAE,SAAS,CAAC,SAAS,KAAK,CAAC,EAAE,0CAA0C,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,YAAyBD,EAAE,SAAS,CAAC,SAAS,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,YAAY,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+KAA+K,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uLAAuL,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+XAAqX,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iCAA8CD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,2KAAsK,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,uFAAuF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,oCAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,yEAAoE,CAACC,CAAC,EAAE,cAAc,CAACC,CAAC,EAAE,aAAa,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,qEAAqE,OAAO,4VAA4V,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,8XAAoX,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4TAAkT,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6CAA6C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,khBAAkhB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,sZAA8ZD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qHAAqH,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,aAAa,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uaAAobD,EAAEe,EAAE,CAAC,KAAK,sEAAsE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,KAAkBA,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,4BAA4B,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,aAAa,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,opBAAupBD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,eAAe,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wbAAmb,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8QAA8Q,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0BAA0B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0gBAAif,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0CAA0C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4WAA4W,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uNAAuN,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sZAAkY,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iLAA8LD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,oHAAoH,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wJAAmJ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wCAAwC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2WAA4V,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yCAAyC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yVAAiWD,EAAEe,EAAE,CAAC,KAAK,iHAAiH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8BAA8B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iYAAiY,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sMAAsM,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0CAA0C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yNAAyN,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,mBAAmB,CAAC,EAAE,8IAA8I,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,mBAAmB,CAAC,EAAE,gHAAgH,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,uBAAuB,CAAC,EAAE,+HAA0H,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,EAAE,oJAAoJ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mKAA8J,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2CAA2C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wRAAyQ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qHAAwHD,EAAEe,EAAE,CAAC,KAAK,kEAAkE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mDAAmD,CAAC,CAAC,CAAC,EAAE,8FAA8F,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kBAAkB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6QAA6Q,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0BAA0B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mOAAmO,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uBAAuB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2YAA2Y,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0MAA0M,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kCAAkC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iEAA8ED,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,qRAA2Q,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,2BAA2B,CAAC,EAAE,gEAA6EA,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,gCAAgC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,oCAAoC,CAAC,EAAE,0IAAqI,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,8BAA8B,CAAC,EAAE,8JAAyJ,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,6BAA6B,CAAC,EAAE,sLAAsL,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8HAAiID,EAAEe,EAAE,CAAC,KAAK,8LAA8L,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2EAA2E,CAAC,CAAC,CAAC,EAAE,kJAA6I,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,sCAA8CD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,4UAAoVA,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wDAAwD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4UAAuU,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iHAAyHD,EAAEe,EAAE,CAAC,KAAK,wFAAwF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,uCAAuC,CAACC,CAAC,EAAE,oBAAoB,CAACC,CAAC,EAAE,oBAAoB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,gBAAgB,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,oWAAoW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oCAAoC,CAAC,CAAC,CAAC,EAAE,kRAAkR,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8IAA+H,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iCAAiC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yVAA+U,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,aAAa,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,icAAub,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qOAAqO,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yIAAyI,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,8FAA8F,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,8LAA8L,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wSAAwS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yTAAyT,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gHAA2G,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mHAAmH,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+HAA+H,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+OAA+O,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,8CAA8C,UAAU,eAAe,oBAAoB,qGAAqG,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6CAA6C,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+BAA+B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wLAAwL,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sLAAiL,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sQAAiQ,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sMAAiM,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+CAA+C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,8DAA8D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iGAAiG,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kCAAkC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+NAA+N,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sGAAsG,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mDAAmD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uDAAuD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6PAAwP,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oJAA+I,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8NAA8N,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,cAAc,CAAC,EAAE,kHAAkH,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,cAAc,CAAC,EAAE,0KAA0K,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mRAAmR,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oNAAoN,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kMAA6L,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,YAAY,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oPAA0O,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gOAAwOD,EAAEe,EAAE,CAAC,KAAK,2FAA2F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,sIAAsI,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,+FAA+F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,+BAA+B,CAAC,CAAC,CAAC,EAAE,gEAAgE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,0DAA0D,CAACC,CAAC,EAAE,eAAe,CAACC,CAAC,EAAE,eAAe,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,mTAAmT,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8TAA8T,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,0RAAmRD,EAAEe,EAAE,CAAC,KAAK,oGAAoG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,kDAA+DA,EAAEe,EAAE,CAAC,KAAK,gHAAgH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uCAAuC,CAAC,CAAC,CAAC,EAAE,yFAAqE,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uBAAuB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0PAA0P,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yIAAyI,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+LAA+L,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,6DAAwD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qFAAgF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wFAAmF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8JAAyJ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+BAA+B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uSAAuS,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+KAA+K,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0DAAqD,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,2CAA2C,UAAU,eAAe,oBAAoB,8FAA8F,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0CAA0C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6ZAAwZ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0XAA0X,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6CAA6C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mPAAmP,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wBAAwB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oYAAoY,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oWAAoW,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wBAAwB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sNAAsN,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,sKAA8KD,EAAEe,EAAE,CAAC,KAAK,uJAAuJ,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oCAAoC,CAAC,CAAC,CAAC,EAAE,kEAAkE,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qBAAqB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kTAAqTD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yPAAyP,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qDAAqD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4RAAuR,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uJAAuJ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6CAA6C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4UAA4U,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6IAA0JD,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,0FAAuGA,EAAEe,EAAE,CAAC,KAAK,wEAAwE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,EAAE,mUAAmU,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,aAA0BD,EAAEe,EAAE,CAAC,KAAK,4EAA4E,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,kLAAkL,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+CAA+C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kOAAkO,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0OAA0O,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8OAA8O,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6OAAmO,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,SAAS,2GAA2G,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+CAA+C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gNAA2M,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mNAAyM,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8FAAsGD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,2GAA2G,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kJAA+JD,EAAEe,EAAE,CAAC,KAAK,sEAAsE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,cAA2BA,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,0QAA0Q,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2CAA2C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,icAAub,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wFAAqGD,EAAEe,EAAE,CAAC,KAAK,yDAAyD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oCAAoC,CAAC,CAAC,CAAC,EAAE,qBAA6BA,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mGAA8F,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yFAAyF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iEAAiE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0NAAgN,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,0FAA0F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,0EAA0E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,iEAAiE,CAACC,CAAC,EAAE,kBAAkB,CAACC,CAAC,EAAE,kBAAkB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,aAAa,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,KAAK,CAAC,SAAS,yBAAyB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sTAAsT,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oTAAuTD,EAAEe,EAAE,CAAC,KAAK,uGAAuG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,mDAAmD,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qWAAgW,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kCAAkC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kMAAkM,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kCAAkC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,ihBAAihB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mXAAmX,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2DAA2D,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wBAAwB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kHAAkH,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6QAA6Q,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gEAAgE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iJAAyJD,EAAEe,EAAE,CAAC,KAAK,uGAAuG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,yBAAyB,UAAU,eAAe,oBAAoB,kGAAkG,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wNAAwN,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kBAAkB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2SAA8SD,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,mHAA2HA,EAAEe,EAAE,CAAC,KAAK,mDAAmD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAE,2JAA2J,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8HAA2ID,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,6HAA6H,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,SAAS,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wDAAwD,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sDAAsD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qEAAqE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wKAAmK,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mGAAmG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yBAAyB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wGAAwG,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0BAA0B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8iBAA8iB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6BAA6B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8cAA8c,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wBAAwB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,2NAAmOD,EAAEe,EAAE,CAAC,KAAK,+CAA+C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,kBAA+BA,EAAEe,EAAE,CAAC,KAAK,2DAA2D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAE,4DAAyEA,EAAEe,EAAE,CAAC,KAAK,8GAA8G,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,iHAAiH,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uWAAkW,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+BAA0B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gSAAsR,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uUAAkU,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2RAA2R,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8CAA8C,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gCAA6CD,EAAEe,EAAE,CAAC,KAAK,gDAAgD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oDAAoD,CAAC,CAAC,CAAC,EAAE,4DAAyEA,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,EAAE,oHAA+G,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,oGAAoG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,oGAAoG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,8DAA8D,CAACC,CAAC,EAAE,uBAAuB,CAACC,CAAC,EAAE,sBAAsB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,gWAAgW,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,6CAA0DD,EAAEe,EAAE,CAAC,KAAK,sIAAsI,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6CAA6C,CAAC,CAAC,CAAC,EAAE,2WAA2W,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wCAAwC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gCAAgC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gCAAgC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yCAAyC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wFAAwF,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uCAAuC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+LAA+L,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAiBD,EAAE,OAAO,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2ZAA4Y,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kNAA6M,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uDAAuD,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+CAA+C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,8CAA8C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kEAAkE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sDAAsD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gEAAgE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iDAAiD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uCAAuC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gZAA2Y,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mdAAoc,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4IAA4I,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kEAAkE,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4DAA4D,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sEAAsE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iDAAiD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sDAAsD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4DAA4D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2OAAiO,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gPAAgP,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uDAAuD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yKAAoK,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,eAAe,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uXAAmW,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,eAAe,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6gBAAwgB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,cAAc,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yHAAsID,EAAEe,EAAE,CAAC,KAAK,gEAAgE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,+XAA0X,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,gBAAgB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6lBAA6lB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qEAAqE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yRAAyR,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oGAAoG,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6BAA6B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yYAA+X,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2CAA2C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0ZAAqZ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wCAAwC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gbAAgb,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qBAAqB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qTAAgT,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0BAA0B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qSAAqS,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0CAA0C,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,aAA0BD,EAAEe,EAAE,CAAC,KAAK,sDAAsD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAE,kgBAA6f,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wJAAmJ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mDAA8C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oVAA+U,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2dAAid,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8ZAAoZ,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mBAAgCD,EAAEe,EAAE,CAAC,KAAK,mCAAmC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,kCAA0CA,EAAEe,EAAE,CAAC,KAAK,mCAAmC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,8DAA8D,CAACC,CAAC,EAAE,mCAAmC,CAACC,CAAC,EAAE,kCAAkC,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,mQAAmQ,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,mQAAmQ,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,2SAAsS,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oWAAoW,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,yBAAyB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8HAAoH,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6TAAmT,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wQAAmQ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wBAAwB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8VAAyV,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,oBAAoB,CAAC,EAAE,0WAA0W,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,qBAAqB,CAAC,EAAE,wWAAwW,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,oBAAoB,CAAC,EAAE,2fAA2f,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kCAAkC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gNAA2M,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2KAAsK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wQAAmQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8JAA8J,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0NAA0N,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wBAAwB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4JAAkJ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yVAA+U,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+dAA2c,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8BAA8B,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kNAA0ND,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8VAA8V,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wBAAwB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uOAAkO,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,yBAAyB,CAAC,EAAE,kQAAmP,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,qBAAqB,CAAC,EAAE,kPAA+PA,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gCAA2B,CAAC,CAAC,CAAC,EAAE,uDAAkD,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,uBAAuB,CAAC,EAAE,gUAAsT,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iCAAiC,CAAC,EAAE,yVAA+U,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kEAAkE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oNAA0M,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,gBAAgB,CAAC,EAAE,kHAAkH,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,EAAE,kIAAkI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sHAAsH,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU,eAAe,oBAAoB,iGAAiG,IAAI,wEAAwE,OAAO,yKAAyK,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sDAAsD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+VAAgV,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,qCAAqC,CAAC,EAAE,8FAA8F,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iCAAiC,CAAC,EAAE,kHAAkH,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,0BAA0B,CAAC,EAAE,2HAA2H,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iCAAiC,CAAC,EAAE,kFAAkF,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,kCAAkC,CAAC,EAAE,8HAA8H,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mDAAmD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAE,ibAAib,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2aAA2a,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2aAA2a,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kKAA0KD,EAAEe,EAAE,CAAC,KAAK,sEAAsE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,EAAE,mIAAmI,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6DAA6D,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sYAAsY,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kSAA6R,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mBAAgCD,EAAEe,EAAE,CAAC,KAAK,mCAAmC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,kCAA0CA,EAAEe,EAAE,CAAC,KAAK,mCAAmC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,6DAAwD,CAACC,CAAC,EAAE,iBAAiB,CAACC,CAAC,EAAE,iBAAiB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,aAAa,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,sQAAsQ,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,sQAAsQ,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,SAAS,8BAA8B,CAAC,EAAeA,EAAEe,EAAE,CAAC,KAAK,yEAAyE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,SAAS,oCAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0WAA0W,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uCAAuC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4EAAyFD,EAAEe,EAAE,CAAC,KAAK,sEAAsE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,EAAE,sbAA4a,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qJAAqJ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yOAAyO,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iBAAiB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oTAA+S,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0fAAse,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qKAAqK,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4CAAuC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uQAAkQ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0BAA0B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6rBAAwrB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,+EAA+E,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,aAA0BA,EAAEe,EAAE,CAAC,KAAK,uBAAuB,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2CAA2C,CAAC,CAAC,CAAC,EAAE,yTAA+S,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iCAA8CD,EAAEe,EAAE,CAAC,KAAK,8BAA8B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,wGAAwG,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,mBAAmB,CAAC,EAAE,+KAA+K,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,2BAA2B,CAAC,EAAE,2KAA2K,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,yBAAyB,CAAC,EAAE,mLAAmL,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,kBAAkB,CAAC,EAAE,6JAA6J,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,YAAY,CAAC,EAAE,iGAAiG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,uBAAuB,CAAC,EAAE,iJAAiJ,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,cAAc,CAAC,EAAE,qDAAqD,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,mBAAmB,CAAC,EAAE,wGAAwG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iVAA4U,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wCAAwC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6tBAA6tB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0WAA0W,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,2BAA2B,CAAC,EAAE,qBAA6BA,EAAEe,EAAE,CAAC,KAAK,sEAAsE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,qNAAqN,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,wBAAwB,CAAC,EAAE,mIAAmI,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,YAAY,CAAC,EAAE,iWAAkV,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,wBAAwB,CAAC,EAAE,uHAAuH,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,+LAA+L,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,kBAAkB,CAAC,EAAE,4SAA4S,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,uBAAuB,CAAC,EAAE,qKAAqK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8OAA8O,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAEe,EAAE,CAAC,KAAK,gCAAgC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,EAAE,mGAAmG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,qCAAqC,CAACC,CAAC,EAAE,qCAAqC,CAACC,CAAC,EAAE,qCAAqC,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,gBAAgB,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,sQAAsQ,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,sQAAsQ,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,6EAA0FD,EAAEe,EAAE,CAAC,KAAK,sEAAsE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,yKAAiLA,EAAE,KAAK,CAAC,SAAS,OAAO,CAAC,EAAE,kMAA+MA,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,6IAAwI,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8bAAob,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6DAA6D,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,koBAA2nBD,EAAE,KAAK,CAAC,SAAS,2CAA2C,CAAC,EAAE,SAAI,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU,eAAe,oBAAoB,gGAAgG,IAAI,wEAAwE,OAAO,yQAAyQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sEAAsE,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,kCAAkC,CAAC,EAAE,iOAAiO,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iEAAiE,CAAC,EAAE,mLAAmL,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,0DAA0D,CAAC,EAAE,uMAAuM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,ucAA6b,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wCAAmC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4JAAuJ,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,6DAA6D,CAAC,EAAE,+GAA+G,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,yDAAyD,CAAC,EAAE,yQAAoQ,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,oDAAoD,CAAC,EAAE,kQAA6P,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU,eAAe,oBAAoB,wGAAwG,IAAI,uEAAuE,OAAO,sQAAsQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wVAA8U,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sDAAiD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mNAAgOD,EAAEe,EAAE,CAAC,KAAK,iDAAiD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,oGAAoG,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU,eAAe,oBAAoB,mGAAmG,IAAI,uEAAuE,OAAO,sQAAsQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mRAAmR,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iRAA8RD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,yIAAyI,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sDAAsD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mBAA2BD,EAAEe,EAAE,CAAC,KAAK,sDAAsD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAE,ufAAkf,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU,eAAe,oBAAoB,qGAAqG,IAAI,wEAAwE,OAAO,yQAAyQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kiBAAkiB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sDAAiD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gLAA2K,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qSAAqS,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU,eAAe,oBAAoB,6GAA6G,IAAI,wEAAwE,OAAO,yQAAyQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4fAA4f,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6LAAqMD,EAAE,KAAK,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,CAAC,EAAE,uDAAuD,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oEAA4ED,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,CAAC,CAAC,EAAE,gKAAsJ,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU,eAAe,oBAAoB,+FAA+F,IAAI,wEAAwE,OAAO,yQAAyQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,khBAA6gB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wGAAqHD,EAAEe,EAAE,CAAC,KAAK,mEAAmE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAE,8cAAoc,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,YAAY,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qQAAiP,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mBAAgCD,EAAEe,EAAE,CAAC,KAAK,mCAAmC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,kCAA0CA,EAAEe,EAAE,CAAC,KAAK,mCAAmC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,2CAA2C,CAACC,CAAC,EAAE,yBAAyB,CAACC,CAAC,EAAE,kBAAkB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,aAAa,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,6bAA6b,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,6bAA6b,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,SAAS,8BAA8B,CAAC,EAAeA,EAAEe,EAAE,CAAC,KAAK,yEAAyE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,SAAS,oCAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,SAAS,kEAAkE,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,SAAS,yEAAyE,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,SAAS,kEAAkE,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,SAAS,6DAA6D,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iFAA4E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sEAAsE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6EAAwE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,uCAAuC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2EAA2E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oEAAoE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mEAA8D,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wEAAmE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0EAA0E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qEAAqE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uEAAuE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oFAAoF,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qEAAqE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oEAAoE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0CAA0C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qFAA2E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wEAAwE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uEAAuE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qEAAqE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+CAA+C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kCAAkC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2EAA2E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uEAAuE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0EAA0E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oEAAoE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uEAAuE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0EAA0E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uDAAuD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yEAAyE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yEAAyE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sEAAsE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wEAAwE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8EAAoE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mDAAmD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,OAAO,CAAC,EAAE,sCAAmDA,EAAE,KAAK,CAAC,SAAS,qBAAqB,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kEAAkE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8EAAoE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oEAAoE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kEAAkE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yEAAyE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yEAAyE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iEAAiE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oEAAoE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yEAAyE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mEAAmE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uCAAkC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sEAAsE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0EAA0E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0EAAqE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qEAAqE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qCAAqC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8BAA2CD,EAAE,SAAS,CAAC,SAAS,QAAQ,CAAC,EAAE,QAAqBA,EAAE,SAAS,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qEAAqE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0EAA0E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wEAAwE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wEAAwE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6CAA6C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uEAAuE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sEAAsE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yEAAyE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kEAAkE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2EAA2E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qEAAqE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0EAA0E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sEAAsE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+DAA+D,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uEAAuE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kFAAkF,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gFAA2E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sEAAsE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2FAAsF,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yEAAyE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6EAAwE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2FAA2F,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yEAAyE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yEAAyE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sEAAsE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8EAAyE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yEAAoE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gFAAgF,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wEAAwE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yEAAyE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sEAAsE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qEAAqE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4EAAuE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sEAAsE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sEAAsE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+BAA+B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2BAA2B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yEAAyE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wEAAwE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uEAAuE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sEAAsE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kEAAkE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8EAAyE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oEAAoE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sEAAsE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wEAAwE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qGAAqG,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uEAAuE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0EAA0E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oEAAoE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wEAAwE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uEAAuE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sEAAsE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uEAAuE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+CAA0C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8CAAyC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6EAA6E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kEAAkE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0EAA0E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+BAA+B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qEAAgE,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,0HAAkID,EAAEe,EAAE,CAAC,KAAK,gDAAgD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,+DAA+D,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU,eAAe,oBAAoB,6FAA6F,IAAI,uEAAuE,OAAO,sQAAsQ,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,KAAK,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4EAA4E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wEAAwE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qEAAqE,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,iFAAyFD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,QAAG,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uEAAuE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qEAAqE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gDAAgD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iFAAiF,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uEAAuE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0EAA0E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+DAA+D,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wEAAwE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sEAAsE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iEAAiE,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kDAAkD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+CAA+C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0CAA0C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,uEAAuE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wCAAwC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iFAAiF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sCAAsC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mFAAmF,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4EAAuE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4CAA4C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6EAA6E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sEAAsE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qEAAqE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uEAAuE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sEAAsE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wEAAwE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+CAA+C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4EAA4E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yEAAyE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oEAAoE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2EAA2E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wEAAmE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mEAAmE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0EAA0E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sEAAsE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6CAA6C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,KAAK,CAAC,SAAS,6DAA6D,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4EAA4E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8EAAyE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iDAAiD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,wIAAwI,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAS,CAAcA,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iBAAiB,CAAC,EAAE,iJAAiJ,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kEAAkE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uEAAuE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mEAAmE,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAS,CAAcA,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,qBAAqB,CAAC,EAAE,gEAAgE,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0JAAgJ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mEAAmE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qEAAqE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAS,CAAcA,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,oBAAoB,CAAC,EAAE,wBAAwB,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yEAAyE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sEAAsE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4EAAkE,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,kBAAkB,CAAC,EAAE,kJAAkJ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0EAA0E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wEAAwE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wEAAwE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wEAAwE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0EAA0E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8DAA8D,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,KAAK,CAAC,SAAS,oDAAoD,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2EAA2E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sEAAsE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gFAAsE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yEAAyE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uEAAuE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uEAAuE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yEAAyE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kDAAkD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iFAAiF,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wEAAwE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uEAAuE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sEAAsE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yEAAyE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sEAAsE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0EAA0E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yBAAyB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8EAA8E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sEAAsE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kEAAkE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2CAA2C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0EAA0E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uEAAuE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uEAAuE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8EAAyE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mEAAmE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,KAAK,CAAC,SAAS,iEAAiE,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0BAA0B,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mEAAmE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wGAAwG,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAS,CAAcD,EAAE,IAAI,CAAC,SAAS,4EAA4E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uEAAuE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yEAAyE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0EAA0E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6FAA6F,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sEAAsE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yEAAoE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kEAAkE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wEAAwE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0EAA0E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yEAAyE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yBAAyB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0FAAqF,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uEAAuE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yCAAyC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+EAA+E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0EAAqE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+EAA0E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oCAAoC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kCAAkC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2EAA2E,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yEAAyE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kEAAkE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8EAAyE,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yEAAsFD,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uEAAuE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sEAAsE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oDAAoD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0EAA0E,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kCAAkC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,yBAAyB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0CAA0C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gFAAgF,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yEAAyE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4EAAuE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sEAAsE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,KAAK,CAAC,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kHAAkH,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAS,CAAcA,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,6CAA6C,CAAC,EAAE,0IAA0I,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oEAAoE,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gJAA6JD,EAAEe,EAAE,CAAC,KAAK,qFAAqF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAS,CAAcA,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,wCAAwC,CAAC,EAAE,4EAAuE,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uEAAuE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yEAAyE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8EAAyE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mEAAmE,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mDAAgED,EAAEe,EAAE,CAAC,KAAK,wEAAwE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAS,CAAcA,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iCAAiC,CAAC,EAAE,qEAAqE,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yEAAyE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wEAAwE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6EAAwE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yEAAoE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+IAA+I,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,6DAA0ED,EAAEe,EAAE,CAAC,KAAK,uCAAuC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAS,CAAcA,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,wCAAwC,CAAC,EAAE,6EAAwE,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qEAAqE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yEAAyE,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,sDAAmED,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAS,CAAcA,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,yBAAyB,CAAC,EAAE,yEAAyE,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mEAAmE,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mFAAgGD,EAAEe,EAAE,CAAC,KAAK,gCAAgC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,gFAAgF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,8BAA8B,CAACC,CAAC,EAAE,8BAA8B,CAACC,CAAC,EAAE,6BAA6B,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,WAAW,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,mQAAmQ,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,mQAAmQ,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,+fAA0f,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oBAAiCD,EAAEe,EAAE,CAAC,KAAK,kFAAkF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAAsB,CAAC,CAAC,CAAC,EAAE,oDAAiEA,EAAEe,EAAE,CAAC,KAAK,gHAAgH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,yGAAsHA,EAAEe,EAAE,CAAC,KAAK,uEAAuE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,sXAAsX,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,knBAAknB,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,wBAAwB,CAAC,EAAE,iVAAiV,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,kCAAkC,CAAC,EAAE,iQAA8QA,EAAEe,EAAE,CAAC,KAAK,8EAA8E,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,yJAAqI,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iCAAiC,CAAC,EAAE,oVAAoV,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iCAAiC,CAAC,EAAE,qRAAkSA,EAAEe,EAAE,CAAC,KAAK,iDAAiD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wBAAwB,CAAC,CAAC,CAAC,EAAE,oeAA4eA,EAAEe,EAAE,CAAC,KAAK,6FAA6F,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,0CAA0C,CAAC,CAAC,CAAC,EAAE,qDAAqD,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,iCAAiC,CAAC,EAAE,+6BAA+6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,4CAA4C,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mFAAgGD,EAAEe,EAAE,CAAC,KAAK,sEAAsE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,wRAAwR,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sCAAsC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,mDAAmD,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,4EAA4E,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+CAA+C,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sCAAsC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iCAAiC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,kEAAkE,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0CAA0C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,iDAAiD,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4JAA4J,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,2BAAwCD,EAAEe,EAAE,CAAC,KAAK,8DAA8D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,EAAE,uDAAuD,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,yEAAsFD,EAAEe,EAAE,CAAC,KAAK,sDAAsD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,mCAAmC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,4CAAyDD,EAAEe,EAAE,CAAC,KAAK,uCAAuC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,sCAAsC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,UAAuBD,EAAEe,EAAE,CAAC,KAAK,4EAA4E,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8MAAyM,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qNAAkOD,EAAEe,EAAE,CAAC,KAAK,gCAAgC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,4EAAuE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,kDAAkD,CAACC,CAAC,EAAE,wBAAwB,CAACC,CAAC,EAAE,qCAAqC,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,WAAW,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,mQAAmQ,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,mQAAmQ,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,6MAAqND,EAAEe,EAAE,CAAC,KAAK,2DAA2D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,+BAA+B,CAAC,CAAC,CAAC,EAAE,gSAAgS,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,gaAAga,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0CAA0C,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,SAAsBD,EAAEe,EAAE,CAAC,KAAK,2CAA2C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,EAAE,8lBAA8lB,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sXAAiX,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kKAAkK,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qCAAgC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mdAAmd,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,olBAA+kB,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yVAAoV,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,0CAA0C,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2qBAAiqB,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU,eAAe,oBAAoB,2FAA2F,IAAI,uEAAuE,OAAO,sQAAsQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4YAA4Y,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kUAAkU,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kdAAwc,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU,eAAe,oBAAoB,8FAA8F,IAAI,sEAAsE,OAAO,mQAAmQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,ubAA6a,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2kBAA2kB,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uCAAoDD,EAAEe,EAAE,CAAC,KAAK,gCAAgC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,oHAAoH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,wFAAwF,CAACC,CAAC,EAAE,oCAAoC,CAACC,CAAC,EAAE,oCAAoC,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,aAAa,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,mQAAmQ,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,mQAAmQ,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,0eAAqe,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,0MAA0M,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,odAA0c,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,obAAob,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qNAAqN,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,8DAA8D,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gBAA6BD,EAAEe,EAAE,CAAC,KAAK,wEAAwE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,yDAAyD,CAAC,CAAC,CAAC,EAAE,wDAAwD,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0HAA0H,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,2NAAsN,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wRAAmR,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,iTAAiT,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,uGAAoHD,EAAEe,EAAE,CAAC,KAAK,0DAA0D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAE,+DAA0D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,oDAAoD,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oaAAoa,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU,eAAe,oBAAoB,+FAA+F,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,oCAAoC,CAAC,EAAE,oEAAiFA,EAAE,SAAS,CAAC,SAAS,MAAM,CAAC,EAAE,+UAA+U,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU,eAAe,oBAAoB,iGAAiG,IAAI,wEAAwE,OAAO,yKAAyK,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,2CAA2C,CAAC,EAAE,iQAAyQA,EAAE,SAAS,CAAC,SAAS,MAAM,CAAC,EAAE,+NAAkOA,EAAE,SAAS,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU,eAAe,oBAAoB,6FAA6F,IAAI,uEAAuE,OAAO,uKAAuK,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,sBAAiB,CAAC,EAAE,mKAA8J,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,ySAAgR,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kKAAqKD,EAAEe,EAAE,CAAC,KAAK,mCAAmC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gCAAgC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,wCAAwC,CAACC,CAAC,EAAE,wCAAwC,CAACC,CAAC,EAAE,wCAAwC,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,gBAAgB,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,uEAAuE,OAAO,sQAAsQ,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,uEAAuE,OAAO,sQAAsQ,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,wDAA2DD,EAAEe,EAAE,CAAC,KAAK,qDAAqD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,wYAA8X,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,ofAAof,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oaAAoa,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,qEAAkFD,EAAE,KAAK,CAAC,SAAS,WAAW,CAAC,EAAE,0BAAuCA,EAAE,KAAK,CAAC,SAAS,SAAS,CAAC,EAAE,6UAA6U,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAoBD,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,yKAAiLA,EAAE,SAAS,CAAC,SAAS,2BAA2B,CAAC,EAAE,yIAAoI,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,8DAA8D,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU,eAAe,oBAAoB,oGAAoG,IAAI,uEAAuE,OAAO,sQAAsQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBC,EAAE,KAAK,CAAC,SAAS,CAAC,iTAA8TD,EAAE,KAAK,CAAC,CAAC,EAAE,kEAA6D,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yVAA+U,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qgBAA2f,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wbAAwb,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qCAAqC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU,eAAe,oBAAoB,+GAA+G,IAAI,wEAAwE,OAAO,yQAAyQ,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8BAAsCD,EAAE,SAAS,CAAC,SAAS,kCAAkC,CAAC,EAAE,mMAAgNA,EAAE,SAAS,CAAC,SAAS,eAAe,CAAC,EAAE,mFAAmF,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wkBAA+iB,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,kDAAkD,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU,eAAe,oBAAoB,4GAA4G,IAAI,sEAAsE,OAAO,mQAAmQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qbAAqb,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6dAA6d,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,6CAA6C,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU,eAAe,oBAAoB,gGAAgG,IAAI,wEAAwE,OAAO,yQAAyQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBC,EAAE,KAAK,CAAC,SAAS,CAAC,sbAA8bD,EAAE,KAAK,CAAC,CAAC,EAAE,oCAA+B,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,ibAAib,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2UAA4T,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,keAAyc,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,qDAAqD,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU,eAAe,oBAAoB,6FAA6F,IAAI,sEAAsE,OAAO,mQAAmQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBC,EAAE,KAAK,CAAC,SAAS,CAAC,uIAAqID,EAAE,KAAK,CAAC,CAAC,EAAE,mDAA8C,CAAC,CAAC,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uJAAoKD,EAAEe,EAAE,CAAC,KAAK,qCAAqC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,8KAAyK,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,ucAAuc,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,iOAAiO,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6QAAmQ,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mBAAgCD,EAAEe,EAAE,CAAC,KAAK,4BAA4B,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,kCAA0CA,EAAEe,EAAE,CAAC,KAAK,mCAAmC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,wDAAwD,CAACC,CAAC,EAAE,oBAAoB,CAACC,CAAC,EAAE,iCAAiC,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,mQAAmQ,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,mQAAmQ,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,kNAAqND,EAAE,SAAS,CAAC,SAAS,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,+mBAA4nBD,EAAEe,EAAE,CAAC,KAAK,wHAAwH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,EAAE,QAAqBA,EAAEe,EAAE,CAAC,KAAK,wHAAwH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,ghBAAogBD,EAAEe,EAAE,CAAC,KAAK,mDAAmD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,gKAAwKD,EAAEe,EAAE,CAAC,KAAK,qDAAqD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,EAAE,0IAA6IA,EAAEe,EAAE,CAAC,KAAK,6CAA6C,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,6VAAoU,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mVAAoU,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,qCAAqC,CAAC,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU,eAAe,oBAAoB,gGAAgG,IAAI,wEAAwE,OAAO,yQAAyQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,kQAAkQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,uTAAuT,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,kGAA+GD,EAAEe,EAAE,CAAC,KAAK,uGAAuG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC,CAAC,EAAE,qCAAkDA,EAAEe,EAAE,CAAC,KAAK,sNAAsN,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oCAAoC,CAAC,CAAC,CAAC,EAAE,gEAA6EA,EAAEe,EAAE,CAAC,KAAK,gHAAgH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,0BAA0B,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wEAAwE,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,sDAAiD,CAAC,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU,eAAe,oBAAoB,gGAAgG,IAAI,uEAAuE,OAAO,sQAAsQ,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,wJAAgKD,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,yCAAyC,CAAC,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,0bAAqb,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,+TAA+T,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,qcAAua,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,sNAAiN,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,sCAAiC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,oKAA+J,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU,eAAe,oBAAoB,6FAA6F,IAAI,uEAAuE,OAAO,uQAAuQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4CAAkC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAsBA,EAAE,SAAS,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2IAAsI,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,mBAAgCD,EAAEe,EAAE,CAAC,KAAK,mCAAmC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,oCAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,uDAAuD,CAACC,CAAC,EAAE,oCAAoC,CAACC,CAAC,EAAE,yCAAyC,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,cAAc,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,wEAAwE,OAAO,yQAAyQ,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,wEAAwE,OAAO,yQAAyQ,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcb,EAAE,IAAI,CAAC,SAAS,CAAC,uDAA+DD,EAAEe,EAAE,CAAC,KAAK,sGAAsG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,+BAA+B,CAAC,CAAC,CAAC,EAAE,wIAAwI,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,4BAA4B,UAAU,eAAe,oBAAoB,kGAAkG,IAAI,wEAAwE,OAAO,yQAAyQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6JAAwJ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,6SAA6S,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,8GAAyG,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,wKAAwK,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBA,EAAE,IAAI,CAAC,SAAS,sFAAsF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,+CAA+C,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,o0BAAi1BD,EAAEe,EAAE,CAAC,KAAK,qHAAqH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mFAAmF,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,uEAAuE,CAAC,EAAE,udAAgdA,EAAEe,EAAE,CAAC,KAAK,qFAAqF,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,kMAA6L,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,0EAA0E,CAAC,EAAE,qRAAkSA,EAAEe,EAAE,CAAC,KAAK,oEAAoE,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,yRAAyR,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,wEAAwE,CAAC,EAAE,smBAAimB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,2CAAiC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oTAAuTD,EAAEe,EAAE,CAAC,KAAK,uHAAuH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,8BAA8B,CAAC,CAAC,CAAC,EAAE,+FAA+F,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,uWAA0WD,EAAEe,EAAE,CAAC,KAAK,2HAA2H,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,6HAAqIA,EAAEe,EAAE,CAAC,KAAK,+EAA+E,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,8BAA2CA,EAAEe,EAAE,CAAC,KAAK,yGAAyG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,6FAA6F,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,kFAAkF,UAAU,eAAe,oBAAoB,8FAA8F,IAAI,wEAAwE,OAAO,yQAAyQ,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,wWAAoV,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,mHAA8G,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,+DAA+D,CAAC,EAAE,8lBAAylB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,yDAAyD,CAAC,EAAE,2cAA2c,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,kEAAkE,CAAC,EAAE,+aAAqa,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,kDAAkD,CAAC,EAAE,2zBAAizB,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,oDAA0C,CAAC,EAAE,kqBAA8oB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,4BAA4B,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,4TAA4T,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,4JAA+JD,EAAEe,EAAE,CAAC,KAAK,mGAAmG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,yCAAsDD,EAAEe,EAAE,CAAC,KAAK,mHAAmH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,WAAwBA,EAAEe,EAAE,CAAC,KAAK,gGAAgG,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,YAAY,CAACF,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,uBAAuB,CAACC,CAAC,EAAE,uBAAuB,CAACC,CAAC,EAAE,uBAAuB,CAACC,CAAC,EAAE,GAAG,CAACC,CAAC,EAAE,gBAAgB,CAACC,CAAC,EAAE,2BAA2B,CAACC,CAAC,EAAE,YAAY,CAACC,CAAC,EAAEG,EAAE,CAAC,IAAI,sEAAsE,OAAO,mQAAmQ,EAAE,EAAE,EAAE,CAACF,CAAC,EAAEE,EAAE,CAAC,IAAI,sEAAsE,OAAO,mQAAmQ,EAAE,EAAE,EAAE,CAACD,CAAC,EAAeR,EAAIa,EAAS,CAAC,SAAS,CAAcd,EAAE,IAAI,CAAC,SAAS,uVAAuV,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oYAAuYD,EAAEe,EAAE,CAAC,KAAK,wHAAwH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,wCAAwC,CAAC,CAAC,CAAC,EAAE,gPAA2O,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,iDAAiD,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qgBAAggB,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,yBAAiCD,EAAEe,EAAE,CAAC,KAAK,uIAAuI,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,iHAA4G,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,kCAA+CD,EAAEe,EAAE,CAAC,KAAK,yDAAyD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,+FAAqF,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,qFAA6FD,EAAEe,EAAE,CAAC,KAAK,sCAAsC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,8CAA8C,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,gBAA6BD,EAAEe,EAAE,CAAC,KAAK,oHAAoH,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,oFAAoF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,yjBAAojB,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,4DAA4D,UAAU,eAAe,oBAAoB,qGAAqG,IAAI,qEAAqE,OAAO,mKAAmK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,2DAA2D,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+RAA+R,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wDAAwD,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,8KAAiLD,EAAE,KAAK,CAAC,CAAC,EAAE,2CAAsC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+gBAAke,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,qFAAgF,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,yBAAyB,CAAC,EAAE,iHAA8HA,EAAEe,EAAE,CAAC,KAAK,sDAAsD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,oNAAoN,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,mBAAmB,CAAC,EAAE,qNAAmNA,EAAEe,EAAE,CAAC,KAAK,mDAAmD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,4BAA4B,CAAC,CAAC,CAAC,EAAE,qCAAkDA,EAAEe,EAAE,CAAC,KAAK,8DAA8D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,yBAAyB,CAAC,CAAC,CAAC,EAAE,iBAA8BA,EAAEe,EAAE,CAAC,KAAK,yCAAyC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,yBAAyB,CAAC,CAAC,CAAC,EAAE,oEAA+D,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAcD,EAAE,SAAS,CAAC,SAAS,0CAA0C,CAAC,EAAE,uZAAkZ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,MAAM,CAAC,IAAI,gDAAgD,UAAU,eAAe,oBAAoB,wGAAwG,IAAI,sEAAsE,OAAO,qKAAqK,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,+CAA+C,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,wDAAmD,CAAC,EAAeC,EAAE,KAAK,CAAC,SAAS,CAAcD,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,YAAyBD,EAAEe,EAAE,CAAC,KAAK,2DAA2D,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,gFAAgF,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,wBAAqCD,EAAEe,EAAE,CAAC,KAAK,+EAA+E,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,EAAE,mIAAmI,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,KAAK,CAAC,kBAAkB,IAAI,SAAsBC,EAAE,IAAI,CAAC,SAAS,CAAC,wCAAqDD,EAAEe,EAAE,CAAC,KAAK,yCAAyC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,qDAAqD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeA,EAAE,IAAI,CAAC,SAAS,8aAAya,CAAC,EAAeA,EAAE,KAAK,CAAC,SAAS,mEAAmE,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,sKAAmLD,EAAEe,EAAE,CAAC,KAAK,+HAA+H,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gCAAgC,CAAC,CAAC,CAAC,EAAE,2DAAwEA,EAAEe,EAAE,CAAC,KAAK,iCAAiC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,yOAA0N,CAAC,CAAC,EAAeC,EAAE,IAAI,CAAC,SAAS,CAAC,oBAAiCD,EAAEe,EAAE,CAAC,KAAK,mCAAmC,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,qCAAkDA,EAAEe,EAAE,CAAC,KAAK,mDAAmD,aAAa,GAAG,aAAa,GAAG,SAAsBf,EAAE,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQW,KAAKE,GAAE,OAAO,OAAOF,CAAC,EAAES,GAAEP,GAAE,CAAC,UAAU,CAAC,aAAa,GAAG,MAAM,YAAY,KAAKQ,EAAE,OAAO,EAAE,UAAU,CAAC,aAAa,GAAG,MAAM,WAAW,KAAKA,EAAE,OAAO,EAAE,UAAU,CAAC,aAAa,GAAG,YAAY,iDAAiD,MAAM,QAAQ,KAAKA,EAAE,MAAM,EAAE,UAAU,CAAC,aAAa,GAAG,YAAY,oDAAoD,MAAM,cAAc,KAAKA,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,OAAO,KAAKA,EAAE,MAAM,EAAE,UAAU,CAAC,aAAa,GAAG,MAAM,WAAW,KAAKA,EAAE,MAAM,EAAE,UAAU,CAAC,aAAa,GAAG,YAAY,eAAe,MAAM,SAAS,KAAKA,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,OAAO,KAAKA,EAAE,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,YAAY,YAAY,WAAW,EAAE,aAAa,CAAC,OAAO,WAAW,WAAW,EAAE,MAAM,WAAW,KAAKA,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,QAAQ,KAAKA,EAAE,eAAe,EAAE,UAAU,CAAC,MAAM,eAAe,KAAKA,EAAE,eAAe,EAAE,UAAU,CAAC,aAAa,GAAG,MAAM,UAAU,KAAKA,EAAE,QAAQ,CAAC,CAAC,EAAER,GAAE,YAAY,OAAO,IAAOS,GAAQT,GCAhh+1DU,GAAU,0BAA0B,CAAC,wBAAwB,CAAC,EAAS,IAAMC,GAAM,CAAC,CAAC,OAAO,kBAAkB,YAAY,CAAC,sBAAsB,qCAAqC,IAAI,yCAAyC,EAAE,IAAI,IAAI,IAAI,0CAA0C,8FAA8F,EAAE,IAAI,CAAC,EAAeC,GAAI,CAAC,inBAAinB,uqBAAuqB,mqBAAmqB,EAAeC,GAAU,eCAx2EC,GAAU,0BAA0B,CAAC,yBAAyB,CAAC,EAAS,IAAMC,GAAM,CAAC,CAAC,OAAO,mBAAmB,YAAY,CAAC,sBAAsB,qCAAqC,IAAI,yCAAyC,EAAE,IAAI,IAAI,IAAI,0CAA0C,8FAA8F,EAAE,IAAI,CAAC,EAAeC,GAAI,CAAC,gnBAAgnB,sqBAAsqB,kqBAAkqB,EAAeC,GAAU,eCCrjD,IAAMC,GAAoBC,GAASC,EAAc,EAAQC,GAAyBF,GAASG,EAAmB,EAAQC,GAAgB,CAAC,UAAU,CAAC,MAAM,EAAI,EAAE,UAAU,CAAC,MAAM,EAAI,CAAC,EAAQC,GAAW,CAAC,YAAY,YAAY,WAAW,EAAQC,GAAkB,eAAqBC,GAAkB,CAAC,UAAU,mBAAmB,UAAU,mBAAmB,UAAU,kBAAkB,EAAE,SAASC,GAAqBC,KAAaC,EAAS,CAAC,IAAMC,EAAc,CAAC,EAAE,OAA0CD,GAAS,QAAQE,GAASA,GAAS,OAAO,OAAOD,EAAcF,EAAUG,CAAO,CAAC,CAAC,EAASD,CAAc,CAAC,IAAME,GAAY,CAAC,QAAQ,GAAG,MAAM,EAAE,KAAK,EAAE,UAAU,IAAI,KAAK,QAAQ,EAAQC,GAAkBC,GAAW,OAAOA,GAAQ,UAAUA,IAAQ,MAAM,OAAOA,EAAM,KAAM,SAAiBA,EAAc,OAAOA,GAAQ,SAAS,CAAC,IAAIA,CAAK,EAAE,OAAkBC,GAAW,CAAC,CAAC,MAAAD,EAAM,SAAAE,CAAQ,IAAI,CAAC,IAAMC,EAAaC,GAAWC,CAAmB,EAAQC,EAAWN,GAAmCG,EAAO,WAAiBI,EAAmBC,GAAQ,KAAK,CAAC,GAAGL,EAAO,WAAAG,CAAU,GAAG,CAAC,KAAK,UAAUA,CAAU,CAAC,CAAC,EAAE,OAAoBG,EAAKJ,EAAoB,SAAS,CAAC,MAAME,EAAa,SAASL,CAAQ,CAAC,CAAE,EAAQQ,GAASC,EAAaC,CAAQ,EAAQC,GAAwB,CAAC,YAAY,YAAY,QAAQ,YAAY,IAAI,WAAW,EAAQC,GAAS,CAAC,CAAC,OAAAC,EAAO,GAAAC,EAAG,MAAAC,EAAM,KAAAC,EAAK,SAAAC,EAAS,kBAAAC,EAAkB,MAAAC,EAAM,MAAAC,EAAM,GAAGC,CAAK,IAAI,CAAC,IAAIC,EAAKC,EAAMC,EAAMC,EAAuCC,EAAM,MAAM,CAAC,GAAGL,EAAM,WAAWC,EAAKH,GAAmCE,EAAM,aAAa,MAAMC,IAAO,OAAOA,EAAK,eAAe,WAAWC,EAAMN,GAA4CI,EAAM,aAAa,MAAME,IAAQ,OAAOA,EAAM,eAAe,WAAWC,EAAMN,GAAuEG,EAAM,aAAa,MAAMG,IAAQ,OAAOA,EAAM,GAAK,SAASE,GAAOD,EAAuCd,GAAwBU,EAAM,OAAO,KAAK,MAAMI,IAAyC,OAAOA,EAAuCJ,EAAM,WAAW,MAAMK,IAAQ,OAAOA,EAAM,YAAY,UAAUX,GAAmCM,EAAM,UAAU,UAAUL,GAAgCK,EAAM,SAAS,CAAE,EAAQM,GAAuB,CAACN,EAAM5B,IAAe4B,EAAM,iBAAwB5B,EAAS,KAAK,GAAG,EAAE4B,EAAM,iBAAwB5B,EAAS,KAAK,GAAG,EAAUmC,GAA6BC,GAAW,SAASR,EAAMS,EAAI,CAAC,GAAK,CAAC,aAAAC,EAAa,UAAAC,CAAS,EAAEC,GAAc,EAAO,CAAC,MAAAC,EAAM,UAAAC,EAAU,SAAAC,EAAS,QAAAzC,EAAQ,UAAA0C,EAAU,UAAAC,EAAU,UAAAC,EAAU,UAAAC,EAAU,UAAAC,EAAU,GAAGC,CAAS,EAAE9B,GAASS,CAAK,EAAO,CAAC,YAAAsB,EAAY,WAAAC,EAAW,oBAAAC,EAAoB,gBAAAC,EAAgB,eAAAC,EAAe,UAAAC,EAAU,gBAAAC,EAAgB,WAAAC,EAAW,SAAAzD,CAAQ,EAAE0D,GAAgB,CAAC,WAAA/D,GAAW,eAAe,YAAY,gBAAAD,GAAgB,QAAAQ,EAAQ,kBAAAL,EAAiB,CAAC,EAAQ8D,EAAiBzB,GAAuBN,EAAM5B,CAAQ,EAAQ4D,EAAWC,GAAO,IAAI,EAAQC,EAAY,IAAQZ,IAAc,YAA6Ca,EAAsBC,GAAM,EAAQC,EAAsB,CAAavB,GAAuBA,EAAS,EAAQwB,EAAkBC,GAAqB,EAAE,OAAoBrD,EAAKsD,GAAY,CAAC,GAAGzB,GAA4CoB,EAAgB,SAAsBjD,EAAKC,GAAS,CAAC,QAAQf,EAAS,QAAQ,GAAM,SAAsBc,EAAKR,GAAW,CAAC,MAAMH,GAAY,SAAsBW,EAAKuD,EAAK,CAAC,KAAKtB,EAAU,aAAa,GAAM,aAAa,GAAK,SAAsBuB,EAAMtD,EAAO,EAAE,CAAC,GAAGiC,EAAU,GAAGI,EAAgB,UAAU,GAAGkB,GAAG3E,GAAkB,GAAGqE,EAAsB,iBAAiBvB,EAAUS,CAAU,CAAC,kBAAkB,cAAc,GAAK,mBAAmB,UAAU,iBAAiBQ,EAAiB,SAAS,YAAY,IAAItB,GAA6BuB,EAAK,MAAM,CAAC,wBAAwB,QAAQ,iBAAiB,8EAA8E,sBAAsB,QAAQ,uBAAuB,QAAQ,iBAAiB,QAAQ,qBAAqB,QAAQ,gBAAgB,yBAAyB,uBAAuB,GAAG,wBAAwB,GAAG,oBAAoB,GAAG,qBAAqB,GAAG,GAAGnB,CAAK,EAAE,SAAS,CAAC,kBAAkB,CAAC,iBAAiB,6EAA6E,EAAE,kBAAkB,CAAC,wBAAwB,MAAM,sBAAsB,MAAM,uBAAuB,MAAM,qBAAqB,MAAM,uBAAuB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,EAAE,UAAU,CAAC,wBAAwB,MAAM,sBAAsB,MAAM,uBAAuB,MAAM,qBAAqB,MAAM,uBAAuB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,EAAE,UAAU,CAAC,wBAAwB,MAAM,sBAAsB,MAAM,uBAAuB,MAAM,qBAAqB,MAAM,uBAAuB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,CAAC,EAAE,GAAG3C,GAAqB,CAAC,kBAAkB,CAAC,mBAAmB,MAAS,EAAE,kBAAkB,CAAC,mBAAmB,MAAS,EAAE,UAAU,CAAC,mBAAmB,WAAW,EAAE,UAAU,CAAC,mBAAmB,KAAK,CAAC,EAAEoD,EAAYI,CAAc,EAAE,SAAS,CAAcxC,EAAKE,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,aAAa,iBAAiB2C,EAAiB,SAAS,YAAY,MAAM,CAAC,wBAAwB,MAAM,iBAAiB,mBAAmB,sBAAsB,MAAM,uBAAuB,MAAM,iBAAiB,QAAQ,qBAAqB,MAAM,WAAW,4EAA4E,uBAAuB,GAAG,wBAAwB,GAAG,oBAAoB,GAAG,qBAAqB,GAAG,QAAQ,GAAG,EAAE,SAAS,CAAC,kBAAkB,CAAC,wBAAwB,MAAM,iBAAiB,8EAA8E,sBAAsB,MAAM,uBAAuB,MAAM,iBAAiB,QAAQ,qBAAqB,MAAM,QAAQ,CAAC,EAAE,kBAAkB,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,wBAAwB,MAAM,iBAAiB,8EAA8E,sBAAsB,MAAM,uBAAuB,MAAM,iBAAiB,QAAQ,qBAAqB,MAAM,QAAQ,CAAC,EAAE,UAAU,CAAC,wBAAwB,MAAM,iBAAiB,8EAA8E,sBAAsB,MAAM,uBAAuB,MAAM,iBAAiB,QAAQ,qBAAqB,MAAM,QAAQ,CAAC,CAAC,EAAE,GAAG7D,GAAqB,CAAC,kBAAkB,CAAC,cAAc,EAAI,EAAE,UAAU,CAAC,cAAc,EAAI,EAAE,UAAU,CAAC,cAAc,EAAI,CAAC,EAAEoD,EAAYI,CAAc,CAAC,CAAC,EAAexC,EAAK0D,GAAM,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI,OAAO,MAAmEN,GAAkB,OAAQ,QAAQ,GAAG9D,GAAkB0C,CAAS,CAAC,EAAE,UAAU,gBAAgB,mBAAmB,QAAQ,iBAAiBa,EAAiB,SAAS,YAAY,MAAM,CAAC,wBAAwB,MAAM,iBAAiB,mBAAmB,sBAAsB,MAAM,uBAAuB,MAAM,iBAAiB,QAAQ,qBAAqB,MAAM,uBAAuB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,OAAO,eAAe,aAAa,cAAc,EAAE,SAAS,CAAC,UAAU,CAAC,wBAAwB,QAAQ,iBAAiB,8EAA8E,sBAAsB,QAAQ,uBAAuB,QAAQ,iBAAiB,QAAQ,qBAAqB,QAAQ,uBAAuB,GAAG,wBAAwB,GAAG,oBAAoB,GAAG,qBAAqB,EAAE,EAAE,UAAU,CAAC,wBAAwB,QAAQ,iBAAiB,8EAA8E,sBAAsB,QAAQ,uBAAuB,QAAQ,iBAAiB,QAAQ,qBAAqB,QAAQ,uBAAuB,GAAG,wBAAwB,GAAG,oBAAoB,GAAG,qBAAqB,EAAE,CAAC,EAAE,GAAG7D,GAAqB,CAAC,UAAU,CAAC,cAAc,GAAK,WAAW,CAAC,IAAI,GAAG,IAAI,OAAO,MAAM,QAAqEoE,GAAkB,OAAQ,OAAO,oBAAoB,GAAG9D,GAAkB0C,CAAS,CAAC,CAAC,EAAE,UAAU,CAAC,cAAc,EAAI,CAAC,EAAEI,EAAYI,CAAc,CAAC,CAAC,EAAEQ,EAAY,GAAgBhD,EAAK2D,EAA0B,CAAC,SAAsB3D,EAAKE,EAAO,IAAI,CAAC,UAAU,2BAA2B,iBAAiB2C,EAAiB,SAAS,sBAAsB,MAAM,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAsB7C,EAAKvB,GAAe,CAAC,MAAM,EAAE,WAAW,yBAAyB,WAAW,GAAK,OAAO,cAAc,KAAK,kBAAkB,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,KAAK,OAAO,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,OAAO,MAAM,MAAM,EAAE,GAAG,sBAAsB,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAe+E,EAAMtD,EAAO,IAAI,CAAC,UAAU,iBAAiB,iBAAiB2C,EAAiB,SAAS,YAAY,SAAS,CAAcW,EAAMtD,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,QAAQ,iBAAiB2C,EAAiB,SAAS,YAAY,SAAS,CAAc7C,EAAK4D,GAAS,CAAC,sBAAsB,GAAK,SAAsB5D,EAAWG,EAAS,CAAC,SAAsBH,EAAKE,EAAO,EAAE,CAAC,UAAU,+BAA+B,qBAAqB,YAAY,MAAM,CAAC,sBAAsB,gGAAgG,EAAE,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,UAAU,gBAAgB,mBAAmB,QAAQ,MAAM,CAAC,OAAO,EAAE,iBAAiB2C,EAAiB,SAAS,YAAY,MAAM,CAAC,qBAAqB,wEAAwE,2BAA2B,mBAAmB,gCAAgC,YAAY,WAAW,gCAAgC,EAAE,KAAKf,EAAU,kBAAkB,MAAM,mBAAmB,EAAI,CAAC,EAAe9B,EAAK2D,EAA0B,CAAC,SAAsB3D,EAAKE,EAAO,IAAI,CAAC,UAAU,2BAA2B,iBAAiB2C,EAAiB,SAAS,sBAAsB,MAAM,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAsB7C,EAAKrB,GAAoB,CAAC,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,MAAM,CAAC,OAAO,OAAO,MAAM,MAAM,EAAE,QAAQ,YAAY,MAAM,OAAO,GAAGK,GAAqB,CAAC,kBAAkB,CAAC,QAAQ,WAAW,EAAE,kBAAkB,CAAC,QAAQ,WAAW,CAAC,EAAEoD,EAAYI,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEN,GAAwBlC,EAAK4D,GAAS,CAAC,sBAAsB,GAAK,SAAsB5D,EAAWG,EAAS,CAAC,SAAsBH,EAAKE,EAAO,EAAE,CAAC,UAAU,+BAA+B,qBAAqB,YAAY,MAAM,CAAC,sBAAsB,mDAAmD,EAAE,SAAS,cAAc,CAAC,CAAC,CAAC,EAAE,UAAU,iBAAiB,mBAAmB,WAAW,MAAM,CAAC,OAAO,EAAE,iBAAiB2C,EAAiB,SAAS,YAAY,MAAM,CAAC,qBAAqB,2BAA2B,2BAA2B,mBAAmB,gCAAgC,YAAY,WAAW,gCAAgC,EAAE,KAAKd,EAAU,kBAAkB,MAAM,mBAAmB,EAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,EAAQ8B,GAAI,CAAC,kFAAkF,kFAAkF,4WAA4W,kJAAkJ,+IAA+I,wIAAwI,iRAAiR,gRAAgR,wMAAwM,yGAAyG,iLAAiL,uxBAAuxB,4EAA4E,2GAA2G,mOAAmO,kEAAkE,ibAAib,qIAAqI,4GAA4G,oOAAoO,gFAAgF,ibAAib,oEAAoE,oEAAoE,+EAA+E,qEAAqE,uFAAuF,gHAAgH,GAAeA,GAAI,GAAgBA,GAAI,+bAA+b,EASv4iBC,GAAgBC,GAAQ1C,GAAUwC,GAAI,cAAc,EAASG,GAAQF,GAAgBA,GAAgB,YAAY,qCAAgCA,GAAgB,aAAa,CAAC,OAAO,IAAI,MAAM,GAAG,EAAEG,GAAoBH,GAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,YAAY,WAAW,EAAE,aAAa,CAAC,UAAU,MAAM,WAAW,EAAE,MAAM,UAAU,KAAKI,EAAY,IAAI,EAAE,UAAU,CAAC,aAAa,eAAe,MAAM,QAAQ,KAAKA,EAAY,MAAM,EAAE,UAAU,CAAC,aAAa,eAAe,gBAAgB,GAAM,MAAM,WAAW,KAAKA,EAAY,MAAM,EAAE,UAAU,CAAC,MAAM,QAAQ,KAAKA,EAAY,eAAe,EAAE,UAAU,CAAC,MAAM,OAAO,KAAKA,EAAY,IAAI,EAAE,UAAU,CAAC,aAAa,GAAK,MAAM,qBAAqB,KAAKA,EAAY,OAAO,CAAC,CAAC,EAAEC,GAASL,GAAgB,CAAC,CAAC,cAAc,GAAK,MAAM,CAAC,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,0EAA0E,IAAI,yEAAyE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,wDAAwD,IAAI,yEAAyE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,cAAc,IAAI,wEAAwE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,cAAc,IAAI,wEAAwE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,uGAAuG,IAAI,wEAAwE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,6JAA6J,IAAI,sEAAsE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,oGAAoG,IAAI,wEAAwE,OAAO,KAAK,CAAC,CAAC,EAAE,GAAGvF,GAAoB,GAAGG,GAAyB,GAAG0F,GAAoCC,EAAK,EAAE,GAAGD,GAAqCC,EAAK,CAAC,EAAE,CAAC,6BAA6B,EAAI,CAAC,ECTpuE,IAAMC,GAAgB,CAAC,UAAU,CAAC,MAAM,EAAI,EAAE,UAAU,CAAC,MAAM,EAAI,EAAE,UAAU,CAAC,MAAM,EAAI,CAAC,EAAQC,GAAW,CAAC,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAW,EAAQC,GAAkB,eAAqBC,GAAkB,CAAC,UAAU,kBAAkB,UAAU,mBAAmB,UAAU,kBAAkB,UAAU,mBAAmB,UAAU,kBAAkB,UAAU,mBAAmB,UAAU,kBAAkB,UAAU,kBAAkB,UAAU,kBAAkB,EAAE,SAASC,GAAqBC,KAAaC,EAAS,CAAC,IAAMC,EAAc,CAAC,EAAE,OAA0CD,GAAS,QAAQE,GAASA,GAAS,OAAO,OAAOD,EAAcF,EAAUG,CAAO,CAAC,CAAC,EAASD,CAAc,CAAC,IAAME,GAAY,CAAC,QAAQ,GAAG,MAAM,EAAE,KAAK,EAAE,UAAU,IAAI,KAAK,QAAQ,EAAQC,GAAmB,CAACC,EAAEC,IAAI,oBAAoBA,CAAC,GAASC,GAAW,CAAC,CAAC,MAAAC,EAAM,SAAAC,CAAQ,IAAI,CAAC,IAAMC,EAAaC,GAAWC,CAAmB,EAAQC,EAAWL,GAAmCE,EAAO,WAAiBI,EAAmBC,GAAQ,KAAK,CAAC,GAAGL,EAAO,WAAAG,CAAU,GAAG,CAAC,KAAK,UAAUA,CAAU,CAAC,CAAC,EAAE,OAAoBG,EAAKJ,EAAoB,SAAS,CAAC,MAAME,EAAa,SAASL,CAAQ,CAAC,CAAE,EAAQQ,GAASC,EAAaC,CAAQ,EAAQC,GAAwB,CAAC,cAAc,YAAY,kBAAkB,YAAY,sBAAiB,YAAY,qBAAqB,YAAY,cAAc,YAAY,kBAAkB,YAAY,IAAI,YAAY,IAAI,YAAY,eAAe,WAAW,EAAQC,GAAS,CAAC,CAAC,OAAAC,EAAO,GAAAC,EAAG,MAAAC,EAAM,GAAGC,CAAK,IAAI,CAAC,IAAIC,EAAuCC,EAAK,MAAM,CAAC,GAAGF,EAAM,SAASE,GAAMD,EAAuCN,GAAwBK,EAAM,OAAO,KAAK,MAAMC,IAAyC,OAAOA,EAAuCD,EAAM,WAAW,MAAME,IAAO,OAAOA,EAAK,WAAW,CAAE,EAAQC,GAAuB,CAACH,EAAMzB,IAAeyB,EAAM,iBAAwBzB,EAAS,KAAK,GAAG,EAAEyB,EAAM,iBAAwBzB,EAAS,KAAK,GAAG,EAAU6B,GAA6BC,GAAW,SAASL,EAAMM,EAAI,CAAC,GAAK,CAAC,aAAAC,EAAa,UAAAC,CAAS,EAAEC,GAAc,EAAO,CAAC,MAAAC,EAAM,UAAAC,EAAU,SAAAC,EAAS,QAAAnC,EAAQ,GAAGoC,CAAS,EAAEjB,GAASI,CAAK,EAAO,CAAC,YAAAc,EAAY,WAAAC,EAAW,oBAAAC,EAAoB,gBAAAC,EAAgB,eAAAC,EAAe,UAAAC,EAAU,gBAAAC,EAAgB,WAAAC,EAAW,SAAA9C,CAAQ,EAAE+C,GAAgB,CAAC,WAAApD,GAAW,eAAe,YAAY,gBAAAD,GAAgB,QAAAQ,EAAQ,kBAAAL,EAAiB,CAAC,EAAQmD,EAAiBpB,GAAuBH,EAAMzB,CAAQ,EAAQiD,EAAWC,GAAO,IAAI,EAAQC,EAAY,IAAQ,GAAC,kBAAkB,kBAAkB,iBAAiB,EAAE,SAASR,CAAc,GAAkB,CAAC,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAW,EAAE,SAASJ,CAAW,GAAmCa,EAAa,IAAQ,GAAC,YAAY,WAAW,EAAE,SAASb,CAAW,EAAmCc,EAAa,IAAQd,IAAc,YAA6Ce,EAAa,IAAQX,IAAiB,mBAAiCJ,IAAc,YAA6CgB,EAAa,IAAQZ,IAAiB,kBAAmDa,EAAa,IAAQb,IAAiB,mBAAiCJ,IAAc,YAA6CkB,EAAa,IAAQd,IAAiB,mBAAiCJ,IAAc,YAA6CmB,EAAa,IAAQ,GAAC,YAAY,WAAW,EAAE,SAASnB,CAAW,EAAmCoB,EAAsBC,GAAM,EAAQC,GAAsB,CAAC,EAAQC,GAAkBC,GAAqB,EAAE,OAAoB/C,EAAKgD,GAAY,CAAC,GAAG3B,GAA4CsB,EAAgB,SAAsB3C,EAAKC,GAAS,CAAC,QAAQjB,EAAS,QAAQ,GAAM,SAAsBgB,EAAKT,GAAW,CAAC,MAAMJ,GAAY,SAAsB8D,EAAM/C,EAAO,IAAI,CAAC,GAAGoB,EAAU,GAAGI,EAAgB,UAAUwB,GAAGtE,GAAkB,GAAGiE,GAAsB,iBAAiBzB,EAAUI,CAAU,EAAE,mBAAmB,MAAM,iBAAiBQ,EAAiB,SAAS,YAAY,IAAIjB,GAA6BkB,EAAK,MAAM,CAAC,GAAGd,CAAK,EAAE,GAAGrC,GAAqB,CAAC,kBAAkB,CAAC,mBAAmB,MAAS,EAAE,kBAAkB,CAAC,mBAAmB,MAAS,EAAE,kBAAkB,CAAC,mBAAmB,MAAS,EAAE,UAAU,CAAC,mBAAmB,qBAAgB,EAAE,UAAU,CAAC,mBAAmB,iBAAiB,EAAE,UAAU,CAAC,mBAAmB,aAAa,EAAE,UAAU,CAAC,mBAAmB,aAAa,EAAE,UAAU,CAAC,mBAAmB,gBAAgB,EAAE,UAAU,CAAC,mBAAmB,KAAK,EAAE,UAAU,CAAC,mBAAmB,iBAAiB,EAAE,UAAU,CAAC,mBAAmB,oBAAoB,CAAC,EAAEyC,EAAYI,CAAc,EAAE,SAAS,CAACQ,EAAY,GAAgBc,EAAM/C,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,MAAM,iBAAiB8B,EAAiB,SAAS,YAAY,SAAS,CAAchC,EAAKE,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,gBAAgB,iBAAiB8B,EAAiB,SAAS,YAAY,MAAM,CAAC,gBAAgB,qBAAqB,uBAAuB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,QAAQ,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC,gBAAgB,wEAAwE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAehC,EAAKE,EAAO,IAAI,CAAC,UAAU,eAAe,mBAAmB,gBAAgB,iBAAiB8B,EAAiB,SAAS,YAAY,MAAM,CAAC,gBAAgB,qBAAqB,uBAAuB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,EAAE,SAAS,CAAC,UAAU,CAAC,gBAAgB,wEAAwE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAehC,EAAKE,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,gBAAgB,iBAAiB8B,EAAiB,SAAS,YAAY,MAAM,CAAC,gBAAgB,qBAAqB,uBAAuB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,EAAE,SAAS,CAAC,UAAU,CAAC,gBAAgB,wEAAwE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAehC,EAAKE,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,gBAAgB,iBAAiB8B,EAAiB,SAAS,YAAY,MAAM,CAAC,gBAAgB,qBAAqB,uBAAuB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,QAAQ,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC,gBAAgB,wEAAwE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEI,EAAa,GAAgBa,EAAM/C,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,cAAc,iBAAiB8B,EAAiB,SAAS,YAAY,SAAS,CAACK,EAAa,GAAgBrC,EAAKE,EAAO,IAAI,CAAC,UAAU,iBAAiB,iBAAiB8B,EAAiB,SAAS,YAAY,MAAM,CAAC,gBAAgB,uEAAuE,uBAAuB,GAAG,wBAAwB,GAAG,oBAAoB,GAAG,qBAAqB,GAAG,QAAQ,EAAE,EAAE,kBAAkB5C,EAAkB,CAAC,EAAeY,EAAKE,EAAO,IAAI,CAAC,UAAU,eAAe,iBAAiB8B,EAAiB,SAAS,YAAY,MAAM,CAAC,gBAAgB,qBAAqB,uBAAuB,GAAG,wBAAwB,GAAG,oBAAoB,GAAG,qBAAqB,GAAG,QAAQ,EAAE,EAAE,SAAS,CAAC,UAAU,CAAC,gBAAgB,sEAAsE,CAAC,CAAC,CAAC,EAAeiB,EAAM/C,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,QAAQ,iBAAiB8B,EAAiB,SAAS,YAAY,SAAS,CAAchC,EAAKE,EAAO,IAAI,CAAC,UAAU,gBAAgB,iBAAiB8B,EAAiB,SAAS,YAAY,MAAM,CAAC,gBAAgB,qEAAqE,uBAAuB,GAAG,wBAAwB,GAAG,oBAAoB,GAAG,qBAAqB,EAAE,CAAC,CAAC,EAAehC,EAAKE,EAAO,IAAI,CAAC,UAAU,iBAAiB,iBAAiB8B,EAAiB,SAAS,YAAY,MAAM,CAAC,gBAAgB,qBAAqB,uBAAuB,GAAG,wBAAwB,GAAG,oBAAoB,GAAG,qBAAqB,EAAE,EAAE,SAAS,CAAC,UAAU,CAAC,gBAAgB,sEAAsE,CAAC,CAAC,CAAC,EAAehC,EAAKmD,GAAI,CAAC,UAAU,gBAAgB,mBAAmB,OAAO,KAAK,gBAAgB,gBAAgB,GAAG,eAAe,GAAG,iBAAiBnB,EAAiB,SAAS,qBAAqB,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI;AAAA;AAAA;AAAA,EAAonB,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,mBAAmB,EAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEM,EAAa,GAAgBW,EAAM/C,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,kBAAkB,iBAAiB8B,EAAiB,SAAS,YAAY,SAAS,CAACM,EAAa,GAAgBW,EAAM/C,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,KAAK,iBAAiB8B,EAAiB,SAAS,YAAY,MAAM,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAchC,EAAKE,EAAO,IAAI,CAAC,UAAU,iBAAiB,iBAAiB8B,EAAiB,SAAS,YAAY,MAAM,CAAC,gBAAgB,qEAAqE,uBAAuB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAAehC,EAAKE,EAAO,IAAI,CAAC,UAAU,gBAAgB,iBAAiB8B,EAAiB,SAAS,YAAY,MAAM,CAAC,gBAAgB,qBAAqB,uBAAuB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,EAAE,SAAS,CAAC,kBAAkB,CAAC,gBAAgB,mBAAmB,CAAC,CAAC,CAAC,EAAEO,EAAa,GAAgBvC,EAAKmD,GAAI,CAAC,UAAU,iBAAiB,mBAAmB,OAAO,KAAK,gBAAgB,gBAAgB,GAAG,eAAe,GAAG,iBAAiBnB,EAAiB,SAAS,YAAY,IAAI;AAAA;AAAA;AAAA,EAAonB,mBAAmB,EAAI,CAAC,CAAC,CAAC,CAAC,EAAEM,EAAa,GAAgBW,EAAM/C,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,MAAM,iBAAiB8B,EAAiB,SAAS,YAAY,SAAS,CAAchC,EAAKE,EAAO,IAAI,CAAC,UAAU,iBAAiB,iBAAiB8B,EAAiB,SAAS,YAAY,MAAM,CAAC,gBAAgB,qEAAqE,uBAAuB,GAAG,wBAAwB,GAAG,oBAAoB,GAAG,qBAAqB,EAAE,CAAC,CAAC,EAAehC,EAAKE,EAAO,IAAI,CAAC,UAAU,gBAAgB,iBAAiB8B,EAAiB,SAAS,YAAY,MAAM,CAAC,gBAAgB,qBAAqB,uBAAuB,GAAG,wBAAwB,GAAG,oBAAoB,GAAG,qBAAqB,GAAG,QAAQ,CAAC,EAAE,SAAS,CAAC,kBAAkB,CAAC,gBAAgB,oBAAoB,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEQ,EAAa,GAAgBS,EAAM/C,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,iBAAiB,iBAAiB8B,EAAiB,SAAS,YAAY,SAAS,CAACQ,EAAa,GAAgBxC,EAAKE,EAAO,IAAI,CAAC,UAAU,gBAAgB,iBAAiB8B,EAAiB,SAAS,YAAY,MAAM,CAAC,gBAAgB,qBAAqB,uBAAuB,GAAG,wBAAwB,GAAG,oBAAoB,GAAG,qBAAqB,GAAG,QAAQ,CAAC,EAAE,SAAS,CAAC,kBAAkB,CAAC,gBAAgB,mBAAmB,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAEQ,EAAa,GAAgBxC,EAAKE,EAAO,IAAI,CAAC,UAAU,iBAAiB,iBAAiB8B,EAAiB,SAAS,YAAY,MAAM,CAAC,gBAAgB,qBAAqB,uBAAuB,GAAG,wBAAwB,GAAG,oBAAoB,GAAG,qBAAqB,GAAG,QAAQ,CAAC,EAAE,SAAS,CAAC,kBAAkB,CAAC,gBAAgB,mBAAmB,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAEQ,EAAa,GAAgBxC,EAAKE,EAAO,IAAI,CAAC,UAAU,gBAAgB,iBAAiB8B,EAAiB,SAAS,YAAY,MAAM,CAAC,gBAAgB,qBAAqB,uBAAuB,GAAG,wBAAwB,GAAG,oBAAoB,GAAG,qBAAqB,GAAG,QAAQ,EAAE,EAAE,SAAS,CAAC,kBAAkB,CAAC,gBAAgB,mBAAmB,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAEQ,EAAa,GAAgBxC,EAAKE,EAAO,IAAI,CAAC,UAAU,iBAAiB,iBAAiB8B,EAAiB,SAAS,YAAY,MAAM,CAAC,gBAAgB,qBAAqB,uBAAuB,GAAG,wBAAwB,GAAG,oBAAoB,GAAG,qBAAqB,GAAG,QAAQ,EAAE,EAAE,SAAS,CAAC,kBAAkB,CAAC,gBAAgB,mBAAmB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAES,EAAa,GAAgBQ,EAAM/C,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,SAAS,iBAAiB8B,EAAiB,SAAS,YAAY,SAAS,CAACS,EAAa,GAAgBQ,EAAM/C,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,QAAQ,iBAAiB8B,EAAiB,SAAS,YAAY,SAAS,CAAchC,EAAKE,EAAO,IAAI,CAAC,UAAU,gBAAgB,iBAAiB8B,EAAiB,SAAS,YAAY,MAAM,CAAC,gBAAgB,qEAAqE,uBAAuB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAAehC,EAAKE,EAAO,IAAI,CAAC,UAAU,gBAAgB,iBAAiB8B,EAAiB,SAAS,YAAY,MAAM,CAAC,gBAAgB,qBAAqB,uBAAuB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,EAAE,SAAS,CAAC,kBAAkB,CAAC,gBAAgB,mBAAmB,QAAQ,CAAC,CAAC,EAAE,SAAsBhC,EAAKE,EAAO,IAAI,CAAC,UAAU,gBAAgB,iBAAiB8B,EAAiB,SAAS,YAAY,MAAM,CAAC,gBAAgB,qEAAqE,uBAAuB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAES,EAAa,GAAgBQ,EAAM/C,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,SAAS,iBAAiB8B,EAAiB,SAAS,YAAY,SAAS,CAAchC,EAAKE,EAAO,IAAI,CAAC,UAAU,iBAAiB,iBAAiB8B,EAAiB,SAAS,YAAY,MAAM,CAAC,gBAAgB,qEAAqE,oBAAoB,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAAehC,EAAKE,EAAO,IAAI,CAAC,UAAU,iBAAiB,iBAAiB8B,EAAiB,SAAS,YAAY,MAAM,CAAC,gBAAgB,qBAAqB,oBAAoB,EAAE,qBAAqB,EAAE,QAAQ,CAAC,EAAE,SAAS,CAAC,kBAAkB,CAAC,gBAAgB,mBAAmB,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAehC,EAAKE,EAAO,IAAI,CAAC,UAAU,iBAAiB,iBAAiB8B,EAAiB,SAAS,YAAY,MAAM,CAAC,gBAAgB,qEAAqE,uBAAuB,GAAG,wBAAwB,GAAG,oBAAoB,GAAG,qBAAqB,EAAE,CAAC,CAAC,EAAehC,EAAKE,EAAO,IAAI,CAAC,UAAU,iBAAiB,iBAAiB8B,EAAiB,SAAS,YAAY,MAAM,CAAC,gBAAgB,qBAAqB,uBAAuB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,QAAQ,CAAC,EAAE,SAAS,CAAC,kBAAkB,CAAC,gBAAgB,mBAAmB,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEU,EAAa,GAAgBO,EAAM/C,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,MAAM,iBAAiB8B,EAAiB,SAAS,YAAY,SAAS,CAAchC,EAAKE,EAAO,IAAI,CAAC,UAAU,eAAe,mBAAmB,QAAQ,iBAAiB8B,EAAiB,SAAS,YAAY,MAAM,CAAC,gBAAgB,wEAAwE,uBAAuB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,EAAE,SAAS,CAAC,UAAU,CAAC,gBAAgB,qEAAqE,CAAC,CAAC,CAAC,EAAeiB,EAAM/C,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,QAAQ,iBAAiB8B,EAAiB,SAAS,YAAY,SAAS,CAAchC,EAAKE,EAAO,IAAI,CAAC,UAAU,gBAAgB,iBAAiB8B,EAAiB,SAAS,YAAY,MAAM,CAAC,gBAAgB,qEAAqE,uBAAuB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAAehC,EAAKE,EAAO,IAAI,CAAC,UAAU,gBAAgB,iBAAiB8B,EAAiB,SAAS,YAAY,MAAM,CAAC,gBAAgB,qBAAqB,uBAAuB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC,gBAAgB,sEAAsE,CAAC,CAAC,CAAC,EAAehC,EAAKE,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,gBAAgB,iBAAiB8B,EAAiB,SAAS,YAAY,MAAM,CAAC,gBAAgB,iBAAiB,CAAC,CAAC,EAAehC,EAAKmD,GAAI,CAAC,UAAU,iBAAiB,mBAAmB,SAAS,KAAK,gBAAgB,gBAAgB,GAAG,eAAe,GAAG,iBAAiBnB,EAAiB,SAAS,YAAY,IAAI;AAAA;AAAA;AAAA,EAA+M,mBAAmB,EAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,EAAQoB,GAAI,CAAC,kFAAkF,gFAAgF,qGAAqG,iMAAiM,wHAAwH,mHAAmH,qHAAqH,mHAAmH,mKAAmK,6PAA6P,mOAAmO,iJAAiJ,iQAAiQ,kQAAkQ,mLAAmL,uIAAuI,0IAA0I,wIAAwI,sIAAsI,oLAAoL,sIAAsI,kMAAkM,iQAAiQ,iMAAiM,sMAAsM,kMAAkM,mMAAmM,uIAAuI,uIAAuI,sKAAsK,sMAAsM,wKAAwK,uIAAuI,uKAAuK,uKAAuK,0IAA0I,yKAAyK,uIAAuI,sIAAsI,yIAAyI,wIAAwI,sMAAsM,uHAAuH,uHAAuH,+EAA+E,6EAA6E,8EAA8E,8EAA8E,kKAAkK,iEAAiE,4FAA4F,uHAAuH,oGAAoG,qGAAqG,mJAAmJ,2HAA2H,0KAA0K,8GAA8G,+GAA+G,uIAAuI,4RAA4R,8FAA8F,uHAAuH,wJAAwJ,8HAA8H,uEAAuE,wJAAwJ,wJAAwJ,+GAA+G,yHAAyH,EAQpp4BC,GAAgBC,GAAQzC,GAAUuC,GAAI,cAAc,EAASG,GAAQF,GAAgBA,GAAgB,YAAY,yBAAoBA,GAAgB,aAAa,CAAC,OAAO,GAAG,MAAM,EAAE,EAAEG,GAAoBH,GAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAW,EAAE,aAAa,CAAC,MAAM,sBAAiB,kBAAkB,iBAAiB,kBAAkB,cAAc,qBAAqB,MAAM,aAAa,EAAE,MAAM,UAAU,KAAKI,EAAY,IAAI,CAAC,CAAC,EAAEC,GAASL,GAAgB,CAAC,CAAC,cAAc,GAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,6BAA6B,EAAI,CAAC,ECR7B,IAAMM,GAAiBC,GAASC,EAAW,EAAQC,GAAoBC,GAAoBF,EAAW,EAAQG,GAAgB,CAAC,UAAU,CAAC,MAAM,EAAI,CAAC,EAAQC,GAAW,CAAC,YAAY,WAAW,EAAQC,GAAkB,eAAqBC,GAAkB,CAAC,UAAU,kBAAkB,UAAU,kBAAkB,EAAE,SAASC,GAAqBC,KAAaC,EAAS,CAAC,IAAMC,EAAc,CAAC,EAAE,OAA0CD,GAAS,QAAQE,GAASA,GAAS,OAAO,OAAOD,EAAcF,EAAUG,CAAO,CAAC,CAAC,EAASD,CAAc,CAAC,IAAME,GAAY,CAAC,QAAQ,GAAG,MAAM,EAAE,KAAK,EAAE,UAAU,IAAI,KAAK,QAAQ,EAAQC,GAAW,CAAC,CAAC,MAAAC,EAAM,SAAAC,CAAQ,IAAI,CAAC,IAAMC,EAAaC,GAAWC,CAAmB,EAAQC,EAAWL,GAAmCE,EAAO,WAAiBI,EAAmBC,GAAQ,KAAK,CAAC,GAAGL,EAAO,WAAAG,CAAU,GAAG,CAAC,KAAK,UAAUA,CAAU,CAAC,CAAC,EAAE,OAAoBG,EAAKJ,EAAoB,SAAS,CAAC,MAAME,EAAa,SAASL,CAAQ,CAAC,CAAE,EAAQQ,GAASC,EAAaC,CAAQ,EAAQC,GAAqB,CAAC,cAAc,YAAY,kBAAkB,YAAY,sBAAiB,YAAY,qBAAqB,YAAY,cAAc,YAAY,kBAAkB,YAAY,IAAI,YAAY,IAAI,YAAY,eAAe,WAAW,EAAQC,GAAwB,CAAC,QAAQ,YAAY,MAAM,WAAW,EAAQC,GAAS,CAAC,CAAC,OAAAC,EAAO,KAAAC,EAAK,UAAAC,EAAU,GAAAC,EAAG,KAAAC,EAAK,MAAAC,EAAM,MAAAC,EAAM,GAAGC,CAAK,IAAI,CAAC,IAAIC,EAAgCC,EAAKC,EAAMC,EAA2BC,EAAMC,EAAMC,EAAuCC,EAAMC,EAAM,MAAM,CAAC,GAAGT,EAAM,WAAWG,GAAOD,GAAMD,EAAgCX,GAAqBK,CAAS,KAAK,MAAMM,IAAkC,OAAOA,EAAgCN,KAAa,MAAMO,IAAO,OAAOA,EAAKF,EAAM,aAAa,MAAMG,IAAQ,OAAOA,EAAM,YAAY,WAAWG,GAAOD,GAAOD,EAA2Bd,GAAqBI,CAAI,KAAK,MAAMU,IAA6B,OAAOA,EAA2BV,KAAQ,MAAMW,IAAQ,OAAOA,EAAML,EAAM,aAAa,MAAMM,IAAQ,OAAOA,EAAM,YAAY,UAAUT,GAAgCG,EAAM,UAAU,SAASQ,GAAOD,EAAuChB,GAAwBS,EAAM,OAAO,KAAK,MAAMO,IAAyC,OAAOA,EAAuCP,EAAM,WAAW,MAAMQ,IAAQ,OAAOA,EAAM,YAAY,WAAWC,EAAMX,GAAmCE,EAAM,aAAa,MAAMS,IAAQ,OAAOA,EAAM,aAAa,CAAE,EAAQC,GAAuB,CAACV,EAAM3B,IAAe2B,EAAM,iBAAwB3B,EAAS,KAAK,GAAG,EAAE2B,EAAM,iBAAwB3B,EAAS,KAAK,GAAG,EAAUsC,GAA6BC,GAAW,SAASZ,EAAMa,EAAI,CAAC,GAAK,CAAC,aAAAC,EAAa,UAAAC,CAAS,EAAEC,GAAc,EAAO,CAAC,MAAAC,EAAM,UAAAC,EAAU,SAAAC,EAAS,QAAA5C,EAAQ,UAAA6C,EAAU,UAAAC,EAAU,UAAAC,EAAU,UAAAC,EAAU,GAAGC,CAAS,EAAEhC,GAASQ,CAAK,EAAO,CAAC,YAAAyB,EAAY,WAAAC,EAAW,oBAAAC,EAAoB,gBAAAC,EAAgB,eAAAC,EAAe,UAAAC,EAAU,gBAAAC,EAAgB,WAAAC,EAAW,SAAA3D,CAAQ,EAAE4D,GAAgB,CAAC,WAAAjE,GAAW,eAAe,YAAY,gBAAAD,GAAgB,QAAAQ,EAAQ,kBAAAL,EAAiB,CAAC,EAAQgE,EAAiBxB,GAAuBV,EAAM3B,CAAQ,EAAQ8D,EAAWC,GAAO,IAAI,EAAQC,EAAsBC,GAAM,EAAQC,EAAsB,CAAarB,EAAS,EAAQsB,EAAkBC,GAAqB,EAAE,OAAoBvD,EAAKwD,GAAY,CAAC,GAAGvB,GAA4CkB,EAAgB,SAAsBnD,EAAKC,GAAS,CAAC,QAAQd,EAAS,QAAQ,GAAM,SAAsBa,EAAKT,GAAW,CAAC,MAAMD,GAAY,SAAsBU,EAAKyD,EAAK,CAAC,KAAKvB,EAAU,aAAa,GAAM,aAAa,GAAK,SAAsBlC,EAAKE,EAAO,EAAE,CAAC,GAAGoC,EAAU,GAAGI,EAAgB,UAAU,GAAGgB,GAAG3E,GAAkB,GAAGsE,EAAsB,iBAAiBrB,EAAUQ,CAAU,CAAC,iBAAiB,cAAc,GAAK,mBAAmB,UAAU,iBAAiBQ,EAAiB,SAAS,YAAY,IAAIrB,GAA6BsB,EAAK,MAAM,CAAC,wBAAwB,QAAQ,iBAAiB,8EAA8E,sBAAsB,QAAQ,uBAAuB,QAAQ,iBAAiB,QAAQ,qBAAqB,QAAQ,gBAAgB,yBAAyB,uBAAuB,GAAG,wBAAwB,GAAG,oBAAoB,GAAG,qBAAqB,GAAG,GAAGlB,CAAK,EAAE,SAAS,CAAC,kBAAkB,CAAC,iBAAiB,2BAA2B,gBAAgB,2BAA2B,CAAC,EAAE,GAAG9C,GAAqB,CAAC,kBAAkB,CAAC,mBAAmB,MAAS,EAAE,UAAU,CAAC,mBAAmB,OAAO,CAAC,EAAEsD,EAAYI,CAAc,EAAE,SAAsBgB,EAAMzD,EAAO,IAAI,CAAC,UAAU,iBAAiB,iBAAiB8C,EAAiB,SAAS,YAAY,SAAS,CAAchD,EAAKE,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,QAAQ,iBAAiB8C,EAAiB,SAAS,YAAY,SAAsBhD,EAAK4D,EAA0B,CAAC,MAAM,OAAO,SAAsB5D,EAAKE,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiB8C,EAAiB,SAAS,sBAAsB,SAAsBhD,EAAKtB,GAAY,CAAC,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,MAAM,CAAC,OAAO,OAAO,MAAM,MAAM,EAAE,QAAQ0D,EAAU,MAAM,OAAO,GAAGnD,GAAqB,CAAC,kBAAkB,CAAC,QAAQoD,CAAS,CAAC,EAAEE,EAAYI,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAe3C,EAAKE,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,OAAO,iBAAiB8C,EAAiB,SAAS,YAAY,SAAsBhD,EAAK6D,GAAS,CAAC,sBAAsB,GAAK,SAAsB7D,EAAWG,EAAS,CAAC,SAAsBH,EAAKE,EAAO,EAAE,CAAC,UAAU,+BAA+B,qBAAqB,YAAY,MAAM,CAAC,sBAAsB,gGAAgG,EAAE,SAAS,aAAa,CAAC,CAAC,CAAC,EAAE,UAAU,iBAAiB,mBAAmB,QAAQ,MAAM,CAAC,OAAO,EAAE,iBAAiB8C,EAAiB,SAAS,YAAY,MAAM,CAAC,qBAAqB,wEAAwE,2BAA2B,mBAAmB,gCAAgC,WAAW,EAAE,KAAKb,EAAU,kBAAkB,MAAM,mBAAmB,EAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,EAAQ2B,GAAI,CAAC,kFAAkF,gFAAgF,gTAAgT,gRAAgR,yRAAyR,wGAAwG,kRAAkR,2LAA2L,w2BAAw2B,qGAAqG,0LAA0L,+EAA+E,mbAAmb,GAAeA,GAAI,+bAA+b,EASp1UC,GAAgBC,GAAQvC,GAAUqC,GAAI,cAAc,EAASG,GAAQF,GAAgBA,GAAgB,YAAY,yBAAoBA,GAAgB,aAAa,CAAC,OAAO,IAAI,MAAM,GAAG,EAAEG,GAAoBH,GAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,WAAW,EAAE,aAAa,CAAC,UAAU,OAAO,EAAE,MAAM,UAAU,KAAKI,EAAY,IAAI,EAAE,UAAU,CAAC,MAAM,OAAO,KAAKA,EAAY,IAAI,EAAE,UAAU,CAAC,aAAa,cAAc,gBAAgB,GAAM,MAAM,QAAQ,KAAKA,EAAY,MAAM,EAAE,UAA2ExF,IAAoB,SAAa,CAAC,GAAGA,GAAoB,QAAW,aAAa,YAAY,YAAY,OAAU,OAAO,OAAU,MAAM,MAAM,EAAE,UAA2EA,IAAoB,SAAa,CAAC,GAAGA,GAAoB,QAAW,aAAa,YAAY,YAAY,OAAU,OAAO,OAAU,MAAM,YAAY,CAAC,CAAC,EAAEyF,GAASL,GAAgB,CAAC,CAAC,cAAc,GAAK,MAAM,CAAC,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,0EAA0E,IAAI,yEAAyE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,wDAAwD,IAAI,yEAAyE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,cAAc,IAAI,wEAAwE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,cAAc,IAAI,wEAAwE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,uGAAuG,IAAI,wEAAwE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,6JAA6J,IAAI,sEAAsE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,oGAAoG,IAAI,wEAAwE,OAAO,KAAK,CAAC,CAAC,EAAE,GAAGvF,GAAiB,GAAG6F,GAAoCC,EAAK,CAAC,EAAE,CAAC,6BAA6B,EAAI,CAAC,ECTr1E,IAAMC,GAAW,CAAC,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAW,EAAQC,GAAkB,eAAqBC,GAAkB,CAAC,UAAU,mBAAmB,UAAU,mBAAmB,UAAU,kBAAkB,UAAU,kBAAkB,UAAU,kBAAkB,UAAU,kBAAkB,UAAU,mBAAmB,UAAU,mBAAmB,UAAU,mBAAmB,UAAU,kBAAkB,UAAU,mBAAmB,UAAU,kBAAkB,UAAU,kBAAkB,UAAU,mBAAmB,UAAU,kBAAkB,UAAU,kBAAkB,EAAE,SAASC,GAAqBC,KAAaC,EAAS,CAAC,IAAMC,EAAc,CAAC,EAAE,OAA0CD,GAAS,QAAQE,GAASA,GAAS,OAAO,OAAOD,EAAcF,EAAUG,CAAO,CAAC,CAAC,EAASD,CAAc,CAAC,IAAME,GAAY,CAAC,QAAQ,GAAG,MAAM,EAAE,KAAK,EAAE,UAAU,IAAI,KAAK,QAAQ,EAAQC,GAAW,CAAC,CAAC,MAAAC,EAAM,SAAAC,CAAQ,IAAI,CAAC,IAAMC,EAAaC,GAAWC,CAAmB,EAAQC,EAAWL,GAAmCE,EAAO,WAAiBI,EAAmBC,GAAQ,KAAK,CAAC,GAAGL,EAAO,WAAAG,CAAU,GAAG,CAAC,KAAK,UAAUA,CAAU,CAAC,CAAC,EAAE,OAAoBG,EAAKJ,EAAoB,SAAS,CAAC,MAAME,EAAa,SAASL,CAAQ,CAAC,CAAE,EAAQQ,GAASC,EAAaC,CAAQ,EAAQC,GAAwB,CAAC,mBAAmB,YAAY,oBAAoB,YAAY,aAAa,YAAY,MAAM,YAAY,OAAO,YAAY,KAAK,YAAY,QAAQ,YAAY,UAAU,YAAY,KAAK,YAAY,KAAK,YAAY,KAAK,YAAY,aAAa,YAAY,SAAS,YAAY,aAAa,YAAY,WAAW,YAAY,KAAK,WAAW,EAAQC,GAAS,CAAC,CAAC,OAAAC,EAAO,GAAAC,EAAG,MAAAC,EAAM,GAAGC,CAAK,IAAI,CAAC,IAAIC,EAAuCC,EAAK,MAAM,CAAC,GAAGF,EAAM,SAASE,GAAMD,EAAuCN,GAAwBK,EAAM,OAAO,KAAK,MAAMC,IAAyC,OAAOA,EAAuCD,EAAM,WAAW,MAAME,IAAO,OAAOA,EAAK,WAAW,CAAE,EAAQC,GAAuB,CAACH,EAAMtB,IAAesB,EAAM,iBAAwBtB,EAAS,KAAK,GAAG,EAAEsB,EAAM,iBAAwBtB,EAAS,KAAK,GAAG,EAAU0B,GAA6BC,GAAW,SAASL,EAAMM,EAAI,CAAC,GAAK,CAAC,aAAAC,EAAa,UAAAC,CAAS,EAAEC,GAAc,EAAO,CAAC,MAAAC,EAAM,UAAAC,EAAU,SAAAC,EAAS,QAAAhC,EAAQ,GAAGiC,CAAS,EAAEjB,GAASI,CAAK,EAAO,CAAC,YAAAc,EAAY,WAAAC,EAAW,oBAAAC,EAAoB,gBAAAC,EAAgB,eAAAC,EAAe,UAAAC,EAAU,gBAAAC,EAAgB,WAAAC,EAAW,SAAA3C,CAAQ,EAAE4C,GAAgB,CAAC,WAAAjD,GAAW,eAAe,YAAY,QAAAO,EAAQ,kBAAAL,EAAiB,CAAC,EAAQgD,EAAiBpB,GAAuBH,EAAMtB,CAAQ,EAAQ8C,EAAWC,GAAO,IAAI,EAAQC,EAAY,IAAQ,EAAC,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAW,EAAE,SAASZ,CAAW,EAAmCa,EAAa,IAAQb,IAAc,YAA6Cc,EAAa,IAAQd,IAAc,YAA6Ce,EAAa,IAAQf,IAAc,YAA6CgB,EAAa,IAAQhB,IAAc,YAA6CiB,EAAa,IAAQjB,IAAc,YAA6CkB,EAAa,IAAQlB,IAAc,YAA6CmB,EAAa,IAAQnB,IAAc,YAA6CoB,EAAa,IAAQpB,IAAc,YAA6CqB,GAAa,IAAQrB,IAAc,YAA6CsB,GAAc,IAAQtB,IAAc,YAA6CuB,GAAc,IAAQvB,IAAc,YAA6CwB,EAAc,IAAQ,GAAC,YAAY,WAAW,EAAE,SAASxB,CAAW,EAAmCyB,GAAc,IAAQzB,IAAc,YAA6C0B,GAAc,IAAQ1B,IAAc,YAA6C2B,EAAsBC,GAAM,EAAQC,GAAsB,CAAC,EAAQC,GAAkBC,GAAqB,EAAE,OAAoBtD,EAAKuD,GAAY,CAAC,GAAGlC,GAA4C6B,EAAgB,SAAsBlD,EAAKC,GAAS,CAAC,QAAQd,EAAS,QAAQ,GAAM,SAAsBa,EAAKT,GAAW,CAAC,MAAMD,GAAY,SAAsBkE,EAAMtD,EAAO,IAAI,CAAC,GAAGoB,EAAU,GAAGI,EAAgB,UAAU+B,GAAG1E,GAAkB,GAAGqE,GAAsB,gBAAgBhC,EAAUI,CAAU,EAAE,mBAAmB,QAAQ,iBAAiBQ,EAAiB,SAAS,YAAY,IAAIjB,GAA6BkB,EAAK,MAAM,CAAC,GAAGd,CAAK,EAAE,GAAGlC,GAAqB,CAAC,UAAU,CAAC,mBAAmB,mBAAmB,EAAE,UAAU,CAAC,mBAAmB,SAAS,EAAE,UAAU,CAAC,mBAAmB,MAAM,EAAE,UAAU,CAAC,mBAAmB,kBAAkB,EAAE,UAAU,CAAC,mBAAmB,YAAY,EAAE,UAAU,CAAC,mBAAmB,MAAM,EAAE,UAAU,CAAC,mBAAmB,QAAQ,EAAE,UAAU,CAAC,mBAAmB,cAAc,EAAE,UAAU,CAAC,mBAAmB,cAAc,EAAE,UAAU,CAAC,mBAAmB,MAAM,EAAE,UAAU,CAAC,mBAAmB,YAAY,EAAE,UAAU,CAAC,mBAAmB,MAAM,EAAE,UAAU,CAAC,mBAAmB,MAAM,EAAE,UAAU,CAAC,mBAAmB,WAAW,EAAE,UAAU,CAAC,mBAAmB,UAAU,CAAC,EAAEsC,EAAYI,CAAc,EAAE,SAAS,CAACQ,EAAY,GAAgBnC,EAAKE,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,QAAQ,iBAAiB8B,EAAiB,SAAS,YAAY,SAAsBhC,EAAK0D,GAAI,CAAC,UAAU,iBAAiB,mBAAmB,QAAQ,KAAK,gBAAgB,gBAAgB,GAAG,eAAe,GAAG,iBAAiB1B,EAAiB,SAAS,YAAY,IAAI;AAAA;AAAA;AAAA,EAA2xB,mBAAmB,EAAI,CAAC,CAAC,CAAC,EAAEI,EAAa,GAAgBpC,EAAKE,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,UAAU,iBAAiB8B,EAAiB,SAAS,YAAY,SAAsBhC,EAAK0D,GAAI,CAAC,UAAU,iBAAiB,mBAAmB,QAAQ,KAAK,gBAAgB,gBAAgB,GAAG,eAAe,GAAG,iBAAiB1B,EAAiB,SAAS,YAAY,IAAI;AAAA;AAAA;AAAA,EAAqjB,mBAAmB,EAAI,CAAC,CAAC,CAAC,EAAEK,EAAa,GAAgBrC,EAAKE,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,aAAa,iBAAiB8B,EAAiB,SAAS,YAAY,SAAsBhC,EAAK0D,GAAI,CAAC,UAAU,iBAAiB,mBAAmB,QAAQ,KAAK,gBAAgB,gBAAgB,GAAG,eAAe,GAAG,iBAAiB1B,EAAiB,SAAS,YAAY,IAAI;AAAA;AAAA;AAAA,EAAib,mBAAmB,EAAI,CAAC,CAAC,CAAC,EAAEM,EAAa,GAAgBtC,EAAKE,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,WAAW,iBAAiB8B,EAAiB,SAAS,YAAY,SAAsBhC,EAAK0D,GAAI,CAAC,UAAU,iBAAiB,mBAAmB,QAAQ,KAAK,gBAAgB,gBAAgB,GAAG,eAAe,GAAG,iBAAiB1B,EAAiB,SAAS,YAAY,IAAI;AAAA;AAAA;AAAA,EAAi2F,mBAAmB,EAAI,CAAC,CAAC,CAAC,EAAEO,EAAa,GAAgBvC,EAAKE,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,OAAO,iBAAiB8B,EAAiB,SAAS,YAAY,SAAsBhC,EAAK0D,GAAI,CAAC,UAAU,iBAAiB,mBAAmB,QAAQ,KAAK,gBAAgB,gBAAgB,GAAG,eAAe,GAAG,iBAAiB1B,EAAiB,SAAS,YAAY,IAAI;AAAA;AAAA;AAAA,EAAwb,mBAAmB,EAAI,CAAC,CAAC,CAAC,EAAEQ,EAAa,GAAgBxC,EAAKE,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,eAAe,iBAAiB8B,EAAiB,SAAS,YAAY,SAAsBhC,EAAK0D,GAAI,CAAC,UAAU,iBAAiB,mBAAmB,QAAQ,KAAK,gBAAgB,gBAAgB,GAAG,eAAe,GAAG,iBAAiB1B,EAAiB,SAAS,YAAY,IAAI;AAAA;AAAA;AAAA,EAAqpB,mBAAmB,EAAI,CAAC,CAAC,CAAC,EAAES,EAAa,GAAgBzC,EAAKE,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,YAAY,iBAAiB8B,EAAiB,SAAS,YAAY,SAAsBhC,EAAK0D,GAAI,CAAC,UAAU,gBAAgB,mBAAmB,QAAQ,KAAK,gBAAgB,gBAAgB,GAAG,eAAe,GAAG,iBAAiB1B,EAAiB,SAAS,YAAY,IAAI;AAAA;AAAA;AAAA,EAAs/H,mBAAmB,EAAI,CAAC,CAAC,CAAC,EAAEU,EAAa,GAAgB1C,EAAKE,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,OAAO,iBAAiB8B,EAAiB,SAAS,YAAY,SAAsBhC,EAAK0D,GAAI,CAAC,UAAU,iBAAiB,mBAAmB,QAAQ,KAAK,gBAAgB,gBAAgB,GAAG,eAAe,GAAG,iBAAiB1B,EAAiB,SAAS,YAAY,IAAI;AAAA;AAAA;AAAA,EAA8iB,mBAAmB,EAAI,CAAC,CAAC,CAAC,EAAEW,EAAa,GAAgB3C,EAAKE,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,OAAO,iBAAiB8B,EAAiB,SAAS,YAAY,SAAsBhC,EAAK0D,GAAI,CAAC,UAAU,gBAAgB,mBAAmB,QAAQ,KAAK,gBAAgB,gBAAgB,GAAG,eAAe,GAAG,iBAAiB1B,EAAiB,SAAS,YAAY,IAAI;AAAA;AAAA;AAAA,EAAmc,mBAAmB,EAAI,CAAC,CAAC,CAAC,EAAEY,GAAa,GAAgB5C,EAAKE,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,SAAS,iBAAiB8B,EAAiB,SAAS,YAAY,SAAsBhC,EAAK0D,GAAI,CAAC,UAAU,iBAAiB,mBAAmB,QAAQ,KAAK,gBAAgB,gBAAgB,GAAG,eAAe,GAAG,iBAAiB1B,EAAiB,SAAS,YAAY,IAAI;AAAA;AAAA;AAAA,EAA64C,mBAAmB,EAAI,CAAC,CAAC,CAAC,EAAEa,GAAc,GAAgB7C,EAAKE,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,oBAAoB,iBAAiB8B,EAAiB,SAAS,YAAY,SAAsBhC,EAAK0D,GAAI,CAAC,UAAU,gBAAgB,mBAAmB,QAAQ,KAAK,gBAAgB,gBAAgB,GAAG,eAAe,GAAG,iBAAiB1B,EAAiB,SAAS,YAAY,IAAI;AAAA;AAAA;AAAA,EAA2c,mBAAmB,EAAI,CAAC,CAAC,CAAC,EAAEc,GAAc,GAAgB9C,EAAKE,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,OAAO,iBAAiB8B,EAAiB,SAAS,YAAY,SAAsBhC,EAAK0D,GAAI,CAAC,UAAU,iBAAiB,mBAAmB,QAAQ,KAAK,gBAAgB,gBAAgB,GAAG,eAAe,GAAG,iBAAiB1B,EAAiB,SAAS,YAAY,IAAI;AAAA;AAAA;AAAA,EAAixC,mBAAmB,EAAI,CAAC,CAAC,CAAC,EAAEe,EAAc,GAAgB/C,EAAKE,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,OAAO,iBAAiB8B,EAAiB,SAAS,YAAY,SAAsBhC,EAAK0D,GAAI,CAAC,UAAU,gBAAgB,mBAAmB,cAAc,KAAK,gBAAgB,gBAAgB,GAAG,eAAe,GAAG,iBAAiB1B,EAAiB,SAAS,YAAY,IAAI;AAAA;AAAA;AAAA,EAA87E,mBAAmB,EAAI,CAAC,CAAC,CAAC,EAAEgB,GAAc,GAAgBhD,EAAKE,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,eAAe,iBAAiB8B,EAAiB,SAAS,YAAY,SAAsBhC,EAAK0D,GAAI,CAAC,UAAU,iBAAiB,mBAAmB,QAAQ,KAAK,gBAAgB,gBAAgB,GAAG,eAAe,GAAG,iBAAiB1B,EAAiB,SAAS,YAAY,IAAI;AAAA;AAAA;AAAA,EAAkvB,mBAAmB,EAAI,CAAC,CAAC,CAAC,EAAEiB,GAAc,GAAgBjD,EAAKE,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,mBAAmB,iBAAiB8B,EAAiB,SAAS,YAAY,SAAsBhC,EAAK0D,GAAI,CAAC,UAAU,iBAAiB,mBAAmB,SAAS,KAAK,gBAAgB,gBAAgB,GAAG,eAAe,GAAG,iBAAiB1B,EAAiB,SAAS,YAAY,IAAI;AAAA;AAAA;AAAA,EAAg3B,mBAAmB,EAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,EAAQ2B,GAAI,CAAC,kFAAkF,kFAAkF,yPAAyP,8hBAA8hB,oHAAoH,oJAAoJ,kJAAkJ,mNAAmN,iLAAiL,oHAAoH,oLAAoL,kNAAkN,mLAAmL,oLAAoL,0WAA0W,EAQhlgCC,GAAgBC,GAAQhD,GAAU8C,GAAI,cAAc,EAASG,GAAQF,GAAgBA,GAAgB,YAAY,kBAAkBA,GAAgB,aAAa,CAAC,OAAO,GAAG,MAAM,EAAE,EAAEG,GAAoBH,GAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAW,EAAE,aAAa,CAAC,QAAQ,OAAO,YAAY,eAAe,UAAU,aAAa,OAAO,WAAW,OAAO,SAAS,oBAAoB,OAAO,OAAO,aAAa,eAAe,kBAAkB,EAAE,MAAM,UAAU,KAAKI,EAAY,IAAI,CAAC,CAAC,EAAEC,GAASL,GAAgB,CAAC,CAAC,cAAc,GAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,6BAA6B,EAAI,CAAC,ECR6N,IAAMM,GAAWC,GAASC,EAAK,EAAQC,GAAiBF,GAASG,EAAW,EAAQC,GAAyBJ,GAASK,EAAmB,EAAQC,GAAcC,GAAoBN,EAAK,EAAQO,GAAoBD,GAAoBJ,EAAW,EAAQM,GAAgB,CAAC,UAAU,CAAC,MAAM,EAAI,CAAC,EAAQC,GAAW,CAAC,WAAW,EAAQC,GAAkB,eAAqBC,GAAkB,CAAC,UAAU,kBAAkB,EAAE,SAASC,GAAqBC,KAAaC,EAAS,CAAC,IAAMC,EAAc,CAAC,EAAE,OAA0CD,GAAS,QAAQE,GAASA,GAAS,OAAO,OAAOD,EAAcF,EAAUG,CAAO,CAAC,CAAC,EAASD,CAAc,CAAC,IAAME,GAAY,CAAC,MAAM,EAAE,SAAS,IAAI,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,OAAO,EAAQC,GAAO,CAAC,EAAEC,IAAY,OAAO,GAAI,UAAU,OAAOA,GAAI,SAAS,EAAE,YAAY,IAAIA,EAAE,YAAY,EAAE,IAAIA,EAAUC,GAAOC,GAAc,CAACA,EAAcC,GAAW,CAAC,CAAC,MAAAD,EAAM,SAAAE,CAAQ,IAAI,CAAC,IAAMC,EAAaC,GAAWC,CAAmB,EAAQC,EAAWN,GAAmCG,EAAO,WAAiBI,EAAmBC,GAAQ,KAAK,CAAC,GAAGL,EAAO,WAAAG,CAAU,GAAG,CAAC,KAAK,UAAUA,CAAU,CAAC,CAAC,EAAE,OAAoBG,EAAKJ,EAAoB,SAAS,CAAC,MAAME,EAAa,SAASL,CAAQ,CAAC,CAAE,EAAQQ,GAASC,EAAaC,CAAQ,EAAQC,GAAqB,CAAC,oBAAoB,YAAY,MAAM,YAAY,OAAO,YAAY,KAAK,YAAY,QAAQ,YAAY,UAAU,YAAY,KAAK,YAAY,KAAK,YAAY,aAAa,YAAY,SAAS,YAAY,WAAW,WAAW,EAAQC,GAAS,CAAC,CAAC,OAAAC,EAAO,KAAAC,EAAK,MAAAC,EAAM,GAAAC,EAAG,KAAAC,EAAK,QAAAC,EAAQ,eAAAC,EAAe,KAAAC,EAAK,SAAAC,EAAS,IAAAC,EAAI,MAAAC,EAAM,MAAAC,EAAM,GAAGC,CAAK,IAAI,CAAC,IAAIC,EAAKC,EAAqCC,EAAMC,EAAMC,EAAMC,EAAMC,EAAM,MAAM,CAAC,GAAGP,EAAM,WAAWC,EAAKL,GAA4CI,EAAM,aAAa,MAAMC,IAAO,OAAOA,EAAK,uCAAuC,UAAUN,GAAgCK,EAAM,UAAU,WAAWI,GAAOD,GAAOD,EAAqChB,GAAqBQ,CAAc,KAAK,MAAMQ,IAAuC,OAAOA,EAAqCR,KAAkB,MAAMS,IAAQ,OAAOA,EAAMH,EAAM,aAAa,MAAMI,IAAQ,OAAOA,EAAM,YAAY,UAAUZ,GAAgCQ,EAAM,UAAU,WAAWK,EAAMf,GAAmCU,EAAM,aAAa,MAAMK,IAAQ,OAAOA,EAAM,WAAW,WAAWC,EAAMR,GAAmCE,EAAM,aAAa,MAAMM,IAAQ,OAAOA,EAAM,sBAAsB,UAAUb,GAAyCO,EAAM,UAAU,WAAWO,EAAMlB,GAAgCW,EAAM,aAAa,MAAMO,IAAQ,OAAOA,EAAM,GAAK,UAAUV,GAA6BG,EAAM,SAAS,CAAE,EAAQQ,GAAuB,CAACR,EAAMlC,IAAWA,EAAS,KAAK,GAAG,EAAEkC,EAAM,iBAAuBS,GAA6BC,GAAW,SAASV,EAAMW,EAAI,CAAC,GAAK,CAAC,aAAAC,EAAa,UAAAC,CAAS,EAAEC,GAAc,EAAO,CAAC,MAAAC,EAAM,UAAAC,EAAU,SAAAC,EAAS,QAAAjD,EAAQ,UAAAkD,EAAU,UAAAC,EAAU,UAAAC,EAAU,UAAAC,EAAU,UAAAC,EAAU,UAAAC,EAAU,UAAAC,EAAU,UAAAC,EAAU,UAAAC,EAAU,GAAGC,CAAS,EAAExC,GAASa,CAAK,EAAO,CAAC,YAAA4B,EAAY,WAAAC,EAAW,eAAAC,EAAe,gBAAAC,EAAgB,WAAAC,EAAW,SAAAlE,CAAQ,EAAEmE,GAAgB,CAAC,WAAAxE,GAAW,eAAe,YAAY,gBAAAD,GAAgB,QAAAQ,EAAQ,kBAAAL,EAAiB,CAAC,EAAQuE,EAAiB1B,GAAuBR,EAAMlC,CAAQ,EAAO,CAAC,sBAAAqE,EAAsB,MAAAC,CAAK,EAAEC,GAAyBT,CAAW,EAAQU,EAAYH,EAAsB,SAASI,KAAO,CAAoC,GAAnCR,EAAgB,CAAC,UAAU,EAAK,CAAC,EAAKR,GAAqB,MAAMA,EAAU,GAAGgB,EAAI,IAAW,GAAM,MAAO,EAAO,CAAC,EAAQC,EAAWC,GAAO,IAAI,EAAQC,GAAQtE,GAAOF,GAAOkD,EAAU,EAAE,CAAC,EAAQuB,GAAsBC,GAAM,EAAQC,GAAsB,CAAa7B,GAAuBA,EAAS,EAAQ8B,EAAkBC,GAAqB,EAAE,OAAoBjE,EAAKkE,GAAY,CAAC,GAAG/B,GAA4C0B,GAAgB,SAAsB7D,EAAKC,GAAS,CAAC,QAAQjB,EAAS,QAAQ,GAAM,SAAsBgB,EAAKR,GAAW,CAAC,MAAML,GAAY,SAAsBa,EAAKmE,EAAK,CAAC,KAAK/B,EAAU,aAAa,GAAM,aAAa,GAAK,SAAsBpC,EAAKE,EAAO,EAAE,CAAC,GAAG2C,EAAU,UAAU,GAAGuB,GAAGxF,GAAkB,GAAGmF,GAAsB,iBAAiB7B,EAAUa,CAAU,CAAC,iBAAiB,mBAAmB,UAAU,iBAAiB,GAAK,iBAAiBK,EAAiB,SAAS,YAAY,WAAW,IAAIH,EAAgB,CAAC,UAAU,EAAK,CAAC,EAAE,aAAa,IAAIA,EAAgB,CAAC,UAAU,EAAI,CAAC,EAAE,MAAMO,EAAY,YAAY,IAAIP,EAAgB,CAAC,UAAU,EAAK,CAAC,EAAE,WAAW,IAAIA,EAAgB,CAAC,UAAU,EAAI,CAAC,EAAE,IAAIpB,GAA6B6B,EAAK,MAAM,CAAC,uBAAuB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,GAAGzB,CAAK,EAAE,GAAGnD,GAAqB,CAAC,kBAAkB,CAAC,mBAAmB,MAAS,CAAC,EAAEgE,EAAYE,CAAc,EAAE,SAAsBqB,EAAMnE,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,QAAQ,iBAAiBkD,EAAiB,SAAS,YAAY,SAAS,CAACb,GAAwBvC,EAAKsE,EAA0B,CAAC,SAAsBtE,EAAKE,EAAO,IAAI,CAAC,UAAU,2BAA2B,iBAAiBkD,EAAiB,SAAS,sBAAsB,SAAsBpD,EAAK9B,GAAM,CAAC,OAAO,qBAAqB,OAAO,OAAO,KAAKsE,EAAU,GAAG,YAAY,aAAa,GAAM,SAAS,YAAY,MAAM,CAAC,OAAO,OAAO,MAAM,MAAM,EAAE,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEE,GAAwB1C,EAAKsE,EAA0B,CAAC,SAAsBtE,EAAKE,EAAO,IAAI,CAAC,UAAU,2BAA2B,iBAAiBkD,EAAiB,SAAS,sBAAsB,SAAsBpD,EAAK5B,GAAY,CAAC,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,MAAM,CAAC,OAAO,OAAO,MAAM,MAAM,EAAE,QAAQuE,EAAU,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAe0B,EAAMnE,EAAO,IAAI,CAAC,UAAU,iBAAiB,iBAAiBkD,EAAiB,SAAS,YAAY,SAAS,CAAciB,EAAMnE,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,QAAQ,iBAAiBkD,EAAiB,SAAS,YAAY,SAAS,CAAcpD,EAAKuE,GAAS,CAAC,sBAAsB,GAAK,SAAsBvE,EAAWG,EAAS,CAAC,SAAsBH,EAAKE,EAAO,EAAE,CAAC,UAAU,+BAA+B,qBAAqB,YAAY,MAAM,CAAC,sBAAsB,gGAAgG,EAAE,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,UAAU,gBAAgB,mBAAmB,QAAQ,MAAM,CAAC,OAAO,EAAE,iBAAiBkD,EAAiB,SAAS,YAAY,MAAM,CAAC,qBAAqB,wEAAwE,2BAA2B,mBAAmB,gCAAgC,WAAW,EAAE,KAAKf,EAAU,kBAAkB,MAAM,mBAAmB,EAAI,CAAC,EAAEO,GAAwB5C,EAAKE,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,YAAY,iBAAiBkD,EAAiB,SAAS,YAAY,MAAM,CAAC,gBAAgB,qEAAqE,uBAAuB,GAAG,wBAAwB,GAAG,oBAAoB,GAAG,qBAAqB,EAAE,EAAE,SAAsBpD,EAAKuE,GAAS,CAAC,sBAAsB,GAAK,SAAsBvE,EAAWG,EAAS,CAAC,SAAsBH,EAAKE,EAAO,EAAE,CAAC,MAAM,CAAC,kBAAkB,mCAAmC,uBAAuB,+DAA+D,qBAAqB,OAAO,0BAA0B,SAAS,uBAAuB,QAAQ,sBAAsB,+FAA+F,EAAE,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,gBAAgB,mBAAmB,QAAQ,MAAM,CAAC,wBAAwB,EAAE,iBAAiBkD,EAAiB,SAAS,YAAY,MAAM,CAAC,qBAAqB,uEAAuE,2BAA2B,mBAAmB,gCAAgC,WAAW,EAAE,kBAAkB,MAAM,mBAAmB,EAAI,CAAC,CAAC,CAAC,EAAepD,EAAKsE,EAA0B,CAAC,SAAsBtE,EAAKE,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiBkD,EAAiB,SAAS,sBAAsB,MAAM,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAsBpD,EAAK1B,GAAoB,CAAC,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,MAAM,CAAC,OAAO,OAAO,MAAM,MAAM,EAAE,QAAQ,YAAY,MAAM,OAAO,GAAGQ,GAAqB,CAAC,kBAAkB,CAAC,QAAQ,WAAW,CAAC,EAAEgE,EAAYE,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEY,IAAsB5D,EAAKuE,GAAS,CAAC,sBAAsB,GAAK,SAAsBvE,EAAWG,EAAS,CAAC,SAAsBH,EAAKE,EAAO,EAAE,CAAC,UAAU,+BAA+B,qBAAqB,YAAY,MAAM,CAAC,sBAAsB,gGAAgG,EAAE,SAAS,sCAAsC,CAAC,CAAC,CAAC,EAAE,UAAU,gBAAgB,mBAAmB,WAAW,MAAM,CAAC,OAAO,EAAE,iBAAiBkD,EAAiB,SAAS,YAAY,MAAM,CAAC,qBAAqB,wEAAwE,2BAA2B,mBAAmB,gCAAgC,WAAW,EAAE,KAAKd,EAAU,kBAAkB,MAAM,mBAAmB,EAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,EAAQkC,GAAI,CAAC,kFAAkF,gFAAgF,gUAAgU,yRAAyR,yGAAyG,oKAAoK,0RAA0R,iRAAiR,2MAA2M,iSAAiS,2MAA2M,wGAAwG,qLAAqL,yuCAAyuC,GAAeA,GAAI,GAAgBA,EAAG,EASr3bC,GAAgBC,GAAQ/C,GAAU6C,GAAI,cAAc,EAASG,GAAQF,GAAgBA,GAAgB,YAAY,4BAAuBA,GAAgB,aAAa,CAAC,OAAO,GAAG,MAAM,GAAG,EAAEG,GAAoBH,GAAgB,CAAC,UAAU,CAAC,MAAM,OAAO,KAAKI,EAAY,IAAI,EAAE,UAAU,CAAC,aAAa,sBAAsB,gBAAgB,GAAM,MAAM,QAAQ,KAAKA,EAAY,MAAM,EAAE,UAAU,CAAC,aAAa,uCAAuC,gBAAgB,GAAM,MAAM,WAAW,KAAKA,EAAY,MAAM,EAAE,UAAU,CAAC,aAAa,GAAK,MAAM,OAAO,KAAKA,EAAY,OAAO,EAAE,UAA+DtG,IAAc,MAAU,CAAC,GAAGA,GAAc,KAAQ,aAAa,WAAW,YAAY,OAAU,OAAO,OAAU,MAAM,MAAM,EAAE,UAAU,CAAC,MAAM,MAAM,KAAKsG,EAAY,YAAY,EAAE,UAAU,CAAC,aAAa,GAAM,MAAM,WAAW,KAAKA,EAAY,OAAO,EAAE,UAA2EpG,IAAoB,SAAa,CAAC,GAAGA,GAAoB,QAAW,aAAa,YAAY,YAAY,OAAU,OAAO,OAAU,MAAM,kBAAkB,EAAE,UAAU,CAAC,aAAa,GAAM,MAAM,MAAM,KAAKoG,EAAY,OAAO,CAAC,CAAC,EAAEC,GAASL,GAAgB,CAAC,CAAC,cAAc,GAAK,MAAM,CAAC,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,0EAA0E,IAAI,yEAAyE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,wDAAwD,IAAI,qEAAqE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,cAAc,IAAI,sEAAsE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,cAAc,IAAI,kEAAkE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,uGAAuG,IAAI,sEAAsE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,6JAA6J,IAAI,kEAAkE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,oGAAoG,IAAI,uEAAuE,OAAO,KAAK,EAAE,CAAC,OAAO,kBAAkB,OAAO,SAAS,IAAI,uEAAuE,CAAC,CAAC,EAAE,GAAGzG,GAAW,GAAGG,GAAiB,GAAGE,GAAyB,GAAG0G,GAAoCC,EAAK,EAAE,GAAGD,GAAqCC,EAAK,CAAC,EAAE,CAAC,6BAA6B,EAAI,CAAC,ECT3+D,IAAMC,GAAiBC,GAASC,EAAW,EAAQC,GAAkBF,GAASG,EAAY,EAAQC,GAA0BJ,GAASK,EAAoB,EAAQC,GAAiBN,GAASO,EAAW,EAAQC,GAAW,CAAC,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAW,EAAQC,GAAkB,eAAqBC,GAAkB,CAAC,UAAU,mBAAmB,UAAU,mBAAmB,UAAU,mBAAmB,UAAU,mBAAmB,UAAU,kBAAkB,UAAU,mBAAmB,UAAU,mBAAmB,UAAU,kBAAkB,UAAU,kBAAkB,EAAE,SAASC,GAAqBC,KAAaC,EAAS,CAAC,IAAMC,EAAc,CAAC,EAAE,OAA0CD,GAAS,QAAQE,GAASA,GAAS,OAAO,OAAOD,EAAcF,EAAUG,CAAO,CAAC,CAAC,EAASD,CAAc,CAAC,IAAME,GAAY,CAAC,QAAQ,GAAG,MAAM,EAAE,KAAK,EAAE,UAAU,IAAI,KAAK,QAAQ,EAAQC,GAAa,CAACC,EAAMC,EAAQ,CAAC,EAAEC,IAAe,CAAC,GAAG,OAAOF,GAAQ,SAAS,MAAM,GAAG,IAAMG,EAAK,IAAI,KAAKH,CAAK,EAAE,GAAG,MAAMG,EAAK,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAMC,EAAe,QAAcC,EAAOJ,EAAQ,QAAQC,GAAcE,EAAqBE,EAAUL,EAAQ,UAAgBM,EAAS,MAAM,GAAG,CAAC,OAAOJ,EAAK,mBAAmBE,EAAO,CAAC,UAAAC,EAAU,SAAAC,CAAQ,CAAC,CAAE,MAAM,CAAC,OAAOJ,EAAK,mBAAmBC,EAAe,CAAC,UAAAE,EAAU,SAAAC,CAAQ,CAAC,CAAE,CAAC,EAAQC,GAAkBR,GAAW,OAAOA,GAAQ,UAAUA,IAAQ,MAAM,OAAOA,EAAM,KAAM,SAAiBA,EAAc,OAAOA,GAAQ,SAAS,CAAC,IAAIA,CAAK,EAAE,OAAkBS,GAAU,CAAC,CAAC,MAAAC,EAAM,SAAAC,CAAQ,IAAI,CAAC,IAAMC,EAAKC,GAAaH,CAAK,EAAE,OAAOC,EAASC,CAAI,CAAE,EAAQE,GAAW,CAAC,CAAC,MAAAd,EAAM,SAAAW,CAAQ,IAAI,CAAC,IAAMI,EAAaC,GAAWC,CAAmB,EAAQC,EAAWlB,GAAmCe,EAAO,WAAiBI,EAAmBC,GAAQ,KAAK,CAAC,GAAGL,EAAO,WAAAG,CAAU,GAAG,CAAC,KAAK,UAAUA,CAAU,CAAC,CAAC,EAAE,OAAoBG,EAAKJ,EAAoB,SAAS,CAAC,MAAME,EAAa,SAASR,CAAQ,CAAC,CAAE,EAAQW,GAASC,EAAaC,CAAQ,EAAQC,GAAwB,CAAC,SAAS,YAAY,wBAAmB,YAAY,yBAAoB,YAAY,2BAAsB,YAAY,6BAAwB,YAAY,KAAK,YAAY,SAAS,YAAY,QAAQ,YAAY,UAAU,WAAW,EAAQC,GAAS,CAAC,CAAC,OAAAC,EAAO,GAAAC,EAAG,MAAAC,EAAM,GAAGC,CAAK,IAAI,CAAC,IAAIC,EAAuCC,EAAK,MAAM,CAAC,GAAGF,EAAM,SAASE,GAAMD,EAAuCN,GAAwBK,EAAM,OAAO,KAAK,MAAMC,IAAyC,OAAOA,EAAuCD,EAAM,WAAW,MAAME,IAAO,OAAOA,EAAK,WAAW,CAAE,EAAQC,GAAuB,CAACH,EAAMnC,IAAWA,EAAS,KAAK,GAAG,EAAEmC,EAAM,iBAAuBI,GAA6BC,GAAW,SAASL,EAAMM,EAAI,CAAC,GAAK,CAAC,aAAAlC,EAAa,UAAAmC,CAAS,EAAEC,GAAc,EAAO,CAAC,MAAAC,EAAM,UAAAC,EAAU,SAAAC,EAAS,QAAA5C,EAAQ,mBAAA6C,EAAmB,mBAAAC,EAAmB,mBAAAC,EAAmB,mBAAAC,EAAmB,YAAAC,EAAY,mBAAAC,EAAmB,mBAAAC,EAAmB,mBAAAC,EAAmB,mBAAAC,EAAmB,YAAAC,EAAY,GAAGC,CAAS,EAAE1B,GAASI,CAAK,EAAO,CAAC,YAAAuB,EAAY,WAAAC,EAAW,eAAAC,EAAe,gBAAAC,EAAgB,WAAAC,EAAW,SAAA9D,CAAQ,EAAE+D,GAAgB,CAAC,WAAApE,GAAW,eAAe,YAAY,QAAAO,EAAQ,kBAAAL,EAAiB,CAAC,EAAQmE,EAAiB1B,GAAuBH,EAAMnC,CAAQ,EAAQiE,EAAWC,GAAO,IAAI,EAAQC,EAAY,IAAQ,EAAC,YAAY,YAAY,YAAY,YAAY,YAAY,WAAW,EAAE,SAAST,CAAW,EAAmCU,EAAOC,GAAU,EAAQC,GAAiBC,GAAc,EAAQC,GAAa,IAAQ,EAAC,YAAY,YAAY,YAAY,YAAY,YAAY,WAAW,EAAE,SAASd,CAAW,EAAmCe,GAAa,IAAQ,EAAC,YAAY,YAAY,YAAY,YAAY,YAAY,WAAW,EAAE,SAASf,CAAW,EAAmCgB,EAAa,IAAQ,EAAC,YAAY,YAAY,YAAY,YAAY,YAAY,WAAW,EAAE,SAAShB,CAAW,EAAmCiB,GAAsBC,GAAM,EAAQC,GAAsB,CAAC,EAAQC,EAAkBC,GAAqB,EAAE,OAAoBrD,EAAKsD,GAAY,CAAC,GAAGlC,GAA4C6B,GAAgB,SAAsBjD,EAAKC,GAAS,CAAC,QAAQ3B,EAAS,QAAQ,GAAM,SAAsB0B,EAAKP,GAAW,CAAC,MAAMhB,GAAY,SAAsB8E,EAAMrD,EAAO,IAAI,CAAC,GAAG6B,EAAU,UAAUyB,GAAGtF,GAAkB,GAAGiF,GAAsB,gBAAgBhC,EAAUc,CAAU,EAAE,mBAAmB,WAAW,iBAAiBK,EAAiB,SAAS,YAAY,WAAW,IAAIH,EAAgB,CAAC,UAAU,EAAK,CAAC,EAAE,aAAa,IAAIA,EAAgB,CAAC,UAAU,EAAI,CAAC,EAAE,MAAM,IAAIA,EAAgB,CAAC,UAAU,EAAK,CAAC,EAAE,YAAY,IAAIA,EAAgB,CAAC,UAAU,EAAK,CAAC,EAAE,WAAW,IAAIA,EAAgB,CAAC,UAAU,EAAI,CAAC,EAAE,IAAIpB,GAA6BwB,EAAK,MAAM,CAAC,gBAAgB,qEAAqE,GAAGrB,CAAK,EAAE,GAAG9C,GAAqB,CAAC,UAAU,CAAC,mBAAmB,wBAAmB,EAAE,UAAU,CAAC,mBAAmB,UAAU,EAAE,UAAU,CAAC,mBAAmB,4BAAuB,EAAE,UAAU,CAAC,mBAAmB,uBAAkB,EAAE,UAAU,CAAC,mBAAmB,WAAW,EAAE,UAAU,CAAC,mBAAmB,MAAM,EAAE,UAAU,CAAC,mBAAmB,0BAAqB,EAAE,UAAU,CAAC,mBAAmB,SAAS,CAAC,EAAE4D,EAAYE,CAAc,EAAE,SAAS,CAACO,EAAY,GAAgBc,EAAMrD,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,UAAU,iBAAiBoC,EAAiB,SAAS,YAAY,SAAS,CAAciB,EAAMrD,EAAO,IAAI,CAAC,UAAU,iBAAiB,iBAAiBoC,EAAiB,SAAS,YAAY,SAAS,CAActC,EAAKyD,GAAa,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,EAAE,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,EAAE,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,CAAC,EAAE,SAASC,IAA4B1D,EAAK2D,EAA0B,CAAC,MAAM,QAAqEP,GAAkB,OAAQ,OAAO,qBAAqB,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKtC,GAAY,CAAC,UAAU,sDAAsD,UAAU,GAAM,UAAU,YAAY,OAAO,OAAO,UAAUgG,GAAc,CAAC,EAAE,GAAG,YAAY,UAAU,WAAW,SAAS,YAAY,UAAU,4BAA4B,MAAM,CAAC,SAAS,OAAO,MAAM,MAAM,EAAE,UAAU,GAAK,UAAU,GAAM,MAAM,OAAO,GAAGtF,GAAqB,CAAC,UAAU,CAAC,UAAUsF,GAAc,CAAC,CAAC,EAAE,UAAU,CAAC,UAAU,kDAAkD,UAAUA,GAAc,CAAC,CAAC,CAAC,EAAE1B,EAAYE,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAelC,EAAKyD,GAAa,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,EAAE,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,EAAE,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,CAAC,EAAE,SAASG,IAA6B5D,EAAK2D,EAA0B,CAAC,MAAM,QAAqEP,GAAkB,OAAQ,OAAO,qBAAqB,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKtC,GAAY,CAAC,UAAU,0DAA0D,UAAU,GAAM,UAAU,YAAY,OAAO,OAAO,UAAUkG,GAAe,CAAC,EAAE,GAAG,YAAY,UAAU,WAAW,SAAS,YAAY,UAAU,6BAA6B,MAAM,CAAC,SAAS,OAAO,MAAM,MAAM,EAAE,UAAU,GAAK,UAAU,GAAM,MAAM,OAAO,GAAGxF,GAAqB,CAAC,UAAU,CAAC,UAAUwF,GAAe,CAAC,CAAC,EAAE,UAAU,CAAC,UAAUA,GAAe,CAAC,CAAC,CAAC,EAAE5B,EAAYE,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAelC,EAAKyD,GAAa,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,EAAE,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,EAAE,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,CAAC,EAAE,SAASI,IAA6B7D,EAAK2D,EAA0B,CAAC,MAAM,QAAqEP,GAAkB,OAAQ,OAAO,qBAAqB,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKtC,GAAY,CAAC,UAAU,0DAA0D,UAAU,GAAM,UAAU,YAAY,OAAO,OAAO,UAAUmG,GAAe,CAAC,EAAE,GAAG,YAAY,UAAU,WAAW,SAAS,YAAY,UAAU,oBAAoB,MAAM,CAAC,SAAS,OAAO,MAAM,MAAM,EAAE,UAAU,GAAK,UAAU,GAAM,MAAM,OAAO,GAAGzF,GAAqB,CAAC,UAAU,CAAC,UAAUyF,GAAe,CAAC,CAAC,EAAE,UAAU,CAAC,UAAUA,GAAe,CAAC,CAAC,CAAC,EAAE7B,EAAYE,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeqB,EAAMrD,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,UAAU,iBAAiBoC,EAAiB,SAAS,YAAY,SAAS,CAAciB,EAAMrD,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,OAAO,iBAAiBoC,EAAiB,SAAS,YAAY,SAAS,CAActC,EAAK2D,EAA0B,CAAC,MAAM,aAA0EP,GAAkB,OAAQ,OAAO,uCAAuC,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,2BAA2B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKpC,GAAa,CAAC,UAAU,0CAA0C,OAAO,OAAO,GAAG,YAAY,UAAU,YAAY,SAAS,YAAY,MAAM,CAAC,MAAM,MAAM,EAAE,QAAQ,YAAY,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAe2F,EAAMrD,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,OAAO,iBAAiBoC,EAAiB,SAAS,YAAY,SAAS,CAActC,EAAK2D,EAA0B,CAAC,MAAM,aAA0EP,GAAkB,OAAQ,OAAO,uCAAuC,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKtC,GAAY,CAAC,UAAU,GAAG,UAAU,GAAM,UAAU,YAAY,OAAO,OAAO,UAAU,oDAAoD,GAAG,YAAY,UAAU,WAAW,SAAS,YAAY,UAAU,kBAAkB,MAAM,CAAC,SAAS,OAAO,MAAM,MAAM,EAAE,UAAU,GAAM,UAAU,GAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAesC,EAAK2D,EAA0B,CAAC,MAAM,aAA0EP,GAAkB,OAAQ,OAAO,uCAAuC,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,2BAA2B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKtC,GAAY,CAAC,UAAU,GAAG,UAAU,GAAM,UAAU,YAAY,OAAO,OAAO,UAAU,sDAAsD,GAAG,YAAY,UAAU,WAAW,SAAS,YAAY,UAAU,wBAAwB,MAAM,CAAC,MAAM,MAAM,EAAE,UAAU,GAAM,UAAU,GAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAesC,EAAK2D,EAA0B,CAAC,MAAM,aAA0EP,GAAkB,OAAQ,OAAO,uCAAuC,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKtC,GAAY,CAAC,UAAU,GAAG,UAAU,GAAM,UAAU,YAAY,OAAO,OAAO,UAAU,yDAAyD,GAAG,YAAY,UAAU,WAAW,SAAS,YAAY,UAAU,kBAAkB,MAAM,CAAC,MAAM,MAAM,EAAE,UAAU,GAAM,UAAU,GAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAesC,EAAK2D,EAA0B,CAAC,MAAM,aAA0EP,GAAkB,OAAQ,OAAO,uCAAuC,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,2BAA2B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKtC,GAAY,CAAC,UAAU,GAAG,UAAU,GAAM,UAAU,YAAY,OAAO,OAAO,UAAU,yDAAyD,GAAG,YAAY,UAAU,WAAW,SAAS,YAAY,UAAU,kBAAkB,MAAM,CAAC,MAAM,MAAM,EAAE,UAAU,GAAM,UAAU,GAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAesC,EAAK2D,EAA0B,CAAC,MAAM,aAA0EP,GAAkB,OAAQ,OAAO,uCAAuC,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,2BAA2B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKtC,GAAY,CAAC,UAAU,GAAG,UAAU,GAAM,UAAU,YAAY,OAAO,OAAO,UAAU,kDAAkD,GAAG,YAAY,UAAU,WAAW,SAAS,YAAY,UAAU,gBAAgB,MAAM,CAAC,MAAM,MAAM,EAAE,UAAU,GAAM,UAAU,GAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAesC,EAAK2D,EAA0B,CAAC,MAAM,aAA0EP,GAAkB,OAAQ,OAAO,uCAAuC,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKtC,GAAY,CAAC,UAAU,GAAG,UAAU,GAAM,UAAU,YAAY,OAAO,OAAO,UAAU,oDAAoD,GAAG,YAAY,UAAU,WAAW,SAAS,YAAY,UAAU,aAAa,MAAM,CAAC,MAAM,MAAM,EAAE,UAAU,GAAM,UAAU,GAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAe6F,EAAMrD,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,OAAO,iBAAiBoC,EAAiB,SAAS,YAAY,SAAS,CAActC,EAAKyD,GAAa,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,EAAE,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,EAAE,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,CAAC,EAAE,SAASK,IAA6B9D,EAAK2D,EAA0B,CAAC,MAAM,aAA0EP,GAAkB,OAAQ,OAAO,uCAAuC,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKpC,GAAa,CAAC,UAAUkG,GAAe,CAAC,EAAE,OAAO,OAAO,GAAG,YAAY,UAAU,eAAe,SAAS,YAAY,MAAM,CAAC,MAAM,MAAM,EAAE,QAAQ,YAAY,MAAM,OAAO,GAAG1F,GAAqB,CAAC,UAAU,CAAC,UAAU0F,GAAe,CAAC,CAAC,EAAE,UAAU,CAAC,UAAUA,GAAe,CAAC,CAAC,CAAC,EAAE9B,EAAYE,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeqB,EAAMrD,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,OAAO,iBAAiBoC,EAAiB,SAAS,YAAY,SAAS,CAActC,EAAK2D,EAA0B,CAAC,MAAM,aAA0EP,GAAkB,OAAQ,OAAO,uCAAuC,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKtC,GAAY,CAAC,UAAU,GAAG,UAAU,GAAM,UAAU,YAAY,OAAO,OAAO,UAAU,mDAAmD,GAAG,YAAY,UAAU,OAAO,SAAS,YAAY,UAAU,OAAO,MAAM,CAAC,SAAS,OAAO,MAAM,MAAM,EAAE,UAAU,GAAM,UAAU,GAAK,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAesC,EAAK2D,EAA0B,CAAC,MAAM,aAA0EP,GAAkB,OAAQ,OAAO,uCAAuC,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKtC,GAAY,CAAC,UAAU,GAAG,UAAU,GAAM,UAAU,YAAY,OAAO,OAAO,UAAU,+DAA+D,GAAG,YAAY,UAAU,SAAS,SAAS,YAAY,UAAU,mBAAmB,MAAM,CAAC,MAAM,MAAM,EAAE,UAAU,GAAM,UAAU,GAAK,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAesC,EAAK2D,EAA0B,CAAC,MAAM,aAA0EP,GAAkB,OAAQ,OAAO,uCAAuC,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,2BAA2B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKtC,GAAY,CAAC,UAAU,GAAG,UAAU,GAAM,UAAU,YAAY,OAAO,OAAO,UAAU,uDAAuD,GAAG,YAAY,UAAU,WAAW,SAAS,YAAY,UAAU,WAAW,MAAM,CAAC,MAAM,MAAM,EAAE,UAAU,GAAM,UAAU,GAAK,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAesC,EAAK2D,EAA0B,CAAC,MAAM,aAA0EP,GAAkB,OAAQ,OAAO,uCAAuC,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKtC,GAAY,CAAC,UAAU,GAAG,UAAU,GAAM,UAAU,YAAY,OAAO,OAAO,UAAU,0DAA0D,GAAG,YAAY,UAAU,cAAc,SAAS,YAAY,UAAU,cAAc,MAAM,CAAC,MAAM,MAAM,EAAE,UAAU,GAAM,UAAU,GAAK,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAesC,EAAK2D,EAA0B,CAAC,MAAM,aAA0EP,GAAkB,OAAQ,OAAO,uCAAuC,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKtC,GAAY,CAAC,UAAU,GAAG,UAAU,GAAM,UAAU,YAAY,OAAO,OAAO,UAAU,mDAAmD,GAAG,YAAY,UAAU,OAAO,SAAS,YAAY,UAAU,OAAO,MAAM,CAAC,MAAM,MAAM,EAAE,UAAU,GAAM,UAAU,GAAK,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAesC,EAAK2D,EAA0B,CAAC,MAAM,aAA0EP,GAAkB,OAAQ,OAAO,uCAAuC,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,2BAA2B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKtC,GAAY,CAAC,UAAU,GAAG,UAAU,GAAM,UAAU,YAAY,OAAO,OAAO,UAAU,qDAAqD,GAAG,YAAY,UAAU,SAAS,SAAS,YAAY,UAAU,SAAS,MAAM,CAAC,MAAM,MAAM,EAAE,UAAU,GAAM,UAAU,GAAK,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAe6F,EAAMrD,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,UAAU,iBAAiBoC,EAAiB,SAAS,YAAY,SAAS,CAActC,EAAKyD,GAAa,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,EAAE,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,EAAE,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,CAAC,EAAE,SAASM,IAA6B/D,EAAK2D,EAA0B,CAAC,MAAM,QAAqEP,GAAkB,OAAQ,OAAO,qBAAqB,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKtC,GAAY,CAAC,UAAU,oCAAoC,UAAU,GAAM,UAAU,YAAY,OAAO,OAAO,UAAUqG,GAAe,CAAC,EAAE,GAAG,YAAY,UAAU,WAAW,SAAS,YAAY,UAAU,YAAY,MAAM,CAAC,SAAS,OAAO,MAAM,MAAM,EAAE,UAAU,GAAK,UAAU,GAAM,MAAM,OAAO,GAAG3F,GAAqB,CAAC,UAAU,CAAC,UAAU2F,GAAe,CAAC,CAAC,EAAE,UAAU,CAAC,UAAUA,GAAe,CAAC,CAAC,CAAC,EAAE/B,EAAYE,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAelC,EAAKE,EAAO,IAAI,CAAC,UAAU,gBAAgB,iBAAiBoC,EAAiB,SAAS,YAAY,SAAsBtC,EAAKZ,GAAU,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK4E,GAAU,KAAK,YAAY,EAAE,MAAM,CAAC,KAAK,eAAe,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,YAAY,KAAK,YAAY,EAAE,CAAC,KAAK,YAAY,KAAK,YAAY,EAAE,CAAC,KAAK,YAAY,KAAK,YAAY,EAAE,CAAC,KAAK,YAAY,KAAK,YAAY,EAAE,CAAC,KAAK,KAAK,KAAK,YAAY,CAAC,EAAE,MAAM,CAAC,KAAK,YAAY,KAAK,YAAY,CAAC,EAAE,SAASC,IAAYA,GAAW,IAAI,CAAC,CAAC,UAAU5C,GAAmB,UAAUC,GAAmB,UAAUC,GAAmB,UAAUC,GAAmB,GAAGC,EAAW,EAAEyC,KAAyBlE,EAAKsD,GAAY,CAAC,GAAG,aAAa7B,EAAW,GAAG,SAAsBzB,EAAKmE,GAAqB,SAAS,CAAC,MAAM,CAAC,UAAU3C,EAAkB,EAAE,SAAsBxB,EAAKyD,GAAa,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,UAAUjC,EAAkB,EAAE,UAAU,WAAW,EAAE,sBAAsB,MAAS,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,UAAUA,EAAkB,EAAE,UAAU,WAAW,EAAE,sBAAsB,MAAS,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,UAAUA,EAAkB,EAAE,UAAU,WAAW,EAAE,sBAAsB,MAAS,CAAC,EAAE,SAAS4C,IAA6BpE,EAAK2D,EAA0B,CAAC,MAAM,YAAyEP,GAAkB,OAAQ,OAAO,kCAAkC,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKlC,GAAqB,CAAC,UAAUuD,GAAmB,UAAU3C,GAAa4C,GAAmB,CAAC,UAAU,SAAS,OAAO,EAAE,EAAEsB,EAAgB,EAAE,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,MAAM,CAAC,OAAO,OAAO,MAAM,MAAM,EAAE,QAAQ,YAAY,UAAUzD,GAAkBoC,EAAkB,EAAE,MAAM,OAAO,UAAU6C,GAAe,CAAC,EAAE,GAAGhG,GAAqB,CAAC,UAAU,CAAC,UAAUgG,GAAe,CAAC,CAAC,EAAE,UAAU,CAAC,UAAUA,GAAe,CAAC,CAAC,CAAC,EAAEpC,EAAYE,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAET,EAAW,CAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEqB,GAAa,GAAgBS,EAAMrD,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,OAAO,iBAAiBoC,EAAiB,SAAS,YAAY,SAAS,CAAciB,EAAMrD,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,UAAU,iBAAiBoC,EAAiB,SAAS,YAAY,SAAS,CAActC,EAAK2D,EAA0B,CAAC,MAAM,QAAqEP,GAAkB,OAAQ,OAAO,qBAAqB,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKtC,GAAY,CAAC,UAAU,+CAA+C,UAAU,GAAM,UAAU,YAAY,OAAO,OAAO,UAAU,iCAAiC,GAAG,YAAY,UAAU,WAAW,SAAS,YAAY,UAAU,wBAAwB,MAAM,CAAC,SAAS,OAAO,MAAM,MAAM,EAAE,UAAU,GAAK,UAAU,GAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAe6F,EAAMrD,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,QAAQ,iBAAiBoC,EAAiB,SAAS,YAAY,SAAS,CAActC,EAAK2D,EAA0B,CAAC,MAAM,aAA0EP,GAAkB,OAAQ,OAAO,uCAAuC,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,2BAA2B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKhC,GAAY,CAAC,UAAU,YAAY,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,MAAM,CAAC,OAAO,OAAO,MAAM,MAAM,EAAE,UAAU,YAAY,UAAU,4CAA4C,QAAQ,YAAY,UAAU,cAAc,MAAM,OAAO,UAAU,GAAG,GAAGI,GAAqB,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,MAAM,EAAE,UAAU,YAAY,QAAQ,WAAW,CAAC,EAAE4D,EAAYE,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAelC,EAAK2D,EAA0B,CAAC,MAAM,aAA0EP,GAAkB,OAAQ,OAAO,uCAAuC,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,2BAA2B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKhC,GAAY,CAAC,UAAU,YAAY,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,MAAM,CAAC,OAAO,OAAO,MAAM,MAAM,EAAE,UAAU,YAAY,UAAU,6CAA6C,QAAQ,YAAY,UAAU,eAAe,MAAM,OAAO,UAAU,GAAG,GAAGI,GAAqB,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,MAAM,EAAE,QAAQ,WAAW,CAAC,EAAE4D,EAAYE,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAelC,EAAK2D,EAA0B,CAAC,MAAM,aAA0EP,GAAkB,OAAQ,OAAO,uCAAuC,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,2BAA2B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKhC,GAAY,CAAC,UAAU,YAAY,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,MAAM,CAAC,OAAO,OAAO,MAAM,MAAM,EAAE,UAAU,YAAY,UAAU,6CAA6C,QAAQ,YAAY,UAAU,MAAM,MAAM,OAAO,UAAU,GAAG,GAAGI,GAAqB,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,MAAM,EAAE,UAAU,YAAY,QAAQ,WAAW,CAAC,EAAE4D,EAAYE,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAelC,EAAKE,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,UAAU,iBAAiBoC,EAAiB,SAAS,YAAY,SAAsBiB,EAAMrD,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,UAAU,iBAAiBoC,EAAiB,SAAS,YAAY,SAAS,CAAciB,EAAMrD,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,OAAO,iBAAiBoC,EAAiB,SAAS,YAAY,SAAS,CAActC,EAAK2D,EAA0B,CAAC,MAAM,aAA0EP,GAAkB,OAAQ,OAAO,uCAAuC,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKpC,GAAa,CAAC,OAAO,OAAO,GAAG,YAAY,UAAU,qBAAqB,SAAS,YAAY,MAAM,CAAC,MAAM,MAAM,EAAE,QAAQ,YAAY,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAe2F,EAAMrD,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,OAAO,iBAAiBoC,EAAiB,SAAS,YAAY,SAAS,CAActC,EAAK2D,EAA0B,CAAC,MAAM,aAA0EP,GAAkB,OAAQ,OAAO,uCAAuC,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,2BAA2B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKtC,GAAY,CAAC,UAAU,GAAG,UAAU,GAAM,UAAU,YAAY,OAAO,OAAO,UAAU,2DAA2D,GAAG,YAAY,UAAU,WAAW,SAAS,YAAY,UAAU,QAAQ,MAAM,CAAC,SAAS,OAAO,MAAM,MAAM,EAAE,UAAU,GAAM,UAAU,GAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAesC,EAAK2D,EAA0B,CAAC,MAAM,aAA0EP,GAAkB,OAAQ,OAAO,uCAAuC,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,2BAA2B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKtC,GAAY,CAAC,UAAU,GAAG,UAAU,GAAM,UAAU,YAAY,OAAO,OAAO,UAAU,gFAAgF,GAAG,YAAY,UAAU,WAAW,SAAS,YAAY,UAAU,0BAA0B,MAAM,CAAC,SAAS,OAAO,MAAM,MAAM,EAAE,UAAU,GAAM,UAAU,GAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAesC,EAAK2D,EAA0B,CAAC,MAAM,aAA0EP,GAAkB,OAAQ,OAAO,uCAAuC,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKtC,GAAY,CAAC,UAAU,GAAG,UAAU,GAAM,UAAU,YAAY,OAAO,OAAO,UAAU,kFAAkF,GAAG,YAAY,UAAU,WAAW,SAAS,YAAY,UAAU,0BAA0B,MAAM,CAAC,SAAS,OAAO,MAAM,MAAM,EAAE,UAAU,GAAM,UAAU,GAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAesC,EAAK2D,EAA0B,CAAC,MAAM,aAA0EP,GAAkB,OAAQ,OAAO,uCAAuC,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,2BAA2B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKtC,GAAY,CAAC,UAAU,GAAG,UAAU,GAAM,UAAU,YAAY,OAAO,OAAO,UAAU,gFAAgF,GAAG,YAAY,UAAU,WAAW,SAAS,YAAY,UAAU,+BAA+B,MAAM,CAAC,SAAS,OAAO,MAAM,MAAM,EAAE,UAAU,GAAM,UAAU,GAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAesC,EAAK2D,EAA0B,CAAC,MAAM,aAA0EP,GAAkB,OAAQ,OAAO,uCAAuC,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKtC,GAAY,CAAC,UAAU,GAAG,UAAU,GAAM,UAAU,YAAY,OAAO,OAAO,UAAU,kEAAkE,GAAG,YAAY,UAAU,WAAW,SAAS,YAAY,UAAU,gBAAgB,MAAM,CAAC,SAAS,OAAO,MAAM,MAAM,EAAE,UAAU,GAAM,UAAU,GAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAe6F,EAAMrD,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,OAAO,iBAAiBoC,EAAiB,SAAS,YAAY,SAAS,CAActC,EAAK2D,EAA0B,CAAC,MAAM,aAA0EP,GAAkB,OAAQ,OAAO,uCAAuC,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,2BAA2B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKpC,GAAa,CAAC,OAAO,OAAO,GAAG,YAAY,UAAU,uBAAuB,SAAS,YAAY,MAAM,CAAC,MAAM,MAAM,EAAE,QAAQ,YAAY,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAe2F,EAAMrD,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,OAAO,iBAAiBoC,EAAiB,SAAS,YAAY,SAAS,CAActC,EAAK2D,EAA0B,CAAC,MAAM,aAA0EP,GAAkB,OAAQ,OAAO,uCAAuC,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,2BAA2B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKtC,GAAY,CAAC,UAAU,GAAG,UAAU,GAAM,UAAU,YAAY,OAAO,OAAO,UAAU,qCAAqC,GAAG,YAAY,UAAU,OAAO,SAAS,YAAY,UAAU,cAAc,MAAM,CAAC,SAAS,OAAO,MAAM,MAAM,EAAE,UAAU,GAAM,UAAU,GAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAesC,EAAKyD,GAAa,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,EAAE,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,EAAE,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,CAAC,EAAE,SAASY,IAA6BrE,EAAK2D,EAA0B,CAAC,MAAM,aAA0EP,GAAkB,OAAQ,OAAO,uCAAuC,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,2BAA2B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKtC,GAAY,CAAC,UAAU,GAAG,UAAU,GAAM,UAAU,YAAY,OAAO,OAAO,UAAU2G,GAAe,CAAC,EAAE,GAAG,YAAY,UAAU,OAAO,SAAS,YAAY,UAAU,YAAY,MAAM,CAAC,SAAS,OAAO,MAAM,MAAM,EAAE,UAAU,GAAM,UAAU,GAAM,MAAM,OAAO,GAAGjG,GAAqB,CAAC,UAAU,CAAC,UAAUiG,GAAe,CAAC,CAAC,EAAE,UAAU,CAAC,UAAUA,GAAe,CAAC,CAAC,CAAC,EAAErC,EAAYE,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAelC,EAAK2D,EAA0B,CAAC,MAAM,aAA0EP,GAAkB,OAAQ,OAAO,uCAAuC,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKtC,GAAY,CAAC,UAAU,GAAG,UAAU,GAAM,UAAU,YAAY,OAAO,OAAO,UAAU,mCAAmC,GAAG,YAAY,UAAU,OAAO,SAAS,YAAY,UAAU,gBAAgB,MAAM,CAAC,SAAS,OAAO,MAAM,MAAM,EAAE,UAAU,GAAM,UAAU,GAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAesC,EAAK2D,EAA0B,CAAC,MAAM,aAA0EP,GAAkB,OAAQ,OAAO,uCAAuC,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,2BAA2B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKtC,GAAY,CAAC,UAAU,GAAG,UAAU,GAAM,UAAU,YAAY,OAAO,OAAO,UAAU,6CAA6C,GAAG,YAAY,UAAU,OAAO,SAAS,YAAY,UAAU,eAAe,MAAM,CAAC,SAAS,OAAO,MAAM,MAAM,EAAE,UAAU,GAAM,UAAU,GAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEqF,GAAa,GAAgBQ,EAAMrD,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,YAAY,iBAAiBoC,EAAiB,SAAS,YAAY,SAAS,CAActC,EAAKE,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,UAAU,iBAAiBoC,EAAiB,SAAS,YAAY,SAAsBtC,EAAKE,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,OAAO,iBAAiBoC,EAAiB,SAAS,YAAY,SAAsBiB,EAAMrD,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,OAAO,iBAAiBoC,EAAiB,SAAS,YAAY,SAAS,CAActC,EAAKyD,GAAa,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,EAAE,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,EAAE,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,CAAC,EAAE,SAASa,IAA6BtE,EAAK2D,EAA0B,CAAC,MAAM,QAAqEP,GAAkB,OAAQ,OAAO,qBAAqB,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKtC,GAAY,CAAC,UAAU,gCAAgC,UAAU,GAAM,UAAU,YAAY,OAAO,OAAO,UAAU4G,GAAe,CAAC,EAAE,GAAG,YAAY,UAAU,OAAO,SAAS,YAAY,UAAU,QAAQ,MAAM,CAAC,SAAS,OAAO,MAAM,MAAM,EAAE,UAAU,GAAK,UAAU,GAAM,MAAM,OAAO,GAAGlG,GAAqB,CAAC,UAAU,CAAC,UAAUkG,GAAe,CAAC,CAAC,EAAE,UAAU,CAAC,UAAUA,GAAe,CAAC,CAAC,CAAC,EAAEtC,EAAYE,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAelC,EAAK2D,EAA0B,CAAC,MAAM,QAAqEP,GAAkB,OAAQ,OAAO,qBAAqB,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,2BAA2B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKtC,GAAY,CAAC,UAAU,6BAA6B,UAAU,GAAM,UAAU,YAAY,OAAO,OAAO,UAAU,iCAAiC,GAAG,YAAY,UAAU,OAAO,SAAS,YAAY,UAAU,UAAU,MAAM,CAAC,SAAS,OAAO,MAAM,MAAM,EAAE,UAAU,GAAK,UAAU,GAAM,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAesC,EAAKyD,GAAa,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,EAAE,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,EAAE,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,CAAC,EAAE,SAASc,IAA6BvE,EAAK2D,EAA0B,CAAC,MAAM,QAAqEP,GAAkB,OAAQ,OAAO,qBAAqB,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKtC,GAAY,CAAC,UAAU,iDAAiD,UAAU,GAAM,UAAU,YAAY,OAAO,OAAO,UAAU6G,GAAe,CAAC,EAAE,GAAG,YAAY,UAAU,OAAO,SAAS,YAAY,UAAU,WAAW,MAAM,CAAC,SAAS,OAAO,MAAM,MAAM,EAAE,UAAU,GAAK,UAAU,GAAM,MAAM,OAAO,GAAGnG,GAAqB,CAAC,UAAU,CAAC,UAAUmG,GAAe,CAAC,CAAC,EAAE,UAAU,CAAC,UAAUA,GAAe,CAAC,CAAC,CAAC,EAAEvC,EAAYE,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAelC,EAAKyD,GAAa,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,EAAE,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,EAAE,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,CAAC,EAAE,SAASe,IAA6BxE,EAAK2D,EAA0B,CAAC,MAAM,QAAqEP,GAAkB,OAAQ,OAAO,qBAAqB,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,2BAA2B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKtC,GAAY,CAAC,UAAU,6BAA6B,UAAU,GAAM,UAAU,YAAY,OAAO,OAAO,UAAU8G,GAAe,CAAC,EAAE,GAAG,YAAY,UAAU,OAAO,SAAS,YAAY,UAAU,OAAO,MAAM,CAAC,SAAS,OAAO,MAAM,MAAM,EAAE,UAAU,GAAK,UAAU,GAAM,MAAM,OAAO,GAAGpG,GAAqB,CAAC,UAAU,CAAC,UAAUoG,GAAe,CAAC,CAAC,EAAE,UAAU,CAAC,UAAUA,GAAe,CAAC,CAAC,CAAC,EAAExC,EAAYE,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAelC,EAAKyD,GAAa,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,8BAA8B,EAAE,UAAU,WAAW,EAAE,sBAAsB,MAAS,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,8BAA8B,EAAE,UAAU,WAAW,EAAE,sBAAsB,MAAS,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,8BAA8B,EAAE,UAAU,WAAW,EAAE,sBAAsB,MAAS,CAAC,EAAE,SAASgB,IAA8BzE,EAAK2D,EAA0B,CAAC,MAAM,QAAqEP,GAAkB,OAAQ,OAAO,qBAAqB,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKtC,GAAY,CAAC,UAAU,wCAAwC,UAAU,GAAM,UAAU,YAAY,OAAO,OAAO,UAAU+G,GAAgB,CAAC,EAAE,GAAG,YAAY,UAAU,OAAO,SAAS,YAAY,UAAU,aAAa,MAAM,CAAC,SAAS,OAAO,MAAM,MAAM,EAAE,UAAU,GAAK,UAAU,GAAM,MAAM,OAAO,GAAGrG,GAAqB,CAAC,UAAU,CAAC,UAAUqG,GAAgB,CAAC,CAAC,EAAE,UAAU,CAAC,UAAUA,GAAgB,CAAC,CAAC,CAAC,EAAEzC,EAAYE,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAelC,EAAKE,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,UAAU,iBAAiBoC,EAAiB,SAAS,YAAY,SAAsBiB,EAAMrD,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,UAAU,iBAAiBoC,EAAiB,SAAS,YAAY,SAAS,CAActC,EAAKyD,GAAa,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,EAAE,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,EAAE,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,CAAC,EAAE,SAASiB,IAA8B1E,EAAK2D,EAA0B,CAAC,MAAM,QAAqEP,GAAkB,OAAQ,OAAO,uBAAuB,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKtC,GAAY,CAAC,UAAU,iCAAiC,UAAU,GAAM,UAAU,YAAY,OAAO,OAAO,UAAUgH,GAAgB,CAAC,EAAE,GAAG,YAAY,UAAU,WAAW,SAAS,YAAY,UAAU,OAAO,MAAM,CAAC,SAAS,OAAO,MAAM,MAAM,EAAE,UAAU,GAAK,UAAU,GAAM,MAAM,OAAO,GAAGtG,GAAqB,CAAC,UAAU,CAAC,UAAUsG,GAAgB,CAAC,CAAC,EAAE,UAAU,CAAC,UAAUA,GAAgB,CAAC,CAAC,CAAC,EAAE1C,EAAYE,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAelC,EAAKE,EAAO,IAAI,CAAC,UAAU,gBAAgB,iBAAiBoC,EAAiB,SAAS,YAAY,SAAsBtC,EAAKZ,GAAU,CAAC,MAAM,CAAC,KAAK,CAAC,KAAKuF,GAAK,KAAK,YAAY,EAAE,MAAM,CAAC,KAAK,eAAe,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,YAAY,KAAK,YAAY,EAAE,CAAC,KAAK,YAAY,KAAK,YAAY,EAAE,CAAC,KAAK,YAAY,KAAK,YAAY,EAAE,CAAC,KAAK,YAAY,KAAK,YAAY,EAAE,CAAC,KAAK,KAAK,KAAK,YAAY,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,YAAY,EAAE,SAAS,MAAM,MAAM,CAAC,KAAK,YAAY,KAAK,YAAY,EAAE,KAAK,iBAAiB,CAAC,EAAE,SAASC,IAAaA,GAAY,IAAI,CAAC,CAAC,UAAUlD,GAAmB,UAAUC,GAAmB,UAAUC,GAAmB,UAAUC,GAAmB,GAAGC,EAAW,EAAEoC,KAAyBlE,EAAKsD,GAAY,CAAC,GAAG,aAAaxB,EAAW,GAAG,SAAsB9B,EAAKmE,GAAqB,SAAS,CAAC,MAAM,CAAC,UAAUtC,EAAkB,EAAE,SAAsB7B,EAAKyD,GAAa,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU5B,EAAkB,EAAE,UAAU,WAAW,EAAE,sBAAsB,MAAS,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,UAAUA,EAAkB,EAAE,UAAU,WAAW,EAAE,sBAAsB,MAAS,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,UAAUA,EAAkB,EAAE,UAAU,WAAW,EAAE,sBAAsB,MAAS,CAAC,EAAE,SAASgD,IAA8B7E,EAAK2D,EAA0B,CAAC,MAAM,YAAyEP,GAAkB,OAAQ,OAAO,oCAAoC,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,2BAA2B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKlC,GAAqB,CAAC,UAAU4D,GAAmB,UAAUhD,GAAaiD,GAAmB,CAAC,UAAU,SAAS,OAAO,EAAE,EAAEiB,EAAgB,EAAE,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,MAAM,CAAC,MAAM,MAAM,EAAE,QAAQ,YAAY,UAAUzD,GAAkByC,EAAkB,EAAE,MAAM,OAAO,UAAUiD,GAAgB,CAAC,EAAE,GAAGzG,GAAqB,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,OAAO,MAAM,MAAM,EAAE,UAAUyG,GAAgB,CAAC,CAAC,EAAE,UAAU,CAAC,UAAUA,GAAgB,CAAC,CAAC,CAAC,EAAE7C,EAAYE,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEJ,EAAW,CAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEkB,EAAa,GAAgBhD,EAAKE,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,WAAW,iBAAiBoC,EAAiB,SAAS,YAAY,SAAsBiB,EAAMrD,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,UAAU,iBAAiBoC,EAAiB,SAAS,YAAY,SAAS,CAActC,EAAKyD,GAAa,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,EAAE,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,EAAE,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,CAAC,EAAE,SAASqB,IAA8B9E,EAAK2D,EAA0B,CAAC,MAAM,gBAA6EP,GAAkB,OAAQ,OAAO,iCAA8FA,GAAkB,OAAQ,OAAO,UAAU,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKtC,GAAY,CAAC,UAAU,qCAAqC,UAAU,GAAM,UAAU,YAAY,OAAO,OAAO,UAAUoH,GAAgB,CAAC,EAAE,GAAG,YAAY,UAAU,WAAW,SAAS,YAAY,UAAU,aAAa,MAAM,CAAC,SAAS,OAAO,MAAM,MAAM,EAAE,UAAU,GAAM,UAAU,GAAM,MAAM,OAAO,GAAG1G,GAAqB,CAAC,UAAU,CAAC,UAAU0G,GAAgB,CAAC,CAAC,EAAE,UAAU,CAAC,UAAUA,GAAgB,CAAC,CAAC,CAAC,EAAE9C,EAAYE,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAelC,EAAKyD,GAAa,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,EAAE,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,EAAE,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,CAAC,EAAE,SAASsB,IAA8B/E,EAAK2D,EAA0B,CAAC,MAAM,gBAA6EP,GAAkB,OAAQ,OAAO,iCAA8FA,GAAkB,OAAQ,OAAO,UAAU,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKtC,GAAY,CAAC,UAAU,iDAAiD,UAAU,GAAM,UAAU,YAAY,OAAO,OAAO,UAAUqH,GAAgB,CAAC,EAAE,GAAG,YAAY,UAAU,WAAW,SAAS,YAAY,UAAU,uBAAuB,MAAM,CAAC,SAAS,OAAO,MAAM,MAAM,EAAE,UAAU,GAAM,UAAU,GAAM,MAAM,OAAO,GAAG3G,GAAqB,CAAC,UAAU,CAAC,UAAU2G,GAAgB,CAAC,CAAC,EAAE,UAAU,CAAC,UAAUA,GAAgB,CAAC,CAAC,CAAC,EAAE/C,EAAYE,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAelC,EAAKyD,GAAa,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,EAAE,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,EAAE,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,CAAC,EAAE,SAASuB,IAA8BhF,EAAK2D,EAA0B,CAAC,MAAM,gBAA6EP,GAAkB,OAAQ,OAAO,iCAA8FA,GAAkB,OAAQ,OAAO,UAAU,GAAGhF,GAAqB,CAAC,UAAU,CAAC,MAAM,QAAqEgF,GAAkB,OAAQ,OAAO,UAAU,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBlC,EAAKE,EAAO,IAAI,CAAC,UAAU,2BAA2B,iBAAiBoC,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKtC,GAAY,CAAC,UAAU,qDAAqD,UAAU,GAAM,UAAU,YAAY,OAAO,OAAO,UAAUsH,GAAgB,CAAC,EAAE,GAAG,YAAY,UAAU,WAAW,SAAS,YAAY,UAAU,mBAAmB,MAAM,CAAC,SAAS,OAAO,MAAM,MAAM,EAAE,UAAU,GAAM,UAAU,GAAM,MAAM,OAAO,GAAG5G,GAAqB,CAAC,UAAU,CAAC,UAAU4G,GAAgB,CAAC,CAAC,EAAE,UAAU,CAAC,UAAUA,GAAgB,CAAC,CAAC,CAAC,EAAEhD,EAAYE,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,EAAQ+C,GAAI,CAAC,kFAAkF,gFAAgF,uSAAuS,iXAAiX,kRAAkR,y8BAAy8B,uSAAuS,mZAAmZ,unBAAunB,4UAA4U,8RAA8R,6QAA6Q,qOAAqO,kRAAkR,yRAAyR,kRAAkR,yRAAyR,uRAAuR,ySAAyS,6QAA6Q,gRAAgR,6SAA6S,mRAAmR,2GAA2G,2RAA2R,4MAA4M,qjKAAqjK,0NAA0N,wFAAwF,onBAAonB,0IAA0I,+GAA+G,gKAAgK,g8BAAg8B,sLAAsL,2HAA2H,0NAA0N,4EAA4E,47BAA47B,uJAAuJ,yEAAyE,gHAAgH,sHAAsH,6pCAA6pC,0HAA0H,+oBAA+oB,EAQpl0EC,GAAgBC,GAAQtE,GAAUoE,GAAI,cAAc,EAASG,GAAQF,GAAgBA,GAAgB,YAAY,aAAaA,GAAgB,aAAa,CAAC,OAAO,OAAO,MAAM,IAAI,EAAEG,GAAoBH,GAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAW,EAAE,aAAa,CAAC,WAAW,UAAU,2BAAsB,OAAO,wBAAmB,YAAY,6BAAwB,WAAW,wBAAmB,EAAE,MAAM,UAAU,KAAKI,EAAY,IAAI,CAAC,CAAC,EAAEC,GAASL,GAAgB,CAAC,CAAC,cAAc,GAAK,MAAM,CAAC,CAAC,EAAE,GAAG1H,GAAiB,GAAGG,GAAkB,GAAGE,GAA0B,GAAGE,EAAgB,EAAE,CAAC,6BAA6B,EAAI,CAAC,ECRlG,IAAMyH,GAAaC,GAASC,EAAO,EAAQC,GAAgBC,GAAoBF,EAAO,EAAQG,GAAgB,CAAC,UAAU,CAAC,MAAM,EAAI,EAAE,UAAU,CAAC,MAAM,EAAI,CAAC,EAAQC,GAAW,CAAC,YAAY,YAAY,WAAW,EAAQC,GAAkB,eAAqBC,GAAkB,CAAC,UAAU,kBAAkB,UAAU,kBAAkB,UAAU,iBAAiB,EAAE,SAASC,GAAqBC,KAAaC,EAAS,CAAC,IAAMC,EAAc,CAAC,EAAE,OAA0CD,GAAS,QAAQE,GAASA,GAAS,OAAO,OAAOD,EAAcF,EAAUG,CAAO,CAAC,CAAC,EAASD,CAAc,CAAC,IAAME,GAAY,CAAC,QAAQ,GAAG,MAAM,EAAE,KAAK,EAAE,UAAU,IAAI,KAAK,QAAQ,EAAQC,GAAW,CAAC,CAAC,MAAAC,EAAM,SAAAC,CAAQ,IAAI,CAAC,IAAMC,EAAaC,GAAWC,CAAmB,EAAQC,EAAWL,GAAmCE,EAAO,WAAiBI,EAAmBC,GAAQ,KAAK,CAAC,GAAGL,EAAO,WAAAG,CAAU,GAAG,CAAC,KAAK,UAAUA,CAAU,CAAC,CAAC,EAAE,OAAoBG,EAAKJ,EAAoB,SAAS,CAAC,MAAME,EAAa,SAASL,CAAQ,CAAC,CAAE,EAAQQ,GAASC,EAAaC,CAAQ,EAAQC,GAAqB,CAAC,SAAS,YAAY,wBAAmB,YAAY,yBAAoB,YAAY,2BAAsB,YAAY,6BAAwB,YAAY,KAAK,YAAY,SAAS,YAAY,QAAQ,YAAY,UAAU,WAAW,EAAQC,GAAwB,CAAC,OAAO,YAAY,QAAQ,YAAY,KAAK,WAAW,EAAQC,GAAS,CAAC,CAAC,OAAAC,EAAO,GAAAC,EAAG,KAAAC,EAAK,MAAAC,EAAM,KAAAC,EAAK,MAAAC,EAAM,GAAGC,CAAK,IAAI,CAAC,IAAIC,EAA2BC,EAAKC,EAAMC,EAAMC,EAAuCC,EAAM,MAAM,CAAC,GAAGN,EAAM,WAAWG,GAAOD,GAAMD,EAA2BV,GAAqBO,CAAI,KAAK,MAAMG,IAA6B,OAAOA,EAA2BH,KAAQ,MAAMI,IAAO,OAAOA,EAAKF,EAAM,aAAa,MAAMG,IAAQ,OAAOA,EAAM,YAAY,WAAWC,EAAMP,GAAmCG,EAAM,aAAa,MAAMI,IAAQ,OAAOA,EAAM,UAAU,UAAUR,GAAgCI,EAAM,UAAU,SAASM,GAAOD,EAAuCb,GAAwBQ,EAAM,OAAO,KAAK,MAAMK,IAAyC,OAAOA,EAAuCL,EAAM,WAAW,MAAMM,IAAQ,OAAOA,EAAM,WAAW,CAAE,EAAQC,GAAuB,CAACP,EAAM1B,IAAWA,EAAS,KAAK,GAAG,EAAE0B,EAAM,iBAAuBQ,GAA6BC,GAAW,SAAST,EAAMU,EAAI,CAAC,GAAK,CAAC,aAAAC,EAAa,UAAAC,CAAS,EAAEC,GAAc,EAAO,CAAC,MAAAC,EAAM,UAAAC,EAAU,SAAAC,EAAS,QAAAxC,EAAQ,UAAAyC,EAAU,UAAAC,EAAU,UAAAC,EAAU,GAAGC,CAAS,EAAE3B,GAASO,CAAK,EAAO,CAAC,YAAAqB,EAAY,WAAAC,EAAW,eAAAC,EAAe,gBAAAC,EAAgB,WAAAC,EAAW,SAAAnD,CAAQ,EAAEoD,GAAgB,CAAC,WAAAzD,GAAW,eAAe,YAAY,gBAAAD,GAAgB,QAAAQ,EAAQ,kBAAAL,EAAiB,CAAC,EAAQwD,EAAiBpB,GAAuBP,EAAM1B,CAAQ,EAAO,CAAC,sBAAAsD,EAAsB,MAAAC,CAAK,EAAEC,GAAyBT,CAAW,EAAQU,EAAaH,EAAsB,SAASI,KAAO,CAACP,EAAW,WAAW,CAAE,CAAC,EAAQQ,EAAYL,EAAsB,SAASI,KAAO,CAACP,EAAW,WAAW,CAAE,CAAC,EAAQS,EAAWC,GAAO,IAAI,EAAQC,EAAY,IAAQ,GAAAb,IAAiB,mBAAiC,CAAC,YAAY,WAAW,EAAE,SAASF,CAAW,GAAmCgB,EAAa,IAAQhB,IAAc,YAA6CiB,EAAsBC,GAAM,EAAQC,EAAsB,CAAazB,EAAS,EAAQ0B,EAAkBC,GAAqB,EAAE,OAAoBvD,EAAKwD,GAAY,CAAC,GAAG3B,GAA4CsB,EAAgB,SAAsBnD,EAAKC,GAAS,CAAC,QAAQd,EAAS,QAAQ,GAAM,SAAsBa,EAAKT,GAAW,CAAC,MAAMD,GAAY,SAAsBU,EAAKyD,EAAK,CAAC,KAAK3B,EAAU,aAAa,GAAM,GAAG7C,GAAqB,CAAC,kBAAkB,CAAC,KAAK,MAAS,EAAE,UAAU,CAAC,KAAK,MAAS,EAAE,UAAU,CAAC,KAAK,MAAS,CAAC,EAAEiD,EAAYE,CAAc,EAAE,SAAsBsB,EAAMxD,EAAO,EAAE,CAAC,GAAG+B,EAAU,UAAU,GAAG0B,GAAG5E,GAAkB,GAAGsE,EAAsB,gBAAgBzB,EAAUO,CAAU,CAAC,iBAAiB,mBAAmB,UAAU,iBAAiBK,EAAiB,SAAS,YAAY,WAAW,IAAIH,EAAgB,CAAC,UAAU,EAAK,CAAC,EAAE,aAAa,IAAIA,EAAgB,CAAC,UAAU,EAAI,CAAC,EAAE,MAAM,IAAIA,EAAgB,CAAC,UAAU,EAAK,CAAC,EAAE,YAAY,IAAIA,EAAgB,CAAC,UAAU,EAAK,CAAC,EAAE,WAAW,IAAIA,EAAgB,CAAC,UAAU,EAAI,CAAC,EAAE,IAAId,GAA6BwB,EAAK,MAAM,CAAC,GAAGpB,CAAK,EAAE,GAAG1C,GAAqB,CAAC,kBAAkB,CAAC,mBAAmB,MAAS,EAAE,kBAAkB,CAAC,mBAAmB,MAAS,EAAE,UAAU,CAAC,mBAAmB,MAAM,EAAE,UAAU,CAAC,mBAAmB,QAAQ,CAAC,EAAEiD,EAAYE,CAAc,EAAE,SAAS,CAAcsB,EAAMxD,EAAO,IAAI,CAAC,UAAU,gBAAgB,cAAc,GAAK,mBAAmB,SAAS,iBAAiBsC,EAAiB,SAAS,YAAY,MAAM,CAAC,wBAAwB,MAAM,iBAAiB,8EAA8E,sBAAsB,MAAM,uBAAuB,MAAM,iBAAiB,QAAQ,qBAAqB,QAAQ,gBAAgB,kBAAkB,EAAE,SAAS,CAAC,kBAAkB,CAAC,gBAAgB,2BAA2B,EAAE,kBAAkB,CAAC,gBAAgB,2BAA2B,CAAC,EAAE,GAAGvD,GAAqB,CAAC,UAAU,CAAC,iBAAiB,GAAK,MAAM2D,CAAY,EAAE,UAAU,CAAC,iBAAiB,GAAK,MAAME,CAAW,CAAC,EAAEZ,EAAYE,CAAc,EAAE,SAAS,CAAcpC,EAAK4D,GAAS,CAAC,sBAAsB,GAAK,SAAsB5D,EAAWG,EAAS,CAAC,SAAsBH,EAAKE,EAAO,EAAE,CAAC,UAAU,8BAA8B,qBAAqB,YAAY,MAAM,CAAC,sBAAsB,gGAAgG,EAAE,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,gBAAgB,MAAM,CAAC,OAAO,EAAE,iBAAiBsC,EAAiB,SAAS,YAAY,MAAM,CAAC,qBAAqB,wEAAwE,2BAA2B,mBAAmB,gCAAgC,WAAW,EAAE,KAAKT,EAAU,kBAAkB,MAAM,mBAAmB,EAAI,CAAC,EAAEkB,EAAY,GAAgBjD,EAAK6D,GAAI,CAAC,UAAU,gBAAgB,mBAAmB,UAAU,OAAO,WAAW,iBAAiBrB,EAAiB,SAAS,YAAY,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,uTAAuT,aAAa,WAAW,mBAAmB,GAAK,GAAGvD,GAAqB,CAAC,UAAU,CAAC,IAAI,mWAAmW,aAAa,UAAU,EAAE,UAAU,CAAC,IAAI,0TAA0T,aAAa,UAAU,CAAC,EAAEiD,EAAYE,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEc,EAAa,GAAgBlD,EAAKE,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,QAAQ,iBAAiBsC,EAAiB,SAAS,YAAY,MAAM,CAAC,gBAAgB,oBAAoB,EAAE,SAAsBxC,EAAK8D,EAA0B,CAAC,GAAG7E,GAAqB,CAAC,UAAU,CAAC,MAAM,OAAoEqE,GAAkB,OAAQ,OAAO,QAAQ,CAAC,EAAEpB,EAAYE,CAAc,EAAE,SAAsBpC,EAAKE,EAAO,IAAI,CAAC,UAAU,2BAA2B,iBAAiBsC,EAAiB,SAAS,sBAAsB,SAAsBxC,EAAKtB,GAAQ,CAAC,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,MAAM,CAAC,MAAM,MAAM,EAAE,QAAQsD,EAAU,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,EAAQ+B,GAAI,CAAC,kFAAkF,gFAAgF,wSAAwS,mQAAmQ,gHAAgH,8FAA8F,6QAA6Q,2GAA2G,0nBAA0nB,iEAAiE,kHAAkH,GAAeA,GAAI,+bAA+b,EASxoWC,GAAgBC,GAAQ5C,GAAU0C,GAAI,cAAc,EAASG,GAAQF,GAAgBA,GAAgB,YAAY,iCAA4BA,GAAgB,aAAa,CAAC,OAAO,GAAG,MAAM,GAAG,EAAEG,GAAoBH,GAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,YAAY,WAAW,EAAE,aAAa,CAAC,UAAU,OAAO,QAAQ,EAAE,MAAM,UAAU,KAAKI,EAAY,IAAI,EAAE,UAAU,CAAC,MAAM,OAAO,KAAKA,EAAY,IAAI,EAAE,UAAU,CAAC,aAAa,UAAU,gBAAgB,GAAM,YAAY,GAAG,MAAM,QAAQ,KAAKA,EAAY,MAAM,EAAE,UAAmEzF,IAAgB,SAAa,CAAC,GAAGA,GAAgB,QAAW,aAAa,YAAY,YAAY,OAAU,OAAO,OAAU,MAAM,MAAM,CAAC,CAAC,EAAE0F,GAASL,GAAgB,CAAC,CAAC,cAAc,GAAK,MAAM,CAAC,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,0EAA0E,IAAI,yEAAyE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,wDAAwD,IAAI,qEAAqE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,cAAc,IAAI,sEAAsE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,cAAc,IAAI,kEAAkE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,uGAAuG,IAAI,sEAAsE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,6JAA6J,IAAI,kEAAkE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,oGAAoG,IAAI,uEAAuE,OAAO,KAAK,CAAC,CAAC,EAAE,GAAGxF,GAAa,GAAG8F,GAAoCC,EAAK,CAAC,EAAE,CAAC,6BAA6B,EAAI,CAAC,ECT5mE,IAAMC,GAAgB,CAAC,UAAU,CAAC,MAAM,EAAI,CAAC,EAAQC,GAAW,CAAC,WAAW,EAAQC,GAAkB,eAAqBC,GAAkB,CAAC,UAAU,iBAAiB,EAAE,SAASC,GAAqBC,KAAaC,EAAS,CAAC,IAAMC,EAAc,CAAC,EAAE,OAA0CD,GAAS,QAAQE,GAASA,GAAS,OAAO,OAAOD,EAAcF,EAAUG,CAAO,CAAC,CAAC,EAASD,CAAc,CAAC,IAAME,GAAY,CAAC,MAAM,EAAE,SAAS,GAAG,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,OAAO,EAAQC,GAAW,CAAC,CAAC,MAAAC,EAAM,SAAAC,CAAQ,IAAI,CAAC,IAAMC,EAAaC,GAAWC,CAAmB,EAAQC,EAAWL,GAAmCE,EAAO,WAAiBI,EAAmBC,GAAQ,KAAK,CAAC,GAAGL,EAAO,WAAAG,CAAU,GAAG,CAAC,KAAK,UAAUA,CAAU,CAAC,CAAC,EAAE,OAAoBG,EAAKJ,EAAoB,SAAS,CAAC,MAAME,EAAa,SAASL,CAAQ,CAAC,CAAE,EAAQQ,GAASC,EAAaC,CAAQ,EAAQC,GAAS,CAAC,CAAC,OAAAC,EAAO,GAAAC,EAAG,kBAAAC,EAAkB,WAAAC,EAAW,WAAAC,EAAW,MAAAC,EAAM,GAAGC,CAAK,IAAI,CAAC,IAAIC,EAAKC,EAAMC,EAAM,MAAM,CAAC,GAAGH,EAAM,WAAWC,EAAKH,GAAkDE,EAAM,aAAa,MAAMC,IAAO,OAAOA,EAAK,iDAAiD,WAAWC,EAAML,GAAkDG,EAAM,aAAa,MAAME,IAAQ,OAAOA,EAAM,aAAa,WAAWC,EAAMP,GAAuEI,EAAM,aAAa,MAAMG,IAAQ,OAAOA,EAAM,GAAG,CAAE,EAAQC,GAAuB,CAACJ,EAAMxB,IAAWA,EAAS,KAAK,GAAG,EAAEwB,EAAM,iBAAuBK,GAA6BC,GAAW,SAASN,EAAMO,EAAI,CAAC,GAAK,CAAC,aAAAC,EAAa,UAAAC,CAAS,EAAEC,GAAc,EAAO,CAAC,MAAAC,EAAM,UAAAC,EAAU,SAAAC,EAAS,QAAAnC,EAAQ,UAAAoC,EAAU,UAAAC,EAAU,UAAAC,EAAU,GAAGC,CAAS,EAAExB,GAASO,CAAK,EAAO,CAAC,YAAAkB,EAAY,WAAAC,EAAW,eAAAC,EAAe,gBAAAC,EAAgB,WAAAC,EAAW,SAAA9C,CAAQ,EAAE+C,GAAgB,CAAC,WAAApD,GAAW,eAAe,YAAY,gBAAAD,GAAgB,QAAAQ,EAAQ,kBAAAL,EAAiB,CAAC,EAAQmD,EAAiBpB,GAAuBJ,EAAMxB,CAAQ,EAAQiD,EAAWC,GAAO,IAAI,EAAQC,EAAsBC,GAAM,EAAQC,EAAsB,CAAC,EAAQC,EAAkBC,GAAqB,EAAE,OAAoB1C,EAAK2C,GAAY,CAAC,GAAGnB,GAA4Cc,EAAgB,SAAsBtC,EAAKC,GAAS,CAAC,QAAQd,EAAS,QAAQ,GAAM,SAAsBa,EAAKT,GAAW,CAAC,MAAMD,GAAY,SAAsBsD,EAAM1C,EAAO,IAAI,CAAC,GAAG0B,EAAU,UAAUiB,GAAG9D,GAAkB,GAAGyD,EAAsB,gBAAgBjB,EAAUO,CAAU,EAAE,mBAAmB,UAAU,iBAAiBK,EAAiB,SAAS,YAAY,WAAW,IAAIH,EAAgB,CAAC,UAAU,EAAK,CAAC,EAAE,aAAa,IAAIA,EAAgB,CAAC,UAAU,EAAI,CAAC,EAAE,MAAM,IAAIA,EAAgB,CAAC,UAAU,EAAK,CAAC,EAAE,YAAY,IAAIA,EAAgB,CAAC,UAAU,EAAK,CAAC,EAAE,WAAW,IAAIA,EAAgB,CAAC,UAAU,EAAI,CAAC,EAAE,IAAId,GAA6BkB,EAAK,MAAM,CAAC,gBAAgB,mBAAmB,uBAAuB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,GAAGd,CAAK,EAAE,SAAS,CAAC,kBAAkB,CAAC,gBAAgB,qBAAqB,CAAC,EAAE,GAAGrC,GAAqB,CAAC,kBAAkB,CAAC,mBAAmB,MAAS,CAAC,EAAE4C,EAAYE,CAAc,EAAE,SAAS,CAAc/B,EAAKE,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,SAAS,iBAAiBiC,EAAiB,SAAS,YAAY,MAAM,CAAC,gBAAgB,wEAAwE,uBAAuB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,EAAE,SAAsBnC,EAAK8C,GAAS,CAAC,sBAAsB,GAAK,SAAsB9C,EAAWG,EAAS,CAAC,SAAsBH,EAAKE,EAAO,EAAE,CAAC,MAAM,CAAC,kBAAkB,mCAAmC,uBAAuB,2BAA2B,qBAAqB,OAAO,uBAAuB,QAAQ,sBAAsB,6FAA6F,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,UAAU,gBAAgB,MAAM,CAAC,wBAAwB,EAAE,iBAAiBiC,EAAiB,SAAS,YAAY,MAAM,CAAC,qBAAqB,qEAAqE,2BAA2B,mBAAmB,gCAAgC,WAAW,EAAE,KAAKR,EAAU,kBAAkB,MAAM,mBAAmB,EAAI,CAAC,CAAC,CAAC,EAAeiB,EAAM1C,EAAO,IAAI,CAAC,UAAU,iBAAiB,iBAAiBiC,EAAiB,SAAS,YAAY,SAAS,CAAcnC,EAAK8C,GAAS,CAAC,sBAAsB,GAAK,SAAsB9C,EAAWG,EAAS,CAAC,SAAsBH,EAAKE,EAAO,EAAE,CAAC,MAAM,CAAC,kBAAkB,mCAAmC,uBAAuB,2BAA2B,qBAAqB,OAAO,0BAA0B,SAAS,uBAAuB,MAAM,sBAAsB,gGAAgG,EAAE,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,UAAU,iBAAiB,MAAM,CAAC,wBAAwB,EAAE,iBAAiBiC,EAAiB,SAAS,YAAY,MAAM,CAAC,qBAAqB,wEAAwE,2BAA2B,mBAAmB,gCAAgC,WAAW,EAAE,KAAKV,EAAU,kBAAkB,MAAM,mBAAmB,EAAI,CAAC,EAAezB,EAAK8C,GAAS,CAAC,sBAAsB,GAAK,SAAsB9C,EAAWG,EAAS,CAAC,SAAsBH,EAAKE,EAAO,EAAE,CAAC,MAAM,CAAC,kBAAkB,mCAAmC,uBAAuB,2BAA2B,qBAAqB,OAAO,0BAA0B,SAAS,uBAAuB,MAAM,sBAAsB,gGAAgG,EAAE,SAAS,gDAAgD,CAAC,CAAC,CAAC,EAAE,UAAU,iBAAiB,MAAM,CAAC,wBAAwB,EAAE,iBAAiBiC,EAAiB,SAAS,YAAY,MAAM,CAAC,qBAAqB,wEAAwE,2BAA2B,mBAAmB,gCAAgC,WAAW,EAAE,KAAKT,EAAU,kBAAkB,MAAM,mBAAmB,EAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,EAAQqB,GAAI,CAAC,kFAAkF,kFAAkF,iVAAiV,oUAAoU,8KAA8K,+RAA+R,i2BAAi2B,EAS56QC,GAAgBC,GAAQjC,GAAU+B,GAAI,cAAc,EAASG,GAAQF,GAAgBA,GAAgB,YAAY,kBAAkBA,GAAgB,aAAa,CAAC,OAAO,GAAG,MAAM,GAAG,EAAEG,GAAoBH,GAAgB,CAAC,UAAU,CAAC,aAAa,aAAa,gBAAgB,GAAM,MAAM,aAAa,KAAKI,EAAY,MAAM,EAAE,UAAU,CAAC,aAAa,iDAAiD,gBAAgB,GAAM,MAAM,cAAc,KAAKA,EAAY,MAAM,EAAE,UAAU,CAAC,aAAa,IAAI,gBAAgB,GAAM,MAAM,sBAAsB,KAAKA,EAAY,MAAM,CAAC,CAAC,EAAEC,GAASL,GAAgB,CAAC,CAAC,cAAc,GAAK,MAAM,CAAC,CAAC,OAAO,kBAAkB,OAAO,SAAS,IAAI,uEAAuE,CAAC,CAAC,CAAC,EAAE,CAAC,6BAA6B,EAAI,CAAC,ECT/W,IAAMM,GAAgB,CAAC,UAAU,CAAC,MAAM,EAAI,CAAC,EAAQC,GAAW,CAAC,WAAW,EAAQC,GAAkB,eAAqBC,GAAkB,CAAC,UAAU,iBAAiB,EAAE,SAASC,GAAqBC,KAAaC,EAAS,CAAC,IAAMC,EAAc,CAAC,EAAE,OAA0CD,GAAS,QAAQE,GAASA,GAAS,OAAO,OAAOD,EAAcF,EAAUG,CAAO,CAAC,CAAC,EAASD,CAAc,CAAC,IAAME,GAAY,CAAC,MAAM,EAAE,SAAS,GAAG,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,OAAO,EAAQC,GAAW,CAAC,CAAC,MAAAC,EAAM,SAAAC,CAAQ,IAAI,CAAC,IAAMC,EAAaC,GAAWC,CAAmB,EAAQC,EAAWL,GAAmCE,EAAO,WAAiBI,EAAmBC,GAAQ,KAAK,CAAC,GAAGL,EAAO,WAAAG,CAAU,GAAG,CAAC,KAAK,UAAUA,CAAU,CAAC,CAAC,EAAE,OAAoBG,EAAKJ,EAAoB,SAAS,CAAC,MAAME,EAAa,SAASL,CAAQ,CAAC,CAAE,EAAQQ,GAASC,EAAaC,CAAQ,EAAQC,GAAS,CAAC,CAAC,OAAAC,EAAO,GAAAC,EAAG,KAAAC,EAAK,MAAAC,EAAM,MAAAC,EAAM,GAAGC,CAAK,IAAI,CAAC,IAAIC,EAAK,MAAM,CAAC,GAAGD,EAAM,WAAWC,EAAKH,GAAmCE,EAAM,aAAa,MAAMC,IAAO,OAAOA,EAAK,iBAAiB,UAAUJ,GAAgCG,EAAM,SAAS,CAAE,EAAQE,GAAuB,CAACF,EAAMvB,IAAWA,EAAS,KAAK,GAAG,EAAEuB,EAAM,iBAAuBG,GAA6BC,GAAW,SAASJ,EAAMK,EAAI,CAAC,GAAK,CAAC,aAAAC,EAAa,UAAAC,CAAS,EAAEC,GAAc,EAAO,CAAC,MAAAC,EAAM,UAAAC,EAAU,SAAAC,EAAS,QAAAhC,EAAQ,UAAAiC,EAAU,UAAAC,EAAU,GAAGC,CAAS,EAAEpB,GAASM,CAAK,EAAO,CAAC,YAAAe,EAAY,WAAAC,EAAW,eAAAC,EAAe,gBAAAC,EAAgB,WAAAC,EAAW,SAAA1C,CAAQ,EAAE2C,GAAgB,CAAC,WAAAhD,GAAW,eAAe,YAAY,gBAAAD,GAAgB,QAAAQ,EAAQ,kBAAAL,EAAiB,CAAC,EAAQ+C,EAAiBnB,GAAuBF,EAAMvB,CAAQ,EAAQ6C,EAAWC,GAAO,IAAI,EAAQC,EAAsBC,GAAM,EAAQC,EAAsB,CAAahB,EAAS,EAAQiB,EAAkBC,GAAqB,EAAE,OAAoBtC,EAAKuC,GAAY,CAAC,GAAGlB,GAA4Ca,EAAgB,SAAsBlC,EAAKC,GAAS,CAAC,QAAQd,EAAS,QAAQ,GAAM,SAAsBa,EAAKT,GAAW,CAAC,MAAMD,GAAY,SAAsBU,EAAKwC,EAAK,CAAC,KAAKjB,EAAU,SAAsBvB,EAAKE,EAAO,EAAE,CAAC,GAAGsB,EAAU,UAAU,GAAGiB,GAAG1D,GAAkB,GAAGqD,EAAsB,gBAAgBhB,EAAUM,CAAU,CAAC,iBAAiB,mBAAmB,UAAU,iBAAiBK,EAAiB,SAAS,YAAY,WAAW,IAAIH,EAAgB,CAAC,UAAU,EAAK,CAAC,EAAE,aAAa,IAAIA,EAAgB,CAAC,UAAU,EAAI,CAAC,EAAE,MAAM,IAAIA,EAAgB,CAAC,UAAU,EAAK,CAAC,EAAE,YAAY,IAAIA,EAAgB,CAAC,UAAU,EAAK,CAAC,EAAE,WAAW,IAAIA,EAAgB,CAAC,UAAU,EAAI,CAAC,EAAE,IAAIb,GAA6BiB,EAAK,MAAM,CAAC,gBAAgB,8EAA8E,uBAAuB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,GAAGb,CAAK,EAAE,SAAS,CAAC,kBAAkB,CAAC,gBAAgB,2BAA2B,CAAC,EAAE,GAAGlC,GAAqB,CAAC,kBAAkB,CAAC,mBAAmB,MAAS,CAAC,EAAEwC,EAAYE,CAAc,EAAE,SAAsB3B,EAAK0C,GAAS,CAAC,sBAAsB,GAAK,SAAsB1C,EAAWG,EAAS,CAAC,SAAsBH,EAAKE,EAAO,EAAE,CAAC,UAAU,+BAA+B,qBAAqB,YAAY,MAAM,CAAC,sBAAsB,gGAAgG,EAAE,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,UAAU,iBAAiB,MAAM,CAAC,OAAO,EAAE,iBAAiB6B,EAAiB,SAAS,YAAY,MAAM,CAAC,qBAAqB,wEAAwE,2BAA2B,mBAAmB,gCAAgC,WAAW,EAAE,KAAKT,EAAU,kBAAkB,MAAM,mBAAmB,EAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,EAAQqB,GAAI,CAAC,kFAAkF,gFAAgF,iSAAiS,iHAAiH,yWAAyW,GAAeA,EAAG,EASx+JC,GAAgBC,GAAQhC,GAAU8B,GAAI,cAAc,EAASG,GAAQF,GAAgBA,GAAgB,YAAY,wBAAwBA,GAAgB,aAAa,CAAC,OAAO,GAAG,MAAM,GAAG,EAAEG,GAAoBH,GAAgB,CAAC,UAAU,CAAC,aAAa,iBAAiB,gBAAgB,GAAM,MAAM,QAAQ,KAAKI,EAAY,MAAM,EAAE,UAAU,CAAC,MAAM,OAAO,KAAKA,EAAY,IAAI,CAAC,CAAC,EAAEC,GAASL,GAAgB,CAAC,CAAC,cAAc,GAAK,MAAM,CAAC,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,0EAA0E,IAAI,yEAAyE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,wDAAwD,IAAI,qEAAqE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,cAAc,IAAI,sEAAsE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,cAAc,IAAI,kEAAkE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,uGAAuG,IAAI,sEAAsE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,6JAA6J,IAAI,kEAAkE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,oGAAoG,IAAI,uEAAuE,OAAO,KAAK,CAAC,CAAC,EAAE,GAAGM,GAAoCC,EAAK,CAAC,EAAE,CAAC,6BAA6B,EAAI,CAAC,ECT/mC,IAAMC,GAAmBC,GAASC,EAAa,EAAQC,GAAqBF,GAASG,EAAe,EAAQC,GAAkBJ,GAASK,EAAY,EAAQC,GAAoBC,GAAWC,EAAO,GAAG,EAAQC,GAAuBT,GAASU,EAAiB,EAAQC,GAA2BC,GAAkBJ,EAAO,GAAG,EAAQK,GAAW,CAAC,YAAY,WAAW,EAAyC,IAAMC,GAAkB,CAAC,UAAU,kBAAkB,UAAU,kBAAkB,EAAE,SAASC,GAAqBC,KAAaC,EAAS,CAAC,IAAMC,EAAc,CAAC,EAAE,OAA0CD,GAAS,QAAQE,GAASA,GAAS,OAAO,OAAOD,EAAcF,EAAUG,CAAO,CAAC,CAAC,EAASD,CAAc,CAAC,IAAME,GAAY,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,EAAE,KAAK,EAAE,UAAU,IAAI,KAAK,QAAQ,CAAC,EAAQC,GAAkB,CAACC,EAAEC,IAAI,oBAAoBA,CAAC,GAASC,GAAW,CAAC,CAAC,MAAAC,EAAM,SAAAC,CAAQ,IAAI,CAAC,IAAMC,EAAaC,GAAWC,CAAmB,EAAQC,EAAWL,GAAmCE,EAAO,WAAiBI,EAAmBC,GAAQ,KAAK,CAAC,GAAGL,EAAO,WAAAG,CAAU,GAAG,CAAC,KAAK,UAAUA,CAAU,CAAC,CAAC,EAAE,OAAoBG,EAAKJ,EAAoB,SAAS,CAAC,MAAME,EAAa,SAASL,CAAQ,CAAC,CAAE,EAAQQ,GAAwB,CAAC,QAAQ,YAAY,IAAI,WAAW,EAAQC,GAAS,CAAC,CAAC,OAAAC,EAAO,GAAAC,EAAG,SAAAC,EAAS,MAAAC,EAAM,GAAGC,CAAK,IAAI,CAAC,IAAIC,EAAuCC,EAAK,MAAM,CAAC,GAAGF,EAAM,UAAUF,GAA4CE,EAAM,UAAU,SAASE,GAAMD,EAAuCP,GAAwBM,EAAM,OAAO,KAAK,MAAMC,IAAyC,OAAOA,EAAuCD,EAAM,WAAW,MAAME,IAAO,OAAOA,EAAK,WAAW,CAAE,EAAQC,GAAuB,CAACH,EAAMvB,IAAWA,EAAS,KAAK,GAAG,EAAEuB,EAAM,iBAAuBI,GAA6BC,GAAW,SAASL,EAAMM,EAAI,CAAC,GAAK,CAAC,aAAAC,CAAY,EAAEC,GAAc,EAAO,CAAC,MAAAC,EAAM,UAAAC,EAAU,SAAAC,EAAS,QAAAhC,EAAQ,UAAAiC,EAAU,GAAGC,CAAS,EAAElB,GAASK,CAAK,EAAO,CAAC,YAAAc,EAAY,WAAAC,EAAW,eAAAC,EAAe,gBAAAC,EAAgB,WAAAC,EAAW,WAAA5B,EAAW,SAAAb,CAAQ,EAAE0C,GAAgB,CAAC,WAAAC,GAAW,eAAe,YAAY,YAAAxC,GAAY,QAAAD,EAAQ,kBAAAL,EAAiB,CAAC,EAAQ+C,EAAiBlB,GAAuBH,EAAMvB,CAAQ,EAAO,CAAC,sBAAA6C,EAAsB,MAAAC,CAAK,EAAEC,GAAyBV,CAAW,EAAQW,EAAaH,EAAsB,SAASI,IAAO,CAAC,GAAGd,GAAqB,MAAMA,EAAU,GAAGc,CAAI,IAAW,GAAM,MAAO,EAAO,CAAC,EAAQC,EAAWC,GAAO,IAAI,EAAQC,EAAOC,GAAU,EAAQC,EAAsBC,GAAM,EAAQC,EAAsB,CAAC,EAAE,OAAoBxC,EAAKyC,GAAY,CAAC,GAAGvB,GAA4CoB,EAAgB,SAAsBtC,EAAK0C,EAAO,IAAI,CAAC,QAAQxD,EAAQ,QAAQF,EAAS,aAAa,IAAIwC,EAAgB,CAAC,UAAU,EAAI,CAAC,EAAE,WAAW,IAAIA,EAAgB,CAAC,UAAU,EAAK,CAAC,EAAE,WAAW,IAAIA,EAAgB,CAAC,UAAU,EAAI,CAAC,EAAE,MAAM,IAAIA,EAAgB,CAAC,UAAU,EAAK,CAAC,EAAE,YAAY,IAAIA,EAAgB,CAAC,UAAU,EAAK,CAAC,EAAE,UAAUmB,GAAG,eAAe,GAAGH,EAAsBlB,CAAU,EAAE,MAAM,CAAC,QAAQ,UAAU,EAAE,SAAsBtB,EAAKT,GAAW,CAAC,MAAMM,EAAW,SAAsB+C,EAAMF,EAAO,IAAI,CAAC,GAAGtB,EAAU,UAAUuB,GAAG,gBAAgB1B,CAAS,EAAE,cAAc,GAAK,mBAAmB,UAAU,iBAAiBW,EAAiB,SAAS,YAAY,IAAIf,GAA6BqB,EAAK,MAAM,CAAC,wBAAwB,QAAQ,iBAAiB,8EAA8E,sBAAsB,QAAQ,uBAAuB,QAAQ,iBAAiB,QAAQ,qBAAqB,QAAQ,eAAe,aAAa,gBAAgB,8EAA8E,uBAAuB,GAAG,wBAAwB,GAAG,oBAAoB,GAAG,qBAAqB,GAAG,UAAU,0PAA0P,qBAAqB,aAAa,GAAGlB,CAAK,EAAE,GAAGlC,GAAqB,CAAC,UAAU,CAAC,mBAAmB,KAAK,CAAC,EAAEuC,EAAYE,CAAc,EAAE,SAAS,CAAcqB,EAAMF,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,SAAS,iBAAiBd,EAAiB,SAAS,YAAY,SAAS,CAAc5B,EAAK0C,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,SAAS,iBAAiB,GAAK,iBAAiBd,EAAiB,SAAS,YAAY,MAAMI,EAAa,MAAM,CAAC,uBAAuB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,EAAE,SAAsBhC,EAAK6C,GAAI,CAAC,UAAU,iBAAiB,mBAAmB,IAAI,OAAO,WAAW,iBAAiBjB,EAAiB,SAAS,YAAY,QAAQ,EAAE,IAAI,4fAA4f,aAAa,WAAW,mBAAmB,EAAI,CAAC,CAAC,CAAC,EAAe5B,EAAK6C,GAAI,CAAC,UAAU,eAAe,mBAAmB,UAAU,KAAK,QAAQ,gBAAgB,GAAG,eAAe,GAAG,iBAAiBjB,EAAiB,SAAS,YAAY,IAAI,4nEAA4nE,kBAAkBxC,GAAkB,mBAAmB,EAAI,CAAC,CAAC,CAAC,CAAC,EAAewD,EAAMF,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,eAAe,iBAAiBd,EAAiB,SAAS,YAAY,SAAS,CAAc5B,EAAK0C,EAAO,IAAI,CAAC,UAAU,2BAA2B,iBAAiBd,EAAiB,SAAS,sBAAsB,SAAsB5B,EAAK8C,GAAc,CAAC,MAAM,GAAM,WAAW,gGAAgG,MAAM,wEAAwE,OAAO,OAAO,KAAK,GAAM,MAAM,YAAY,GAAG,YAAY,SAAS,YAAY,KAAK,mCAAmC,OAAO,GAAM,MAAM,CAAC,OAAO,OAAO,MAAM,MAAM,EAAE,MAAM,eAAe,QAAQ,YAAY,MAAM,OAAO,GAAGhE,GAAqB,CAAC,UAAU,CAAC,KAAK,sCAAsC,CAAC,EAAEuC,EAAYE,CAAc,CAAC,CAAC,CAAC,CAAC,EAAevB,EAAK0C,EAAO,IAAI,CAAC,UAAU,2BAA2B,iBAAiBd,EAAiB,SAAS,sBAAsB,SAAsB5B,EAAK8C,GAAc,CAAC,MAAM,GAAM,WAAW,gGAAgG,MAAM,wEAAwE,OAAO,OAAO,KAAK,GAAM,MAAM,YAAY,GAAG,YAAY,SAAS,YAAY,KAAKC,GAAY,CAAC,UAAU,WAAW,EAAEX,CAAM,EAAE,OAAO,GAAM,MAAM,CAAC,OAAO,OAAO,MAAM,MAAM,EAAE,MAAM,iBAAiB,QAAQ,YAAY,MAAM,OAAO,GAAGtD,GAAqB,CAAC,UAAU,CAAC,KAAKiE,GAAY,CAAC,UAAU,WAAW,EAAEX,CAAM,CAAC,CAAC,EAAEf,EAAYE,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeqB,EAAMF,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,cAAc,iBAAiBd,EAAiB,SAAS,YAAY,SAAS,CAAc5B,EAAK0C,EAAO,IAAI,CAAC,UAAU,2BAA2B,iBAAiBd,EAAiB,SAAS,sBAAsB,SAAsB5B,EAAKgD,GAAgB,CAAC,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,MAAM,CAAC,MAAM,MAAM,EAAE,MAAM,UAAU,KAAK,YAAY,QAAQ,YAAY,MAAM,MAAM,CAAC,CAAC,CAAC,EAAehD,EAAK0C,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiBd,EAAiB,SAAS,sBAAsB,SAAsB5B,EAAKgD,GAAgB,CAAC,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,MAAM,CAAC,MAAM,MAAM,EAAE,MAAM,OAAO,KAAK,YAAY,QAAQ,YAAY,MAAM,MAAM,CAAC,CAAC,CAAC,EAAehD,EAAK0C,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiBd,EAAiB,SAAS,sBAAsB,SAAsB5B,EAAKgD,GAAgB,CAAC,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,MAAM,CAAC,MAAM,MAAM,EAAE,MAAM,YAAY,KAAK,YAAY,QAAQ,YAAY,MAAM,MAAM,CAAC,CAAC,CAAC,EAAehD,EAAK0C,EAAO,IAAI,CAAC,UAAU,2BAA2B,iBAAiBd,EAAiB,SAAS,sBAAsB,SAAsB5B,EAAKgD,GAAgB,CAAC,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,KAAKD,GAAY,CAAC,UAAU,WAAW,EAAEX,CAAM,EAAE,MAAM,CAAC,MAAM,MAAM,EAAE,MAAM,WAAW,KAAK,YAAY,QAAQ,YAAY,MAAM,MAAM,CAAC,CAAC,CAAC,EAAepC,EAAK0C,EAAO,IAAI,CAAC,UAAU,2BAA2B,iBAAiBd,EAAiB,SAAS,sBAAsB,SAAsB5B,EAAKgD,GAAgB,CAAC,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,KAAKD,GAAY,CAAC,UAAU,WAAW,EAAEX,CAAM,EAAE,MAAM,CAAC,MAAM,MAAM,EAAE,MAAM,YAAY,KAAK,YAAY,QAAQ,YAAY,MAAM,MAAM,CAAC,CAAC,CAAC,EAAepC,EAAK0C,EAAO,IAAI,CAAC,UAAU,2BAA2B,iBAAiBd,EAAiB,SAAS,sBAAsB,SAAsB5B,EAAKgD,GAAgB,CAAC,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,KAAKD,GAAY,CAAC,UAAU,WAAW,EAAEX,CAAM,EAAE,MAAM,CAAC,MAAM,MAAM,EAAE,MAAM,UAAU,KAAK,YAAY,QAAQ,YAAY,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAepC,EAAKiD,GAA2B,CAAC,UAAU,gBAAgB,mBAAmB,SAAS,iBAAiBrB,EAAiB,SAAS,YAAY,SAAsBgB,EAAMF,EAAO,IAAI,CAAC,UAAU,gBAAgB,cAAc,GAAK,mBAAmB,iBAAiB,iBAAiBd,EAAiB,SAAS,YAAY,MAAM,CAAC,wBAAwB,QAAQ,iBAAiB,8EAA8E,sBAAsB,QAAQ,uBAAuB,QAAQ,iBAAiB,QAAQ,qBAAqB,QAAQ,eAAe,aAAa,gBAAgB,8EAA8E,uBAAuB,GAAG,wBAAwB,GAAG,oBAAoB,GAAG,qBAAqB,GAAG,UAAU,0PAA0P,qBAAqB,YAAY,EAAE,SAAS,CAAcgB,EAAMM,GAAoB,CAAC,UAAU,gBAAgB,iBAAiBtB,EAAiB,SAAS,YAAY,SAAS,CAAc5B,EAAK0C,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiBd,EAAiB,SAAS,sBAAsB,SAAsB5B,EAAKmD,GAAa,CAAC,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,MAAM,CAAC,MAAM,MAAM,EAAE,kBAAkB,IAAI,WAAW,aAAa,WAAW,iDAAiD,MAAM,MAAM,CAAC,CAAC,CAAC,EAAenD,EAAK0C,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiBd,EAAiB,SAAS,sBAAsB,SAAsB5B,EAAKmD,GAAa,CAAC,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,MAAM,CAAC,MAAM,MAAM,EAAE,kBAAkB,IAAI,WAAW,aAAa,WAAW,iDAAiD,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAenD,EAAK0C,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,UAAU,iBAAiBd,EAAiB,SAAS,YAAY,SAAsB5B,EAAK0C,EAAO,IAAI,CAAC,UAAU,gBAAgB,cAAc,GAAK,mBAAmB,OAAO,iBAAiBd,EAAiB,SAAS,YAAY,MAAM,CAAC,wBAAwB,MAAM,iBAAiB,2BAA2B,sBAAsB,MAAM,uBAAuB,MAAM,iBAAiB,QAAQ,qBAAqB,OAAO,CAAC,CAAC,CAAC,CAAC,EAAegB,EAAMF,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,eAAe,iBAAiBd,EAAiB,SAAS,YAAY,SAAS,CAAc5B,EAAK0C,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiBd,EAAiB,SAAS,sBAAsB,SAAsB5B,EAAKoD,GAAkB,CAAC,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,KAAK,mCAAmC,MAAM,CAAC,MAAM,MAAM,EAAE,MAAM,iBAAiB,MAAM,MAAM,CAAC,CAAC,CAAC,EAAepD,EAAK0C,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiBd,EAAiB,SAAS,sBAAsB,SAAsB5B,EAAKoD,GAAkB,CAAC,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,KAAK,4BAA4B,MAAM,CAAC,MAAM,MAAM,EAAE,MAAM,eAAe,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,EAAQC,GAAI,CAAC,sZAAsZ,kFAAkF,mDAAmD,0QAA0Q,4HAA4H,oPAAoP,oLAAoL,gLAAgL,8RAA8R,oJAAoJ,uTAAuT,oYAAoY,2SAA2S,gSAAgS,uSAAuS,qRAAqR,gHAAgH,4RAA4R,kJAAkJ,kmDAAkmD,EAOl1qBC,GAAgBC,GAAQ5C,GAAU0C,GAAI,cAAc,EAASG,GAAQF,GAAgBA,GAAgB,YAAY,mBAAmBA,GAAgB,aAAa,CAAC,OAAO,IAAI,MAAM,GAAG,EAAEG,GAAoBH,GAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,WAAW,EAAE,aAAa,CAAC,UAAU,KAAK,EAAE,MAAM,UAAU,KAAKI,EAAY,IAAI,EAAE,UAAU,CAAC,MAAM,YAAY,KAAKA,EAAY,YAAY,CAAC,CAAC,EAAEC,GAASL,GAAgB,CAAC,GAAGM,GAAmB,GAAGC,GAAqB,GAAGC,GAAkB,GAAGC,EAAsB,CAAC,ECPwD,IAAMC,GAAgB,CAAC,UAAU,CAAC,MAAM,EAAI,EAAE,UAAU,CAAC,MAAM,EAAI,CAAC,EAAQC,GAAW,CAAC,YAAY,YAAY,YAAY,WAAW,EAAQC,GAAkB,eAAqBC,GAAkB,CAAC,UAAU,mBAAmB,UAAU,kBAAkB,UAAU,kBAAkB,UAAU,kBAAkB,EAAE,SAASC,GAAqBC,KAAaC,EAAS,CAAC,IAAMC,EAAc,CAAC,EAAE,OAA0CD,GAAS,QAAQE,GAASA,GAAS,OAAO,OAAOD,EAAcF,EAAUG,CAAO,CAAC,CAAC,EAASD,CAAc,CAAC,IAAME,GAAY,CAAC,QAAQ,GAAG,MAAM,EAAE,KAAK,EAAE,UAAU,IAAI,KAAK,QAAQ,EAAQC,GAAW,CAAC,CAAC,MAAAC,EAAM,SAAAC,CAAQ,IAAI,CAAC,IAAMC,EAAaC,GAAWC,CAAmB,EAAQC,EAAWL,GAAmCE,EAAO,WAAiBI,EAAmBC,GAAQ,KAAK,CAAC,GAAGL,EAAO,WAAAG,CAAU,GAAG,CAAC,KAAK,UAAUA,CAAU,CAAC,CAAC,EAAE,OAAoBG,EAAKJ,EAAoB,SAAS,CAAC,MAAME,EAAa,SAASL,CAAQ,CAAC,CAAE,EAAQQ,GAASC,EAAaC,CAAQ,EAAQC,GAAwB,CAAC,UAAU,YAAY,aAAa,YAAY,OAAO,YAAY,QAAQ,WAAW,EAAQC,GAAS,CAAC,CAAC,OAAAC,EAAO,MAAAC,EAAM,GAAAC,EAAG,KAAAC,EAAK,IAAAC,EAAI,UAAAC,EAAU,MAAAC,EAAM,MAAAC,EAAM,GAAGC,CAAK,IAAI,CAAC,IAAIC,EAAKC,EAAMC,EAAuCC,EAAM,MAAM,CAAC,GAAGJ,EAAM,UAAUP,GAAmCO,EAAM,UAAU,WAAWC,EAAKJ,GAA+CG,EAAM,aAAa,MAAMC,IAAO,OAAOA,EAAK,wEAAwE,WAAWC,EAAMJ,GAAmCE,EAAM,aAAa,MAAME,IAAQ,OAAOA,EAAM,UAAU,SAASE,GAAOD,EAAuCb,GAAwBU,EAAM,OAAO,KAAK,MAAMG,IAAyC,OAAOA,EAAuCH,EAAM,WAAW,MAAMI,IAAQ,OAAOA,EAAM,YAAY,UAAUR,GAA6BI,EAAM,UAAU,UAAUL,GAAgCK,EAAM,SAAS,CAAE,EAAQK,GAAuB,CAACL,EAAM3B,IAAe2B,EAAM,iBAAwB3B,EAAS,KAAK,GAAG,EAAE2B,EAAM,iBAAwB3B,EAAS,KAAK,GAAG,EAAUiC,GAA6BC,GAAW,SAASP,EAAMQ,EAAI,CAAC,GAAK,CAAC,aAAAC,EAAa,UAAAC,CAAS,EAAEC,GAAc,EAAO,CAAC,MAAAC,EAAM,UAAAC,EAAU,SAAAC,EAAS,QAAAvC,EAAQ,UAAAwC,EAAU,UAAAC,EAAU,UAAAC,EAAU,UAAAC,EAAU,UAAAC,EAAU,GAAGC,CAAS,EAAE7B,GAASS,CAAK,EAAO,CAAC,YAAAqB,EAAY,WAAAC,EAAW,oBAAAC,EAAoB,gBAAAC,EAAgB,eAAAC,EAAe,UAAAC,EAAU,gBAAAC,EAAgB,WAAAC,EAAW,SAAAvD,CAAQ,EAAEwD,GAAgB,CAAC,WAAA7D,GAAW,eAAe,YAAY,gBAAAD,GAAgB,QAAAQ,EAAQ,kBAAAL,EAAiB,CAAC,EAAQ4D,EAAiBzB,GAAuBL,EAAM3B,CAAQ,EAAO,CAAC,sBAAA0D,EAAsB,MAAAC,CAAK,EAAEC,GAAyBZ,CAAW,EAAQa,EAAYH,EAAsB,SAASI,KAAO,CAAoC,GAAnCR,EAAgB,CAAC,UAAU,EAAK,CAAC,EAAKT,GAAqB,MAAMA,EAAU,GAAGiB,EAAI,IAAW,GAAM,MAAO,EAAO,CAAC,EAAQC,EAAmBL,EAAsB,SAASI,KAAO,CAAmC,GAAlCR,EAAgB,CAAC,UAAU,EAAI,CAAC,EAAKR,GAAqB,MAAMA,EAAU,GAAGgB,EAAI,IAAW,GAAM,MAAO,EAAO,CAAC,EAAQE,EAAWC,GAAO,IAAI,EAAQC,GAAY,IAAQd,IAAiB,kBAAmDe,GAAsBC,GAAM,EAAQC,GAAsB,CAAa7B,GAAuBA,EAAS,EAAQ8B,EAAkBC,GAAqB,EAAE,OAAoB1D,EAAK2D,GAAY,CAAC,GAAG/B,GAA4C0B,GAAgB,SAAsBtD,EAAKC,GAAS,CAAC,QAAQd,EAAS,QAAQ,GAAM,SAAsBa,EAAKT,GAAW,CAAC,MAAMD,GAAY,SAAsBU,EAAK4D,EAAK,CAAC,KAAK9B,EAAU,aAAa,GAAM,aAAa,GAAK,GAAG7C,GAAqB,CAAC,kBAAkB,CAAC,KAAK,MAAS,EAAE,UAAU,CAAC,KAAK,MAAS,CAAC,EAAEkD,EAAYI,CAAc,EAAE,SAAsBsB,EAAM3D,EAAO,EAAE,CAAC,GAAGgC,EAAU,GAAGI,EAAgB,UAAU,GAAGwB,GAAG/E,GAAkB,GAAGyE,GAAsB,iBAAiB7B,EAAUS,CAAU,CAAC,gBAAgB,mBAAmB,UAAU,iBAAiB,GAAK,iBAAiBQ,EAAiB,SAAS,YAAY,aAAaM,EAAmB,MAAMF,EAAY,IAAI1B,GAA6B6B,EAAK,MAAM,CAAC,gBAAgB,mBAAmB,uBAAuB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,GAAGzB,CAAK,EAAE,SAAS,CAAC,kBAAkB,CAAC,gBAAgB,0BAA0B,EAAE,kBAAkB,CAAC,gBAAgB,0BAA0B,EAAE,UAAU,CAAC,gBAAgB,0BAA0B,CAAC,EAAE,GAAGzC,GAAqB,CAAC,kBAAkB,CAAC,mBAAmB,MAAS,EAAE,kBAAkB,CAAC,mBAAmB,MAAS,EAAE,UAAU,CAAC,mBAAmB,SAAS,EAAE,UAAU,CAAC,mBAAmB,QAAQ,EAAE,UAAU,CAAC,mBAAmB,YAAY,CAAC,EAAEkD,EAAYI,CAAc,EAAE,SAAS,CAAcvC,EAAK+D,GAAS,CAAC,sBAAsB,GAAK,SAAsB/D,EAAWG,EAAS,CAAC,SAAsBH,EAAKE,EAAO,EAAE,CAAC,UAAU,8BAA8B,qBAAqB,YAAY,MAAM,CAAC,sBAAsB,wEAAwE,EAAE,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,iBAAiB,MAAM,CAAC,OAAO,EAAE,iBAAiB0C,EAAiB,SAAS,YAAY,MAAM,CAAC,qBAAqB,gDAAgD,2BAA2B,mBAAmB,gCAAgC,YAAY,2CAA2Cb,CAAS,EAAE,KAAKF,EAAU,kBAAkB,MAAM,mBAAmB,GAAK,GAAG5C,GAAqB,CAAC,UAAU,CAAC,SAAsBe,EAAWG,EAAS,CAAC,SAAsBH,EAAKE,EAAO,EAAE,CAAC,UAAU,+BAA+B,qBAAqB,YAAY,MAAM,CAAC,sBAAsB,wEAAwE,EAAE,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEiC,EAAYI,CAAc,CAAC,CAAC,EAAEc,GAAY,GAAgBrD,EAAKE,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,oBAAoB,iBAAiB0C,EAAiB,SAAS,YAAY,MAAM,CAAC,gBAAgB,qBAAqB,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,EAAES,GAAY,GAAgBrD,EAAKE,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,qBAAqB,iBAAiB0C,EAAiB,SAAS,YAAY,MAAM,CAAC,gBAAgB,qBAAqB,QAAQ,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,EAAQoB,GAAI,CAAC,kFAAkF,8EAA8E,0TAA0T,uIAAuI,oJAAoJ,sJAAsJ,+WAA+W,qEAAqE,6EAA6E,GAAeA,GAAI,GAAgBA,EAAG,EAS9qQC,GAAgBC,GAAQ9C,GAAU4C,GAAI,cAAc,EAASG,GAAQF,GAAgBA,GAAgB,YAAY,uBAAuBA,GAAgB,aAAa,CAAC,OAAO,GAAG,MAAM,EAAE,EAAEG,GAAoBH,GAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,YAAY,YAAY,WAAW,EAAE,aAAa,CAAC,UAAU,UAAU,aAAa,QAAQ,EAAE,MAAM,UAAU,KAAKI,EAAY,IAAI,EAAE,UAAU,CAAC,aAAa,UAAU,gBAAgB,GAAM,MAAM,QAAQ,KAAKA,EAAY,MAAM,EAAE,UAAU,CAAC,MAAM,OAAO,KAAKA,EAAY,IAAI,EAAE,UAAU,CAAC,aAAa,+FAA+F,MAAM,aAAa,KAAKA,EAAY,KAAK,EAAE,UAAU,CAAC,MAAM,MAAM,KAAKA,EAAY,YAAY,EAAE,UAAU,CAAC,MAAM,QAAQ,KAAKA,EAAY,YAAY,CAAC,CAAC,EAAEC,GAASL,GAAgB,CAAC,CAAC,cAAc,GAAK,MAAM,CAAC,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,0EAA0E,IAAI,0EAA0E,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,wDAAwD,IAAI,yEAAyE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,cAAc,IAAI,wEAAwE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,cAAc,IAAI,wEAAwE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,uGAAuG,IAAI,wEAAwE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,6JAA6J,IAAI,sEAAsE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,oGAAoG,IAAI,wEAAwE,OAAO,KAAK,CAAC,CAAC,EAAE,GAAGM,GAAoCC,EAAK,EAAE,GAAGD,GAAqCC,EAAK,CAAC,EAAE,CAAC,6BAA6B,EAAI,CAAC,ECThjD,IAAMC,GAA0BC,GAAiBC,EAAO,GAAG,EAAQC,GAAWC,GAASC,EAAK,EAAQC,GAAyBF,GAASG,EAAmB,EAAQC,GAAWJ,GAASK,EAAK,EAAQC,GAAcC,GAAoBN,EAAK,EAAQO,GAA4BD,GAAoBJ,EAAmB,EAAQM,GAAgB,CAAC,UAAU,CAAC,MAAM,EAAI,EAAE,UAAU,CAAC,MAAM,EAAI,EAAE,UAAU,CAAC,MAAM,EAAI,EAAE,UAAU,CAAC,MAAM,EAAI,EAAE,UAAU,CAAC,MAAM,EAAI,EAAE,UAAU,CAAC,MAAM,EAAI,EAAE,UAAU,CAAC,MAAM,EAAI,EAAE,UAAU,CAAC,MAAM,EAAI,CAAC,EAAQC,GAAW,CAAC,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAW,EAAQC,GAAkB,eAAqBC,GAAkB,CAAC,UAAU,mBAAmB,UAAU,mBAAmB,UAAU,mBAAmB,UAAU,mBAAmB,UAAU,mBAAmB,UAAU,iBAAiB,UAAU,kBAAkB,UAAU,iBAAiB,EAAE,SAASC,GAAqBC,KAAaC,EAAS,CAAC,IAAMC,EAAc,CAAC,EAAE,OAA0CD,GAAS,QAAQE,GAASA,GAAS,OAAO,OAAOD,EAAcF,EAAUG,CAAO,CAAC,CAAC,EAASD,CAAc,CAAC,IAAME,GAAY,CAAC,MAAM,EAAE,SAAS,IAAI,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,OAAO,EAAQC,GAAW,CAAC,CAAC,MAAAC,EAAM,SAAAC,CAAQ,IAAI,CAAC,IAAMC,EAAaC,GAAWC,CAAmB,EAAQC,EAAWL,GAAmCE,EAAO,WAAiBI,EAAmBC,GAAQ,KAAK,CAAC,GAAGL,EAAO,WAAAG,CAAU,GAAG,CAAC,KAAK,UAAUA,CAAU,CAAC,CAAC,EAAE,OAAoBG,EAAKJ,EAAoB,SAAS,CAAC,MAAME,EAAa,SAASL,CAAQ,CAAC,CAAE,EAAQQ,GAAS/B,EAAagC,CAAQ,EAAQC,GAAqB,CAAC,wBAAmB,YAAY,qBAAqB,YAAY,wBAAmB,YAAY,iBAAiB,YAAY,KAAK,YAAY,MAAM,YAAY,MAAM,YAAY,OAAO,WAAW,EAAQC,GAAwB,CAAC,cAAc,YAAY,8BAAyB,YAAY,MAAM,YAAY,SAAS,YAAY,YAAY,YAAY,QAAQ,YAAY,UAAU,YAAY,YAAY,WAAW,EAAQC,GAAS,CAAC,CAAC,MAAAC,EAAM,aAAAC,EAAa,WAAAC,EAAW,MAAAC,EAAM,OAAAC,EAAO,kBAAAC,EAAkB,KAAAC,EAAK,MAAAC,EAAM,GAAAC,EAAG,KAAAC,EAAK,OAAAC,EAAO,IAAAC,EAAI,MAAAC,EAAM,MAAAC,EAAM,GAAGC,CAAK,IAAI,CAAC,IAAIC,EAAmCC,EAAKC,EAAMC,EAAwCC,EAAMC,EAAMC,EAAMC,EAAMC,EAAMC,EAAuCC,EAAMC,EAAMC,EAAM,MAAM,CAAC,GAAGb,EAAM,WAAWG,GAAOD,GAAMD,EAAmClB,GAAqBI,CAAY,KAAK,MAAMc,IAAqC,OAAOA,EAAmCd,KAAgB,MAAMe,IAAO,OAAOA,EAAKF,EAAM,aAAa,MAAMG,IAAQ,OAAOA,EAAM,YAAY,WAAWG,GAAOD,GAAOD,EAAwCrB,GAAqBQ,CAAiB,KAAK,MAAMa,IAA0C,OAAOA,EAAwCb,KAAqB,MAAMc,IAAQ,OAAOA,EAAML,EAAM,aAAa,MAAMM,IAAQ,OAAOA,EAAM,YAAY,UAAUX,GAAgCK,EAAM,UAAU,WAAWO,EAAMnB,GAAkDY,EAAM,aAAa,MAAMO,IAAQ,OAAOA,EAAM,uEAAuE,WAAWC,EAAMV,GAAmCE,EAAM,aAAa,MAAMQ,IAAQ,OAAOA,EAAM,wBAAwB,UAAUhB,GAAgCQ,EAAM,UAAU,UAAUJ,GAAsCI,EAAM,UAAU,WAAWS,EAAMhB,GAAmCO,EAAM,aAAa,MAAMS,IAAQ,OAAOA,EAAM,YAAY,SAASE,GAAOD,EAAuC1B,GAAwBgB,EAAM,OAAO,KAAK,MAAMU,IAAyC,OAAOA,EAAuCV,EAAM,WAAW,MAAMW,IAAQ,OAAOA,EAAM,YAAY,WAAWC,EAAMvB,GAAmCW,EAAM,aAAa,MAAMY,IAAQ,OAAOA,EAAM,qEAAqE,UAAUf,GAA6BG,EAAM,UAAU,WAAWa,EAAM3B,GAAmCc,EAAM,aAAa,MAAMa,IAAQ,OAAOA,EAAM,EAAI,CAAE,EAAQC,GAAuB,CAACd,EAAMjC,IAAWA,EAAS,KAAK,GAAG,EAAEiC,EAAM,iBAAuBe,GAA6BC,GAAW,SAAShB,EAAMiB,EAAI,CAAC,GAAK,CAAC,aAAAC,EAAa,UAAAC,CAAS,EAAEC,GAAc,EAAO,CAAC,MAAAC,EAAM,UAAAC,EAAU,SAAAC,EAAS,QAAAtD,EAAQ,UAAAuD,EAAU,UAAAC,EAAU,UAAAC,EAAU,UAAAC,EAAU,UAAAC,EAAU,UAAAC,EAAU,UAAAC,EAAU,UAAAC,EAAU,UAAAC,EAAU,UAAAC,EAAU,UAAAC,EAAU,GAAGC,CAAS,EAAElD,GAASe,CAAK,EAAO,CAAC,YAAAoC,EAAY,WAAAC,EAAW,eAAAC,EAAe,gBAAAC,EAAgB,WAAAC,EAAW,SAAAzE,CAAQ,EAAE0E,GAAgB,CAAC,WAAA/E,GAAW,eAAe,YAAY,gBAAAD,GAAgB,QAAAQ,EAAQ,kBAAAL,EAAiB,CAAC,EAAQ8E,EAAiB5B,GAAuBd,EAAMjC,CAAQ,EAAO,CAAC,sBAAA4E,EAAsB,MAAAC,CAAK,EAAEC,GAAyBT,CAAW,EAAQU,GAAYH,EAAsB,SAASI,KAAO,CAAoC,GAAnCR,EAAgB,CAAC,UAAU,EAAK,CAAC,EAAKR,GAAqB,MAAMA,EAAU,GAAGgB,EAAI,IAAW,GAAM,MAAO,EAAO,CAAC,EAAQC,GAAWC,GAAO,IAAI,EAAQC,GAAY,IAAQZ,IAAiB,mBAAiCF,IAAc,YAA6Ce,EAAa/E,IAAWkE,IAAiB,kBAAyB,GAAQA,IAAiB,kBAAyB,GAASF,IAAc,YAAmB,GAAQA,IAAc,YAAmB,GAAahE,GAAcgF,GAAa,IAAQd,IAAiB,mBAAiCF,IAAc,YAA6CiB,GAAsBC,GAAM,EAAQC,EAAsB,CAAajC,EAAS,EAAQkC,GAAkBC,GAAqB,EAAE,OAAoB7E,EAAK8E,GAAY,CAAC,GAAGnC,GAA4C8B,GAAgB,SAAsBzE,EAAKC,GAAS,CAAC,QAAQd,EAAS,QAAQ,GAAM,SAAsBa,EAAKT,GAAW,CAAC,MAAMD,GAAY,SAAsBU,EAAK+E,EAAK,CAAC,KAAK9B,EAAU,aAAaC,EAAU,GAAGjE,GAAqB,CAAC,UAAU,CAAC,aAAa,EAAI,CAAC,EAAEuE,EAAYE,CAAc,EAAE,SAAsBsB,EAAM9G,EAAO,EAAE,CAAC,GAAGqF,EAAU,UAAU,GAAG0B,GAAGlG,GAAkB,GAAG4F,EAAsB,gBAAgBjC,EAAUe,CAAU,CAAC,iBAAiB,mBAAmB,UAAU,iBAAiB,GAAK,iBAAiBK,EAAiB,SAAS,YAAY,WAAW,IAAIH,EAAgB,CAAC,UAAU,EAAK,CAAC,EAAE,aAAa,IAAIA,EAAgB,CAAC,UAAU,EAAI,CAAC,EAAE,MAAMO,GAAY,YAAY,IAAIP,EAAgB,CAAC,UAAU,EAAK,CAAC,EAAE,WAAW,IAAIA,EAAgB,CAAC,UAAU,EAAI,CAAC,EAAE,IAAItB,GAA6B+B,GAAK,MAAM,CAAC,wBAAwB,MAAM,iBAAiB,mBAAmB,sBAAsB,MAAM,uBAAuB,MAAM,iBAAiB,QAAQ,qBAAqB,MAAM,gBAAgB,wEAAwE,uBAAuB,GAAG,wBAAwB,GAAG,oBAAoB,GAAG,qBAAqB,GAAG,UAAU,OAAO,QAAQ,EAAE,GAAG3B,CAAK,EAAE,SAAS,CAAC,kBAAkB,CAAC,gBAAgB,0BAA0B,EAAE,kBAAkB,CAAC,wBAAwB,QAAQ,gBAAgB,2BAA2B,EAAE,kBAAkB,CAAC,gBAAgB,0BAA0B,EAAE,kBAAkB,CAAC,gBAAgB,mBAAmB,uBAAuB,GAAG,wBAAwB,GAAG,oBAAoB,GAAG,qBAAqB,GAAG,QAAQ,EAAE,EAAE,kBAAkB,CAAC,gBAAgB,kBAAkB,EAAE,kBAAkB,CAAC,gBAAgB,mBAAmB,uBAAuB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,EAAE,kBAAkB,CAAC,gBAAgB,0BAA0B,EAAE,UAAU,CAAC,wBAAwB,MAAM,iBAAiB,+EAA+E,sBAAsB,QAAQ,uBAAuB,QAAQ,iBAAiB,QAAQ,qBAAqB,QAAQ,gBAAgB,8EAA8E,UAAU,8IAAyI,EAAE,UAAU,CAAC,gBAAgBO,CAAS,EAAE,UAAU,CAAC,gBAAgB,oBAAoB,EAAE,UAAU,CAAC,gBAAgB,mBAAmB,uBAAuB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,EAAE,UAAU,CAAC,gBAAgB,kBAAkB,EAAE,UAAU,CAAC,gBAAgB,mBAAmB,uBAAuB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,CAAC,EAAE,GAAG/D,GAAqB,CAAC,kBAAkB,CAAC,mBAAmB,MAAS,EAAE,kBAAkB,CAAC,mBAAmB,MAAS,EAAE,kBAAkB,CAAC,mBAAmB,MAAS,EAAE,kBAAkB,CAAC,mBAAmB,MAAS,EAAE,kBAAkB,CAAC,mBAAmB,MAAS,EAAE,kBAAkB,CAAC,mBAAmB,MAAS,EAAE,kBAAkB,CAAC,mBAAmB,MAAS,EAAE,kBAAkB,CAAC,mBAAmB,MAAS,EAAE,UAAU,CAAC,mBAAmB,UAAU,EAAE,UAAU,CAAC,cAAc,GAAK,mBAAmB,WAAW,EAAE,UAAU,CAAC,mBAAmB,OAAO,EAAE,UAAU,CAAC,mBAAmB,aAAa,EAAE,UAAU,CAAC,mBAAmB,aAAa,EAAE,UAAU,CAAC,mBAAmB,aAAa,EAAE,UAAU,CAAC,mBAAmB,6BAAwB,CAAC,EAAEuE,EAAYE,CAAc,EAAE,SAAS,CAACY,GAAY,GAAgBtE,EAAKhC,GAA0B,CAAC,UAAU,gBAAgB,mBAAmB,iBAAiB,iBAAiB8F,EAAiB,SAAS,YAAY,MAAM,CAAC,gBAAgB,uEAAuE,uBAAuB,IAAI,wBAAwB,IAAI,oBAAoB,IAAI,qBAAqB,IAAI,UAAU,wGAAwG,QAAQ,CAAC,EAAE,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAEjB,GAAwB7C,EAAK9B,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,iBAAiB,iBAAiB4F,EAAiB,SAAS,YAAY,SAAsB9D,EAAKkF,EAA0B,CAAC,SAAsBlF,EAAK9B,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiB4F,EAAiB,SAAS,sBAAsB,SAAsB9D,EAAK3B,GAAM,CAAC,OAAO,eAAe,OAAO,OAAO,KAAKyE,EAAU,GAAG,YAAY,aAAa,GAAM,SAAS,YAAY,MAAM,CAAC,OAAO,OAAO,MAAM,MAAM,EAAE,MAAM,OAAO,GAAG7D,GAAqB,CAAC,UAAU,CAAC,OAAO,uEAAuE,EAAE,UAAU,CAAC,OAAO,uEAAuE,EAAE,UAAU,CAAC,OAAO,uEAAuE,EAAE,UAAU,CAAC,OAAO,uEAAuE,CAAC,EAAEuE,EAAYE,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAe1D,EAAKmF,GAAS,CAAC,sBAAsB,GAAK,SAAsBnF,EAAWE,EAAS,CAAC,SAAsBF,EAAK9B,EAAO,EAAE,CAAC,UAAU,8BAA8B,qBAAqB,YAAY,MAAM,CAAC,sBAAsB,uCAAuC,EAAE,SAAS,uBAAuB,CAAC,CAAC,CAAC,EAAE,UAAU,gBAAgB,MAAM,CAAC,OAAO,EAAE,iBAAiB4F,EAAiB,SAAS,YAAY,MAAM,CAAC,qBAAqB,eAAe,2BAA2B,mBAAmB,gCAAgC,YAAY,2CAA2CV,CAAS,EAAE,KAAKR,EAAU,SAAS,CAAC,kBAAkB,CAAC,qBAAqB,uEAAuE,EAAE,kBAAkB,CAAC,qBAAqB,uEAAuE,EAAE,UAAU,CAAC,qBAAqB,uEAAuE,EAAE,UAAU,CAAC,qBAAqB,gDAAgD,2CAA2CQ,CAAS,EAAE,UAAU,CAAC,qBAAqB,gDAAgD,2CAA2CA,CAAS,EAAE,UAAU,CAAC,qBAAqB,uEAAuE,CAAC,EAAE,kBAAkB,MAAM,mBAAmB,GAAK,GAAGnE,GAAqB,CAAC,kBAAkB,CAAC,SAAsBe,EAAWE,EAAS,CAAC,SAAsBF,EAAK9B,EAAO,EAAE,CAAC,UAAU,8BAA8B,qBAAqB,YAAY,MAAM,CAAC,sBAAsB,gGAAgG,EAAE,SAAS,uBAAuB,CAAC,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,SAAsB8B,EAAWE,EAAS,CAAC,SAAsBF,EAAK9B,EAAO,EAAE,CAAC,UAAU,8BAA8B,qBAAqB,YAAY,MAAM,CAAC,sBAAsB,gGAAgG,EAAE,SAAS,uBAAuB,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,SAAsB8B,EAAWE,EAAS,CAAC,SAAsBF,EAAK9B,EAAO,EAAE,CAAC,UAAU,8BAA8B,qBAAqB,YAAY,MAAM,CAAC,sBAAsB,gGAAgG,EAAE,SAAS,uBAAuB,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,SAAsB8B,EAAWE,EAAS,CAAC,SAAsBF,EAAK9B,EAAO,EAAE,CAAC,UAAU,8BAA8B,qBAAqB,YAAY,MAAM,CAAC,sBAAsB,wEAAwE,EAAE,SAAS,uBAAuB,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,SAAsB8B,EAAWE,EAAS,CAAC,SAAsBF,EAAK9B,EAAO,EAAE,CAAC,UAAU,8BAA8B,qBAAqB,YAAY,MAAM,CAAC,sBAAsB,wEAAwE,EAAE,SAAS,uBAAuB,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,SAAsB8B,EAAWE,EAAS,CAAC,SAAsBF,EAAK9B,EAAO,EAAE,CAAC,UAAU,8BAA8B,qBAAqB,YAAY,MAAM,CAAC,sBAAsB,gGAAgG,EAAE,SAAS,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEsF,EAAYE,CAAc,CAAC,CAAC,EAAEa,EAAaxB,CAAS,GAAgB/C,EAAKkF,EAA0B,CAAC,SAAsBlF,EAAK9B,EAAO,IAAI,CAAC,UAAU,2BAA2B,iBAAiB4F,EAAiB,SAAS,sBAAsB,MAAM,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE,SAAsB9D,EAAKzB,GAAoB,CAAC,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,MAAM,CAAC,OAAO,OAAO,MAAM,MAAM,EAAE,QAAQ,YAAY,MAAM,OAAO,GAAGU,GAAqB,CAAC,kBAAkB,CAAC,QAAQ,WAAW,EAAE,kBAAkB,CAAC,QAAQqE,CAAS,EAAE,kBAAkB,CAAC,QAAQ,WAAW,EAAE,kBAAkB,CAAC,QAAQ,WAAW,EAAE,kBAAkB,CAAC,QAAQ,WAAW,EAAE,kBAAkB,CAAC,QAAQ,WAAW,EAAE,UAAU,CAAC,QAAQ,WAAW,EAAE,UAAU,CAAC,QAAQD,CAAS,EAAE,UAAU,CAAC,QAAQ,WAAW,EAAE,UAAU,CAAC,QAAQ,WAAW,EAAE,UAAU,CAAC,QAAQ,WAAW,CAAC,EAAEG,EAAYE,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEc,GAAa,GAAgBxE,EAAKkF,EAA0B,CAAC,SAAsBlF,EAAK9B,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiB4F,EAAiB,SAAS,sBAAsB,SAAsB9D,EAAKvB,GAAM,CAAC,OAAO,qEAAqE,OAAO,OAAO,KAAK,iBAAiB,GAAG,YAAY,aAAa,GAAM,SAAS,YAAY,MAAM,CAAC,OAAO,OAAO,MAAM,MAAM,EAAE,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,EAAQ2G,GAAI,CAAC,kFAAkF,gFAAgF,8SAA8S,gJAAgJ,iHAAiH,4HAA4H,8JAA8J,yGAAyG,oHAAoH,yWAAyW,8GAA8G,4DAA4D,4DAA4D,4DAA4D,uEAAuE,6DAA6D,6aAA6a,GAAeA,GAAI,+bAA+b,EAS3imBC,GAAgBC,GAAQnD,GAAUiD,GAAI,cAAc,EAASG,GAAQF,GAAgBA,GAAgB,YAAY,mBAAmBA,GAAgB,aAAa,CAAC,OAAO,GAAG,MAAM,GAAG,EAAEG,GAAoBH,GAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAW,EAAE,aAAa,CAAC,UAAU,YAAY,cAAc,QAAQ,cAAc,8BAAyB,cAAc,UAAU,EAAE,MAAM,UAAU,KAAKI,EAAY,IAAI,EAAE,UAAU,CAAC,aAAa,wBAAwB,gBAAgB,GAAM,YAAY,GAAG,MAAM,QAAQ,KAAKA,EAAY,MAAM,EAAE,UAAU,CAAC,aAAa,GAAM,MAAM,OAAO,KAAKA,EAAY,OAAO,EAAE,UAA+D/G,IAAc,MAAU,CAAC,GAAGA,GAAc,KAAQ,aAAa,YAAY,YAAY,OAAU,OAAO,OAAU,MAAM,MAAM,EAAE,UAAU,CAAC,aAAa,GAAK,MAAM,QAAQ,KAAK+G,EAAY,OAAO,EAAE,UAAU,CAAC,aAAa,gGAAgG,MAAM,aAAa,KAAKA,EAAY,KAAK,EAAE,UAAU,CAAC,MAAM,OAAO,KAAKA,EAAY,IAAI,EAAE,UAAU,CAAC,aAAa,GAAM,MAAM,UAAU,KAAKA,EAAY,OAAO,EAAE,UAAU,CAAC,MAAM,MAAM,KAAKA,EAAY,YAAY,EAAE,UAAU,CAAC,aAAa,+FAA+F,MAAM,QAAQ,KAAKA,EAAY,KAAK,EAAE,UAA2F7G,IAA4B,SAAa,CAAC,GAAGA,GAA4B,QAAW,aAAa,YAAY,YAAY,OAAU,OAAO,OAAU,MAAM,eAAe,EAAE,UAA2FA,IAA4B,SAAa,CAAC,GAAGA,GAA4B,QAAW,aAAa,YAAY,YAAY,OAAU,OAAO,OAAU,MAAM,qBAAqB,CAAC,CAAC,EAAE8G,GAASL,GAAgB,CAAC,CAAC,cAAc,GAAK,MAAM,CAAC,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,0EAA0E,IAAI,yEAAyE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,wDAAwD,IAAI,qEAAqE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,cAAc,IAAI,sEAAsE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,cAAc,IAAI,kEAAkE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,uGAAuG,IAAI,sEAAsE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,6JAA6J,IAAI,kEAAkE,OAAO,KAAK,EAAE,CAAC,OAAO,QAAQ,OAAO,SAAS,MAAM,SAAS,aAAa,oGAAoG,IAAI,uEAAuE,OAAO,KAAK,CAAC,CAAC,EAAE,GAAGlH,GAAW,GAAGG,GAAyB,GAAGE,GAAW,GAAGmH,GAAoCC,EAAK,CAAC,EAAE,CAAC,6BAA6B,EAAI,CAAC,ECTr2F,IAAMC,GAAmBC,GAASC,EAAa,EAAQC,GAA+BC,GAAkBF,EAAa,EAAQG,GAA6BJ,GAASK,EAAuB,EAAQC,GAAmEC,GAAqBC,GAAkBH,EAAuB,EAAEI,EAA2B,EAAQC,GAAW,CAAC,YAAY,YAAY,YAAY,WAAW,EAAQC,GAAkB,eAAqBC,GAAkB,CAAC,UAAU,kBAAkB,UAAU,mBAAmB,UAAU,mBAAmB,UAAU,iBAAiB,EAAE,SAASC,GAAqBC,KAAaC,EAAS,CAAC,IAAMC,EAAc,CAAC,EAAE,OAAAD,GAAU,QAAQE,GAASA,GAAS,OAAO,OAAOD,EAAcF,EAAUG,CAAO,CAAC,CAAC,EAASD,CAAc,CAAC,IAAME,GAAY,CAAC,SAAS,EAAE,KAAK,OAAO,EAAQC,GAAW,CAAC,CAAC,MAAAC,EAAM,SAAAC,CAAQ,IAAI,CAAC,IAAMC,EAAaC,GAAWC,CAAmB,EAAQC,EAAWL,GAAOE,EAAO,WAAiBI,EAAmBC,GAAQ,KAAK,CAAC,GAAGL,EAAO,WAAAG,CAAU,GAAG,CAAC,KAAK,UAAUA,CAAU,CAAC,CAAC,EAAE,OAAoBG,EAAKJ,EAAoB,SAAS,CAAC,MAAME,EAAa,SAASL,CAAQ,CAAC,CAAE,EAAQQ,GAASC,EAAO,OAAaC,CAAQ,EAAQC,GAAwB,CAAC,gBAAgB,YAAY,yBAAoB,YAAY,QAAQ,YAAY,MAAM,WAAW,EAAQC,GAAS,CAAC,CAAC,OAAAC,EAAO,GAAAC,EAAG,QAAAC,EAAQ,MAAAC,EAAM,GAAGC,CAAK,KAAW,CAAC,GAAGA,EAAM,UAAUF,GAASE,EAAM,UAAU,QAAQN,GAAwBM,EAAM,OAAO,GAAGA,EAAM,SAAS,WAAW,GAAUC,GAAuB,CAACD,EAAMvB,IAAeuB,EAAM,iBAAwBvB,EAAS,KAAK,GAAG,EAAEuB,EAAM,iBAAwBvB,EAAS,KAAK,GAAG,EAAUyB,GAA6BC,GAAW,SAASH,EAAMI,EAAI,CAAC,GAAK,CAAC,aAAAC,EAAa,UAAAC,CAAS,EAAEC,GAAc,EAAO,CAAC,MAAAC,EAAM,UAAAC,EAAU,SAAAC,EAAS,QAAA/B,EAAQ,UAAAgC,EAAU,GAAGC,CAAS,EAAEjB,GAASK,CAAK,EAAO,CAAC,YAAAa,EAAY,WAAAC,EAAW,oBAAAC,EAAoB,gBAAAC,EAAgB,eAAAC,EAAe,UAAAC,EAAU,gBAAAC,EAAgB,WAAAC,EAAW,SAAA3C,CAAQ,EAAE4C,GAAgB,CAAC,WAAAjD,GAAW,eAAe,YAAY,QAAAO,EAAQ,kBAAAL,EAAiB,CAAC,EAAQgD,EAAiBrB,GAAuBD,EAAMvB,CAAQ,EAAO,CAAC,sBAAA8C,EAAsB,MAAAC,CAAK,EAAEC,GAAyBZ,CAAW,EAAQa,EAAaH,EAAsB,SAASI,KAAO,CAAC,GAAGhB,GAAqB,MAAMA,EAAU,GAAGgB,EAAI,IAAW,GAAM,MAAO,EAAO,CAAC,EAAQC,EAAWC,GAAO,IAAI,EAAQC,EAAY,IAAQjB,IAAc,YAA6CkB,EAAa,IAAQlB,IAAc,YAA6CmB,EAAOC,GAAU,EAAQC,EAAa,IAAQrB,IAAc,YAA6CsB,EAAsBC,GAAM,EAAQC,GAAsB,CAAC,EAAQC,GAAkBC,GAAqB,EAAE,OAAoBjD,EAAKkD,GAAY,CAAC,GAAG9B,GAAUyB,EAAgB,SAAsB7C,EAAKC,GAAS,CAAC,QAAQd,EAAS,QAAQ,GAAM,SAAsBa,EAAKT,GAAW,CAAC,MAAMD,GAAY,SAAsB6D,EAAMjD,EAAO,IAAI,CAAC,GAAGoB,EAAU,GAAGI,EAAgB,UAAU0B,GAAGrE,GAAkB,GAAGgE,GAAsB,iBAAiB5B,EAAUK,CAAU,EAAE,mBAAmB,UAAU,iBAAiBQ,EAAiB,SAAS,YAAY,IAAIlB,GAAKwB,EAAK,MAAM,CAAC,GAAGpB,CAAK,EAAE,GAAGjC,GAAqB,CAAC,UAAU,CAAC,mBAAmB,eAAe,EAAE,UAAU,CAAC,mBAAmB,OAAO,EAAE,UAAU,CAAC,mBAAmB,wBAAmB,CAAC,EAAEsC,EAAYI,CAAc,EAAE,SAAS,CAACa,EAAY,GAAgBW,EAAMjD,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,kBAAkB,iBAAiB8B,EAAiB,SAAS,YAAY,SAAS,CAAchC,EAAKE,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,mBAAmB,iBAAiB8B,EAAiB,SAAS,YAAY,SAASS,EAAa,GAAgBzC,EAAKqD,EAA0B,CAAC,OAAO,GAAG,GAAGL,IAAmB,GAAG,GAAG,EAAE,EAAE,EAAE,SAAsBhD,EAAKE,EAAO,IAAI,CAAC,UAAU,2BAA2B,iBAAiB8B,EAAiB,SAAS,sBAAsB,SAAsBhC,EAAK3B,GAAc,CAAC,UAAU,YAAY,UAAU,YAAY,UAAU,6BAA6B,UAAU,uEAAuE,UAAU,UAAU,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,UAAU,GAAM,MAAM,CAAC,OAAO,MAAM,EAAE,UAAU,GAAM,UAAU,YAAY,QAAQ,YAAY,MAAM,OAAO,UAAU,wEAAwE,UAAU,EAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEoE,EAAa,GAAgBzC,EAAKsD,GAAa,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,EAAE,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,CAAC,EAAE,SAASC,IAA4BvD,EAAKqD,EAA0B,CAAC,OAAO,GAAG,GAAGL,IAAmB,GAAG,GAAG,EAAE,EAAE,SAAsBhD,EAAKE,EAAO,IAAI,CAAC,UAAU,2BAA2B,iBAAiB8B,EAAiB,SAAS,sBAAsB,SAAsBhC,EAAK3B,GAAc,CAAC,UAAU,YAAY,UAAU,YAAY,UAAUkF,GAAc,CAAC,EAAE,UAAU,uEAAuE,UAAU,eAAe,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,UAAU,GAAM,MAAM,CAAC,OAAO,MAAM,EAAE,UAAU,GAAM,UAAU,YAAY,QAAQ,YAAY,MAAM,OAAO,UAAU,qEAAqE,UAAU,GAAM,GAAGtE,GAAqB,CAAC,UAAU,CAAC,UAAUsE,GAAc,CAAC,CAAC,CAAC,EAAEhC,EAAYI,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAewB,EAAMjD,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,oBAAoB,iBAAiB8B,EAAiB,SAAS,YAAY,SAAS,CAAchC,EAAKqD,EAA0B,CAAC,OAAO,GAAG,GAAGL,IAAmB,GAAG,GAAG,EAAE,EAAE,EAAE,SAAsBhD,EAAKE,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiB8B,EAAiB,SAAS,sBAAsB,SAAsBhC,EAAK1B,GAA+B,CAAC,UAAU,YAAY,UAAU,YAAY,UAAU,mCAAmC,UAAU,uEAAuE,UAAU,eAAe,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,UAAU,GAAM,MAAM,CAAC,OAAO,MAAM,EAAE,UAAU,GAAM,UAAU,YAAY,QAAQ,YAAY,MAAM,OAAO,UAAU,qEAAqE,UAAU,GAAM,GAAGW,GAAqB,CAAC,UAAU,CAAC,UAAU,sCAAsC,CAAC,EAAEsC,EAAYI,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAe3B,EAAKqD,EAA0B,CAAC,OAAO,GAAG,GAAGL,IAAmB,GAAG,GAAG,EAAE,EAAE,EAAE,SAAsBhD,EAAKE,EAAO,IAAI,CAAC,UAAU,2BAA2B,iBAAiB8B,EAAiB,SAAS,sBAAsB,SAAsBhC,EAAKtB,GAAmE,CAAC,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEkE,EAAa,GAAgB5C,EAAKE,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,cAAc,iBAAiB,GAAK,iBAAiB8B,EAAiB,SAAS,YAAY,MAAMI,EAAa,MAAM,CAAC,gBAAgB,2BAA2B,uBAAuB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,EAAE,SAAsBpC,EAAKwD,GAAI,CAAC,UAAU,iBAAiB,OAAO,WAAW,iBAAiBxB,EAAiB,SAAS,YAAY,QAAQ,EAAE,IAAI,wxBAAwxB,aAAa,YAAY,mBAAmB,EAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,EAAQyB,GAAI,CAAC,kFAAkF,kFAAkF,2QAA2Q,qRAAqR,+RAA+R,0LAA0L,4RAA4R,yGAAyG,8LAA8L,oLAAoL,y4BAAy4B,iEAAiE,uFAAuF,+EAA+E,uEAAuE,EAS77XC,GAAgBC,GAAQ/C,GAAU6C,GAAI,cAAc,EAASG,GAAQF,GAAgBA,GAAgB,YAAY,yCAAoCA,GAAgB,aAAa,CAAC,OAAO,GAAG,MAAM,GAAG,EAAEG,GAAoBH,GAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,YAAY,YAAY,WAAW,EAAE,aAAa,CAAC,UAAU,yBAAoB,QAAQ,eAAe,EAAE,MAAM,UAAU,KAAKI,EAAY,IAAI,EAAE,UAAU,CAAC,MAAM,WAAW,KAAKA,EAAY,YAAY,CAAC,CAAC,EAAEC,GAASL,GAAgB,CAAC,CAAC,cAAc,GAAK,MAAM,CAAC,CAAC,EAAE,GAAGvF,GAAmB,GAAGK,EAA4B,EAAE,CAAC,6BAA6B,EAAI,CAAC,ECTwiB,IAAMwF,GAAkBC,GAASC,EAAY,EAAQC,GAAmBC,GAAUC,EAAO,GAAG,EAAQC,GAAsBL,GAASM,EAAgB,EAAQC,GAAaP,GAASQ,EAAO,EAAQC,GAAgBC,GAAON,EAAO,GAAG,EAAQO,GAA4BX,GAASY,EAAsB,EAAQC,GAA2BC,GAAoBC,EAAkB,EAAQC,GAAW,CAAC,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAW,EAAQC,GAAkB,eAAqBC,GAAkB,CAAC,UAAU,mBAAmB,UAAU,mBAAmB,UAAU,mBAAmB,UAAU,mBAAmB,UAAU,kBAAkB,UAAU,mBAAmB,UAAU,kBAAkB,UAAU,kBAAkB,EAAE,SAASC,GAAqBC,KAAaC,EAAS,CAAC,IAAMC,EAAc,CAAC,EAAE,OAAAD,GAAU,QAAQE,GAASA,GAAS,OAAO,OAAOD,EAAcF,EAAUG,CAAO,CAAC,CAAC,EAASD,CAAc,CAAC,IAAME,GAAY,CAAC,QAAQ,GAAG,MAAM,EAAE,KAAK,EAAE,UAAU,IAAI,KAAK,QAAQ,EAAQC,GAAY,CAAC,QAAQ,GAAG,MAAM,EAAE,KAAK,EAAE,UAAU,IAAI,KAAK,QAAQ,EAAQC,GAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAWD,GAAY,EAAE,EAAE,EAAE,CAAC,EAAQE,GAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAWF,GAAY,EAAE,EAAE,EAAE,CAAC,EAAQG,GAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,EAAQC,GAAQ,CAAC,CAAC,SAAAC,EAAS,uBAAAC,EAAuB,QAAAC,EAAQ,EAAI,IAAI,CAAC,GAAK,CAACC,EAAQC,CAAU,EAAEC,GAAgB,CAAC,uBAAAJ,CAAsB,CAAC,EAAE,OAAOD,EAAS,CAAC,KAAK,IAAII,EAAW,EAAK,EAAE,KAAK,IAAIA,EAAW,EAAI,EAAE,OAAO,IAAIA,EAAW,CAACD,CAAO,EAAE,QAAQD,GAASC,CAAO,CAAC,CAAE,EAAQG,GAAW,CAAC,CAAC,MAAAC,EAAM,SAAAP,CAAQ,IAAI,CAAC,IAAMQ,EAAaC,GAAWC,CAAmB,EAAQC,EAAWJ,GAAOC,EAAO,WAAiBI,EAAmBC,GAAQ,KAAK,CAAC,GAAGL,EAAO,WAAAG,CAAU,GAAG,CAAC,KAAK,UAAUA,CAAU,CAAC,CAAC,EAAE,OAAoBG,EAAKJ,EAAoB,SAAS,CAAC,MAAME,EAAa,SAASZ,CAAQ,CAAC,CAAE,EAAQe,GAASzC,EAAO,OAAa0C,CAAQ,EAAQC,GAAqB,CAAC,gBAAgB,YAAY,yBAAoB,YAAY,QAAQ,YAAY,MAAM,WAAW,EAAQC,GAAwB,CAAC,0BAAqB,YAAY,YAAY,YAAY,aAAa,YAAY,WAAW,YAAY,uBAAkB,YAAY,QAAQ,YAAY,IAAI,YAAY,MAAM,WAAW,EAAQC,GAAS,CAAC,CAAC,QAAAC,EAAQ,OAAAC,EAAO,WAAAC,EAAW,OAAAC,EAAO,GAAAC,EAAG,OAAAC,EAAO,MAAAC,EAAM,GAAGC,CAAK,KAAW,CAAC,GAAGA,EAAM,UAAUN,GAAQM,EAAM,WAAW,GAAK,UAAUL,GAAYK,EAAM,WAAW,wEAAwE,UAAUF,GAAQE,EAAM,WAAW,GAAK,QAAQT,GAAwBS,EAAM,OAAO,GAAGA,EAAM,SAAS,YAAY,UAAUV,GAAqBG,CAAO,GAAGA,GAASO,EAAM,WAAW,WAAW,GAAUC,GAAuB,CAACD,EAAMpC,IAAeoC,EAAM,iBAAwBpC,EAAS,KAAK,GAAG,EAAEoC,EAAM,iBAAwBpC,EAAS,KAAK,GAAG,EAAUsC,GAA6BC,GAAW,SAASH,EAAMI,EAAI,CAAC,GAAK,CAAC,aAAAC,EAAa,UAAAC,CAAS,EAAEC,GAAc,EAAO,CAAC,MAAAC,EAAM,UAAAC,EAAU,SAAAC,EAAS,QAAA5C,EAAQ,UAAA6C,EAAU,UAAAC,EAAU,UAAAC,EAAU,UAAAC,EAAU,GAAGC,CAAS,EAAEvB,GAASQ,CAAK,EAAO,CAAC,YAAAgB,EAAY,WAAAC,EAAW,oBAAAC,EAAoB,gBAAAC,EAAgB,eAAAC,EAAe,UAAAC,EAAU,gBAAAC,EAAgB,WAAAC,EAAW,SAAA3D,CAAQ,EAAE4D,GAAgB,CAAC,WAAAjE,GAAW,eAAe,YAAY,QAAAO,EAAQ,kBAAAL,EAAiB,CAAC,EAAQgE,EAAiBxB,GAAuBD,EAAMpC,CAAQ,EAAO,CAAC,sBAAA8D,EAAsB,MAAAC,CAAK,EAAEC,GAAyBZ,CAAW,EAAQa,EAAYH,EAAsB,SAASI,KAAO,CAACP,EAAW,WAAW,CAAE,CAAC,EAAQQ,EAAYL,EAAsB,SAASI,KAAO,CAACP,EAAW,WAAW,CAAE,CAAC,EAAQS,EAAgBN,EAAsB,SAASI,KAAO,CAACP,EAAW,WAAW,CAAE,CAAC,EAAQU,EAAgBP,EAAsB,SAASI,KAAO,CAACP,EAAW,WAAW,CAAE,CAAC,EAAQW,GAAmBR,EAAsB,SAASI,KAAO,CAACP,EAAW,WAAW,CAAE,CAAC,EAAQY,GAAgB,CAAC,CAAC,QAAAC,GAAQ,eAAAC,EAAc,IAAIX,EAAsB,SAASI,KAAO,CAACM,GAAQ,KAAK,CAAE,CAAC,EAAQE,GAAgB,CAAC,CAAC,QAAAF,GAAQ,eAAAC,EAAc,IAAIX,EAAsB,SAASI,KAAO,CAACM,GAAQ,KAAK,CAAE,CAAC,EAAQG,EAAgBb,EAAsB,SAASI,KAAO,CAACP,EAAW,WAAW,CAAE,CAAC,EAAQiB,GAAgBd,EAAsB,SAASI,KAAO,CAACP,EAAW,WAAW,CAAE,CAAC,EAAQkB,GAAWC,GAAO,IAAI,EAAQC,EAAY/D,IAAWoC,IAAc,YAAmB,GAAYpC,GAAcgE,GAAa,IAAQ,EAAC,YAAY,YAAY,YAAY,YAAY,YAAY,WAAW,EAAE,SAAS5B,CAAW,EAAmC6B,GAAWH,GAAO,IAAI,EAAQI,GAAWJ,GAAO,IAAI,EAAQK,GAAWL,GAAO,IAAI,EAAQM,GAAWN,GAAO,IAAI,EAAQO,GAAOC,GAAU,EAAQC,GAAWT,GAAO,IAAI,EAAQU,GAAWV,GAAO,IAAI,EAAQW,GAAWX,GAAO,IAAI,EAAQY,GAAWZ,GAAO,IAAI,EAAQa,GAAYb,GAAO,IAAI,EAAQc,GAAYd,GAAO,IAAI,EAAQe,GAAa,IAAQ,EAAC,YAAY,WAAW,EAAE,SAASzC,CAAW,EAAmC0C,GAAsBC,GAAM,EAAQC,GAAsB,CAAC,EAAQC,GAAkBC,GAAqB,EAAE,OAAoB3E,EAAK4E,GAAY,CAAC,GAAGrD,GAAUgD,GAAgB,SAAsBvE,EAAKC,GAAS,CAAC,QAAQxB,EAAS,QAAQ,GAAM,SAAsBuB,EAAKR,GAAW,CAAC,MAAMZ,GAAY,SAAsBiG,EAAMrH,EAAO,IAAI,CAAC,GAAGoE,EAAU,GAAGI,EAAgB,UAAU8C,GAAGzG,GAAkB,GAAGoG,GAAsB,iBAAiBnD,EAAUQ,CAAU,EAAE,mBAAmB,UAAU,iBAAiBQ,EAAiB,SAAS,YAAY,IAAIrB,GAAKqC,GAAK,MAAM,CAAC,GAAGjC,CAAK,EAAE,GAAG9C,GAAqB,CAAC,UAAU,CAAC,mBAAmB,YAAY,EAAE,UAAU,CAAC,mBAAmB,sBAAiB,EAAE,UAAU,CAAC,mBAAmB,yBAAoB,EAAE,UAAU,CAAC,mBAAmB,UAAU,EAAE,UAAU,CAAC,mBAAmB,WAAW,EAAE,UAAU,CAAC,mBAAmB,OAAO,EAAE,UAAU,CAAC,mBAAmB,KAAK,CAAC,EAAEsD,EAAYI,CAAc,EAAE,SAAS,CAAc4C,EAAMrH,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,YAAY,iBAAiB8E,EAAiB,SAAS,YAAY,MAAM,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAActC,EAAKxC,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,eAAe,iBAAiB8E,EAAiB,SAAS,YAAY,GAAG/D,GAAqB,CAAC,UAAU,CAAC,iBAAiB,GAAK,MAAMqE,CAAW,EAAE,UAAU,CAAC,iBAAiB,GAAK,MAAMF,CAAW,CAAC,EAAEb,EAAYI,CAAc,CAAC,CAAC,EAAejC,EAAKxC,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,UAAU,iBAAiB8E,EAAiB,SAAS,YAAY,SAAsBtC,EAAK+E,EAA0B,CAAC,SAAsB/E,EAAKxC,EAAO,IAAI,CAAC,UAAU,2BAA2B,iBAAiB8E,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAK3C,GAAa,CAAC,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,UAAUwF,EAAgB,MAAM,CAAC,MAAM,MAAM,EAAE,QAAQ,YAAY,MAAM,OAAO,GAAGtE,GAAqB,CAAC,UAAU,CAAC,UAAUuE,CAAe,EAAE,UAAU,CAAC,UAAU,MAAS,EAAE,UAAU,CAAC,UAAU,MAAS,EAAE,UAAU,CAAC,UAAU,MAAS,EAAE,UAAU,CAAC,UAAU,MAAS,CAAC,EAAEjB,EAAYI,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAe4C,EAAMrH,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,cAAc,iBAAiB8E,EAAiB,SAAS,YAAY,SAAS,CAACkB,EAAY7B,CAAS,GAAgB3B,EAAK1C,GAAmB,CAAC,UAAU,gBAAgB,mBAAmB,KAAK,iBAAiBgF,EAAiB,SAAS,YAAY,MAAM,CAAC,gBAAgB,uBAAuB,EAAE,SAAS,CAAC,UAAU,CAAC,gBAAgB,oEAAoE,CAAC,CAAC,CAAC,EAAeuC,EAAMrH,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,YAAY,iBAAiB8E,EAAiB,SAAS,YAAY,SAAS,CAAcuC,EAAMrH,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,OAAO,iBAAiB8E,EAAiB,SAAS,YAAY,SAAS,CAActC,EAAKgF,EAAK,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,aAAa,GAAM,GAAGzG,GAAqB,CAAC,UAAU,CAAC,KAAK,MAAS,EAAE,UAAU,CAAC,KAAK,CAAC,UAAU,WAAW,CAAC,CAAC,EAAEsD,EAAYI,CAAc,EAAE,SAAsBjC,EAAKxC,EAAO,EAAE,CAAC,UAAU,gCAAgC,mBAAmB,OAAO,iBAAiB,GAAK,iBAAiB8E,EAAiB,SAAS,YAAY,aAAaS,GAAmB,GAAGxE,GAAqB,CAAC,UAAU,CAAC,iBAAiB,OAAU,aAAa,MAAS,EAAE,UAAU,CAAC,iBAAiB,OAAU,aAAa,MAAS,EAAE,UAAU,CAAC,iBAAiB,OAAU,aAAa,MAAS,EAAE,UAAU,CAAC,iBAAiB,OAAU,aAAa,MAAS,EAAE,UAAU,CAAC,iBAAiB,OAAU,aAAa,MAAS,EAAE,UAAU,CAAC,iBAAiB,OAAU,aAAa,MAAS,CAAC,EAAEsD,EAAYI,CAAc,EAAE,SAAsBjC,EAAKiF,GAAI,CAAC,UAAU,iBAAiB,mBAAmB,OAAO,KAAK,QAAQ,gBAAgB,GAAG,eAAe,GAAG,iBAAiB3C,EAAiB,SAAS,YAAY,IAAI,4nEAA4nE,SAAS,EAAE,MAAM,gBAAgB,mBAAmB,EAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEmB,GAAa,GAAgBoB,EAAMrH,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,OAAO,iBAAiB8E,EAAiB,SAAS,YAAY,SAAS,CAActC,EAAKf,GAAQ,CAAC,uBAAuB,GAAM,SAASgE,IAAsBjD,EAAKkF,GAAU,CAAC,SAAsBlF,EAAK+E,EAA0B,CAAC,OAAO,GAAG,GAAGL,IAAmB,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,SAAsBG,EAAMrH,EAAO,IAAI,CAAC,UAAU,0BAA0B,GAAG,GAAG+D,CAAQ,UAAU,iBAAiBe,EAAiB,SAAS,sBAAsB,IAAIoB,GAAK,SAAS,CAAc1D,EAAKtC,GAAiB,CAAC,UAAUyF,GAAgB,CAAC,QAAAF,EAAO,CAAC,EAAE,UAAUvB,EAAU,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,UAAU,UAAU,QAAQ,YAAY,UAAUsB,GAAgB,CAAC,QAAAC,EAAO,CAAC,EAAE,MAAM,MAAM,CAAC,EAAejD,EAAKmF,GAAgB,CAAC,SAASlC,GAAQ,SAAsBjD,EAAKoF,GAAS,CAAC,UAAU,QAAQ,UAAU1B,GAAK,UAAUoB,GAAGzG,GAAkByD,EAAW,GAAG2C,EAAqB,EAAE,mBAAmB,GAAK,0BAA0B,GAAG,wBAAwB,GAAGlD,CAAQ,UAAU,QAAQ,EAAE,QAAQ,EAAE,UAAU0B,GAAQ,KAAK,UAAU,SAAS,eAAe,WAAW,SAAS,GAAK,OAAO,GAAG,SAAsBjD,EAAK+E,EAA0B,CAAC,OAAO,IAAI,GAAGL,IAAmB,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,SAAsB1E,EAAKnC,GAAgB,CAAC,gBAAgB,GAAM,mBAAmB,GAAK,gBAAgB,EAAE,QAAQkB,GAAW,UAAU,2BAA2B,KAAKD,GAAU,QAAQE,GAAW,iBAAiBsD,EAAiB,SAAS,sBAAsB,IAAIqB,GAAK,KAAK,SAAS,SAAsB3D,EAAKpC,GAAQ,CAAC,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,QAAQ,YAAY,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeoC,EAAKf,GAAQ,CAAC,uBAAuB,GAAM,SAASoG,IAAuBrF,EAAKkF,GAAU,CAAC,SAAsBlF,EAAK+E,EAA0B,CAAC,OAAO,GAAG,GAAGL,IAAmB,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,SAAsBG,EAAMrH,EAAO,IAAI,CAAC,UAAU,0BAA0B,GAAG,GAAG+D,CAAQ,UAAU,iBAAiBe,EAAiB,SAAS,sBAAsB,IAAIsB,GAAK,SAAS,CAAc5D,EAAKtC,GAAiB,CAAC,UAAUyF,GAAgB,CAAC,QAAQkC,EAAQ,CAAC,EAAE,UAAU3D,EAAU,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,UAAU,OAAO,QAAQ,YAAY,UAAUsB,GAAgB,CAAC,QAAQqC,EAAQ,CAAC,EAAE,MAAM,OAAO,UAAU,gCAAgC,CAAC,EAAerF,EAAKmF,GAAgB,CAAC,SAASE,GAAS,SAAsBrF,EAAKoF,GAAS,CAAC,UAAU,QAAQ,UAAUxB,GAAK,UAAUkB,GAAGzG,GAAkByD,EAAW,GAAG2C,EAAqB,EAAE,mBAAmB,GAAK,0BAA0B,GAAG,wBAAwB,GAAGlD,CAAQ,UAAU,QAAQ,EAAE,QAAQ,EAAE,UAAU8D,GAAS,KAAK,UAAU,SAAS,eAAe,WAAW,SAAS,GAAK,OAAO,GAAG,SAAsBrF,EAAK+E,EAA0B,CAAC,OAAO,IAAI,GAAGL,IAAmB,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,SAAsB1E,EAAKnC,GAAgB,CAAC,gBAAgB,GAAM,mBAAmB,GAAK,gBAAgB,EAAE,QAAQkB,GAAW,UAAU,2BAA2B,KAAKD,GAAU,QAAQE,GAAW,iBAAiBsD,EAAiB,SAAS,sBAAsB,IAAIuB,GAAK,KAAK,SAAS,SAAsB7D,EAAKpC,GAAQ,CAAC,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,QAAQ,YAAY,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeoC,EAAKf,GAAQ,CAAC,uBAAuB,GAAM,SAASqG,IAAuBtF,EAAKkF,GAAU,CAAC,SAAsBlF,EAAKuF,GAAa,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,EAAE,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,CAAC,EAAE,SAASC,IAA4BxF,EAAK+E,EAA0B,CAAC,OAAO,GAAG,GAAGL,IAAmB,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,SAAsBG,EAAMrH,EAAO,IAAI,CAAC,UAAU,0BAA0B,GAAG,GAAG+D,CAAQ,UAAU,iBAAiBe,EAAiB,SAAS,sBAAsB,IAAI0B,GAAK,SAAS,CAAchE,EAAKtC,GAAiB,CAAC,UAAUyF,GAAgB,CAAC,QAAQmC,EAAQ,CAAC,EAAE,UAAU5D,EAAU,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,UAAU,YAAY,QAAQ,YAAY,UAAUsB,GAAgB,CAAC,QAAQsC,EAAQ,CAAC,EAAE,MAAM,OAAO,UAAUE,GAAc,CAAC,EAAE,GAAGjH,GAAqB,CAAC,UAAU,CAAC,UAAUiH,GAAc,CAAC,CAAC,CAAC,EAAE3D,EAAYI,CAAc,CAAC,CAAC,EAAejC,EAAKmF,GAAgB,CAAC,SAASG,GAAS,SAAsBtF,EAAKoF,GAAS,CAAC,UAAU,QAAQ,UAAUpB,GAAK,UAAUc,GAAGzG,GAAkByD,EAAW,GAAG2C,EAAqB,EAAE,mBAAmB,GAAK,0BAA0B,GAAG,wBAAwB,GAAGlD,CAAQ,UAAU,QAAQ,EAAE,QAAQ,EAAE,UAAU+D,GAAS,KAAK,UAAU,SAAS,eAAe,WAAW,SAAS,GAAK,OAAO,GAAG,SAAsBtF,EAAK+E,EAA0B,CAAC,OAAO,IAAI,GAAGL,IAAmB,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,SAAsB1E,EAAKnC,GAAgB,CAAC,gBAAgB,GAAM,mBAAmB,GAAK,gBAAgB,EAAE,QAAQkB,GAAW,UAAU,2BAA2B,KAAKD,GAAU,QAAQE,GAAW,iBAAiBsD,EAAiB,SAAS,sBAAsB,IAAI2B,GAAK,KAAK,SAAS,SAAsBjE,EAAKpC,GAAQ,CAAC,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,QAAQ,YAAY,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeoC,EAAKf,GAAQ,CAAC,uBAAuB,GAAM,SAASwG,IAAuBzF,EAAKkF,GAAU,CAAC,SAAsBlF,EAAK+E,EAA0B,CAAC,OAAO,GAAG,GAAGL,IAAmB,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,SAAsBG,EAAMrH,EAAO,IAAI,CAAC,UAAU,0BAA0B,GAAG,GAAG+D,CAAQ,UAAU,iBAAiBe,EAAiB,SAAS,sBAAsB,IAAI4B,GAAK,SAAS,CAAclE,EAAKtC,GAAiB,CAAC,UAAUyF,GAAgB,CAAC,QAAQsC,EAAQ,CAAC,EAAE,UAAU/D,EAAU,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,UAAU,YAAY,QAAQ,YAAY,UAAUsB,GAAgB,CAAC,QAAQyC,EAAQ,CAAC,EAAE,MAAM,MAAM,CAAC,EAAezF,EAAKmF,GAAgB,CAAC,SAASM,GAAS,SAAsBzF,EAAKoF,GAAS,CAAC,UAAU,QAAQ,UAAUlB,GAAK,UAAUY,GAAGzG,GAAkByD,EAAW,GAAG2C,EAAqB,EAAE,mBAAmB,GAAK,0BAA0B,GAAG,wBAAwB,GAAGlD,CAAQ,UAAU,QAAQ,EAAE,QAAQ,EAAE,UAAUkE,GAAS,KAAK,UAAU,SAAS,eAAe,WAAW,SAAS,GAAK,OAAO,GAAG,SAAsBzF,EAAK+E,EAA0B,CAAC,OAAO,IAAI,GAAGL,IAAmB,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,SAAsB1E,EAAKnC,GAAgB,CAAC,gBAAgB,GAAM,mBAAmB,GAAK,gBAAgB,EAAE,QAAQkB,GAAW,UAAU,0BAA0B,KAAKD,GAAU,QAAQE,GAAW,iBAAiBsD,EAAiB,SAAS,sBAAsB,IAAI6B,GAAK,KAAK,SAAS,SAAsBnE,EAAKpC,GAAQ,CAAC,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,QAAQ,YAAY,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeoC,EAAKf,GAAQ,CAAC,uBAAuB,GAAM,SAASyG,IAAuB1F,EAAKkF,GAAU,CAAC,SAAsBlF,EAAKuF,GAAa,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,EAAE,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,CAAC,EAAE,SAASI,IAA6B3F,EAAK+E,EAA0B,CAAC,OAAO,GAAG,GAAGL,IAAmB,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,SAAsBG,EAAMrH,EAAO,IAAI,CAAC,UAAU,2BAA2B,GAAG,GAAG+D,CAAQ,WAAW,iBAAiBe,EAAiB,SAAS,sBAAsB,IAAI8B,GAAM,SAAS,CAAcpE,EAAKtC,GAAiB,CAAC,UAAUyF,GAAgB,CAAC,QAAQuC,EAAQ,CAAC,EAAE,UAAUhE,EAAU,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,UAAU,WAAW,QAAQ,YAAY,UAAUsB,GAAgB,CAAC,QAAQ0C,EAAQ,CAAC,EAAE,MAAM,OAAO,UAAUC,GAAe,CAAC,EAAE,GAAGpH,GAAqB,CAAC,UAAU,CAAC,UAAUoH,GAAe,CAAC,CAAC,CAAC,EAAE9D,EAAYI,CAAc,CAAC,CAAC,EAAejC,EAAKmF,GAAgB,CAAC,SAASO,GAAS,SAAsB1F,EAAKoF,GAAS,CAAC,UAAU,QAAQ,UAAUhB,GAAM,UAAUU,GAAGzG,GAAkByD,EAAW,GAAG2C,EAAqB,EAAE,mBAAmB,GAAK,0BAA0B,GAAG,wBAAwB,GAAGlD,CAAQ,WAAW,QAAQ,EAAE,QAAQ,EAAE,UAAUmE,GAAS,KAAK,UAAU,SAAS,eAAe,WAAW,SAAS,GAAK,OAAO,GAAG,SAAsB1F,EAAK+E,EAA0B,CAAC,OAAO,IAAI,GAAGL,IAAmB,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,SAAsB1E,EAAKnC,GAAgB,CAAC,gBAAgB,GAAM,mBAAmB,GAAK,gBAAgB,EAAE,QAAQkB,GAAW,UAAU,0BAA0B,KAAKD,GAAU,QAAQE,GAAW,iBAAiBsD,EAAiB,SAAS,sBAAsB,IAAI+B,GAAM,KAAK,SAAS,SAAsBrE,EAAKpC,GAAQ,CAAC,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,QAAQ,YAAY,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeoC,EAAKuF,GAAa,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,EAAE,CAAC,KAAK,CAAC,UAAU,WAAW,EAAE,sBAAsB,MAAS,CAAC,EAAE,SAASK,IAA6B5F,EAAK+E,EAA0B,CAAC,OAAO,GAAG,GAAGL,IAAmB,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,SAAsB1E,EAAKxC,EAAO,IAAI,CAAC,UAAU,2BAA2B,iBAAiB8E,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKtC,GAAiB,CAAC,UAAU2F,GAAgB,UAAU3B,EAAU,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,UAAU,UAAU,QAAQ,YAAY,UAAU0B,EAAgB,MAAM,OAAO,UAAUwC,GAAe,CAAC,EAAE,GAAGrH,GAAqB,CAAC,UAAU,CAAC,UAAUqH,GAAe,CAAC,CAAC,CAAC,EAAE/D,EAAYI,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEqC,GAAa,GAAgBtE,EAAK+E,EAA0B,CAAC,OAAO,GAAG,GAAGL,IAAmB,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,SAAsB1E,EAAKxC,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiB8E,EAAiB,SAAS,sBAAsB,SAAsBtC,EAAKhC,GAAuB,CAAC,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,MAAM,CAAC,OAAO,MAAM,EAAE,QAAQwD,EAAU,MAAM,OAAO,GAAGjD,GAAqB,CAAC,UAAU,CAAC,QAAQ,WAAW,EAAE,UAAU,CAAC,QAAQ,WAAW,EAAE,UAAU,CAAC,QAAQ,WAAW,EAAE,UAAU,CAAC,QAAQ,WAAW,CAAC,EAAEsD,EAAYI,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEuB,EAAY/B,CAAS,GAAgBzB,EAAKxC,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,SAAS,iBAAiB8E,EAAiB,SAAS,YAAY,MAAM,CAAC,UAAU,4CAA4C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,EAAQuD,GAAI,CAAC,kFAAkF,kFAAkF,uPAAuP,6UAA6U,yJAAyJ,iUAAiU,yGAAyG,8TAA8T,oIAAoI,+RAA+R,6QAA6Q,4SAA4S,4JAA4J,wRAAwR,0RAA0R,+PAA+P,yGAAyG,oHAAoH,mJAAmJ,k9CAAk9C,2SAA2S,qNAAqN,6OAA6O,wEAAwE,EASh+4BC,GAAgBC,GAAQhF,GAAU8E,GAAI,cAAc,EAASG,GAAQF,GAAgBA,GAAgB,YAAY,wCAAmCA,GAAgB,aAAa,CAAC,OAAO,GAAG,MAAM,IAAI,EAAEG,GAAoBH,GAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAW,EAAE,aAAa,CAAC,UAAU,QAAQ,uBAAkB,WAAW,MAAM,aAAa,0BAAqB,WAAW,EAAE,MAAM,UAAU,KAAKI,EAAY,IAAI,EAAE,UAAUjI,IAA6B,SAAY,CAAC,GAAGA,GAA2B,QAAW,aAAa,YAAY,YAAY,OAAU,OAAO,OAAU,MAAM,SAAS,EAAE,UAAU,CAAC,aAAa,GAAK,MAAM,SAAS,KAAKiI,EAAY,OAAO,EAAE,UAAU,CAAC,aAAa,+FAA+F,MAAM,aAAa,KAAKA,EAAY,KAAK,EAAE,UAAU,CAAC,aAAa,GAAK,MAAM,UAAU,KAAKA,EAAY,OAAO,CAAC,CAAC,EAAEC,GAASL,GAAgB,CAAC,CAAC,cAAc,GAAK,MAAM,CAAC,CAAC,EAAE,GAAG3I,GAAkB,GAAGM,GAAsB,GAAGE,GAAa,GAAGI,EAA2B,EAAE,CAAC,6BAA6B,EAAI,CAAC,ECT/iB,IAAMqI,GAAaC,GAASC,EAAO,EAAQC,GAAmBF,GAASG,EAAa,EAAQC,GAAW,CAAC,YAAY,YAAY,WAAW,EAAQC,GAAkB,eAAqBC,GAAkB,CAAC,UAAU,mBAAmB,UAAU,kBAAkB,UAAU,iBAAiB,EAAE,SAASC,GAAqBC,KAAaC,EAAS,CAAC,IAAMC,EAAc,CAAC,EAAE,OAAAD,GAAU,QAAQE,GAASA,GAAS,OAAO,OAAOD,EAAcF,EAAUG,CAAO,CAAC,CAAC,EAASD,CAAc,CAAC,IAAME,GAAY,CAAC,QAAQ,GAAG,MAAM,EAAE,KAAK,EAAE,UAAU,IAAI,KAAK,QAAQ,EAAQC,GAAW,CAAC,CAAC,MAAAC,EAAM,SAAAC,CAAQ,IAAI,CAAC,IAAMC,EAAaC,GAAWC,CAAmB,EAAQC,EAAWL,GAAOE,EAAO,WAAiBI,EAAmBC,GAAQ,KAAK,CAAC,GAAGL,EAAO,WAAAG,CAAU,GAAG,CAAC,KAAK,UAAUA,CAAU,CAAC,CAAC,EAAE,OAAoBG,EAAKJ,EAAoB,SAAS,CAAC,MAAME,EAAa,SAASL,CAAQ,CAAC,CAAE,EAAQQ,GAASC,EAAO,OAAaC,CAAQ,EAAQC,GAAwB,CAAC,QAAQ,YAAY,MAAM,YAAY,OAAO,WAAW,EAAQC,GAAS,CAAC,CAAC,OAAAC,EAAO,GAAAC,EAAG,MAAAC,EAAM,GAAGC,CAAK,KAAW,CAAC,GAAGA,EAAM,QAAQL,GAAwBK,EAAM,OAAO,GAAGA,EAAM,SAAS,WAAW,GAAUC,GAAuB,CAACD,EAAMtB,IAAesB,EAAM,iBAAwBtB,EAAS,KAAK,GAAG,EAAEsB,EAAM,iBAAwBtB,EAAS,KAAK,GAAG,EAAUwB,GAA6BC,GAAW,SAASH,EAAMI,EAAI,CAAC,IAAMC,EAAYC,GAAO,IAAI,EAAQC,EAAWH,GAAKC,EAAkBG,EAAsBC,GAAM,EAAO,CAAC,aAAAC,EAAa,UAAAC,CAAS,EAAEC,GAAc,EAAQC,EAAkBC,GAAqB,EAAO,CAAC,MAAAC,EAAM,UAAAC,EAAU,SAAAC,EAAS,QAAArC,EAAQ,GAAGsC,CAAS,EAAEtB,GAASI,CAAK,EAAO,CAAC,YAAAmB,EAAY,WAAAC,EAAW,oBAAAC,EAAoB,gBAAAC,EAAgB,eAAAC,EAAe,UAAAC,EAAU,gBAAAC,EAAgB,WAAAC,EAAW,SAAAhD,CAAQ,EAAEiD,GAAgB,CAAC,WAAAtD,GAAW,eAAe,YAAY,IAAIkC,EAAW,QAAA3B,EAAQ,kBAAAL,EAAiB,CAAC,EAAQqD,EAAiB3B,GAAuBD,EAAMtB,CAAQ,EAAuCmD,EAAkBC,GAAGxD,GAAkB,GAAhD,CAAC,CAAuE,EAAQyD,EAAY,IAAQZ,IAAc,YAA6Ca,EAAa,IAAQb,IAAc,YAAuC,OAAoB5B,EAAK0C,GAAY,CAAC,GAAGhB,GAAUT,EAAgB,SAAsBjB,EAAKC,GAAS,CAAC,QAAQd,EAAS,QAAQ,GAAM,SAAsBa,EAAKT,GAAW,CAAC,MAAMD,GAAY,SAAsBqD,EAAMzC,EAAO,IAAI,CAAC,GAAGyB,EAAU,GAAGI,EAAgB,UAAUQ,GAAGD,EAAkB,gBAAgBb,EAAUI,CAAU,EAAE,mBAAmB,UAAU,iBAAiBQ,EAAiB,SAAS,YAAY,IAAIrB,EAAW,MAAM,CAAC,gBAAgB,wEAAwE,GAAGQ,CAAK,EAAE,GAAGvC,GAAqB,CAAC,UAAU,CAAC,mBAAmB,OAAO,EAAE,UAAU,CAAC,mBAAmB,QAAQ,CAAC,EAAE2C,EAAYI,CAAc,EAAE,SAAS,CAAchC,EAAK4C,EAAK,CAAC,KAAK,iDAAiD,YAAY,GAAK,OAAO,YAAY,aAAa,GAAK,QAAQ,YAAY,SAAsBD,EAAMzC,EAAO,EAAE,CAAC,UAAU,8BAA8B,iBAAiBmC,EAAiB,SAAS,YAAY,SAAS,CAAcrC,EAAK6C,GAAS,CAAC,sBAAsB,GAAK,SAAsB7C,EAAWG,EAAS,CAAC,SAAsBH,EAAKE,EAAO,EAAE,CAAC,MAAM,CAAC,kBAAkB,mCAAmC,uBAAuB,+DAA+D,uBAAuB,QAAQ,sBAAsB,6FAA6F,EAAE,SAAS,uBAAuB,CAAC,CAAC,CAAC,EAAE,UAAU,gBAAgB,MAAM,CAAC,wBAAwB,EAAE,iBAAiBmC,EAAiB,SAAS,YAAY,MAAM,CAAC,qBAAqB,qEAAqE,2BAA2B,mBAAmB,gCAAgC,WAAW,EAAE,kBAAkB,MAAM,mBAAmB,GAAK,GAAGpD,GAAqB,CAAC,UAAU,CAAC,SAAsBe,EAAWG,EAAS,CAAC,SAAsBH,EAAKE,EAAO,EAAE,CAAC,MAAM,CAAC,kBAAkB,mCAAmC,uBAAuB,+DAA+D,qBAAqB,OAAO,uBAAuB,QAAQ,sBAAsB,6FAA6F,EAAE,SAAS,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE0B,EAAYI,CAAc,CAAC,CAAC,EAAeW,EAAMzC,EAAO,IAAI,CAAC,UAAU,iBAAiB,iBAAiBmC,EAAiB,SAAS,YAAY,SAAS,CAAcM,EAAMzC,EAAO,IAAI,CAAC,UAAU,iBAAiB,mBAAmB,WAAW,iBAAiBmC,EAAiB,SAAS,YAAY,SAAS,CAAcrC,EAAK8C,EAA0B,CAAC,SAAsB9C,EAAK+C,EAA8B,CAAC,UAAU,2BAA2B,iBAAiB,GAAK,iBAAiB,GAAK,iBAAiBV,EAAiB,SAAS,sBAAsB,OAAO,YAAY,kBAAkB,GAAK,QAAQ,YAAY,SAAsBrC,EAAKrB,GAAQ,CAAC,MAAM,wEAAwE,OAAO,OAAO,WAAW,OAAO,cAAc,QAAQ,GAAG,YAAY,SAAS,YAAY,SAAS,GAAM,aAAa,GAAK,MAAM,CAAC,OAAO,OAAO,MAAM,MAAM,EAAE,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeqB,EAAK6C,GAAS,CAAC,sBAAsB,GAAK,SAAsB7C,EAAWG,EAAS,CAAC,SAAsBH,EAAKE,EAAO,EAAE,CAAC,MAAM,CAAC,kBAAkB,mCAAmC,uBAAuB,iEAAiE,uBAAuB,QAAQ,sBAAsB,6FAA6F,EAAE,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,UAAU,iBAAiB,mBAAmB,OAAO,MAAM,CAAC,yBAAyB,EAAE,iBAAiBmC,EAAiB,SAAS,YAAY,MAAM,CAAC,qBAAqB,qEAAqE,2BAA2B,mBAAmB,gCAAgC,WAAW,EAAE,kBAAkB,MAAM,mBAAmB,EAAI,CAAC,CAAC,CAAC,CAAC,EAAeM,EAAMzC,EAAO,IAAI,CAAC,UAAU,gBAAgB,mBAAmB,OAAO,iBAAiBmC,EAAiB,SAAS,YAAY,SAAS,CAAcrC,EAAK8C,EAA0B,CAAC,SAAsB9C,EAAK+C,EAA8B,CAAC,UAAU,0BAA0B,iBAAiB,GAAK,iBAAiB,GAAK,iBAAiBV,EAAiB,SAAS,sBAAsB,OAAO,YAAY,kBAAkB,GAAK,QAAQ,YAAY,SAAsBrC,EAAKrB,GAAQ,CAAC,MAAM,wEAAwE,OAAO,OAAO,WAAW,OAAO,cAAc,WAAW,GAAG,YAAY,SAAS,YAAY,SAAS,GAAM,aAAa,GAAK,MAAM,CAAC,OAAO,OAAO,MAAM,MAAM,EAAE,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAeqB,EAAK6C,GAAS,CAAC,sBAAsB,GAAK,SAAsB7C,EAAWG,EAAS,CAAC,SAAsBH,EAAKE,EAAO,EAAE,CAAC,MAAM,CAAC,kBAAkB,mCAAmC,uBAAuB,iEAAiE,uBAAuB,QAAQ,sBAAsB,6FAA6F,EAAE,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,gBAAgB,mBAAmB,OAAO,MAAM,CAAC,yBAAyB,EAAE,iBAAiBmC,EAAiB,SAAS,YAAY,MAAM,CAAC,qBAAqB,qEAAqE,2BAA2B,mBAAmB,gCAAgC,WAAW,EAAE,kBAAkB,MAAM,mBAAmB,EAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEG,EAAY,GAAgBxC,EAAK8C,EAA0B,CAAC,GAAG7D,GAAqB,CAAC,UAAU,CAAC,OAAO,GAAG,GAAGqC,GAAmB,GAAG,IAAI,IAAIA,GAAmB,QAAQ,MAAM,EAAE,IAAI,EAAE,CAAC,EAAEM,EAAYI,CAAc,EAAE,SAAsBhC,EAAK+C,EAA8B,CAAC,UAAU,0BAA0B,iBAAiBV,EAAiB,SAAS,sBAAsB,OAAO,YAAY,kBAAkB,GAAK,QAAQ,YAAY,SAAsBrC,EAAKnB,GAAc,CAAC,UAAU,YAAY,UAAU,YAAY,UAAU,iDAAiD,UAAU,uEAAuE,UAAU,WAAW,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,UAAU,GAAM,MAAM,CAAC,OAAO,MAAM,EAAE,UAAU,GAAK,UAAU,YAAY,QAAQ,YAAY,MAAM,OAAO,UAAU,qEAAqE,UAAU,EAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE4D,EAAa,GAAgBzC,EAAK8C,EAA0B,CAAC,OAAO,GAAG,GAAGxB,GAAmB,GAAG,IAAI,IAAIA,GAAmB,QAAQ,IAAI,EAAE,IAAI,GAAG,SAAsBtB,EAAK+C,EAA8B,CAAC,UAAU,2BAA2B,iBAAiBV,EAAiB,SAAS,sBAAsB,OAAO,YAAY,kBAAkB,GAAK,QAAQ,YAAY,SAAsBrC,EAAKnB,GAAc,CAAC,UAAU,YAAY,UAAU,YAAY,UAAU,iDAAiD,UAAU,uEAAuE,UAAU,WAAW,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,UAAU,GAAM,MAAM,CAAC,OAAO,MAAM,EAAE,UAAU,GAAK,UAAU,YAAY,QAAQ,YAAY,MAAM,OAAO,UAAU,qEAAqE,UAAU,EAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,EAAQmE,GAAI,CAAC,kFAAkF,gFAAgF,wOAAwO,2SAA2S,6KAA6K,qRAAqR,kTAAkT,6JAA6J,iJAAiJ,8JAA8J,oJAAoJ,wEAAwE,+DAA+D,EAUhoYC,GAAgBC,GAAQvC,GAAUqC,GAAI,cAAc,EAASG,GAAQF,GAAgBA,GAAgB,YAAY,qBAAqBA,GAAgB,aAAa,CAAC,OAAO,GAAG,MAAM,IAAI,EAAEG,GAAoBH,GAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,YAAY,WAAW,EAAE,aAAa,CAAC,UAAU,QAAQ,QAAQ,EAAE,MAAM,UAAU,KAAKI,EAAY,IAAI,CAAC,CAAC,EAAEC,GAASL,GAAgB,CAAC,CAAC,cAAc,GAAK,MAAM,CAAC,CAAC,OAAO,kBAAkB,OAAO,SAAS,IAAI,uEAAuE,EAAE,CAAC,OAAO,mBAAmB,OAAO,SAAS,IAAI,uEAAuE,CAAC,CAAC,EAAE,GAAGxE,GAAa,GAAGG,EAAkB,EAAE,CAAC,6BAA6B,EAAI,CAAC,ECV/B,IAAM2E,GAAsBC,GAASC,EAAgB,EAAQC,GAAuBF,GAASG,EAAiB,EAAQC,GAA8BJ,GAASK,EAAwB,EAAQC,GAA0BC,GAAoBJ,EAAiB,EAAQK,GAAyBD,GAAoBN,EAAgB,EAAQQ,GAAW,CAAC,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAW,EAAQC,GAAkB,eAAqBC,GAAkB,CAAC,UAAU,mBAAmB,UAAU,kBAAkB,UAAU,kBAAkB,UAAU,kBAAkB,UAAU,mBAAmB,UAAU,mBAAmB,UAAU,mBAAmB,UAAU,iBAAiB,EAAE,SAASC,GAAqBC,KAAaC,EAAS,CAAC,IAAMC,EAAc,CAAC,EAAE,OAAAD,GAAU,QAAQE,GAASA,GAAS,OAAO,OAAOD,EAAcF,EAAUG,CAAO,CAAC,CAAC,EAASD,CAAc,CAAC,IAAME,GAAY,CAAC,QAAQ,GAAG,MAAM,EAAE,KAAK,EAAE,UAAU,IAAI,KAAK,QAAQ,EAAQC,GAAW,CAAC,CAAC,MAAAC,EAAM,SAAAC,CAAQ,IAAI,CAAC,IAAMC,EAAaC,GAAWC,CAAmB,EAAQC,EAAWL,GAAOE,EAAO,WAAiBI,EAAmBC,GAAQ,KAAK,CAAC,GAAGL,EAAO,WAAAG,CAAU,GAAG,CAAC,KAAK,UAAUA,CAAU,CAAC,CAAC,EAAE,OAAoBG,EAAKJ,EAAoB,SAAS,CAAC,MAAME,EAAa,SAASL,CAAQ,CAAC,CAAE,EAAQQ,GAASC,EAAO,OAAaC,CAAQ,EAAQC,GAAqB,CAAC,gBAAgB,YAAY,yBAAoB,YAAY,QAAQ,YAAY,MAAM,WAAW,EAAQC,GAAsB,CAAC,QAAQ,YAAY,MAAM,YAAY,OAAO,WAAW,EAAQC,GAAwB,CAAC,kBAAkB,YAAY,2BAA2B,YAAY,0BAA0B,YAAY,gBAAgB,YAAY,cAAc,YAAY,QAAQ,YAAY,MAAM,YAAY,OAAO,WAAW,EAAQC,GAAS,CAAC,CAAC,QAAAC,EAAQ,OAAAC,EAAO,iBAAAC,EAAiB,OAAAC,EAAO,WAAAC,EAAW,OAAAC,EAAO,GAAAC,EAAG,OAAAC,EAAO,MAAAC,EAAM,GAAGC,CAAK,KAAW,CAAC,GAAGA,EAAM,UAAUL,GAAYK,EAAM,WAAW,wEAAwE,UAAUN,GAAQM,EAAM,WAAW,GAAK,UAAUZ,GAAsBK,CAAgB,GAAGA,GAAkBO,EAAM,WAAW,YAAY,UAAUR,GAAQQ,EAAM,WAAW,GAAK,UAAUb,GAAqBI,CAAO,GAAGA,GAASS,EAAM,WAAW,YAAY,QAAQX,GAAwBW,EAAM,OAAO,GAAGA,EAAM,SAAS,YAAY,UAAUF,GAAQE,EAAM,WAAW,EAAI,GAAUC,GAAuB,CAACD,EAAM9B,IAAe8B,EAAM,iBAAwB9B,EAAS,KAAK,GAAG,EAAE8B,EAAM,iBAAwB9B,EAAS,KAAK,GAAG,EAAUgC,GAA6BC,GAAW,SAASH,EAAMI,EAAI,CAAC,GAAK,CAAC,aAAAC,EAAa,UAAAC,CAAS,EAAEC,GAAc,EAAO,CAAC,MAAAC,EAAM,UAAAC,EAAU,SAAAC,EAAS,QAAAtC,EAAQ,UAAAuC,EAAU,UAAAC,EAAU,UAAAC,EAAU,UAAAC,EAAU,UAAAC,EAAU,UAAAC,EAAU,GAAGC,CAAS,EAAE3B,GAASU,CAAK,EAAO,CAAC,YAAAkB,EAAY,WAAAC,EAAW,oBAAAC,EAAoB,gBAAAC,EAAgB,eAAAC,EAAe,UAAAC,EAAU,gBAAAC,EAAgB,WAAAC,EAAW,SAAAvD,CAAQ,EAAEwD,GAAgB,CAAC,WAAA7D,GAAW,eAAe,YAAY,QAAAO,EAAQ,kBAAAL,EAAiB,CAAC,EAAQ4D,EAAiB1B,GAAuBD,EAAM9B,CAAQ,EAAuC0D,EAAkBC,GAAG/D,GAAkB,GAAhD,CAAC,CAAuE,EAAQgE,EAAWC,GAAO,IAAI,EAAQC,EAAY,IAAQ,GAAC,YAAY,YAAY,YAAY,YAAY,YAAY,WAAW,EAAE,SAASd,CAAW,EAAmCe,GAAa,IAAQ,EAAC,YAAY,YAAY,YAAY,YAAY,YAAY,WAAW,EAAE,SAASf,CAAW,EAAmCgB,GAAsBC,GAAM,EAAQC,GAAkBC,GAAqB,EAAE,OAAoBtD,EAAKuD,GAAY,CAAC,GAAG5B,GAAUwB,GAAgB,SAAsBnD,EAAKC,GAAS,CAAC,QAAQd,EAAS,QAAQ,GAAM,SAAsBa,EAAKT,GAAW,CAAC,MAAMD,GAAY,SAAsBkE,EAAMtD,EAAO,IAAI,CAAC,GAAGgC,EAAU,GAAGI,EAAgB,UAAUQ,GAAGD,EAAkB,gBAAgBnB,EAAUU,CAAU,EAAE,mBAAmB,UAAU,iBAAiBQ,EAAiB,SAAS,YAAY,IAAIvB,GAAK0B,EAAK,MAAM,CAAC,GAAGtB,CAAK,EAAE,GAAGxC,GAAqB,CAAC,UAAU,CAAC,mBAAmB,yBAAyB,EAAE,UAAU,CAAC,mBAAmB,eAAe,EAAE,UAAU,CAAC,mBAAmB,aAAa,EAAE,UAAU,CAAC,mBAAmB,iBAAiB,EAAE,UAAU,CAAC,mBAAmB,OAAO,EAAE,UAAU,CAAC,mBAAmB,QAAQ,EAAE,UAAU,CAAC,mBAAmB,0BAA0B,CAAC,EAAEkD,EAAYI,CAAc,EAAE,SAAS,CAACP,GAAwBhC,EAAKyD,EAA0B,CAAC,OAAO,GAAG,MAAMJ,IAAmB,OAAO,QAAQ,GAAGA,IAAmB,GAAG,GAAG,KAAKA,IAAmB,QAAQ,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,GAAGpE,GAAqB,CAAC,UAAU,CAAC,GAAGoE,IAAmB,GAAG,GAAG,KAAKA,IAAmB,QAAQ,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,GAAGA,IAAmB,GAAG,GAAG,KAAKA,IAAmB,QAAQ,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,GAAGA,IAAmB,GAAG,GAAG,KAAKA,IAAmB,QAAQ,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAElB,EAAYI,CAAc,EAAE,SAAsBvC,EAAKE,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiB0C,EAAiB,SAAS,sBAAsB,SAAsB5C,EAAK1B,GAAiB,CAAC,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,MAAM,CAAC,OAAO,OAAO,MAAM,MAAM,EAAE,QAAQ,YAAY,MAAM,OAAO,GAAGW,GAAqB,CAAC,UAAU,CAAC,QAAQgD,CAAS,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,MAAM,EAAE,QAAQ,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,MAAM,EAAE,QAAQ,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,MAAM,EAAE,QAAQ,WAAW,EAAE,UAAU,CAAC,QAAQ,WAAW,CAAC,EAAEE,EAAYI,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEU,EAAY,GAAgBjD,EAAKyD,EAA0B,CAAC,GAAGxE,GAAqB,CAAC,UAAU,CAAC,OAAO,GAAG,MAAMoE,IAAmB,OAAO,QAAQ,GAAGA,IAAmB,GAAG,GAAG,KAAKA,IAAmB,QAAQ,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,UAAU,CAAC,OAAO,GAAG,MAAMA,IAAmB,OAAO,QAAQ,GAAGA,IAAmB,GAAG,GAAG,KAAKA,IAAmB,QAAQ,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,UAAU,CAAC,OAAO,GAAG,MAAMA,IAAmB,OAAO,QAAQ,GAAGA,IAAmB,GAAG,GAAG,KAAKA,IAAmB,QAAQ,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,UAAU,CAAC,OAAO,GAAG,MAAMA,IAAmB,OAAO,QAAQ,GAAGA,IAAmB,GAAG,GAAG,KAAKA,IAAmB,QAAQ,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,UAAU,CAAC,OAAO,GAAG,MAAMA,IAAmB,OAAO,QAAQ,GAAGA,IAAmB,GAAG,GAAG,KAAKA,IAAmB,QAAQ,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,UAAU,CAAC,OAAO,GAAG,MAAMA,IAAmB,OAAO,QAAQ,GAAGA,IAAmB,GAAG,GAAG,KAAKA,IAAmB,QAAQ,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAElB,EAAYI,CAAc,EAAE,SAAsBvC,EAAKE,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiB0C,EAAiB,SAAS,sBAAsB,SAAsB5C,EAAKxB,GAAkB,CAAC,UAAUuD,EAAU,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,UAAUD,EAAU,UAAUD,EAAU,MAAM,CAAC,OAAO,OAAO,MAAM,MAAM,EAAE,QAAQ,YAAY,MAAM,OAAO,UAAUD,EAAU,GAAG3C,GAAqB,CAAC,UAAU,CAAC,QAAQ,YAAY,UAAU,WAAW,EAAE,UAAU,CAAC,QAAQ,YAAY,UAAU,WAAW,EAAE,UAAU,CAAC,QAAQ,YAAY,UAAU,WAAW,EAAE,UAAU,CAAC,QAAQ,YAAY,UAAU,WAAW,EAAE,UAAU,CAAC,QAAQ,YAAY,UAAU,WAAW,EAAE,UAAU,CAAC,QAAQ,YAAY,UAAU,WAAW,CAAC,EAAEkD,EAAYI,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEW,GAAa,GAAgBlD,EAAKyD,EAA0B,CAAC,OAAO,GAAG,MAAMJ,IAAmB,OAAO,QAAQ,GAAGA,IAAmB,GAAG,GAAG,KAAKA,IAAmB,QAAQ,IAAI,EAAE,IAAI,EAAE,GAAG,GAAG,SAAsBrD,EAAKE,EAAO,IAAI,CAAC,UAAU,0BAA0B,iBAAiB0C,EAAiB,SAAS,sBAAsB,SAAsB5C,EAAKtB,GAAyB,CAAC,UAAU,GAAK,OAAO,OAAO,GAAG,YAAY,SAAS,YAAY,UAAU,wEAAwE,UAAU,GAAK,MAAM,CAAC,OAAO,OAAO,MAAM,MAAM,EAAE,QAAQ,YAAY,MAAM,OAAO,UAAU,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,EAAQgF,GAAI,CAAC,kFAAkF,gFAAgF,oQAAoQ,wGAAwG,gJAAgJ,yWAAyW,2JAA2J,4LAA4L,gEAAgE,EASz1TC,GAAgBC,GAAQzC,GAAUuC,GAAI,cAAc,EAASG,GAAQF,GAAgBA,GAAgB,YAAY,oBAAoBA,GAAgB,aAAa,CAAC,OAAO,GAAG,MAAM,IAAI,EAAEG,GAAoBH,GAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAW,EAAE,aAAa,CAAC,UAAU,QAAQ,SAAS,0BAA0B,cAAc,2BAA2B,gBAAgB,iBAAiB,EAAE,MAAM,UAAU,KAAKI,EAAY,IAAI,EAAE,UAAUpF,IAA4B,WAAc,CAAC,GAAGA,GAA0B,UAAa,aAAa,YAAY,YAAY,OAAU,OAAO,OAAU,MAAM,SAAS,EAAE,UAAU,CAAC,aAAa,GAAK,MAAM,SAAS,KAAKoF,EAAY,OAAO,EAAE,UAAU,CAAC,aAAa,+FAA+F,MAAM,aAAa,KAAKA,EAAY,KAAK,EAAE,UAAU,CAAC,aAAa,GAAK,MAAM,UAAU,KAAKA,EAAY,OAAO,EAAE,UAAU,CAAC,aAAa,GAAK,MAAM,SAAS,KAAKA,EAAY,OAAO,EAAE,UAAUlF,IAA2B,SAAY,CAAC,GAAGA,GAAyB,QAAW,aAAa,YAAY,YAAY,OAAU,OAAO,OAAU,MAAM,mBAAmB,CAAC,CAAC,EAAEmF,GAASL,GAAgB,CAAC,CAAC,cAAc,GAAK,MAAM,CAAC,CAAC,EAAE,GAAGvF,GAAsB,GAAGG,GAAuB,GAAGE,EAA6B,EAAE,CAAC,6BAA6B,EAAI,CAAC",
  "names": ["useCookie", "cookieName", "value", "setValue", "ye", "hasReadCookie", "setHasReadCookie", "update", "te", "newValue", "options", "t", "remove", "ue", "parseTenantsCookie", "tenantsCookie", "parsedTenantsCookie", "tenant", "useTenantsCookie", "useTenants", "tenants", "withShowIfTenants", "Component", "props", "hasTenants", "p", "withHideIfTenants", "isLoading", "tenantRows", "index", "Nav_TenantRow_hwyO_default", "cycleOrder", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transitions", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "humanReadableVariantMap", "getProps", "height", "id", "width", "props", "_variant", "ref", "createLayoutDependency", "Component", "Y", "activeLocale", "useLocaleInfo", "style", "className", "layoutId", "restProps", "baseVariant", "classNames", "gestureVariant", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "defaultLayoutId", "ae", "LayoutGroup", "motion", "cx", "u", "SVG", "css", "FramerpRemd4fMu", "withCSS", "pRemd4fMu_default", "addPropertyControls", "ControlType", "addFonts", "GraphicsButtonArrowFonts", "getFonts", "pRemd4fMu_default", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "isSet", "value", "negate", "Transition", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "humanReadableVariantMap", "getProps", "height", "id", "link", "title", "width", "props", "_ref", "_humanReadableVariantMap_props_variant", "_ref1", "createLayoutDependency", "Component", "Y", "ref", "activeLocale", "setLocale", "useLocaleInfo", "style", "className", "layoutId", "kE6x8JtXN", "h0JjnntIV", "restProps", "baseVariant", "classNames", "gestureVariant", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "activeVariantCallback", "delay", "useActiveVariantCallback", "onMouseEnter1ncm4fo", "args", "onMouseLeave15iq2ks", "ref1", "pe", "visible", "visible1", "defaultLayoutId", "ae", "sharedStyleClassNames", "componentViewport", "useComponentViewport", "LayoutGroup", "u", "cx", "Link", "RichText2", "ComponentViewportProvider", "css", "FramermnItz6A8F", "withCSS", "mnItz6A8F_default", "addPropertyControls", "ControlType", "addFonts", "getFontsFromSharedStyle", "fonts", "clamp", "t", "s", "e", "sanitize", "isString", "r", "n", "a", "createUnitType", "o", "c", "l", "i", "p", "u", "isColorString", "splitColor", "f", "m", "g", "h", "parseHex", "b", "d", "v", "y", "test", "analyse", "parse", "createTransformer", "convertNumbersToZero", "getAnimatableNone", "O", "j", "applyDefaultFilter", "F", "N", "e", "t", "n", "window", "createRenderStep", "r", "c", "o", "a", "l", "f", "s", "u", "startLoop", "d", "i", "processStep", "processFrame", "clamp", "t", "e", "n", "d", "h", "m", "y", "g", "findSpring", "o", "r", "i", "s", "calcAngularFreq", "l", "p", "f", "approximateRoot", "v", "M", "x", "isSpringType", "getSpringOptions", "spring", "__rest", "zero", "createSpring", "u", "reverseEasing", "t", "e", "mirrorEasing", "createExpoIn", "createBackIn", "createAnticipate", "T", "w", "A", "R", "F", "createExpoIn", "D", "reverseEasing", "j", "mirrorEasing", "circIn", "t", "q", "I", "P", "createBackIn", "T", "k", "E", "B", "createAnticipate", "C", "N", "U", "bounceOut", "e", "w", "A", "R", "z", "identity", "t", "createAttractor", "e", "n", "o", "s", "r", "G", "H", "wrap", "t", "e", "n", "o", "Q", "V", "ConicGradient", "props", "colors", "radius", "from", "axis", "blur", "shouldAnimate", "rotate", "speed", "xPos", "yPos", "colorToValue", "c", "Color", "background", "message", "isEmpty", "fallBackColor", "conicStyle", "blurStyle", "absoluteStyle", "transformRef", "pe", "initialTime", "prevTime", "rotationRef", "isNegative", "useAnimationFrame", "t", "delta", "wrap", "u", "p", "addPropertyControls", "ControlType", "ConicGradientFonts", "getFonts", "ConicGradient", "cycleOrder", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transitions", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "humanReadableVariantMap", "getProps", "animate", "height", "id", "width", "props", "ref", "_variant", "ref1", "createLayoutDependency", "Component", "Y", "activeLocale", "useLocaleInfo", "style", "className", "layoutId", "DiZTcP1Wj", "restProps", "baseVariant", "classNames", "gestureVariant", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "defaultLayoutId", "ae", "LayoutGroup", "motion", "cx", "css", "FramertQEy8yiPF", "withCSS", "tQEy8yiPF_default", "addPropertyControls", "ControlType", "addFonts", "GraphicsConicGradientFonts", "getFonts", "tQEy8yiPF_default", "GraphicsConicGradientControls", "getPropertyControls", "enabledGestures", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "toResponsiveImage", "value", "transformTemplate1", "_", "t", "Transition", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "humanReadableEnumMap", "getProps", "height", "id", "link", "logo", "title", "variant1", "width", "props", "_ref", "_ref1", "_humanReadableEnumMap_variant1", "_ref2", "_ref3", "createLayoutDependency", "Component", "Y", "ref", "activeLocale", "setLocale", "useLocaleInfo", "style", "className", "layoutId", "u4ho7uXQk", "m3vyrEPlf", "CnrcNZ0E1", "P7_PhGiQ5", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "ref1", "pe", "defaultLayoutId", "ae", "sharedStyleClassNames", "componentViewport", "useComponentViewport", "LayoutGroup", "Link", "cx", "u", "ComponentViewportProvider", "Image2", "getLoadingLazyAtYPosition", "RichText2", "css", "FramerBN3HUyYzj", "withCSS", "BN3HUyYzj_default", "addPropertyControls", "ControlType", "addFonts", "Logos", "props", "p", "Icons", "addPropertyControls", "ControlType", "u", "l", "cycleOrder", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transitions", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "humanReadableVariantMap", "getProps", "height", "id", "width", "props", "_variant", "ref", "createLayoutDependency", "Component", "Y", "activeLocale", "useLocaleInfo", "style", "className", "layoutId", "restProps", "baseVariant", "classNames", "gestureVariant", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "defaultLayoutId", "ae", "LayoutGroup", "motion", "cx", "u", "SVG", "css", "FramerpRemd4fMu", "withCSS", "pRemd4fMu_default", "addPropertyControls", "ControlType", "addFonts", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "humanReadableVariantMap", "getProps", "height", "id", "width", "props", "createLayoutDependency", "Component", "Y", "ref", "fallbackRef", "pe", "refBinding", "defaultLayoutId", "ae", "activeLocale", "setLocale", "useLocaleInfo", "componentViewport", "useComponentViewport", "style", "className", "layoutId", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "scopingClassNames", "cx", "isDisplayed", "isDisplayed1", "isDisplayed2", "isDisplayed3", "isDisplayed4", "isDisplayed5", "isDisplayed6", "isDisplayed7", "isDisplayed8", "isDisplayed9", "isDisplayed10", "isDisplayed11", "isDisplayed12", "isDisplayed13", "isDisplayed14", "isDisplayed15", "isDisplayed16", "LayoutGroup", "u", "SVG", "css", "Framerl9n5MpL99", "withCSS", "l9n5MpL99_default", "addPropertyControls", "ControlType", "addFonts", "NavNavIconsNEWFonts", "getFonts", "l9n5MpL99_default", "LogosFonts", "Logos", "GraphicsButtonArrowFonts", "pRemd4fMu_default", "NavNavIconsNEWControls", "getPropertyControls", "Logos1Controls", "enabledGestures", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "humanReadableEnumMap", "humanReadableVariantMap", "getProps", "h1", "h2", "h2Visible", "height", "hover", "hover2", "hoverChevron", "icon", "iconVisible", "id", "link", "smallIcon", "smallIconVisible", "width", "props", "createLayoutDependency", "Component", "Y", "ref", "fallbackRef", "pe", "refBinding", "defaultLayoutId", "ae", "activeLocale", "setLocale", "useLocaleInfo", "componentViewport", "useComponentViewport", "style", "className", "layoutId", "y3z9Kx4Wv", "XNt_0jHi5", "Rv7rN9T36", "hYnSN8Rbu", "vwOUPOH8n", "pf_L3YvVa", "taEtOIjYB", "mhS_it8bS", "SF4WeeABZ", "anQxL7bbx", "NF_p8Wl2r", "D6E2gRuG7Y42FZEMxi", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "activeVariantCallback", "delay", "useActiveVariantCallback", "onTap4zbyd6", "args", "onMouseEnterp84zha", "scopingClassNames", "cx", "isDisplayed", "isDisplayed1", "isDisplayed2", "isDisplayed3", "isDisplayed4", "LayoutGroup", "Link", "u", "ComponentViewportProvider", "SmartComponentScopedContainer", "RichText2", "SVG", "css", "FramerGgCR0HjY3", "withCSS", "GgCR0HjY3_default", "addPropertyControls", "ControlType", "addFonts", "EasingGradientFonts", "getFonts", "EasingGradient", "GraphicsButtonArrowFonts", "pRemd4fMu_default", "enabledGestures", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "toResponsiveImage", "value", "Transition", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "humanReadableVariantMap", "getProps", "height", "id", "image", "link", "subtitle", "subtitleVisiblity", "title", "width", "props", "_ref", "_ref1", "_ref2", "_humanReadableVariantMap_props_variant", "_ref3", "createLayoutDependency", "Component", "Y", "ref", "activeLocale", "setLocale", "useLocaleInfo", "style", "className", "layoutId", "FCJjotThg", "gXZzLrrxC", "W8QKdoWYc", "xB6GQkGqy", "j_lkVn6wH", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "ref1", "pe", "isDisplayed", "defaultLayoutId", "ae", "sharedStyleClassNames", "componentViewport", "useComponentViewport", "LayoutGroup", "Link", "u", "cx", "Image2", "getLoadingLazyAtYPosition", "ComponentViewportProvider", "RichText2", "css", "FramerU5lud3mMK", "withCSS", "U5lud3mMK_default", "addPropertyControls", "ControlType", "addFonts", "enabledGestures", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "transformTemplate1", "_", "t", "transformTemplate2", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "humanReadableVariantMap", "getProps", "height", "id", "width", "props", "_humanReadableVariantMap_props_variant", "_ref", "createLayoutDependency", "Component", "Y", "ref", "activeLocale", "setLocale", "useLocaleInfo", "style", "className", "layoutId", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "ref1", "pe", "isDisplayed", "isDisplayed1", "isDisplayed2", "isDisplayed3", "isDisplayed4", "isDisplayed5", "isDisplayed6", "isDisplayed7", "defaultLayoutId", "ae", "sharedStyleClassNames", "componentViewport", "useComponentViewport", "LayoutGroup", "u", "cx", "SVG", "css", "FramerSdbub5yUA", "withCSS", "Sdbub5yUA_default", "addPropertyControls", "ControlType", "addFonts", "NavTrayIconSmallFonts", "getFonts", "Sdbub5yUA_default", "NavTrayIconSmallControls", "getPropertyControls", "enabledGestures", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "humanReadableEnumMap", "humanReadableVariantMap", "getProps", "height", "icon", "iconHover", "id", "link", "title", "width", "props", "_humanReadableVariantMap_props_variant", "_ref", "_ref1", "_humanReadableEnumMap_icon", "_ref2", "_ref3", "_humanReadableEnumMap_iconHover", "_ref4", "_ref5", "createLayoutDependency", "Component", "Y", "ref", "activeLocale", "setLocale", "useLocaleInfo", "style", "className", "layoutId", "TXl3JifQz", "WDE61Js6q", "wVcj6mpv0", "ZH_djGBTZ", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "ref1", "pe", "defaultLayoutId", "ae", "sharedStyleClassNames", "componentViewport", "useComponentViewport", "LayoutGroup", "Link", "cx", "u", "ComponentViewportProvider", "RichText2", "css", "FramerVGKHrA53b", "withCSS", "VGKHrA53b_default", "addPropertyControls", "ControlType", "addFonts", "MenuRowFonts", "getFonts", "GgCR0HjY3_default", "SmartComponentScopedContainerWithFXWithOptimizedAppearEffect", "withOptimizedAppearEffect", "withFX", "SmartComponentScopedContainer", "NavTrayCardSmallFonts", "VGKHrA53b_default", "NavTrayTitleFonts", "mnItz6A8F_default", "NavTrayBlogCardFonts", "U5lud3mMK_default", "NavTrayCustomerCardCopyFonts", "BN3HUyYzj_default", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "transition2", "animation", "animation1", "transition3", "animation2", "toDateString", "value", "options", "activeLocale", "date", "display", "dateOptions", "fallbackLocale", "locale", "toResponsiveImage", "QueryData", "query", "pageSize", "children", "data", "useQueryData", "addImageAlt", "image", "alt", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "humanReadableVariantMap", "getProps", "height", "id", "width", "props", "createLayoutDependency", "variants", "Component", "Y", "ref", "fallbackRef", "pe", "refBinding", "defaultLayoutId", "ae", "activeLocale", "setLocale", "useLocaleInfo", "componentViewport", "useComponentViewport", "style", "className", "layoutId", "variant", "royCFnGoEv5pE4DR2B", "s78r_5Sfiv5pE4DR2B", "drBimO239v5pE4DR2B", "tB8hckVXVv5pE4DR2B", "idv5pE4DR2B", "htIvfYBOuF72vRNUS2", "BOY5LSewcF72vRNUS2", "YnwyMK7wBF72vRNUS2", "KppWsNgH6F72vRNUS2", "idF72vRNUS2", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "cycleOrder", "variantClassNames", "layoutDependency", "activeVariantCallback", "delay", "useActiveVariantCallback", "y3z9Kx4Wv1y741hu", "args", "y3z9Kx4Wv1cidhwv", "y3z9Kx4Wvhko4ym", "y3z9Kx4Wv1xsndgp", "y3z9Kx4Wvtraryq", "y3z9Kx4Wv19lkadz", "scopingClassNames", "cx", "serializationHash", "isDisplayed", "router", "useRouter", "isDisplayed1", "isDisplayed2", "isDisplayed3", "isDisplayed4", "isDisplayed5", "isDisplayed6", "isDisplayed7", "isDisplayed8", "activeLocaleCode", "useLocaleCode", "isDisplayed9", "isDisplayed10", "isDisplayed11", "isDisplayed12", "LayoutGroup", "transition1", "u", "addPropertyOverrides", "ResolveLinks", "resolvedLinks", "ComponentViewportProvider", "SmartComponentScopedContainerWithFXWithOptimizedAppearEffect", "animation", "animation1", "GgCR0HjY3_default", "resolvedLinks1", "resolvedLinks2", "resolvedLinks3", "animation2", "resolvedLinks4", "resolvedLinks5", "RichText2", "resolvedLinks6", "SmartComponentScopedContainer", "resolvedLinks7", "resolvedLinks8", "resolvedLinks9", "resolvedLinks10", "resolvedLinks11", "resolvedLinks12", "resolvedLinks13", "resolvedLinks14", "resolvedLinks15", "VGKHrA53b_default", "mnItz6A8F_default", "ChildrenCanSuspend", "QueryData", "p_ZRklbwL_default", "collection", "paginationInfo", "loadMore", "l", "index", "PathVariablesContext", "resolvedLinks16", "U5lud3mMK_default", "toDateString", "toResponsiveImage", "resolvedLinks17", "resolvedLinks18", "resolvedLinks19", "BN3HUyYzj_default", "resolvedLinks20", "addImageAlt", "resolvedLinks21", "resolvedLinks22", "resolvedLinks23", "resolvedLinks24", "resolvedLinks25", "resolvedLinks26", "resolvedLinks27", "wtyR92LHZ_default", "collection1", "paginationInfo1", "loadMore1", "index1", "resolvedLinks28", "resolvedLinks29", "resolvedLinks30", "resolvedLinks31", "css", "FramerQUH3pJRTz", "withCSS", "QUH3pJRTz_default", "addPropertyControls", "ControlType", "addFonts", "MenuRowFonts", "NavTrayCardSmallFonts", "NavTrayTitleFonts", "NavTrayBlogCardFonts", "NavTrayCustomerCardCopyFonts", "NavMenuFonts", "getFonts", "QUH3pJRTz_default", "NavMenuControls", "getPropertyControls", "enabledGestures", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "humanReadableEnumMap", "humanReadableVariantMap", "getProps", "height", "id", "link", "menu", "title", "width", "props", "createLayoutDependency", "Component", "Y", "ref", "fallbackRef", "pe", "refBinding", "defaultLayoutId", "ae", "activeLocale", "setLocale", "useLocaleInfo", "componentViewport", "useComponentViewport", "style", "className", "layoutId", "u51ZvRHqi", "n1VAzJUI_", "bp1wF9P5x", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "activeVariantCallback", "delay", "useActiveVariantCallback", "onTap14fneg2", "args", "onTap7svolr", "scopingClassNames", "cx", "isDisplayed", "isDisplayed1", "LayoutGroup", "Link", "u", "RichText2", "SVG", "ComponentViewportProvider", "SmartComponentScopedContainer", "css", "FramerNf5Ragpam", "withCSS", "Nf5Ragpam_default", "addPropertyControls", "ControlType", "addFonts", "getFontsFromSharedStyle", "fonts", "enabledGestures", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "getProps", "height", "id", "tenantFirstLetter", "tenantName", "tenantSlug", "width", "props", "createLayoutDependency", "Component", "Y", "ref", "fallbackRef", "pe", "refBinding", "defaultLayoutId", "ae", "activeLocale", "setLocale", "useLocaleInfo", "componentViewport", "useComponentViewport", "style", "className", "layoutId", "OnZ_3axVX", "n9wmhVubQ", "QBgC5od6m", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "scopingClassNames", "cx", "LayoutGroup", "u", "RichText2", "css", "FramerPjC4CsJaK", "withCSS", "PjC4CsJaK_default", "addPropertyControls", "ControlType", "addFonts", "enabledGestures", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "getProps", "height", "id", "link", "title", "width", "props", "createLayoutDependency", "Component", "Y", "ref", "fallbackRef", "pe", "refBinding", "defaultLayoutId", "ae", "activeLocale", "setLocale", "useLocaleInfo", "componentViewport", "useComponentViewport", "style", "className", "layoutId", "jGReyLla_", "uVJDdqVqp", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "scopingClassNames", "cx", "LayoutGroup", "Link", "RichText2", "css", "FramerQa82X1Z0U", "withCSS", "Qa82X1Z0U_default", "addPropertyControls", "ControlType", "addFonts", "getFontsFromSharedStyle", "fonts", "ButtonsButtonFonts", "getFonts", "AiU29R1w5_default", "NavMobileNavRowFonts", "Nf5Ragpam_default", "NavTenantRowFonts", "PjC4CsJaK_default", "MotionDivTenantRows", "tenantRows", "motion", "ButtonsMenuButtonFonts", "Qa82X1Z0U_default", "MotionDivWithShowIfTenants", "withShowIfTenants", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "transformTemplate1", "_", "t", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "x", "humanReadableVariantMap", "getProps", "height", "id", "tapClose", "width", "props", "createLayoutDependency", "Component", "Y", "ref", "activeLocale", "setLocale", "useLocaleInfo", "style", "className", "layoutId", "lFvMJ0SS0", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "activeVariantCallback", "delay", "useActiveVariantCallback", "onTap16um3j6", "args", "ref1", "pe", "router", "useRouter", "defaultLayoutId", "ae", "sharedStyleClassNames", "componentViewport", "useComponentViewport", "LayoutGroup", "u", "cx", "SVG", "ComponentViewportProvider", "ResolveLinks", "resolvedLinks", "resolvedLinks1", "css", "FramerjtDh_M46J", "withCSS", "jtDh_M46J_default", "addPropertyControls", "ControlType", "addFonts", "OIB1sWCoj_exports", "__export", "__FramerMetadata__", "OIB1sWCoj_default", "NavTenantRowFonts", "getFonts", "PjC4CsJaK_default", "MotionDivTenantRows5gk6b", "withCodeBoundaryForOverrides", "motion", "tenantRows", "ButtonsMenuButtonFonts", "Qa82X1Z0U_default", "enabledGestures", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "x", "getProps", "height", "id", "width", "props", "createLayoutDependency", "Component", "Y", "ref", "fallbackRef", "pe", "refBinding", "defaultLayoutId", "ae", "activeLocale", "setLocale", "useLocaleInfo", "componentViewport", "useComponentViewport", "style", "className", "layoutId", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "scopingClassNames", "cx", "isDisplayed", "LayoutGroup", "u", "RichText2", "SVG", "ComponentViewportProvider", "SmartComponentScopedContainer", "css", "FramerOIB1sWCoj", "withCSS", "OIB1sWCoj_default", "addFonts", "getFontsFromSharedStyle", "fonts", "__FramerMetadata__", "ButtonsButtonFonts", "getFonts", "AiU29R1w5_default", "ButtonsButtonWithHideIfTenantsWithMappedReactPropsmf7a38", "withMappedReactProps", "withHideIfTenants", "AiU29R1w5_exports", "NavLaunchTwingateButtonFonts", "OIB1sWCoj_default", "NavLaunchTwingateButtonWithShowIfTenantsWithMappedReactPropspjn4ln", "withShowIfTenants", "OIB1sWCoj_exports", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "humanReadableVariantMap", "getProps", "height", "id", "tapMenu", "width", "props", "createLayoutDependency", "Component", "Y", "ref", "activeLocale", "setLocale", "useLocaleInfo", "style", "className", "layoutId", "jnvUEL2ut", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "activeVariantCallback", "delay", "useActiveVariantCallback", "onTap1gidreh", "args", "ref1", "pe", "isDisplayed", "isDisplayed1", "router", "useRouter", "isDisplayed2", "defaultLayoutId", "ae", "sharedStyleClassNames", "componentViewport", "useComponentViewport", "LayoutGroup", "u", "cx", "ComponentViewportProvider", "ResolveLinks", "resolvedLinks", "SVG", "css", "Framerm1Dw3gDw_", "withCSS", "m1Dw3gDw_default", "addPropertyControls", "ControlType", "addFonts", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "humanReadableVariantMap", "getProps", "height", "id", "width", "props", "_humanReadableVariantMap_props_variant", "_ref", "createLayoutDependency", "Component", "Y", "ref", "activeLocale", "setLocale", "useLocaleInfo", "style", "className", "layoutId", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "ref1", "pe", "isDisplayed", "isDisplayed1", "isDisplayed2", "isDisplayed3", "isDisplayed4", "isDisplayed5", "isDisplayed6", "isDisplayed7", "isDisplayed8", "isDisplayed9", "isDisplayed10", "isDisplayed11", "isDisplayed12", "isDisplayed13", "isDisplayed14", "defaultLayoutId", "ae", "sharedStyleClassNames", "componentViewport", "useComponentViewport", "LayoutGroup", "u", "cx", "SVG", "css", "FramerlLkcBkgJT", "withCSS", "lLkcBkgJT_default", "addPropertyControls", "ControlType", "addFonts", "NavNavIconsFonts", "getFonts", "lLkcBkgJT_default", "GraphicsButtonArrowFonts", "pRemd4fMu_default", "NavNavIconsControls", "getPropertyControls", "enabledGestures", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "humanReadableEnumMap", "getProps", "height", "id", "link", "navIconVariant", "new1", "subtitle", "tap", "title", "width", "props", "createLayoutDependency", "Component", "Y", "ref", "fallbackRef", "pe", "refBinding", "defaultLayoutId", "ae", "activeLocale", "setLocale", "useLocaleInfo", "componentViewport", "useComponentViewport", "style", "className", "layoutId", "HlFA9k7gu", "NZ73Mn_3q", "B1BRdzB7u", "Z7laBHveb", "gpily6XUb", "D6E2gRuG7", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "activeVariantCallback", "delay", "useActiveVariantCallback", "onTap1ggisjn", "args", "scopingClassNames", "cx", "LayoutGroup", "Link", "u", "ComponentViewportProvider", "SmartComponentScopedContainer", "RichText2", "css", "FramerAQ823k8yZ", "withCSS", "AQ823k8yZ_default", "addPropertyControls", "ControlType", "addFonts", "getFontsFromSharedStyle", "fonts", "EasingGradientFonts", "getFonts", "EasingGradient", "GraphicsButtonArrowFonts", "pRemd4fMu_default", "enabledGestures", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "toResponsiveImage", "value", "Transition", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "humanReadableVariantMap", "getProps", "height", "id", "image", "link", "subtitle", "title", "width", "props", "createLayoutDependency", "Component", "Y", "ref", "fallbackRef", "pe", "refBinding", "defaultLayoutId", "ae", "activeLocale", "setLocale", "useLocaleInfo", "componentViewport", "useComponentViewport", "style", "className", "layoutId", "FCJjotThg", "gXZzLrrxC", "W8QKdoWYc", "xB6GQkGqy", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "scopingClassNames", "cx", "isDisplayed", "LayoutGroup", "Link", "u", "Image2", "getLoadingLazyAtYPosition", "ComponentViewportProvider", "SmartComponentScopedContainer", "RichText2", "css", "FramergXk6dU62K", "withCSS", "gXk6dU62K_default", "addPropertyControls", "ControlType", "addFonts", "getFontsFromSharedStyle", "fonts", "NavTrayIconFonts", "getFonts", "ikk_McnKH_default", "NavTrayIconControls", "getPropertyControls", "enabledGestures", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "humanReadableEnumMap", "humanReadableVariantMap", "getProps", "height", "icon", "iconHover", "id", "link", "subtitle", "title", "width", "props", "createLayoutDependency", "Component", "Y", "ref", "fallbackRef", "pe", "refBinding", "defaultLayoutId", "ae", "activeLocale", "setLocale", "useLocaleInfo", "componentViewport", "useComponentViewport", "style", "className", "layoutId", "TXl3JifQz", "WDE61Js6q", "ySJTE4XN0", "TuXUBRiOh", "EoiUdnIrn", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "scopingClassNames", "cx", "LayoutGroup", "Link", "u", "ComponentViewportProvider", "SmartComponentScopedContainer", "RichText2", "css", "FramerKEIGp9seQ", "withCSS", "KEIGp9seQ_default", "addPropertyControls", "ControlType", "addFonts", "getFontsFromSharedStyle", "fonts", "GraphicsButtonArrowFonts", "getFonts", "pRemd4fMu_default", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "isSet", "value", "negate", "Transition", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "humanReadableVariantMap", "getProps", "height", "id", "link", "title", "width", "props", "createLayoutDependency", "Component", "Y", "ref", "fallbackRef", "pe", "refBinding", "defaultLayoutId", "ae", "activeLocale", "setLocale", "useLocaleInfo", "componentViewport", "useComponentViewport", "style", "className", "layoutId", "kE6x8JtXN", "h0JjnntIV", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "activeVariantCallback", "delay", "useActiveVariantCallback", "onMouseEnter1ncm4fo", "args", "onMouseLeave15iq2ks", "scopingClassNames", "cx", "visible", "visible1", "LayoutGroup", "u", "Link", "RichText2", "ComponentViewportProvider", "SmartComponentScopedContainer", "css", "FramermnItz6A8F", "withCSS", "mnItz6A8F_default", "addPropertyControls", "ControlType", "addFonts", "getFontsFromSharedStyle", "fonts", "GraphicsConicGradientFonts", "getFonts", "tQEy8yiPF_default", "GraphicsButtonArrowFonts", "pRemd4fMu_default", "GraphicsConicGradientControls", "getPropertyControls", "enabledGestures", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "toResponsiveImage", "value", "Transition", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "humanReadableEnumMap", "getProps", "h2", "height", "id", "link", "logo", "title", "variant1", "width", "props", "_ref", "_ref1", "_ref2", "_humanReadableEnumMap_variant1", "_ref3", "_ref4", "createLayoutDependency", "Component", "Y", "ref", "activeLocale", "setLocale", "useLocaleInfo", "style", "className", "layoutId", "u4ho7uXQk", "m3vyrEPlf", "CnrcNZ0E1", "GLg7muXcH", "P7_PhGiQ5", "D6E2gRuG7AQ823k8yZ", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "ref1", "pe", "defaultLayoutId", "ae", "sharedStyleClassNames", "componentViewport", "useComponentViewport", "LayoutGroup", "Link", "u", "cx", "ComponentViewportProvider", "Image2", "RichText2", "css", "FramerUa61FX9zj", "withCSS", "Ua61FX9zj_default", "addPropertyControls", "ControlType", "addFonts", "getFontsFromSharedStyle", "fonts", "LogosFonts", "getFonts", "Logos", "NavNavIconsFonts", "lLkcBkgJT_default", "GraphicsButtonArrowFonts", "pRemd4fMu_default", "LogosControls", "getPropertyControls", "NavNavIconsControls", "enabledGestures", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "equals", "b", "negate", "value", "Transition", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "humanReadableEnumMap", "getProps", "height", "icon", "icon1", "id", "link", "navIcon", "navIconVariant", "new1", "subtitle", "tap", "title", "width", "props", "createLayoutDependency", "Component", "Y", "ref", "fallbackRef", "pe", "refBinding", "defaultLayoutId", "ae", "activeLocale", "setLocale", "useLocaleInfo", "componentViewport", "useComponentViewport", "style", "className", "layoutId", "HlFA9k7gu", "NZ73Mn_3q", "B1BRdzB7u", "tnFMMMSiG", "Ke8Ebr11Y", "Z7laBHveb", "th0ljLK8A", "gpily6XUb", "D6E2gRuG7", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "activeVariantCallback", "delay", "useActiveVariantCallback", "onTap1ggisjn", "args", "scopingClassNames", "cx", "visible", "LayoutGroup", "Link", "u", "ComponentViewportProvider", "SmartComponentScopedContainer", "RichText2", "css", "FramerY42FZEMxi", "withCSS", "Y42FZEMxi_default", "addPropertyControls", "ControlType", "addFonts", "getFontsFromSharedStyle", "fonts", "NavTrayItemCopyFonts", "getFonts", "AQ823k8yZ_default", "NavTrayTitleFonts", "mnItz6A8F_default", "NavTrayItemFonts", "Y42FZEMxi_default", "NavTrayCardChangelogFonts", "gXk6dU62K_default", "NavTrayCardFonts", "KEIGp9seQ_default", "NavTrayCustomerCardFonts", "Ua61FX9zj_default", "ButtonsButtonFonts", "AiU29R1w5_default", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "toDateString", "value", "options", "activeLocale", "date", "display", "dateOptions", "fallbackLocale", "locale", "toResponsiveImage", "QueryData", "query", "pageSize", "children", "data", "useQueryData", "addImageAlt", "image", "alt", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "humanReadableVariantMap", "getProps", "height", "id", "width", "props", "createLayoutDependency", "variants", "Component", "Y", "ref", "fallbackRef", "pe", "refBinding", "defaultLayoutId", "ae", "activeLocale", "setLocale", "useLocaleInfo", "componentViewport", "useComponentViewport", "style", "className", "layoutId", "variant", "royCFnGoElF3iq4ogr", "s78r_5SfilF3iq4ogr", "drBimO239lF3iq4ogr", "tB8hckVXVlF3iq4ogr", "idlF3iq4ogr", "htIvfYBOuyXUkIhj_k", "BOY5LSewcyXUkIhj_k", "YnwyMK7wByXUkIhj_k", "KppWsNgH6yXUkIhj_k", "idyXUkIhj_k", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "cycleOrder", "variantClassNames", "layoutDependency", "scopingClassNames", "cx", "serializationHash", "isDisplayed", "router", "useRouter", "isDisplayed1", "isDisplayed2", "activeLocaleCode", "useLocaleCode", "isDisplayed3", "isDisplayed4", "isDisplayed5", "isDisplayed6", "isDisplayed7", "isDisplayed8", "isDisplayed9", "LayoutGroup", "transition1", "u", "addPropertyOverrides", "ResolveLinks", "resolvedLinks", "ComponentViewportProvider", "SmartComponentScopedContainer", "AQ823k8yZ_default", "resolvedLinks1", "resolvedLinks2", "mnItz6A8F_default", "resolvedLinks3", "Y42FZEMxi_default", "resolvedLinks4", "resolvedLinks5", "ChildrenCanSuspend", "QueryData", "p_ZRklbwL_default", "collection", "paginationInfo", "loadMore", "l", "index", "PathVariablesContext", "resolvedLinks6", "gXk6dU62K_default", "toDateString", "toResponsiveImage", "resolvedLinks7", "resolvedLinks8", "resolvedLinks9", "resolvedLinks10", "resolvedLinks11", "resolvedLinks12", "resolvedLinks13", "resolvedLinks14", "KEIGp9seQ_default", "resolvedLinks15", "resolvedLinks16", "resolvedLinks17", "resolvedLinks18", "resolvedLinks19", "resolvedLinks20", "wtyR92LHZ_default", "collection1", "paginationInfo1", "loadMore1", "index1", "resolvedLinks21", "resolvedLinks22", "resolvedLinks23", "resolvedLinks24", "Ua61FX9zj_default", "resolvedLinks25", "resolvedLinks26", "resolvedLinks27", "resolvedLinks28", "resolvedLinks29", "resolvedLinks30", "resolvedLinks31", "resolvedLinks32", "RichText2", "AiU29R1w5_default", "resolvedLinks33", "resolvedLinks34", "resolvedLinks35", "css", "FramerojyM9x_ZC", "withCSS", "ojyM9x_ZC_default", "addPropertyControls", "ControlType", "addFonts", "NavTrayItemCopyFonts", "NavTrayTitleFonts", "NavTrayItemFonts", "NavTrayCardChangelogFonts", "NavTrayCardFonts", "NavTrayCustomerCardFonts", "ButtonsButtonFonts", "getFontsFromSharedStyle", "fonts", "enabledGestures", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "humanReadableVariantMap", "getProps", "height", "hover", "id", "link", "tap", "textColor", "title", "width", "props", "createLayoutDependency", "Component", "Y", "ref", "fallbackRef", "pe", "refBinding", "defaultLayoutId", "ae", "activeLocale", "setLocale", "useLocaleInfo", "componentViewport", "useComponentViewport", "style", "className", "layoutId", "QsIcUGujF", "WjB0saJsU", "FKwB4UL9z", "wFwmGsvMB", "aV_o9aCOb", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "activeVariantCallback", "delay", "useActiveVariantCallback", "onTapss2oz4", "args", "onMouseEnterzjyp1h", "scopingClassNames", "cx", "isDisplayed", "LayoutGroup", "Link", "u", "RichText2", "css", "FramerZVYe2Nhfy", "withCSS", "ZVYe2Nhfy_default", "addPropertyControls", "ControlType", "addFonts", "getFontsFromSharedStyle", "fonts", "NavMobileNavFonts", "getFonts", "jtDh_M46J_default", "MotionDivGlass_100", "Glass_100", "motion", "ButtonsNavButtonFonts", "ZVYe2Nhfy_default", "NavPrimaryNavRightFonts", "m1Dw3gDw_default", "NavTrayFonts", "ojyM9x_ZC_default", "MotionDivGlass_200", "Glass_200", "NavPrimaryNavRightControls", "getPropertyControls", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "x", "humanReadableEnumMap", "humanReadableVariantMap", "getProps", "actions", "bGBlur", "foreground", "height", "id", "shadow", "width", "props", "createLayoutDependency", "Component", "Y", "ref", "activeLocale", "setLocale", "useLocaleInfo", "style", "className", "layoutId", "YPx0WXa7x", "smQ_kJfRy", "PiR5q7_Ls", "dqNTFu1r7", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "activeVariantCallback", "delay", "useActiveVariantCallback", "onTaptdgfo1", "args", "onTapubpdcj", "lFvMJ0SS0tdgfo1", "lFvMJ0SS0ubpdcj", "onMouseEnter1f5kb45", "aV_o9aCOb13ns6va", "wFwmGsvMB1f5kb45", "aV_o9aCOb16odvul", "aV_o9aCOb1552k4g", "aV_o9aCOb1gipp1y", "aV_o9aCOb1f5kb45", "jnvUEL2utr0v3z7", "jnvUEL2ut72pvtj", "onMouseLeave1f5kb45", "ref1", "pe", "isDisplayed", "isDisplayed1", "isDisplayed2", "router", "useRouter", "isDisplayed3", "isDisplayed4", "defaultLayoutId", "ae", "sharedStyleClassNames", "componentViewport", "useComponentViewport", "LayoutGroup", "u", "cx", "ComponentViewportProvider", "Link", "SVG", "ResolveLinks", "resolvedLinks", "resolvedLinks1", "resolvedLinks2", "css", "FramerDrqqrAzJ3", "withCSS", "DrqqrAzJ3_default", "addPropertyControls", "ControlType", "addFonts", "Glass_100", "Component", "props", "p", "useCookie", "cookieName", "value", "setValue", "ye", "hasReadCookie", "setHasReadCookie", "update", "te", "newValue", "options", "t", "remove", "ue", "parseTenantsCookie", "tenantsCookie", "parsedTenantsCookie", "tenant", "useTenantsCookie", "useTenants", "tenants", "withShowIfTenants", "Component", "props", "hasTenants", "p", "tenantRows", "Component", "props", "hasTenants", "tenants", "useTenants", "p", "tenant", "index", "Nav_TenantRow_hwyO_default", "MotionDivWithBGColorCycle", "withBGColorCycle", "motion", "LogosFonts", "getFonts", "Logos", "GraphicsButtonArrowFonts", "pRemd4fMu_default", "ArrowFonts", "Arrow", "LogosControls", "getPropertyControls", "GraphicsButtonArrowControls", "enabledGestures", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "x", "humanReadableEnumMap", "humanReadableVariantMap", "getProps", "arrow", "arrowVariant", "background", "color", "height", "hoverArrowVariant", "icon", "icon1", "id", "link", "newTab", "tap", "title", "width", "props", "_humanReadableEnumMap_arrowVariant", "_ref", "_ref1", "_humanReadableEnumMap_hoverArrowVariant", "_ref2", "_ref3", "_ref4", "_ref5", "_ref6", "_humanReadableVariantMap_props_variant", "_ref7", "_ref8", "_ref9", "createLayoutDependency", "Component", "Y", "ref", "activeLocale", "setLocale", "useLocaleInfo", "style", "className", "layoutId", "gW2IdKNHn", "OA2ahGR0N", "Urz2Ffy21", "xjfxHTVGH", "FdDV8gLxh", "DZNn6_WWp", "uirRaCarc", "x_8VxILUS", "WJoF2TywT", "CiwGQDcAN", "csPpyV4tk", "restProps", "baseVariant", "classNames", "gestureVariant", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "activeVariantCallback", "delay", "useActiveVariantCallback", "onTapbbtkj9", "args", "ref1", "pe", "isDisplayed", "isDisplayed1", "isDisplayed2", "defaultLayoutId", "ae", "sharedStyleClassNames", "componentViewport", "useComponentViewport", "LayoutGroup", "Link", "u", "cx", "ComponentViewportProvider", "RichText2", "css", "FramerAiU29R1w5", "withCSS", "AiU29R1w5_default", "addPropertyControls", "ControlType", "addFonts", "getFontsFromSharedStyle", "fonts", "fontStore", "fonts", "css", "className", "t", "e", "r", "n", "i", "s", "o", "a", "l", "u", "f", "h", "c", "p", "d", "g", "v", "y", "w", "m", "b", "k", "_", "I", "S", "E", "x", "M", "L", "B", "T", "window", "P", "j", "A", "F", "N", "$", "O", "D", "C", "q", "z", "R", "J", "W", "Y", "Q", "G", "H", "K", "V", "X", "Z", "tt", "te", "tr", "tn", "ti", "ts", "to", "ta", "tl", "tu", "tf", "th", "tc", "tp", "td", "tg", "tv", "ty", "tw", "tm", "tb", "tk", "t_", "tI", "tS", "tE", "tU", "tx", "tM", "tL", "tB", "tT", "tP", "tj", "tA", "tF", "tN", "t$", "tO", "tD", "tC", "U", "tq", "tz", "tR", "tX", "tJ", "tW", "tH", "tG", "tK", "tV", "tQ", "tY", "tZ", "t0", "t1", "t2", "t3", "t6", "t4", "t8", "t5", "t7", "t9", "et", "ee", "er", "en", "ei", "eo", "ControlType", "ea", "el", "eu", "ef", "eh", "ec", "ep", "ed", "eg", "ev", "ey", "ew", "em", "eb", "ek", "e_", "eI", "eS", "eF", "eL", "ex", "eM", "eE", "eU", "eT", "eP", "eB", "eA", "ej", "eN", "e$", "eO", "eD", "t", "e", "r", "resolveRichText", "o", "ControlType", "n", "QueryEngine", "m", "eD", "eN", "resolveRichText", "p_ZRklbwL_default", "addPropertyControls", "h", "d", "p", "u", "m", "g", "w", "f", "y", "b", "v", "k", "T", "e", "t", "S", "x", "Link", "motion", "ComponentPresetsConsumer", "CodeBlock_default", "Youtube", "addPropertyControls", "ControlType", "wtyR92LHZ_default", "fontStore", "fonts", "css", "className", "fontStore", "fonts", "css", "className", "EasingGradientFonts", "getFonts", "EasingGradient", "GraphicsButtonArrowFonts", "pRemd4fMu_default", "enabledGestures", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "toResponsiveImage", "value", "Transition", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "humanReadableVariantMap", "getProps", "height", "id", "image", "link", "subtitle", "subtitleVisiblity", "title", "width", "props", "_ref", "_ref1", "_ref2", "_humanReadableVariantMap_props_variant", "_ref3", "createLayoutDependency", "Component", "Y", "ref", "activeLocale", "setLocale", "useLocaleInfo", "style", "className", "layoutId", "FCJjotThg", "gXZzLrrxC", "W8QKdoWYc", "xB6GQkGqy", "j_lkVn6wH", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "ref1", "pe", "isDisplayed", "defaultLayoutId", "ae", "sharedStyleClassNames", "componentViewport", "useComponentViewport", "LayoutGroup", "Link", "u", "cx", "Image2", "ComponentViewportProvider", "RichText2", "css", "FramergXk6dU62K", "withCSS", "gXk6dU62K_default", "addPropertyControls", "ControlType", "addFonts", "getFontsFromSharedStyle", "fonts", "enabledGestures", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "transformTemplate1", "_", "t", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "humanReadableVariantMap", "getProps", "height", "id", "width", "props", "_humanReadableVariantMap_props_variant", "_ref", "createLayoutDependency", "Component", "Y", "ref", "activeLocale", "setLocale", "useLocaleInfo", "style", "className", "layoutId", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "ref1", "pe", "isDisplayed", "isDisplayed1", "isDisplayed2", "isDisplayed3", "isDisplayed4", "isDisplayed5", "isDisplayed6", "isDisplayed7", "defaultLayoutId", "ae", "sharedStyleClassNames", "componentViewport", "useComponentViewport", "LayoutGroup", "u", "cx", "SVG", "css", "Framerikk_McnKH", "withCSS", "ikk_McnKH_default", "addPropertyControls", "ControlType", "addFonts", "NavTrayIconFonts", "getFonts", "ikk_McnKH_default", "NavTrayIconControls", "getPropertyControls", "enabledGestures", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "humanReadableEnumMap", "humanReadableVariantMap", "getProps", "height", "icon", "iconHover", "id", "link", "title", "width", "props", "_humanReadableEnumMap_iconHover", "_ref", "_ref1", "_humanReadableEnumMap_icon", "_ref2", "_ref3", "_humanReadableVariantMap_props_variant", "_ref4", "_ref5", "createLayoutDependency", "Component", "Y", "ref", "activeLocale", "setLocale", "useLocaleInfo", "style", "className", "layoutId", "TXl3JifQz", "WDE61Js6q", "TuXUBRiOh", "EoiUdnIrn", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "ref1", "pe", "defaultLayoutId", "ae", "sharedStyleClassNames", "componentViewport", "useComponentViewport", "LayoutGroup", "Link", "cx", "u", "ComponentViewportProvider", "RichText2", "css", "FramerKEIGp9seQ", "withCSS", "KEIGp9seQ_default", "addPropertyControls", "ControlType", "addFonts", "getFontsFromSharedStyle", "fonts", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "humanReadableVariantMap", "getProps", "height", "id", "width", "props", "_humanReadableVariantMap_props_variant", "_ref", "createLayoutDependency", "Component", "Y", "ref", "activeLocale", "setLocale", "useLocaleInfo", "style", "className", "layoutId", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "ref1", "pe", "isDisplayed", "isDisplayed1", "isDisplayed2", "isDisplayed3", "isDisplayed4", "isDisplayed5", "isDisplayed6", "isDisplayed7", "isDisplayed8", "isDisplayed9", "isDisplayed10", "isDisplayed11", "isDisplayed12", "isDisplayed13", "isDisplayed14", "defaultLayoutId", "ae", "sharedStyleClassNames", "componentViewport", "useComponentViewport", "LayoutGroup", "u", "cx", "SVG", "css", "FramerlLkcBkgJT", "withCSS", "lLkcBkgJT_default", "addPropertyControls", "ControlType", "addFonts", "LogosFonts", "getFonts", "Logos", "NavNavIconsFonts", "lLkcBkgJT_default", "GraphicsButtonArrowFonts", "pRemd4fMu_default", "LogosControls", "getPropertyControls", "NavNavIconsControls", "enabledGestures", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "equals", "b", "negate", "value", "Transition", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "humanReadableEnumMap", "getProps", "height", "icon", "icon1", "id", "link", "navIcon", "navIconVariant", "new1", "subtitle", "tap", "title", "width", "props", "_ref", "_humanReadableEnumMap_navIconVariant", "_ref1", "_ref2", "_ref3", "_ref4", "_ref5", "createLayoutDependency", "Component", "Y", "ref", "activeLocale", "setLocale", "useLocaleInfo", "style", "className", "layoutId", "HlFA9k7gu", "NZ73Mn_3q", "B1BRdzB7u", "tnFMMMSiG", "Ke8Ebr11Y", "Z7laBHveb", "th0ljLK8A", "gpily6XUb", "D6E2gRuG7", "restProps", "baseVariant", "classNames", "gestureVariant", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "activeVariantCallback", "delay", "useActiveVariantCallback", "onTapx5mqay", "args", "ref1", "pe", "visible", "defaultLayoutId", "ae", "sharedStyleClassNames", "componentViewport", "useComponentViewport", "LayoutGroup", "Link", "cx", "u", "ComponentViewportProvider", "RichText2", "css", "FramerY42FZEMxi", "withCSS", "Y42FZEMxi_default", "addPropertyControls", "ControlType", "addFonts", "getFontsFromSharedStyle", "fonts", "NavTrayItemFonts", "getFonts", "Y42FZEMxi_default", "NavTrayTitleFonts", "mnItz6A8F_default", "NavTrayCardChangelogFonts", "gXk6dU62K_default", "NavTrayCardFonts", "KEIGp9seQ_default", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "toDateString", "value", "options", "activeLocale", "date", "fallbackLocale", "locale", "dateStyle", "timeZone", "toResponsiveImage", "QueryData", "query", "children", "data", "useQueryData", "Transition", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "humanReadableVariantMap", "getProps", "height", "id", "width", "props", "_humanReadableVariantMap_props_variant", "_ref", "createLayoutDependency", "Component", "Y", "ref", "setLocale", "useLocaleInfo", "style", "className", "layoutId", "royCFnGoElF3iq4ogr", "s78r_5SfilF3iq4ogr", "drBimO239lF3iq4ogr", "tB8hckVXVlF3iq4ogr", "idlF3iq4ogr", "htIvfYBOuTfzlsFdJr", "BOY5LSewcTfzlsFdJr", "YnwyMK7wBTfzlsFdJr", "KppWsNgH6TfzlsFdJr", "idTfzlsFdJr", "restProps", "baseVariant", "classNames", "gestureVariant", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "ref1", "pe", "isDisplayed", "router", "useRouter", "activeLocaleCode", "useLocaleCode", "isDisplayed1", "isDisplayed2", "isDisplayed3", "defaultLayoutId", "ae", "sharedStyleClassNames", "componentViewport", "useComponentViewport", "LayoutGroup", "u", "cx", "ResolveLinks", "resolvedLinks", "ComponentViewportProvider", "resolvedLinks1", "resolvedLinks2", "resolvedLinks3", "resolvedLinks4", "p_ZRklbwL_default", "collection", "i", "PathVariablesContext", "resolvedLinks5", "resolvedLinks6", "resolvedLinks7", "resolvedLinks8", "resolvedLinks9", "resolvedLinks10", "resolvedLinks11", "wtyR92LHZ_default", "collection1", "resolvedLinks12", "resolvedLinks13", "resolvedLinks14", "resolvedLinks15", "css", "FramerojyM9x_ZC", "withCSS", "ojyM9x_ZC_default", "addPropertyControls", "ControlType", "addFonts", "NavTrayFonts", "getFonts", "ojyM9x_ZC_default", "NavTrayControls", "getPropertyControls", "enabledGestures", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "humanReadableEnumMap", "humanReadableVariantMap", "getProps", "height", "id", "link", "title", "tray", "width", "props", "_humanReadableEnumMap_tray", "_ref", "_ref1", "_ref2", "_humanReadableVariantMap_props_variant", "_ref3", "createLayoutDependency", "Component", "Y", "ref", "activeLocale", "setLocale", "useLocaleInfo", "style", "className", "layoutId", "u51ZvRHqi", "n1VAzJUI_", "fA1M1zeKn", "restProps", "baseVariant", "classNames", "gestureVariant", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "activeVariantCallback", "delay", "useActiveVariantCallback", "onTap14fneg2", "args", "onTap7svolr", "ref1", "pe", "isDisplayed", "isDisplayed1", "defaultLayoutId", "ae", "sharedStyleClassNames", "componentViewport", "useComponentViewport", "LayoutGroup", "Link", "u", "cx", "RichText2", "SVG", "ComponentViewportProvider", "css", "FramerNf5Ragpam", "withCSS", "Nf5Ragpam_default", "addPropertyControls", "ControlType", "addFonts", "getFontsFromSharedStyle", "fonts", "enabledGestures", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "getProps", "height", "id", "tenantFirstLetter", "tenantName", "tenantSlug", "width", "props", "_ref", "_ref1", "_ref2", "createLayoutDependency", "Component", "Y", "ref", "activeLocale", "setLocale", "useLocaleInfo", "style", "className", "layoutId", "OnZ_3axVX", "n9wmhVubQ", "QBgC5od6m", "restProps", "baseVariant", "classNames", "gestureVariant", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "ref1", "pe", "defaultLayoutId", "ae", "sharedStyleClassNames", "componentViewport", "useComponentViewport", "LayoutGroup", "u", "cx", "RichText2", "css", "FramerPjC4CsJaK", "withCSS", "PjC4CsJaK_default", "addPropertyControls", "ControlType", "addFonts", "enabledGestures", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "getProps", "height", "id", "link", "title", "width", "props", "_ref", "createLayoutDependency", "Component", "Y", "ref", "activeLocale", "setLocale", "useLocaleInfo", "style", "className", "layoutId", "jGReyLla_", "uVJDdqVqp", "restProps", "baseVariant", "classNames", "gestureVariant", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "ref1", "pe", "defaultLayoutId", "ae", "sharedStyleClassNames", "componentViewport", "useComponentViewport", "LayoutGroup", "Link", "cx", "RichText2", "css", "FramerQa82X1Z0U", "withCSS", "Qa82X1Z0U_default", "addPropertyControls", "ControlType", "addFonts", "getFontsFromSharedStyle", "fonts", "ButtonsButtonFonts", "getFonts", "AiU29R1w5_default", "NavMobileNavRowFonts", "Nf5Ragpam_default", "NavTenantRowFonts", "PjC4CsJaK_default", "MotionDivTenantRows", "tenantRows", "motion", "ButtonsMenuButtonFonts", "Qa82X1Z0U_default", "MotionDivWithShowIfTenants", "withShowIfTenants", "cycleOrder", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transitions", "transformTemplate", "_", "t", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "humanReadableVariantMap", "getProps", "height", "id", "tapClose", "width", "props", "_humanReadableVariantMap_props_variant", "_ref", "createLayoutDependency", "Component", "Y", "ref", "activeLocale", "useLocaleInfo", "style", "className", "layoutId", "lFvMJ0SS0", "restProps", "baseVariant", "classNames", "gestureVariant", "setGestureState", "setVariant", "useVariantState", "cycleOrder", "layoutDependency", "activeVariantCallback", "delay", "useActiveVariantCallback", "onTap1ap77ch", "args", "ref1", "pe", "router", "useRouter", "defaultLayoutId", "ae", "sharedStyleClassNames", "LayoutGroup", "motion", "cx", "u", "SVG", "AiU29R1w5_default", "resolveLink", "Nf5Ragpam_default", "MotionDivWithShowIfTenants", "MotionDivTenantRows", "PjC4CsJaK_default", "Qa82X1Z0U_default", "css", "FramerjtDh_M46J", "withCSS", "jtDh_M46J_default", "addPropertyControls", "ControlType", "addFonts", "ButtonsButtonFonts", "NavMobileNavRowFonts", "NavTenantRowFonts", "ButtonsMenuButtonFonts", "enabledGestures", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "humanReadableVariantMap", "getProps", "height", "hover", "id", "link", "tap", "textColor", "title", "width", "props", "_ref", "_ref1", "_humanReadableVariantMap_props_variant", "_ref2", "createLayoutDependency", "Component", "Y", "ref", "activeLocale", "setLocale", "useLocaleInfo", "style", "className", "layoutId", "QsIcUGujF", "WjB0saJsU", "FKwB4UL9z", "wFwmGsvMB", "aV_o9aCOb", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "activeVariantCallback", "delay", "useActiveVariantCallback", "onTapss2oz4", "args", "onMouseEnterzjyp1h", "ref1", "pe", "isDisplayed", "defaultLayoutId", "ae", "sharedStyleClassNames", "componentViewport", "useComponentViewport", "LayoutGroup", "Link", "u", "cx", "RichText2", "css", "FramerZVYe2Nhfy", "withCSS", "ZVYe2Nhfy_default", "addPropertyControls", "ControlType", "addFonts", "getFontsFromSharedStyle", "fonts", "MotionDivWithBGColorCycle", "withBGColorCycle", "motion", "LogosFonts", "getFonts", "Logos", "GraphicsButtonArrowFonts", "pRemd4fMu_default", "ArrowFonts", "Arrow", "LogosControls", "getPropertyControls", "GraphicsButtonArrowControls", "enabledGestures", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "x", "humanReadableEnumMap", "humanReadableVariantMap", "getProps", "arrow", "arrowVariant", "background", "color", "height", "hoverArrowVariant", "icon", "icon1", "id", "link", "newTab", "tap", "title", "width", "props", "_humanReadableEnumMap_arrowVariant", "_ref", "_ref1", "_humanReadableEnumMap_hoverArrowVariant", "_ref2", "_ref3", "_ref4", "_ref5", "_ref6", "_humanReadableVariantMap_props_variant", "_ref7", "_ref8", "_ref9", "createLayoutDependency", "Component", "Y", "ref", "activeLocale", "setLocale", "useLocaleInfo", "style", "className", "layoutId", "gW2IdKNHn", "OA2ahGR0N", "Urz2Ffy21", "xjfxHTVGH", "FdDV8gLxh", "DZNn6_WWp", "uirRaCarc", "x_8VxILUS", "WJoF2TywT", "CiwGQDcAN", "csPpyV4tk", "restProps", "baseVariant", "classNames", "gestureVariant", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "activeVariantCallback", "delay", "useActiveVariantCallback", "onTapbbtkj9", "args", "ref1", "pe", "isDisplayed", "isDisplayed1", "isDisplayed2", "defaultLayoutId", "ae", "sharedStyleClassNames", "componentViewport", "useComponentViewport", "LayoutGroup", "Link", "u", "cx", "ComponentViewportProvider", "RichText2", "css", "FramerAiU29R1w5", "withCSS", "AiU29R1w5_default", "addPropertyControls", "ControlType", "addFonts", "getFontsFromSharedStyle", "fonts", "ButtonsButtonFonts", "getFonts", "AiU29R1w5_default", "ButtonsButtonWithHideIfTenants", "withHideIfTenants", "NavLaunchTwingateButtonFonts", "OIB1sWCoj_default", "NavLaunchTwingateButtonWithShowIfTenantsWithMappedReactPropspjn4ln", "withMappedReactProps", "withShowIfTenants", "OIB1sWCoj_exports", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "humanReadableVariantMap", "getProps", "height", "id", "tapMenu", "width", "props", "createLayoutDependency", "Component", "Y", "ref", "activeLocale", "setLocale", "useLocaleInfo", "style", "className", "layoutId", "jnvUEL2ut", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "activeVariantCallback", "delay", "useActiveVariantCallback", "onTap1gidreh", "args", "ref1", "pe", "isDisplayed", "isDisplayed1", "router", "useRouter", "isDisplayed2", "defaultLayoutId", "ae", "sharedStyleClassNames", "componentViewport", "useComponentViewport", "LayoutGroup", "u", "cx", "ComponentViewportProvider", "ResolveLinks", "resolvedLinks", "SVG", "css", "FramernTx_gJVzD", "withCSS", "nTx_gJVzD_default", "addPropertyControls", "ControlType", "addFonts", "NavMobileNavFonts", "getFonts", "jtDh_M46J_default", "MotionDivGlass_100", "Glass_100", "motion", "ButtonsNavButtonFonts", "ZVYe2Nhfy_default", "NavMenuFonts", "QUH3pJRTz_default", "MotionDivWithFX", "withFX", "NavPrimaryNavRightCopyFonts", "nTx_gJVzD_default", "NavPrimaryNavRightControls", "getPropertyControls", "m1Dw3gDw_default", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "transition2", "animation", "animation1", "animation2", "Overlay", "children", "blockDocumentScrolling", "enabled", "visible", "setVisible", "useOverlayState", "Transition", "value", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "x", "humanReadableEnumMap", "humanReadableVariantMap", "getProps", "actions", "bGBlur", "foreground", "height", "id", "shadow", "width", "props", "createLayoutDependency", "Component", "Y", "ref", "activeLocale", "setLocale", "useLocaleInfo", "style", "className", "layoutId", "YPx0WXa7x", "smQ_kJfRy", "PiR5q7_Ls", "dqNTFu1r7", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "activeVariantCallback", "delay", "useActiveVariantCallback", "onTapb1ubz5", "args", "onTapg4bequ", "lFvMJ0SS0b1ubz5", "lFvMJ0SS0g4bequ", "onMouseEnter6ughds", "wFwmGsvMBizu9gt", "overlay", "paginationInfo", "aV_o9aCObizu9gt", "wFwmGsvMB6ughds", "aV_o9aCOb6ughds", "ref1", "pe", "isDisplayed", "isDisplayed1", "ref2", "ref3", "ref4", "ref5", "router", "useRouter", "ref6", "ref7", "ref8", "ref9", "ref10", "ref11", "isDisplayed2", "defaultLayoutId", "ae", "sharedStyleClassNames", "componentViewport", "useComponentViewport", "LayoutGroup", "u", "cx", "ComponentViewportProvider", "Link", "SVG", "l", "AnimatePresence", "Floating", "overlay1", "overlay2", "ResolveLinks", "resolvedLinks", "overlay3", "overlay4", "resolvedLinks1", "resolvedLinks2", "css", "FramerRqCSc6AzT", "withCSS", "RqCSc6AzT_default", "addPropertyControls", "ControlType", "addFonts", "FeatherFonts", "getFonts", "Icon", "ButtonsButtonFonts", "AiU29R1w5_default", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "humanReadableVariantMap", "getProps", "height", "id", "width", "props", "createLayoutDependency", "Component", "Y", "ref", "fallbackRef", "pe", "refBinding", "defaultLayoutId", "ae", "activeLocale", "setLocale", "useLocaleInfo", "componentViewport", "useComponentViewport", "style", "className", "layoutId", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "scopingClassNames", "cx", "isDisplayed", "isDisplayed1", "LayoutGroup", "u", "Link", "RichText2", "ComponentViewportProvider", "SmartComponentScopedContainer", "css", "FramerRv1dlQk6f", "withCSS", "Rv1dlQk6f_default", "addPropertyControls", "ControlType", "addFonts", "NavBannerDesktopFonts", "getFonts", "Rv1dlQk6f_default", "NavPrimaryNavCoreFonts", "DrqqrAzJ3_default", "NavPrimaryNavCorePopoverFonts", "RqCSc6AzT_default", "NavPrimaryNavCoreControls", "getPropertyControls", "NavBannerDesktopControls", "cycleOrder", "serializationHash", "variantClassNames", "addPropertyOverrides", "overrides", "variants", "nextOverrides", "variant", "transition1", "Transition", "value", "children", "config", "re", "MotionConfigContext", "transition", "contextValue", "se", "p", "Variants", "motion", "x", "humanReadableEnumMap", "humanReadableEnumMap1", "humanReadableVariantMap", "getProps", "actions", "banner", "bannerBreakpoint", "bGBlur", "foreground", "height", "id", "shadow", "width", "props", "createLayoutDependency", "Component", "Y", "ref", "activeLocale", "setLocale", "useLocaleInfo", "style", "className", "layoutId", "tjJZTeoJ5", "WQa2_EmDN", "bJB6Cpf4k", "cjfUt_xA0", "sBIfpPE42", "datiB0mOU", "restProps", "baseVariant", "classNames", "clearLoadingGesture", "gestureHandlers", "gestureVariant", "isLoading", "setGestureState", "setVariant", "useVariantState", "layoutDependency", "scopingClassNames", "cx", "ref1", "pe", "isDisplayed", "isDisplayed1", "defaultLayoutId", "ae", "componentViewport", "useComponentViewport", "LayoutGroup", "u", "ComponentViewportProvider", "css", "FramermWRre6RGT", "withCSS", "mWRre6RGT_default", "addPropertyControls", "ControlType", "addFonts"]
}
