vendor: 15,010 bytes, lines 1-2
1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/chunk-CEL6vSbQ.js","assets/chunks/chunk-ClQpuiDQ.js","assets/chunks/chunk-DOUT0IPv.js","assets/chunks/chunk-BPjY-kQj.js","assets/chunks/chunk-CHPuWe_Y.js","assets/chunks/chunk-Biy4ZVfm.js","assets/chunks/chunk-DGQvR-_9.js","assets/chunks/chunk-FIlUNtxA.js","assets/chunks/chunk-CnnduCCs.js","assets/chunks/chunk-CkNfFR2n.js","assets/chunks/chunk-DliwoSP_.js","assets/chunks/chunk-DBVtunAy.js","assets/chunks/chunk-BMya43B0.js","assets/chunks/chunk-CRqv3qhj.js","assets/chunks/chunk-DEpaBhRE.js","assets/chunks/chunk-DkHTWjlq.js","assets/chunks/chunk-BozCb3SQ.js","assets/chunks/chunk-Cs6fbtxP.js","assets/chunks/chunk-CFSjrja1.js","assets/chunks/chunk-CDgmGONK.js","assets/chunks/chunk-C_zhq0WO.js","assets/chunks/chunk-Cc4X257I.js","assets/chunks/chunk-D2UydqUW.js","assets/chunks/chunk-BNj_5Ria.js","assets/chunks/chunk-BGF7yq6Q.js","assets/chunks/chunk-CDZhwPPR.js","assets/chunks/chunk-Dw0tUlBu.js","assets/chunks/chunk-pc1iL3O8.js","assets/chunks/chunk-ySYRUPmd.js","assets/chunks/chunk-DPz-j2oz.js","assets/chunks/chunk-BhX1WTfc.js","assets/chunks/chunk-BWTfldEJ.js","assets/chunks/chunk-DZGDW4un.js","assets/chunks/chunk-BOFvEUYl.js","assets/chunks/chunk-DelQq9sv.js","assets/chunks/chunk-WsNO0CwC.js","assets/chunks/chunk-C1VDWfG_.js","assets/chunks/chunk-CKB6dUkw.js","assets/chunks/chunk-DYOxpNSN.js","assets/chunks/chunk-Cuj5IgXA.js","assets/chunks/chunk-DNxVuibX.js","assets/chunks/chunk-BW6p7ugU.js","assets/chunks/chunk-DQLJB6oC.js","assets/chunks/chunk-xvOKGv17.js","assets/chunks/chunk-CGiN_ANj.js","assets/chunks/chunk-tP8s_nnS.js","assets/chunks/chunk-CJN43cna.js","assets/chunks/chunk-CH8QOjoR.js","assets/chunks/chunk-Dp0b-wQ3.js","assets/chunks/chunk-DTug5v3V.js","assets/chunks/chunk-Dep9PKhr.js","assets/chunks/chunk-CETsXSrJ.js","assets/chunks/chunk-BX7sermR.js","assets/chunks/chunk-BFvSVFv3.js","assets/chunks/chunk-CUYykLs8.js","assets/chunks/chunk-DFEMVQnD.js","assets/chunks/chunk-C7RboqYM.js","assets/chunks/chunk-C8orSMzI.js","assets/chunks/chunk-DtfNEf7t.js","assets/chunks/chunk-C1-D5ogY.js","assets/chunks/chunk-IAcd5hb8.js","assets/chunks/chunk-p63ZK5C4.js","assets/chunks/chunk-CPdNJcNp.js","assets/chunks/chunk-kpnXrBaO.js","assets/chunks/chunk-Cywdm4Wy.js","assets/chunks/chunk-Db22pEeu.js","assets/chunks/chunk-Bl9er3fy.js","assets/chunks/chunk-FnRNn8Ls.js","assets/chunks/chunk-_IKu7xtJ.js","assets/chunks/chunk-RjB8BnR7.js","assets/chunks/chunk-B7UDoExI.js","assets/chunks/chunk-_UFcmO0l.js","assets/chunks/chunk-ar_OdjxM.js","assets/chunks/chunk-BjxGBaZs.js","assets/chunks/chunk-zDGwG3q1.js","assets/chunks/chunk-BTIf3T1z.js","assets/chunks/chunk-DOJA2YQT.js","assets/chunks/chunk-Df7-ax-B.js","assets/chunks/chunk-CS2JP9qN.js","assets/chunks/chunk-DZk3Wacz.js","assets/chunks/chunk-DxBBc3zI.js","assets/chunks/chunk-Rc9QT7hF.js","assets/chunks/chunk-Y6dJx8TQ.js","assets/chunks/chunk-CTDXhAkn.js","assets/chunks/chunk-BFGVurqc.js","assets/chunks/chunk-1EbhoPdD.js","assets/chunks/chunk-C1sHKuwF.js","assets/chunks/chunk-DuM1UVNb.js","assets/chunks/chunk-Cfgk9zKD.js","assets/chunks/chunk-BY2iBYgt.js","assets/chunks/chunk-CuHnWwWE.js","assets/chunks/chunk-DxdS67Ik.js","assets/chunks/chunk-CeCL1W3a.js","assets/chunks/chunk-DJNpEc6y.js","assets/chunks/chunk-Ijkdv5ta.js","assets/chunks/chunk-BN9CU8dk.js","assets/chunks/chunk-CcVjy4ms.js","assets/chunks/chunk-CihMM6TR.js","assets/chunks/chunk-Myp9yqTd.js","assets/chunks/chunk-BHGkuPEo.js","assets/chunks/chunk-7azjjBo0.js","assets/chunks/chunk-B_KXgQZ3.js","assets/chunks/chunk-BKEL4B2a.js","assets/chunks/chunk-BrJZswdL.js","assets/chunks/chunk-DgR8L2qn.js","assets/chunks/chunk-CKAursMI.js","assets/chunks/chunk-BDTWn0Jc.js","assets/chunks/chunk-DaPDrD0y.js","assets/chunks/chunk-CLRw6eXu.js","assets/chunks/chunk-CCyDV-t1.js","assets/chunks/chunk-Cozeawrs.js","assets/chunks/chunk-Ci5n9MHx.js","assets/chunks/chunk-DINq3J9R.js","assets/chunks/chunk-BCN9U0lj.js","assets/chunks/chunk-CiyyMK3Y.js","assets/chunks/chunk-CB_OzlKF.js","assets/chunks/chunk-1WCDVoIK.js","assets/chunks/chunk-C6_wDdd9.js","assets/chunks/chunk-CPQR49Jq.js","assets/chunks/chunk--uNmd4Dm.js","assets/chunks/chunk-Cd8EzeGY.js","assets/chunks/chunk-B_xTcWnb.js","assets/chunks/chunk-DAdFrGAk.js","assets/chunks/chunk-qWz3HHNE.js","assets/chunks/chunk-DUrheYoT.js","assets/chunks/chunk-DPBqRoBD.js","assets/chunks/chunk-hwVzThr0.js","assets/chunks/chunk-C2p6t7TE.js","assets/chunks/chunk-DjCW0_PB.js","assets/chunks/chunk-CQ6WOmkW.js","assets/chunks/chunk-Bg3CG0JW.js","assets/chunks/chunk-Bb7kUnHm.js","assets/chunks/chunk-DdO9zbAm.js","assets/chunks/chunk-DIwHacHW.js","assets/chunks/chunk-10cmnp6K.js","assets/chunks/chunk-XtRUNb0N.js","assets/chunks/chunk-C8asNnHO.js","assets/chunks/chunk-BqKcrnhl.js","assets/chunks/chunk-DlSC_c6Q.js","assets/chunks/chunk-BMEEFpm-.js","assets/chunks/chunk-Do6HFdIb.js","assets/chunks/chunk-BobQeihJ.js","assets/chunks/chunk-PESExu1y.js","assets/chunks/chunk-CeCejzZa.js","assets/chunks/chunk-DH1wCOIj.js","assets/chunks/chunk-D-nWuvaO.js","assets/chunks/chunk-DVogK9oJ.js","assets/chunks/chunk-D94C_uAy.js","assets/chunks/chunk--WmVMqBW.js","assets/chunks/chunk-gZqgKIAw.js","assets/chunks/chunk-DIeNQ97l.js","assets/chunks/chunk-ufWWVxEr.js","assets/chunks/chunk-C7NQ1qqP.js","assets/chunks/chunk-Clz300P4.js","assets/chunks/chunk-m41a8VNO.js","assets/chunks/chunk-2n0kSIGH.js","assets/chunks/chunk-DvI2w8kH.js","assets/chunks/chunk-i7aDkWNc.js","assets/chunks/chunk-XWAEk-KQ.js","assets/chunks/chunk-CIozG2mg.js","assets/chunks/chunk-9hVEJhJR.js","assets/chunks/chunk-BYUcM0ol.js","assets/chunks/chunk-BQlHIXmA.js","assets/chunks/chunk-ZvWWEqSi.js","assets/chunks/chunk-CNJdx7UT.js","assets/chunks/chunk-CAJIKl0I.js","assets/chunks/chunk-BnEn0yFm.js","assets/chunks/chunk-CkgngnHJ.js","assets/chunks/chunk-BKffgkv-.js","assets/chunks/chunk-OShUCZC3.js","assets/chunks/chunk-BjPxb4Fe.js","assets/chunks/chunk-JgFflvl1.js","assets/chunks/chunk-LJZ9PrRB.js","assets/chunks/chunk-C_mWn2ZQ.js","assets/chunks/chunk-hVV5LW75.js","assets/chunks/chunk-B2EuEe4d.js","assets/chunks/chunk-D5yRm8yY.js","assets/chunks/chunk-D_s-Ls2J.js","assets/chunks/chunk--CMGxAur.js","assets/chunks/chunk-D4xyQJcg.js","assets/chunks/chunk-DBjAMJ03.js","assets/chunks/chunk-CN98lSGI.js","assets/chunks/chunk-Cbsprsp3.js","assets/chunks/chunk-DBh8AHDj.js","assets/chunks/chunk-_NFqVLTW.js","assets/chunks/chunk-B8O_ZdBw.js","assets/chunks/chunk-BnD6gS2m.js","assets/chunks/chunk-CmPg8szk.js","assets/chunks/chunk-QyM0uSNk.js","assets/chunks/chunk-DdfOVbSG.js","assets/chunks/chunk-6yT8g75w.js","assets/chunks/chunk-CshtZZYe.js","assets/chunks/chunk-Bvvsx9SR.js","assets/chunks/chunk-5F7PO7kY.js","assets/chunks/chunk-C5Z_OJI7.js","assets/chunks/chunk-C4qeTarH.js","assets/chunks/chunk-CxW_EBCI.js","assets/chunks/chunk-Brk7dFac.js","assets/chunks/chunk-Bz6B1Ngq.js","assets/chunks/chunk-BGdJKb1G.js","assets/chunks/chunk-CNOHxOci.js","assets/chunks/chunk-BH493Oqf.js","assets/chunks/chunk-DTSJtIaB.js","assets/chunks/chunk-DMJ-8mM5.js","assets/chunks/chunk--z6sF_n5.js","assets/chunks/chunk-D-hGAg-z.js","assets/chunks/chunk-oGK6BOcP.js","assets/chunks/chunk-CN4W6HIn.js","assets/chunks/chunk-C4EkzGwG.js","assets/chunks/chunk-CAc3ruev.js","assets/chunks/chunk-CTq_ilE_.js","assets/chunks/chunk-B_9_44JP.js","assets/chunks/chunk-BJLEDrBs.js","assets/chunks/chunk-VdUJuZ_i.js","assets/chunks/chunk-BJzaq4xA.js","assets/chunks/chunk-Bn-Mv8xr.js","assets/chunks/chunk-DPZzDLkD.js","assets/chunks/chunk-D88C0DdW.js","assets/chunks/chunk-DDtFF-Pu.js","assets/chunks/chunk-DOvtPLn-.js","assets/chunks/chunk-cerqHmjQ.js"])))=>i.map(i=>d[i]); 2import{E as e,T as t,b as n,n as r,t as i,w as a}from"./chunk-ClQpuiDQ.js";import{i as o,r as s,t as c}from"./chunk-DOUT0IPv.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */var l=a((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0<n;){var r=n-1>>>1,a=e[r];if(0<i(a,t))e[r]=t,e[n]=a,n=r;else break a}}function n(e){return e.length===0?null:e[0]}function r(e){if(e.length===0)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;a:for(var r=0,a=e.length,o=a>>>1;r<o;){var s=2*(r+1)-1,c=e[s],l=s+1,u=e[l];if(0>i(c,n))l<a&&0>i(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(l<a&&0>i(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m){if(n(c)!==null)m=!0,S||(S=!0,ne());else{var t=n(l);t!==null&&ae(x,t.startTime-e)}}}var S=!1,C=-1,ee=5,w=-1;function te(){return g?!0:!(e.unstable_now()-w<ee)}function T(){if(g=!1,S){var t=e.unstable_now();w=t;var i=!0;try{a:{m=!1,h&&(h=!1,v(C),C=-1),p=!0;var a=f;try{b:{for(b(t),d=n(c);d!==null&&!(d.expirationTime>t&&te());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&ae(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?ne():S=!1}}}var ne;if(typeof y==`function`)ne=function(){y(T)};else if(typeof MessageChannel<`u`){var re=new MessageChannel,ie=re.port2;re.port1.onmessage=T,ne=function(){ie.postMessage(null)}}else ne=function(){_(T,0)};function ae(t,n){C=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125<e?console.error(`forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported`):ee=0<e?Math.floor(1e3/e):5},e.unstable_getCurrentPriorityLevel=function(){return f},e.unstable_next=function(e){switch(f){case 1:case 2:case 3:var t=3;break;default:t=f}var n=f;f=t;try{return e()}finally{f=n}},e.unstable_requestPaint=function(){g=!0},e.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=f;f=e;try{return t()}finally{f=n}},e.unstable_scheduleCallback=function(r,i,a){var o=e.unstable_now();switch(typeof a==`object`&&a?(a=a.delay,a=typeof a==`number`&&0<a?o+a:o):a=o,r){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return s=a+s,r={id:u++,callback:i,priorityLevel:r,startTime:a,expirationTime:s,sortIndex:-1},a>o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(C),C=-1):h=!0,ae(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,S||(S=!0,ne()))),r},e.unstable_shouldYield=te,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),u=a(((e,t)=>{t.exports=l()})),d=a((e=>{var t=o();function n(e){var t=`https://react.dev/errors/`+e;if(1<arguments.length){t+=`?args[]=`+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+=`&args[]=`+encodeURIComponent(arguments[n])}return`Minified React error #`+e+`; visit `+t+` for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`}function r(){}var i={d:{f:r,r:function(){throw Error(n(522))},D:r,C:r,L:r,m:r,X:r,S:r,M:r},p:0,findDOMNode:null},a=Symbol.for(`react.portal`),s=Symbol.for(`react.recoverable`),c=Symbol.for(`react.optimistic_key`);function l(e,t,n){var r=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:a,key:r==null?null:r===c?c:``+r,children:e,containerInfo:t,implementation:n}}var u=t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function d(e,t){if(e===`font`)return``;if(typeof t==`string`)return t===`use-credentials`?t:``}e.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=i,e.browser=function(e){return{$$typeof:s,_reason:e}},e.createPortal=function(e,t){var r=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)throw Error(n(299));return l(e,t,null,r)},e.flushSync=function(e){var t=u.T,n=i.p;try{if(u.T=null,i.p=2,e)return e()}finally{u.T=t,i.p=n,i.d.f()}},e.preconnect=function(e,t){typeof e==`string`&&(t?(t=t.crossOrigin,t=typeof t==`string`?t===`use-credentials`?t:``:void 0):t=null,i.d.C(e,t))},e.prefetchDNS=function(e){typeof e==`string`&&i.d.D(e)},e.preinit=function(e,t){if(typeof e==`string`&&t&&typeof t.as==`string`){var n=t.as,r=d(n,t.crossOrigin),a=typeof t.integrity==`string`?t.integrity:void 0,o=typeof t.fetchPriority==`string`?t.fetchPriority:void 0;n===`style`?i.d.S(e,typeof t.precedence==`string`?t.precedence:void 0,{crossOrigin:r,integrity:a,fetchPriority:o}):n===`script`&&i.d.X(e,{crossOrigin:r,integrity:a,fetchPriority:o,nonce:typeof t.nonce==`string`?t.nonce:void 0})}},e.preinitModule=function(e,t){if(typeof e==`string`){if(typeof t==`object`&&t){if(t.as==null||t.as===`script`){var n=d(t.as,t.crossOrigin);i.d.M(e,{crossOrigin:n,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0,fetchPriority:typeof t.fetchPriority==`string`?t.fetchPriority:void 0})}}else t??i.d.M(e)}},e.preload=function(e,t){if(typeof e==`string`&&typeof t==`object`&&t&&typeof t.as==`string`){var n=t.as,r=d(n,t.crossOrigin);i.d.L(e,n,{crossOrigin:r,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0,type:typeof t.type==`string`?t.type:void 0,fetchPriority:typeof t.fetchPriority==`string`?t.fetchPriority:void 0,referrerPolicy:typeof t.referrerPolicy==`string`?t.referrerPolicy:void 0,imageSrcSet:typeof t.imageSrcSet==`string`?t.imageSrcSet:void 0,imageSizes:typeof t.imageSizes==`string`?t.imageSizes:void 0,media:typeof t.media==`string`?t.media:void 0})}},e.preloadModule=function(e,t){if(typeof e==`string`){if(t){var n=d(t.as,t.crossOrigin);i.d.m(e,{as:typeof t.as==`string`&&t.as!==`script`?t.as:void 0,crossOrigin:n,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0,fetchPriority:typeof t.fetchPriority==`string`?t.fetchPriority:void 0})}else i.d.m(e)}},e.requestFormReset=function(e){i.d.r(e)},e.unstable_batchedUpdates=function(e,t){return e(t)},e.useFormState=function(e,t,n){return u.H.useFormState(e,t,n)},e.useFormStatus=function(){return u.H.useHostTransitionStatus()}
2,e.version=`19.3.0`})),f=a(((e,t)=>{function n(){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE==`function`)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=d()})),p=a((e=>{var t=u(),n=o(),r=f();function i(e){var t=`https://react.dev/errors/`+e;if(1<arguments.length){t+=`?args[]=`+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+=`&args[]=`+encodeURIComponent(arguments[n])}return`Minified React error #`+e+`; visit `+t+` for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`}function a(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function s(e){for(var t=e,n=t;n&&!n.alternate;)t=n,t.flags&4098&&(e=t.return),n=t.return;for(;t.return;)t=t.return;return t.tag===3?e:null}function c(e){if(e.tag===13){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function l(e){if(e.tag===31){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function d(e){if(s(e)!==e)throw Error(i(188))}function p(e){var t=e.alternate;if(!t){if(t=s(e),t===null)throw Error(i(188));return t===e?e:null}for(var n=e,r=t;;){var a=n.return;if(a===null)break;var o=a.alternate;if(o===null){if(r=a.return,r!==null){n=r;continue}break}if(a.child===o.child){for(o=a.child;o;){if(o===n)return d(a),e;if(o===r)return d(a),t;o=o.sibling}throw Error(i(188))}if(n.return!==r.return)n=a,r=o;else{for(var c=!1,l=a.child;l;){if(l===n){c=!0,n=a,r=o;break}if(l===r){c=!0,r=a,n=o;break}l=l.sibling}if(!c){for(l=o.child;l;){if(l===n){c=!0,n=o,r=a;break}if(l===r){c=!0,r=o,n=a;break}l=l.sibling}if(!c)throw Error(i(189))}}if(n.alternate!==r)throw Error(i(190))}if(n.tag!==3)throw Error(i(188));return n.stateNode.current===n?e:t}function m(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e;for(e=e.child;e!==null;){if(t=m(e),t!==null)return t;e=e.sibling}return null}function h(e,t,n,r,i,a){for(;e!==null;){if((e.tag===5||e.tag===27||e.tag===6)&&n(e,r,i,a)||(e.tag!==22||e.memoizedState===null)&&(t||e.tag!==5&&e.tag!==27)&&h(e.child,t,n,r,i,a))return!0;e=e.sibling}return!1}function g(e){for(e=e.return;e!==null;){if(e.tag===3||e.tag===5||e.tag===27)return e;e=e.return}return null}function _(e){var t=!1;for(e=e.return;e!==null&&(e.tag===4&&(t=!0),e.tag!==3&&e.tag!==5&&e.tag!==27);)e=e.return;return t}function v(e){var t=[null,null],n=g(e);return n===null||y(t,e,n.child,{foundSelf:!1}),t}function y(e,t,n,r){for(;n!==null;){if(n===t)r.foundSelf=!0;else if(n.tag===5||n.tag===27||n.tag===6){if(r.foundSelf)return e[1]=n,!0;e[0]=n}else if((n.tag!==22||n.memoizedState===null)&&y(e,t,n.child,r))return!0;n=n.sibling}return!1}function b(e){switch(e.tag){case 5:case 27:case 6:return e.stateNode;case 3:return e.stateNode.containerInfo;default:throw Error(i(559))}}var x=null,S=null;function C(e,t,n){return e===n||e===t&&(x=e,!0)}function ee(e,t,n){return e===n?(S=e,!1):e===t&&(S!==null&&(x=e),!0)}function w(e){if(e===null)return null;do e=e===null?null:e.return;while(e&&e.tag!==5&&e.tag!==27&&e.tag!==3);return e||null}function te(e,t,n){for(var r=0,i=e;i;i=n(i))r++;i=0;for(var a=t;a;a=n(a))i++;for(;0<r-i;)e=n(e),r--;for(;0<i-r;)t=n(t),i--;for(;r--;){if(e===t||t!==null&&e===t.alternate)return e;e=n(e),t=n(t)}return null}var T=Object.assign,ne=Symbol.for(`react.element`),re=Symbol.for(`react.transitional.element`),ie=Symbol.for(`react.portal`),ae=Symbol.for(`react.fragment`),oe=Symbol.for(`react.strict_mode`),se=Symbol.for(`react.profiler`),ce=Symbol.for(`react.consumer`),le=Symbol.for(`react.context`),ue=Symbol.for(`react.forward_ref`),de=Symbol.for(`react.suspense`),fe=Symbol.for(`react.suspense_list`),pe=Symbol.for(`react.memo`),me=Symbol.for(`react.lazy`),he=Symbol.for(`react.activity`),ge=Symbol.for(`react.legacy_hidden`),_e=Symbol.for(`react.memo_cache_sentinel`),ve=Symbol.for(`react.view_transition`),ye=Symbol.for(`react.recoverable`),be=Symbol.iterator;function xe(e){return typeof e!=`object`||!e?null:(e=be&&e[be]||e[`@@iterator`],typeof e==`function`?e:null)}var Se=Symbol.for(`react.client.reference`);function Ce(e){if(e==null)return null;if(typeof e==`function`)return e.$$typeof===Se?null:e.displayName||e.name||null;if(typeof e==`string`)return e;switch(e){case ae:return`Fragment`;case se:return`Profiler`;case oe:return`StrictMode`;case de:return`Suspense`;case fe:return`SuspenseList`;case he:return`Activity`;case ve:return`ViewTransition`}if(typeof e==`object`)switch(e.$$typeof){case ie:return`Portal`;case le:return e.displayName||`Context`;case ce:return(e._context.displayName||`Context`)+`.Consumer`;case ue:var t=e.render;return e=e.displayName,e||=(e=t.displayName||t.name||``,e===``?`ForwardRef`:`ForwardRef(`+e+`)`),e;case pe:return t=e.displayName||null,t===null?Ce(e.type)||`Memo`:t;case me:t=e._payload,e=e._init;try{return Ce(e(t))}catch{}}return null}var we=Array.isArray,E=n.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,D=r.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,Te={pending:!1,data:null,method:null,action:null},Ee=[],O=-1;function De(e){return{current:e}}function Oe(e){0>O||(e.current=Ee[O],Ee[O]=null,O--)}function ke(e,t){O++,Ee[O]=e.current,e.current=t}var Ae=De(null),je=De(null),Me=De(null),Ne=De(null);function Pe(e,t){switch(ke(Me,t),ke(je,e),ke(Ae,null),t.nodeType){case 9:case 11:e=(e
vendor: 1,108 bytes, lines 2-4
2=t.documentElement)&&(e=e.namespaceURI)?up(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=up(t),e=dp(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}Oe(Ae),ke(Ae,e)}function Fe(){Oe(Ae),Oe(je),Oe(Me)}function Ie(e){var t=e.memoizedState;t!==null&&(sh._currentValue=t.memoizedState,ke(Ne,e)),t=Ae.current;var n=dp(t,e.type);t!==n&&(ke(je,e),ke(Ae,n))}function Le(e){je.current===e&&(Oe(Ae),Oe(je)),Ne.current===e&&(Oe(Ne),sh._currentValue=Te)}var Re,ze;function Be(e){if(Re===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);Re=t&&t[1]||``,ze=-1<e.stack.indexOf(` 3 at`)?` (<anonymous>)`:-1<e.stack.indexOf(`@`)?`@unknown:0:0`:``}return` 4`+Re+e+ze}var Ve=!1;function He(e,t){if(!e||Ve)return``;Ve=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var r={DetermineComponentFrameRoot:function(){try{if(t){var n=function(){throw Error()};if(Object.defineProperty(n.prototype,"props",{set:function(){throw Error()}}),typeof Reflect==`object`&&Reflect.construct){try{Reflect.construct(n,[])}catch(e){var r=e}Reflect.construct(e,[],n)}
4else{try{n.call()}catch(e){r=e}n=!1;try{var i=Object.getOwnPropertyDescriptor(e.prototype,`props`);Object.defineProperty(e.prototype,"props",{configurable:!0,set:function(){throw Error()}}),n=!0,new e}finally{n&&(i===void 0?delete e.prototype.props:Object.defineProperty(e.prototype,"props",i))}}}else{try{throw Error()}catch(e){r=e}(n=e())&&typeof n.catch==`function`&&n.catch(function(){})}}catch(e){if(e&&r&&typeof e.stack==`string`)return[e.stack,r.stack]}return[null,null]}};r.DetermineComponentFrameRoot.displayName=`DetermineComponentFrameRoot`;var i=Object.getOwnPropertyDescriptor(r.DetermineComponentFrameRoot,`name`);i&&i.configurable&&Object.defineProperty(r.DetermineComponentFrameRoot,"name",{value:`DetermineComponentFrameRoot`});var a=r.DetermineComponentFrameRoot(),o=a[0],s=a[1];if(o&&s){var c=o.split(` 5`),l=s.split(` 6`);for(i=r=0;r<c.length&&!c[r].includes(`DetermineComponentFrameRoot`);)r++;for(;i<l.length&&!l[i].includes(`DetermineComponentFrameRoot`);)i++;if(r===c.length||i===l.length)for(r=c.length-1,i=l.length-1;1<=r&&0<=i&&c[r]!==l[i];)i--;for(;1<=r&&0<=i;r--,i--)if(c[r]!==l[i]){if(r!==1||i!==1)do if(r--,i--,0>i||c[r]!==l[i]){var u=` 7`+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(`<anonymous>`)&&(u=u.replace(`<anonymous>`,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{Ve=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?Be(n):``}function Ue(e,t){switch(e.tag){case 26:case 27:case 5:return Be(e.type);case 16:return Be(`Lazy`);case 13:return e.child!==t&&t!==null?Be(`Suspense Fallback`):Be(`Suspense`);case 19:return Be(`SuspenseList`);case 0:case 15:return He(e.type,!1);case 11:return He(e.type.render,!1);case 1:return He(e.type,!0);case 31:return Be(`Activity`);case 30:return Be(`ViewTransition`);default:return``}}function We(e){try{var t=``,n=null;do t+=Ue(e,n),n=e,e=e.return;while(e);return t}catch(e){return` 8Error generating stack: `+e.message+` 9`+e.stack}}var Ge=Object.prototype.hasOwnProperty,Ke=t.unstable_scheduleCallback,qe=t.unstable_cancelCallback,Je=t.unstable_shouldYield,Ye=t.unstable_requestPaint,Xe=t.unstable_now,Ze=t.unstable_getCurrentPriorityLevel,Qe=t.unstable_ImmediatePriority,$e=t.unstable_UserBlockingPriority,et=t.unstable_NormalPriority,tt=t.unstable_LowPriority,nt=t.unstable_IdlePriority,rt=t.log,it=t.unstable_setDisableYieldValue,at=null,ot=null;function st(e){if(typeof rt==`function`&&it(e),ot&&typeof ot.setStrictMode==`function`)try{ot.setStrictMode(at,e)}catch{}}var ct=Math.clz32?Math.clz32:dt,lt=Math.log,ut=Math.LN2;function dt(e){return e>>>=0,e===0?32:31-(lt(e)/ut|0)|0}var ft=256,pt=262144,mt=4194304;function ht(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&-e;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function gt(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=ht(n))):i=ht(o):i=ht(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=ht(n))):i=ht(o)):i=ht(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function _t(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function vt(e,t){t&8&&(t|=t&32);var n=e.entangledLanes;if(n!==0)for(e=e.entanglements,n&=t;0<n;){var r=31-ct(n),i=1<<r;t|=e[r],n&=~i}return t}function yt(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function bt(){var e=mt;return mt<<=1,!(mt&62914560)&&(mt=4194304),e}function xt(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}
vendor: 6,483 bytes, line 9
9function St(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Ct(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0<n;){var u=31-ct(n),d=1<<u;s[u]=0,c[u]=-1;var f=l[u];if(f!==null)for(l[u]=null,u=0;u<f.length;u++){var p=f[u];p!==null&&(p.lane&=-536870913)}n&=~d}r!==0&&wt(e,r,0),a!==0&&i===0&&e.tag!==0&&(e.suspendedLanes|=a&~(o&~t))}function wt(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var r=31-ct(t);e.entangledLanes|=t,e.entanglements[r]=e.entanglements[r]|1073741824|n&261930}function Tt(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-ct(n),i=1<<r;i&t|e[r]&t&&(e[r]|=t),n&=~i}}function Et(e,t){var n=t&-t;return n=n&42?1:Dt(n),(n&(e.suspendedLanes|t))===0?n:0}function Dt(e){switch(e){case 2:e=1;break;case 8:e=4;break;case 32:e=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:e=128;break;case 268435456:e=134217728;break;default:e=0}return e}function Ot(e){return e&=-e,2<e?8<e?e&134217727?32:268435456:8:2}function kt(){var e=D.p;return e===0?(e=window.event,e===void 0?32:Ch(e.type)):e}function At(e,t){var n=D.p;try{return D.p=e,t()}finally{D.p=n}}var jt=Math.random().toString(36).slice(2),Mt=`__reactFiber$`+jt,Nt=`__reactProps$`+jt,Pt=`__reactContainer$`+jt,Ft=`__reactEvents$`+jt,It=`__reactListeners$`+jt,Lt=`__reactHandles$`+jt,Rt=`__reactResources$`+jt,zt=`__reactMarker$`+jt,Bt=`__reactLoad$`+jt;function Vt(e){delete e[Mt],delete e[Nt],delete e[It],delete e[Lt]}function Ht(e){var t;if(t=e[Mt])return t;for(var n=e.parentNode;n;){if(t=n[Pt]||n[Mt]){if(n=t.alternate,t.child!==null||n!==null&&n.child!==null)for(e=fm(e);e!==null;){if(n=e[Mt])return n;e=fm(e)}return t}e=n,n=e.parentNode}return null}function Ut(e){if(e=e[Mt]||e[Pt]){var t=e.tag;if(t===5||t===6||t===13||t===31||t===26||t===27||t===3)return e}return null}function Wt(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e.stateNode;throw Error(i(33))}function Gt(e){var t=e[Rt];return t||=e[Rt]={hoistableStyles:new Map,hoistableScripts:new Map},t}function Kt(e){e[zt]=!0}function qt(e){e[Bt]=void 0}var Jt=new Set,Yt={};function Xt(e,t){Zt(e,t),Zt(e+`Capture`,t)}function Zt(e,t){for(Yt[e]=t,e=0;e<t.length;e++)Jt.add(t[e])}var Qt=RegExp(`^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$`),$t={},en={};function tn(e){return Ge.call(en,e)?!0:Ge.call($t,e)?!1:Qt.test(e)?en[e]=!0:($t[e]=!0,!1)}var k=!1;function nn(){var e=k;return k=!1,e}function rn(e,t,n){if(tn(t)){if(n===null)e.removeAttribute(t);else{switch(typeof n){case`undefined`:case`function`:case`symbol`:e.removeAttribute(t);return;case`boolean`:var r=t.toLowerCase().slice(0,5);if(r!==`data-`&&r!==`aria-`){e.removeAttribute(t);return}}e.setAttribute(t,n)}}}function an(e,t,n){if(n===null)e.removeAttribute(t);else{switch(typeof n){case`undefined`:case`function`:case`symbol`:case`boolean`:e.removeAttribute(t);return}e.setAttribute(t,n)}}function on(e,t,n,r){if(r===null)e.removeAttribute(n);else{switch(typeof r){case`undefined`:case`function`:case`symbol`:case`boolean`:e.removeAttribute(n);return}e.setAttributeNS(t,n,r)}}function sn(e){switch(typeof e){case`bigint`:case`boolean`:case`number`:case`string`:case`undefined`:return e;case`object`:return e;default:return``}}function cn(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()===`input`&&(t===`checkbox`||t===`radio`)}function ln(e,t,n){var r=Object.getOwnPropertyDescriptor(e.constructor.prototype,t);if(!e.hasOwnProperty(t)&&r!==void 0&&typeof r.get==`function`&&typeof r.set==`function`){var i=r.get,a=r.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(e){n=``+e,a.call(this,e)}}),Object.defineProperty(e,t,{enumerable:r.enumerable}),{getValue:function(){return n},setValue:function(e){n=``+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function un(e){if(!e._valueTracker){var t=cn(e)?`checked`:`value`;e._valueTracker=ln(e,t,``+e[t])}}function dn(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r=``;return e&&(r=cn(e)?e.checked?`true`:`false`:e.value),e=r,e!==n&&(t.setValue(e),!0)}var fn=/[\n"\\]/g;function pn(e){return e.replace(fn,function(e){return`\\`+e.charCodeAt(0).toString(16)+` `})}function mn(e,t,n,r,i,a,o,s){e.name=``,o!=null&&typeof o!=`function`&&typeof o!=`symbol`&&typeof o!=`boolean`?e.type=o:e.removeAttribute(`type`),t==null?o!==`submit`&&o!==`reset`||e.removeAttribute(`value`):o===`number`?(t===0&&e.value===``||e.value!=t)&&(e.value=``+sn(t)):e.value!==``+sn(t)&&(e.value=``+sn(t)),t==null?n==null?r!=null&&e.removeAttribute(`value`):gn(e,sn(n)):o===`number`&&e.value==t?gn(e,sn(e.value)):gn(e,sn(t)),i==null&&a!=null&&(e.defaultChecked=!!a),i!=null&&(e.checked=i&&typeof i!=`function`&&typeof i!=`symbol`),s!=null&&typeof s!=`function`&&typeof s!=`symbol`&&typeof s!=`boolean`?e.name=``+sn(s):e.removeAttribute(`name`)}function hn(e,t,n,r,i,a,o,s){if(a!=null&&typeof a!=`function`&&typeof a!=`symbol`&&typeof a!=`boolean`&&(e.type=a),t!=null||n!=null){if(!(a!==`submit`&&a!==`reset`||t!=null)){un(e);return}n=n==null?``:``+sn(n),t=t==null?n:``+sn(t),s||t===e.value||(e.value=t),e.defaultValue=t}r??=i,r=typeof r!=`function`&&typeof r!=`symbol`&&!!r,e.checked=s?e.checked:!!r,e.defaultChecked=!!r,o!=null&&typeof o!=`function`&&typeof o!=`symbol`&&typeof o!=`boolean`&&(e.name=o),un(e)}function gn(e,t){e.defaultValue!==``+t&&(e.defaultValue=``+t)}function _n(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i<n.length;i++)t[`$`+n[i]]=!0;for(n=0;n<e.length;n++)i=t.hasOwnProperty(`$`+e[n].value),e[n].selected!==i&&(e[n].selected=i),i&&r&&(e[n].defaultSelected=!0)}else{for(n=``+sn(n),t=null,i=0;i<e.length;i++){if(e[i].value===n){e[i].selected=!0,r&&(e[i].defaultSelected=!0);return}t!==null||e[i].disabled||(t=e[i])}t!==null&&(t.selected=!0)}}
vendor: 7,179 bytes, line 9
9function vn(e,t,n){if(t!=null&&(t=``+sn(t),t!==e.value&&(e.value=t),n==null)){e.defaultValue!==t&&(e.defaultValue=t);return}e.defaultValue=n==null?``:``+sn(n)}function yn(e,t,n,r){if(t==null){if(r!=null){if(n!=null)throw Error(i(92));if(we(r)){if(1<r.length)throw Error(i(93));r=r[0]}n=r}n??=``,t=n}n=sn(t),e.defaultValue=n,r=e.textContent,r===n&&r!==``&&r!==null&&(e.value=r),un(e)}function bn(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var xn=new Set(`animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp`.split(` `));function Sn(e,t,n){var r=t.indexOf(`--`)===0;n==null||typeof n==`boolean`||n===``?r?e.setProperty(t,``):t===`float`?e.cssFloat=``:e[t]=``:r?e.setProperty(t,n):typeof n!=`number`||n===0||xn.has(t)?t===`float`?e.cssFloat=n:e[t]=(``+n).trim():e[t]=n+`px`}function Cn(e,t,n){if(t!=null&&typeof t!=`object`)throw Error(i(62));if(e=e.style,n!=null){for(var r in n)!n.hasOwnProperty(r)||t!=null&&t.hasOwnProperty(r)||(r.indexOf(`--`)===0?e.setProperty(r,``):r===`float`?e.cssFloat=``:e[r]=``,k=!0);for(var a in t)r=t[a],t.hasOwnProperty(a)&&n[a]!==r&&(Sn(e,a,r),k=!0)}else for(var o in t)t.hasOwnProperty(o)&&Sn(e,o,t[o])}function wn(e){if(e.indexOf(`-`)===-1)return!1;switch(e){case`annotation-xml`:case`color-profile`:case`font-face`:case`font-face-src`:case`font-face-uri`:case`font-face-format`:case`font-face-name`:case`missing-glyph`:return!1;default:return!0}}var Tn=new Map([[`acceptCharset`,`accept-charset`],[`htmlFor`,`for`],[`httpEquiv`,`http-equiv`],[`crossOrigin`,`crossorigin`],[`accentHeight`,`accent-height`],[`alignmentBaseline`,`alignment-baseline`],[`arabicForm`,`arabic-form`],[`baselineShift`,`baseline-shift`],[`capHeight`,`cap-height`],[`clipPath`,`clip-path`],[`clipRule`,`clip-rule`],[`colorInterpolation`,`color-interpolation`],[`colorInterpolationFilters`,`color-interpolation-filters`],[`colorProfile`,`color-profile`],[`colorRendering`,`color-rendering`],[`dominantBaseline`,`dominant-baseline`],[`enableBackground`,`enable-background`],[`fillOpacity`,`fill-opacity`],[`fillRule`,`fill-rule`],[`floodColor`,`flood-color`],[`floodOpacity`,`flood-opacity`],[`fontFamily`,`font-family`],[`fontSize`,`font-size`],[`fontSizeAdjust`,`font-size-adjust`],[`fontStretch`,`font-stretch`],[`fontStyle`,`font-style`],[`fontVariant`,`font-variant`],[`fontWeight`,`font-weight`],[`glyphName`,`glyph-name`],[`glyphOrientationHorizontal`,`glyph-orientation-horizontal`],[`glyphOrientationVertical`,`glyph-orientation-vertical`],[`horizAdvX`,`horiz-adv-x`],[`horizOriginX`,`horiz-origin-x`],[`imageRendering`,`image-rendering`],[`letterSpacing`,`letter-spacing`],[`lightingColor`,`lighting-color`],[`markerEnd`,`marker-end`],[`markerMid`,`marker-mid`],[`markerStart`,`marker-start`],[`maskType`,`mask-type`],[`overlinePosition`,`overline-position`],[`overlineThickness`,`overline-thickness`],[`paintOrder`,`paint-order`],[`panose-1`,`panose-1`],[`pointerEvents`,`pointer-events`],[`renderingIntent`,`rendering-intent`],[`shapeRendering`,`shape-rendering`],[`stopColor`,`stop-color`],[`stopOpacity`,`stop-opacity`],[`strikethroughPosition`,`strikethrough-position`],[`strikethroughThickness`,`strikethrough-thickness`],[`strokeDasharray`,`stroke-dasharray`],[`strokeDashoffset`,`stroke-dashoffset`],[`strokeLinecap`,`stroke-linecap`],[`strokeLinejoin`,`stroke-linejoin`],[`strokeMiterlimit`,`stroke-miterlimit`],[`strokeOpacity`,`stroke-opacity`],[`strokeWidth`,`stroke-width`],[`textAnchor`,`text-anchor`],[`textDecoration`,`text-decoration`],[`textRendering`,`text-rendering`],[`transformOrigin`,`transform-origin`],[`underlinePosition`,`underline-position`],[`underlineThickness`,`underline-thickness`],[`unicodeBidi`,`unicode-bidi`],[`unicodeRange`,`unicode-range`],[`unitsPerEm`,`units-per-em`],[`vAlphabetic`,`v-alphabetic`],[`vHanging`,`v-hanging`],[`vIdeographic`,`v-ideographic`],[`vMathematical`,`v-mathematical`],[`vectorEffect`,`vector-effect`],[`vertAdvY`,`vert-adv-y`],[`vertOriginX`,`vert-origin-x`],[`vertOriginY`,`vert-origin-y`],[`wordSpacing`,`word-spacing`],[`writingMode`,`writing-mode`],[`xmlnsXlink`,`xmlns:xlink`],[`xHeight`,`x-height`]]),En=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;function Dn(e){return En.test(``+e)?`javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')`:e}function On(){}var kn=null;function An(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var jn=null,Mn=null;function Nn(e){var t=Ut(e);if(t&&(e=t.stateNode)){var n=e[Nt]||null;a:switch(e=t.stateNode,t.type){case`input`:if(mn(e,n.value,n.defaultValue,n.defaultValue,n.checked,n.defaultChecked,n.type,n.name),t=n.name,n.type===`radio`&&t!=null){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll(`input[name="`+pn(``+t)+`"][type="radio"]`),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var a=r[Nt]||null;if(!a)throw Error(i(90));mn(r,a.value,a.defaultValue,a.defaultValue,a.checked,a.defaultChecked,a.type,a.name)}}for(t=0;t<n.length;t++)r=n[t],r.form===e.form&&dn(r)}break a;case`textarea`:vn(e,n.value,n.defaultValue);break a;case`select`:t=n.value,t!=null&&_n(e,!!n.multiple,t,!1)}}}var Pn=!1;function Fn(e,t,n){if(Pn)return e(t,n);Pn=!0;try{return e(t)}finally{if(Pn=!1,(jn!==null||Mn!==null)&&(zd(),jn&&(t=jn,e=Mn,Mn=jn=null,Nn(t),e)))for(t=0;t<e.length;t++)Nn(e[t])}}function In(e,t){var n=e.stateNode;if(n===null)return null;var r=n[Nt]||null;if(r===null)return null;n=r[t];a:switch(t){case`onClick`:case`onClickCapture`:case`onDoubleClick`:case`onDoubleClickCapture`:case`onMouseDown`:case`onMouseDownCapture`:case`onMouseMove`:case`onMouseMoveCapture`:case`onMouseUp`:case`onMouseUpCapture`:case`onMouseEnter`:(r=!r.disabled)||(e=e.type,r=e!==`button`&&e!==`input`&&e!==`select`&&e!==`textarea`),e=!r;break a;default:e=!1}if(e)return null;if(n&&typeof n!=`function`)throw Error(i(231,t,typeof n));return n}var Ln=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0,Rn=!1;if(Ln)try{var zn={};Object.defineProperty(zn,"passive",{get:function(){Rn=!0}}),window.addEventListener(`test`,zn,zn),window.removeEventListener(`test`,zn,zn)}catch{Rn=!1}
vendor: 8,363 bytes, line 9
9var Bn=null,Vn=null,Hn=null;function Un(){if(Hn)return Hn;var e,t=Vn,n=t.length,r,i=`value`in Bn?Bn.value:Bn.textContent,a=i.length;for(e=0;e<n&&t[e]===i[e];e++);var o=n-e;for(r=1;r<=o&&t[n-r]===i[a-r];r++);return Hn=i.slice(e,1<r?1-r:void 0)}function Wn(e){var t=e.keyCode;return`charCode`in e?(e=e.charCode,e===0&&t===13&&(e=13)):e=t,e===10&&(e=13),32<=e||e===13?e:0}function Gn(){return!0}function Kn(){return!1}function qn(e){function t(t,n,r,i,a){for(var o in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=i,this.target=a,this.currentTarget=null,e)e.hasOwnProperty(o)&&(t=e[o],this[o]=t?t(i):i[o]);return this.isDefaultPrevented=(i.defaultPrevented==null?!1===i.returnValue:i.defaultPrevented)?Gn:Kn,this.isPropagationStopped=Kn,this}return T(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():typeof e.returnValue!=`unknown`&&(e.returnValue=!1),this.isDefaultPrevented=Gn)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():typeof e.cancelBubble!=`unknown`&&(e.cancelBubble=!0),this.isPropagationStopped=Gn)},persist:function(){},isPersistent:Gn}),t}var Jn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Yn=qn(Jn),Xn=T({},Jn,{view:0,detail:0}),Zn=qn(Xn),Qn,$n,er,tr=T({},Xn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:fr,button:0,buttons:0,relatedTarget:function(e){return e.relatedTarget===void 0?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return`movementX`in e?e.movementX:(e!==er&&(er&&e.type===`mousemove`?(Qn=e.screenX-er.screenX,$n=e.screenY-er.screenY):$n=Qn=0,er=e),Qn)},movementY:function(e){return`movementY`in e?e.movementY:$n}}),nr=qn(tr),rr=qn(T({},tr,{dataTransfer:0})),ir=qn(T({},Xn,{relatedTarget:0})),ar=qn(T({},Jn,{animationName:0,elapsedTime:0,pseudoElement:0})),or=qn(T({},Jn,{clipboardData:function(e){return`clipboardData`in e?e.clipboardData:window.clipboardData}})),sr=qn(T({},Jn,{data:0})),cr={Esc:`Escape`,Spacebar:` `,Left:`ArrowLeft`,Up:`ArrowUp`,Right:`ArrowRight`,Down:`ArrowDown`,Del:`Delete`,Win:`OS`,Menu:`ContextMenu`,Apps:`ContextMenu`,Scroll:`ScrollLock`,MozPrintableKey:`Unidentified`},lr={8:`Backspace`,9:`Tab`,12:`Clear`,13:`Enter`,16:`Shift`,17:`Control`,18:`Alt`,19:`Pause`,20:`CapsLock`,27:`Escape`,32:` `,33:`PageUp`,34:`PageDown`,35:`End`,36:`Home`,37:`ArrowLeft`,38:`ArrowUp`,39:`ArrowRight`,40:`ArrowDown`,45:`Insert`,46:`Delete`,112:`F1`,113:`F2`,114:`F3`,115:`F4`,116:`F5`,117:`F6`,118:`F7`,119:`F8`,120:`F9`,121:`F10`,122:`F11`,123:`F12`,144:`NumLock`,145:`ScrollLock`,224:`Meta`},ur={Alt:`altKey`,Control:`ctrlKey`,Meta:`metaKey`,Shift:`shiftKey`};function dr(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):(e=ur[e])?!!t[e]:!1}function fr(){return dr}var pr=qn(T({},Xn,{key:function(e){if(e.key){var t=cr[e.key]||e.key;if(t!==`Unidentified`)return t}return e.type===`keypress`?(e=Wn(e),e===13?`Enter`:String.fromCharCode(e)):e.type===`keydown`||e.type===`keyup`?lr[e.keyCode]||`Unidentified`:``},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:fr,charCode:function(e){return e.type===`keypress`?Wn(e):0},keyCode:function(e){return e.type===`keydown`||e.type===`keyup`?e.keyCode:0},which:function(e){return e.type===`keypress`?Wn(e):e.type===`keydown`||e.type===`keyup`?e.keyCode:0}})),mr=qn(T({},tr,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),hr=qn(T({},Jn,{submitter:0})),gr=qn(T({},Xn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:fr})),_r=qn(T({},Jn,{propertyName:0,elapsedTime:0,pseudoElement:0})),vr=qn(T({},tr,{deltaX:function(e){return`deltaX`in e?e.deltaX:`wheelDeltaX`in e?-e.wheelDeltaX:0},deltaY:function(e){return`deltaY`in e?e.deltaY:`wheelDeltaY`in e?-e.wheelDeltaY:`wheelDelta`in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0})),yr=qn(T({},Jn,{newState:0,oldState:0,source:0})),br=[9,13,27,32],xr=Ln&&`CompositionEvent`in window,Sr=null;Ln&&`documentMode`in document&&(Sr=document.documentMode);var Cr=Ln&&`TextEvent`in window&&!Sr,wr=Ln&&(!xr||Sr&&8<Sr&&11>=Sr),Tr=` `,A=!1;function Er(e,t){switch(e){case`keyup`:return br.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function Dr(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var j=!1;function M(e,t){switch(e){case`compositionend`:return Dr(t);case`keypress`:return t.which===32?(A=!0,Tr):null;case`textInput`:return e=t.data,e===Tr&&A?null:e;default:return null}}function Or(e,t){if(j)return e===`compositionend`||!xr&&Er(e,t)?(e=Un(),Hn=Vn=Bn=null,j=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case`compositionend`:return wr&&t.locale!==`ko`?null:t.data;default:return null}}var kr={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Ar(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t===`input`?!!kr[e.type]:t===`textarea`}function jr(e,t,n,r){jn?Mn?Mn.push(r):Mn=[r]:jn=r,t=Jf(t,`onChange`),0<t.length&&(n=new Yn(`onChange`,`change`,null,n,r),e.push({event:n,listeners:t}))}var Mr=null,Nr=null;function Pr(e){Vf(e,0)}function Fr(e){if(dn(Wt(e)))return e}function Ir(e,t){if(e===`change`)return t}var Lr=!1;if(Ln){var Rr;if(Ln){var zr=`oninput`in document;if(!zr){var Br=document.createElement(`div`);Br.setAttribute(`oninput`,`return;`),zr=typeof Br.oninput==`function`}Rr=zr}else Rr=!1;Lr=Rr&&(!document.documentMode||9<document.documentMode)}function Vr(){Mr&&(Mr.detachEvent(`onpropertychange`,Hr),Nr=Mr=null)}function Hr(e){if(e.propertyName===`value`&&Fr(Nr)){var t=[];jr(t,Nr,e,An(e)),Fn(Pr,t)}}function Ur(e,t,n){e===`focusin`?(Vr(),Mr=t,Nr=n,Mr.attachEvent(`onpropertychange`,Hr)):e===`focusout`&&Vr()}function Wr(e){if(e===`selectionchange`||e===`keyup`||e===`keydown`)return Fr(Nr)}function Gr(e,t){if(e===`click`)return Fr(t)}function Kr(e,t){if(e===`input`||e===`change`)return Fr(t)}function qr(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var Jr=typeof Object.is==`function`?Object.is:qr;function Yr(e,t){if(Jr(e,t))return!0;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++){var i=n[r];if(!Ge.call(t,i)||!Jr(e[i],t[i]))return!1}return!0}function Xr(e){if(e||=typeof document<`u`?document:void 0,e===void 0)return null;try{return e.activeElement||e.body}catch{return e.body}}function Zr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function Qr(e,t){var n=Zr(e);e=0;for(var r;n;){if(n.nodeType===3){if(r=e+n.textContent.length,e<=t&&r>=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=Zr(n)}}function $r(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?$r(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function ei(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Xr(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=Xr(e.document)}return t}function ti(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===`input`&&(e.type===`text`||e.type===`search`||e.type===`tel`||e.type===`url`||e.type===`password`)||t===`textarea`||e.contentEditable===`true`)}var ni=Ln&&`documentMode`in document&&11>=document.documentMode,ri=null,ii=null,ai=null,oi=!1;function si(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;oi||ri==null||ri!==Xr(r)||(r=ri,`selectionStart`in r&&ti(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focu
vendor: 4,639 bytes, line 9
9sNode:r.focusNode,focusOffset:r.focusOffset}),ai&&Yr(ai,r)||(ai=r,r=Jf(ii,`onSelect`),0<r.length&&(t=new Yn(`onSelect`,`select`,null,t,n),e.push({event:t,listeners:r}),t.target=ri)))}function ci(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n[`Webkit`+e]=`webkit`+t,n[`Moz`+e]=`moz`+t,n}var li={animationend:ci(`Animation`,`AnimationEnd`),animationiteration:ci(`Animation`,`AnimationIteration`),animationstart:ci(`Animation`,`AnimationStart`),transitionrun:ci(`Transition`,`TransitionRun`),transitionstart:ci(`Transition`,`TransitionStart`),transitioncancel:ci(`Transition`,`TransitionCancel`),transitionend:ci(`Transition`,`TransitionEnd`)},ui={},di={};Ln&&(di=document.createElement(`div`).style,`AnimationEvent`in window||(delete li.animationend.animation,delete li.animationiteration.animation,delete li.animationstart.animation),`TransitionEvent`in window||delete li.transitionend.transition);function fi(e){if(ui[e])return ui[e];if(!li[e])return e;var t=li[e],n;for(n in t)if(t.hasOwnProperty(n)&&n in di)return ui[e]=t[n];return e}var pi=fi(`animationend`),mi=fi(`animationiteration`),hi=fi(`animationstart`),gi=fi(`transitionrun`),_i=fi(`transitionstart`),vi=fi(`transitioncancel`),yi=fi(`transitionend`),bi=new Map,xi=`abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error fullscreenChange fullscreenError gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel`.split(` `);xi.push(`scrollEnd`);function Si(e,t){bi.set(e,t),Xt(t,[e])}var Ci=0;function wi(e,t){if(e.name!=null&&e.name!==`auto`)return e.name;if(t.autoName!==null)return t.autoName;e=bd.identifierPrefix;var n=Ci++;return e=`_`+e+`t_`+n.toString(32)+`_`,t.autoName=e}function Ti(e){if(e==null||typeof e==`string`)return e;var t=null,n=Od;if(n!==null)for(var r=0;r<n.length;r++){var i=e[n[r]];if(i!=null){if(i===`none`)return`none`;t=t==null?i:t+(` `+i)}}return t??e.default}function Ei(e,t){return e=Ti(e),t=Ti(t),t==null?e===`auto`?null:e:t===`auto`?null:t}var Di=typeof reportError==`function`?reportError:function(e){if(typeof window==`object`&&typeof window.ErrorEvent==`function`){var t=new window.ErrorEvent(`error`,{bubbles:!0,cancelable:!0,message:typeof e==`object`&&e&&typeof e.message==`string`?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process==`object`&&typeof process.emit==`function`){process.emit(`uncaughtException`,e);return}console.error(e)},Oi=[],ki=0,Ai=0;function ji(){for(var e=ki,t=Ai=ki=0;t<e;){var n=Oi[t];Oi[t++]=null;var r=Oi[t];Oi[t++]=null;var i=Oi[t];Oi[t++]=null;var a=Oi[t];if(Oi[t++]=null,r!==null&&i!==null){var o=r.pending;o===null?i.next=i:(i.next=o.next,o.next=i),r.pending=i}a!==0&&Fi(n,i,a)}}function Mi(e,t,n,r){Oi[ki++]=e,Oi[ki++]=t,Oi[ki++]=n,Oi[ki++]=r,Ai|=r,e.lanes|=r,e=e.alternate,e!==null&&(e.lanes|=r)}function Ni(e,t,n,r){return Mi(e,t,n,r),Ii(e)}function Pi(e,t){return Mi(e,null,null,t),Ii(e)}function Fi(e,t,n){e.lanes|=n;var r=e.alternate;r!==null&&(r.lanes|=n);for(var i=!1,a=e.return;a!==null;)a.childLanes|=n,r=a.alternate,r!==null&&(r.childLanes|=n),a.tag===22&&(e=a.stateNode,e===null||e._visibility&1||(i=!0)),e=a,a=a.return;return e.tag===3?(a=e.stateNode,i&&t!==null&&(i=31-ct(n),e=a.hiddenUpdates,r=e[i],r===null?e[i]=[t]:r.push(t),t.lane=n|536870912),a):null}function Ii(e){if(50<kd)throw kd=0,Ad=null,Error(i(185));for(var t=e.return;t!==null;)e=t,t=e.return;return e.tag===3?e.stateNode:null}var Li={};function Ri(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function zi(e,t,n,r){return new Ri(e,t,n,r)}function Bi(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Vi(e,t){var n=e.alternate;return n===null?(n=zi(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deleti
vendor: 6,563 bytes, line 9
9ons=null),n.flags=e.flags&1206910976,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n.refCleanup=e.refCleanup,n}function Hi(e,t){e.flags&=1206910978;var n=e.alternate;return n===null?(e.childLanes=0,e.lanes=t,e.child=null,e.subtreeFlags=0,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.stateNode=null):(e.childLanes=n.childLanes,e.lanes=n.lanes,e.child=n.child,e.subtreeFlags=0,e.deletions=null,e.memoizedProps=n.memoizedProps,e.memoizedState=n.memoizedState,e.updateQueue=n.updateQueue,e.type=n.type,t=n.dependencies,e.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext}),e}function Ui(e,t,n,r,a,o){var s=0;if(r=e,typeof r==`function`)Bi(r)&&(s=1);else if(typeof r==`string`)s=qm(e,n,Ae.current)?26:e===`html`||e===`head`||e===`body`?27:5;else a:switch(r){case he:return e=zi(31,n,t,a),e.elementType=he,e.lanes=o,e;case ae:return Wi(n.children,a,o,t);case oe:s=8,a|=24;break;case se:return e=zi(12,n,t,a|2),e.elementType=se,e.lanes=o,e;case de:return e=zi(13,n,t,a),e.elementType=de,e.lanes=o,e;case fe:return e=zi(19,n,t,a),e.elementType=fe,e.lanes=o,e;case ge:case ve:return e=a|32,e=zi(30,n,t,e),e.elementType=ve,e.lanes=o,e.stateNode={autoName:null,paired:null,clones:null,ref:null},e;default:if(typeof r==`object`&&r)switch(r.$$typeof){case le:s=10;break a;case ce:s=9;break a;case ue:s=11;break a;case pe:s=14;break a;case me:s=16,r=null;break a}s=29,n=Error(i(130,e===null?`null`:typeof e,``)),r=null}return t=zi(s,n,t,a),t.elementType=e,t.type=r,t.lanes=o,t}function Wi(e,t,n,r){return e=zi(7,e,r,t),e.lanes=n,e}function Gi(e,t,n){return e=zi(6,e,null,t),e.lanes=n,e}function Ki(e){var t=zi(18,null,null,0);return t.stateNode=e,t}function qi(e,t,n){return t=zi(4,e.children===null?[]:e.children,e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}var Ji=new WeakMap;function Yi(e,t){if(typeof e==`object`&&e){var n=Ji.get(e);return n===void 0?(t={value:e,source:t,stack:We(t)},Ji.set(e,t),t):n}return{value:e,source:t,stack:We(t)}}var Xi=[],Zi=0,Qi=null,$i=0,ea=[],ta=0,na=null,ra=1,ia=``;function aa(e,t){Xi[Zi++]=$i,Xi[Zi++]=Qi,Qi=e,$i=t}function oa(e,t,n){ea[ta++]=ra,ea[ta++]=ia,ea[ta++]=na,na=e;var r=ra;e=ia;var i=32-ct(r)-1;r&=~(1<<i),n+=1;var a=32-ct(t)+i;if(30<a){var o=i-i%5;a=(r&(1<<o)-1).toString(32),r>>=o,i-=o,ra=1<<32-ct(t)+i|n<<i|r,ia=a+e}else ra=1<<a|n<<i|r,ia=e}function sa(e){e.return!==null&&(aa(e,1),oa(e,1,0))}function ca(e){for(;e===Qi;)Qi=Xi[--Zi],Xi[Zi]=null,$i=Xi[--Zi],Xi[Zi]=null;for(;e===na;)na=ea[--ta],ea[ta]=null,ia=ea[--ta],ea[ta]=null,ra=ea[--ta],ea[ta]=null}function la(e,t){ea[ta++]=ra,ea[ta++]=ia,ea[ta++]=na,ra=t.id,ia=t.overflow,na=e}var ua=null,da=null,N=!1,fa=null,pa=!1,ma=Error(i(519));function ha(e){throw xa(Yi(Error(i(418,1<arguments.length&&arguments[1]!==void 0&&arguments[1]?`text`:`HTML`,``)),e)),ma}function ga(e){var t=e.stateNode,n=e.type,r=e.memoizedProps;switch(t[Mt]=e,t[Nt]=r,n){case`dialog`:Q(`cancel`,t),Q(`close`,t);break;case`iframe`:case`object`:case`embed`:Q(`load`,t);break;case`video`:case`audio`:for(n=0;n<zf.length;n++)Q(zf[n],t);break;case`source`:Q(`error`,t);break;case`img`:case`image`:case`link`:Q(`error`,t),Q(`load`,t);break;case`details`:Q(`toggle`,t);break;case`input`:Q(`invalid`,t),hn(t,r.value,r.defaultValue,r.checked,r.defaultChecked,r.type,r.name,!0);break;case`select`:Q(`invalid`,t);break;case`textarea`:Q(`invalid`,t),yn(t,r.value,r.defaultValue,r.children)}n=r.children,typeof n!=`string`&&typeof n!=`number`&&typeof n!=`bigint`||t.textContent===``+n||!0===r.suppressHydrationWarning||ep(t.textContent,n)?(r.popover!=null&&(Q(`beforetoggle`,t),Q(`toggle`,t)),r.onScroll!=null&&Q(`scroll`,t),r.onScrollEnd!=null&&Q(`scrollend`,t),r.onClick!=null&&(t.onclick=On),t=!0):t=!1,t||ha(e,!0)}function _a(e){for(ua=e.return;ua;)switch(ua.tag){case 5:case 31:case 13:pa=!1;return;case 27:case 3:pa=!0;return;default:ua=ua.return}}function va(e){if(e!==ua)return!1;if(!N)return _a(e),N=!0,!1;var t=e.tag,n;if((n=t!==3&&t!==27)&&((n=t===5)&&(n=e.type,n=n===`form`||n===`button`||pp(e.type,e.memoizedProps)),n=!n),n&&da&&ha(e),_a(e),t===13){if(e=e.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(317));da=dm(e)}else if(t===31){if(e=e.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(317));da=dm(e)}else t===27?(t=da,Sp(e.type)?(e=um,um=null,da=e):da=t):da=ua?lm(e.stateNode.nextSibling):null;return!0}function ya(){da=ua=null,N=!1}function ba(){var e=fa;return e!==null&&(fd===null?fd=e:fd.push.apply(fd,e),fa=null),e}function xa(e){fa===null?fa=[e]:fa.push(e)}var P=De(null),Sa=null,Ca=null;function wa(e,t,n){ke(P,t._currentValue),t._currentValue=n}function Ta(e){e._currentValue=P.current,Oe(P)}function Ea(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)===t?r!==null&&(r.childLanes&t)!==t&&(r.childLanes|=t):(e.childLanes|=t,r!==null&&(r.childLanes|=t)),e===n)break;e=e.return}}function Da(e,t,n,r){var a=e.child;for(a!==null&&(a.return=e);a!==null;){var o=a.dependencies;if(o!==null){var s=a.child;o=o.firstContext;a:for(;o!==null;){var c=o;o=a;for(var l=0;l<t.length;l++)if(c.context===t[l]){o.lanes|=n,c=o.alternate,c!==null&&(c.lanes|=n),Ea(o.return,n,e),r||(s=null);break a}o=c.next}}else if(a.tag===18){if(s=a.return,s===null)throw Error(i(341));s.lanes|=n,o=s.alternate,o!==null&&(o.lanes|=n),Ea(s,n,e),s=null}else a.tag===13&&a.memoizedState!==null&&a.memoizedState.dehydrated===null?(a.lanes|=n,s=a.alternate,s!==null&&(s.lanes|=n),Ea(a.return,n,e),s=a.child,s=s===null?null:s.sibling):s=a.child;if(s!==null)s.return=a;else for(s=a;s!==null;){if(s===e){s=null;break}if(a=s.sibling,a!==null){a.return=s.return,s=a;break}s=s.return}a=s}}function Oa(e,t,n,r){e=null;for(var a=t,o=!1;a!==null;){if(!o){if(a.flags&524288)o=!0;else if(a.flags&262144)break}if(a.tag===10){var s=a.alternate;if(s===null)throw Error(i(387));if(s=s.memoizedProps,s!==null){var c=a.type;Jr(a.pendingProps.value,s.value)||(e===null?e=[c]:e.push(c))}}else if(a===Ne.current){if(s=a.alternate,s===null)throw Error(i(387));s.memoizedState.memoizedState!==a.memoizedState.memoizedState&&(e===null?e=[sh]:e.push(sh))}a=a.return}return e!==null&&Da(t,e,n,r),t.flags|=262144,e!==null}function ka(e){for(e=e.firstContext;e!==null;){if(!Jr(e.context._currentValue,e.memoizedValue))return!0;e=e.next}return!1}
vendor: 5,420 bytes, line 9
9function Aa(e){Sa=e,Ca=null,e=e.dependencies,e!==null&&(e.firstContext=null)}function ja(e){return Na(Sa,e)}function Ma(e,t){return Sa===null&&Aa(e),Na(e,t)}function Na(e,t){var n=t._currentValue;if(t={context:t,memoizedValue:n,next:null},Ca===null){if(e===null)throw Error(i(308));Ca=t,e.dependencies={lanes:0,firstContext:t},e.flags|=524288}else Ca=Ca.next=t;return n}var Pa=typeof AbortController<`u`?AbortController:function(){var e=[],t=this.signal={aborted:!1,addEventListener:function(t,n){e.push(n)}};this.abort=function(){t.aborted=!0,e.forEach(function(e){return e()})}},F=t.unstable_scheduleCallback,Fa=t.unstable_NormalPriority,I={$$typeof:le,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function Ia(){return{controller:new Pa,data:new Map,refCount:0}}function La(e){e.refCount--,e.refCount===0&&F(Fa,function(){e.controller.abort()})}function Ra(e,t){if(e.pendingLanes&4194048){var n=e.transitionTypes;for(n===null&&(n=e.transitionTypes=[]),e=0;e<t.length;e++){var r=t[e];n.indexOf(r)===-1&&n.push(r)}}}var za=null;function Ba(e){var t=e.transitionTypes;return e.transitionTypes=null,t}var Va=null,L=0,Ha=0,R=null;function Ua(e,t){if(Va===null){var n=Va=[];L=0,Ha=Pf(),R={status:`pending`,value:void 0,then:function(e){n.push(e)}}}return L++,t.then(Wa,Wa),t}function Wa(){if(--L===0&&(za=null,Va!==null)){R!==null&&(R.status=`fulfilled`);var e=Va;Va=null,Ha=0,R=null;for(var t=0;t<e.length;t++)(0,e[t])()}}function Ga(e,t){var n=[],r={status:`pending`,value:null,reason:null,then:function(e){n.push(e)}};return e.then(function(){r.status=`fulfilled`,r.value=t;for(var e=0;e<n.length;e++)(0,n[e])(t)},function(e){for(r.status=`rejected`,r.reason=e,e=0;e<n.length;e++)(0,n[e])(void 0)}),r}var Ka=E.S;E.S=function(e,t){if(hd=Xe(),typeof t==`object`&&t&&typeof t.then==`function`&&Ua(e,t),za!==null)for(var n=bf;n!==null;)Ra(n,za),n=n.next;if(n=e.types,n!==null){for(var r=bf;r!==null;)Ra(r,n),r=r.next;if(Ha!==0){r=za,r===null&&(r=za=[]);for(var i=0;i<n.length;i++){var a=n[i];r.indexOf(a)===-1&&r.push(a)}}}Ka!==null&&Ka(e,t)};var qa=De(null);function Ja(){var e=qa.current;return e===null?$u.pooledCache:e}function Ya(e,t){t===null?ke(qa,qa.current):ke(qa,t.pool)}function Xa(){var e=Ja();return e===null?null:{parent:I._currentValue,pool:e}}var Za=Error(i(460)),Qa=Error(i(474)),z=Error(i(542)),B={then:function(){}};function $a(e){return e=e.status,e===`fulfilled`||e===`rejected`}function eo(e,t,n){switch(n=e[n],n===void 0?e.push(t):n!==t&&(t.then(On,On),t=n),t.status){case`fulfilled`:return t.value;case`rejected`:throw e=t.reason,U(e),e===void 0&&!(`reason`in t)?Error(i(600)):e;default:if(typeof t.status==`string`)t.then(On,On);else{if(e=$u,e!==null&&100<e.shellSuspendCounter)throw Error(i(482));e=t,e.status=`pending`,e.then(function(e){if(t.status===`pending`){var n=t;n.status=`fulfilled`,n.value=e}},function(e){if(t.status===`pending`){var n=t;n.status=`rejected`,n.reason=e}})}switch(t.status){case`fulfilled`:return t.value;case`rejected`:throw e=t.reason,U(e),e}throw H=t,Za}}function V(e){try{var t=e._init;return t(e._payload)}catch(e){throw typeof e==`object`&&e&&typeof e.then==`function`?(H=e,Za):e}}var H=null;function to(){if(H===null)throw Error(i(459));var e=H;return H=null,e}function U(e){if(e===Za||e===z)throw Error(i(483))}var no=null,ro=0;function io(e){var t=ro;return ro+=1,no===null&&(no=[]),eo(no,e,t)}function ao(e,t){t=t.props.ref,e.ref=t===void 0?null:t}function oo(e,t){throw t.$$typeof===ne?Error(i(525)):(e=Object.prototype.toString.call(t),Error(i(31,e===`[object Object]`?`object with keys {`+Object.keys(t).join(`, `)+`}`:e)))}function so(e){function t(t,n){if(e){var r=t.deletions;r===null?(t.deletions=[n],t.flags|=16):r.push(n)}}function n(n,r){if(!e)return null;for(;r!==null;)t(n,r),r=r.sibling;return null}function r(e){for(var t=new Map;e!==null;)e.key===null?t.set(e.index,e):t.set(e.key,e),e=e.sibling;return t}function a(e,t){return e=Vi(e,t),e.index=0,e.sibling=null,e}function o(t,n,r){return t.index=r,e?(r=t.alternate,r===null?(t.flags|=134217730,n):(r=r.index,r<n?(t.flags|=2,n):r)):(t.flags|=1048576,n)}function s(t){return e&&t.alternate===null&&(t.flags|=134217730),t}function c(e,t,n,r){return t===null||t.tag!==6?(t=Gi(n,e.mode,r),t.return=e,t):(t=a(t,n),t.return=e,t)}function l(e,t,n,r){var i=n.type;return i===ae?(e=d(e,t,n.props.children,r,n.key),ao(e,n),e):t!==null&&(t.elementType===i||typeof i==`object`&&i&&i.$$typeof===me&&V(i)===t.type)?(t=a(t,n.props),ao(t,n),t.return=e,t):(t=Ui(n.type,n.key,n.props,null,e.mode,r),ao(t,n),t.return=e,t)}function u(e,t,n,r){return t===null||t.tag!==4||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?(t=qi(n,e.mode,r),t.return=e,t):(t=a(t,n.children||[]),t.return=e,t)}function d(e,t,n,r,i){return t===null||t.tag!==7?(t=Wi(n,e.mode,r,i),t.return=e,t):(t=a(t,n),t.return=e,t)}function f(e,t,n){if(typeof t==`string`&&t!==``||typeof t==`number`||typeof t==`bigint`)return t=Gi(``+t,e.mode,n),t.return=e,t;if(typeof t==`object`&&t){switch(t.$$typeof){case re:return n=Ui(t.type,t.key,t.props,null,e.mode,n),ao(n,t),n.return=e,n;case ie:return t=qi(t,e.mode,n),t.return=e,t;case me:return t=V(t),f(e,t,n)}if(we(t)||xe(t))return t=Wi(t,e.mode,n,null),t.return=e,t;if(typeof t.then==`function`)return f(e,io(t),n);if(t.$$typeof===le)return f(e,Ma(e,t),n);oo(e,t)}return null}function p(e,t,n,r){var i=t===null?null:t.key;
vendor: 8,928 bytes, line 9
9if(typeof n==`string`&&n!==``||typeof n==`number`||typeof n==`bigint`)return i===null?c(e,t,``+n,r):null;if(typeof n==`object`&&n){switch(n.$$typeof){case re:return n.key===i?l(e,t,n,r):null;case ie:return n.key===i?u(e,t,n,r):null;case me:return n=V(n),p(e,t,n,r)}if(we(n)||xe(n))return i===null?d(e,t,n,r,null):null;if(typeof n.then==`function`)return p(e,t,io(n),r);if(n.$$typeof===le)return p(e,t,Ma(e,n),r);oo(e,n)}return null}function m(e,t,n,r,i){if(typeof r==`string`&&r!==``||typeof r==`number`||typeof r==`bigint`)return e=e.get(n)||null,c(t,e,``+r,i);if(typeof r==`object`&&r){switch(r.$$typeof){case re:return e=e.get(r.key===null?n:r.key)||null,l(t,e,r,i);case ie:return e=e.get(r.key===null?n:r.key)||null,u(t,e,r,i);case me:return r=V(r),m(e,t,n,r,i)}if(we(r)||xe(r))return e=e.get(n)||null,d(t,e,r,i,null);if(typeof r.then==`function`)return m(e,t,n,io(r),i);if(r.$$typeof===le)return m(e,t,n,Ma(t,r),i);oo(t,r)}return null}function h(i,a,s,c){for(var l=null,u=null,d=a,h=a=0,g=null;d!==null&&h<s.length;h++){d.index>h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),a=o(_,a,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),N&&aa(i,h),l;if(d===null){for(;h<s.length;h++)d=f(i,s[h],c),d!==null&&(a=o(d,a,h),u===null?l=d:u.sibling=d,u=d);return N&&aa(i,h),l}for(d=r(d);h<s.length;h++)g=m(d,i,h,s[h],c),g!==null&&(e&&(_=g.alternate,_!==null&&d.delete(_.key===null?h:_.key)),a=o(g,a,h),u===null?l=g:u.sibling=g,u=g);return e&&d.forEach(function(e){return t(i,e)}),N&&aa(i,h),l}function g(a,s,c,l){if(c==null)throw Error(i(151));for(var u=null,d=null,h=s,g=s=0,_=null,v=c.next();h!==null&&!v.done;g++,v=c.next()){h.index>g?(_=h,h=null):_=h.sibling;var y=p(a,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(a,h),s=o(y,s,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(a,h),N&&aa(a,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(a,v.value,l),v!==null&&(s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return N&&aa(a,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,a,g,v.value,l),v!==null&&(e&&(_=v.alternate,_!==null&&h.delete(_.key===null?g:_.key)),s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(a,e)}),N&&aa(a,g),u}function _(e,r,o,c){if(typeof o==`object`&&o&&o.type===ae&&o.key===null&&o.props.ref===void 0&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case re:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===ae){if(r.tag===7){n(e,r.sibling),c=a(r,o.props.children),ao(c,o),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===me&&V(l)===r.type){n(e,r.sibling),c=a(r,o.props),ao(c,o),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}o.type===ae?(c=Wi(o.props.children,e.mode,c,o.key),ao(c,o),c.return=e,e=c):(c=Ui(o.type,o.key,o.props,null,e.mode,c),ao(c,o),c.return=e,e=c)}return s(e);case ie:a:{for(l=o.key;r!==null;){if(r.key===l){if(r.tag===4&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),c=a(r,o.children||[]),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}c=qi(o,e.mode,c),c.return=e,e=c}return s(e);case me:return o=V(o),_(e,r,o,c)}if(we(o))return h(e,r,o,c);if(xe(o)){if(l=xe(o),typeof l!=`function`)throw Error(i(150));return o=l.call(o),g(e,r,o,c)}if(typeof o.then==`function`)return _(e,r,io(o),c);if(o.$$typeof===le)return _(e,r,Ma(e,o),c);oo(e,o)}return typeof o==`string`&&o!==``||typeof o==`number`||typeof o==`bigint`?(o=``+o,r!==null&&r.tag===6?(n(e,r.sibling),c=a(r,o),c.return=e,e=c):(n(e,r),c=Gi(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{ro=0;var i=_(e,t,n,r);return no=null,i}catch(t){if(t===Za||t===z)throw t;var a=zi(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var co=so(!0),lo=so(!1),uo=!1;function fo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function po(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function mo(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function ho(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,q&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=Ii(e),Fi(e,null,n),t}return Mi(e,r,t,n),Ii(e)}function go(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Tt(e,n)}}function _o(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var vo=!1;function yo(){if(vo){var e=R;if(e!==null)throw e}}function bo(e,t,n,r){vo=!1;var i=e.updateQueue;uo=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(Y&f)===f:(r&f)===f){f!==0&&f===Ha&&(vo=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var m=e,h=s;f=t;var g=n;switch(h.tag){case 1:if(m=h.payload,typeof m==`function`){d=m.call(g,d,f);break a}d=m;break a;case 3:m.flags=m.flags&-65537|128;case 0:if(m=h.payload,f=typeof m==`function`?m.call(g,d,f):m,f==null)break a;d=T({},d,f);break a;case 2:uo=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=i.callbacks,p===null?i.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;p=s,s=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),od|=o,e.lanes=o,e.memoizedState=d}}function xo(e,t){if(typeof e!=`function`)throw Error(i(191,e));e.call(t)}function So(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;e<n.length;e++)xo(n[e],t)}var Co=De(null),wo=De(0);function To(e,t){e=id,ke(wo,e),ke(Co,t),id=e|t.baseLanes}function Eo(){ke(wo,id),ke(Co,Co.current)}function Do(){id=wo.current,Oe(Co),Oe(wo)}var Oo=De(null),ko=null;function Ao(e){var t=e.alternate;ke(Fo,Fo.current&1),ke(Oo,e),ko===null&&(t===null||Co.current!==null||t.memoizedState!==null)&&(ko=e)}function jo(e){ke(Fo,Fo.current),ke(Oo,e),ko===null&&(ko=e)}function Mo(e){e.tag===22?(ke(Fo,Fo.current),ke(Oo,e),ko===null&&(ko=e)):No()}function No(){ke(Fo,Fo.current),ke(Oo,Oo.current)}function Po(e){Oe(Oo),ko===e&&(ko=null),Oe(Fo)}var Fo=De(0);function Io(e,t){ke(Oo,Oo.current),ke(Fo,t)}function Lo(e){Oe(Fo),Oe(Oo),ko===e&&(ko=null)}function Ro(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||om(n)||sm(n)))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==`independent`){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var zo=0,W=null,G=null,Bo=null,Vo=!1,Ho=!1,Uo=!1,Wo=0,Go=0,Ko=null,qo=0;function Jo(){throw Error(i(321))}function Yo(e,t){if(t===null)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!Jr(e[n],t[n]))return!1;return!0}function Xo(e,t,n,r,i,a){return zo=a,W=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,E.H=e===null||e.memoizedState===null?pc:mc,Uo=!1,a=n(r,i),Uo=!1,Ho&&(a=Qo(t,n,r,i)),Zo(e),a}function Zo(e){E.H=fc;var t=G!==null&&G.next!==null;if(zo=0,Bo=G=W=null,Vo=!1,Go=0,Ko=null,t)throw Error(i(300));e===null||jc||(e=e.dependencies,e!==null&&ka(e)&&(jc=!0))}function Qo(e,t,n,r){W=e;var a=0;do{if(Ho&&(Ko=null),Go=0,Ho=!1,25<=a)throw Error(i(301));if(a+=1,Bo=G=null,e.updateQueue!=null){var o=e.updateQueue;o.lastEffect=null,o.events=null,o.stores=null,o.memoCache!=null&&(o.memoCache.index=0)}E.H=hc,o=t(n,r)}while(Ho);return o}function $o(){var e=E.H,t=e.useState()[0];return t=typeof t.then==`function`?os(t):t,e=e.useState()[0],(G===null?null:G.memoizedState)!==e&&(W.flags|=1024),t}function es(){var e=Wo!==0;return Wo=0,e}function ts(e,t,n){t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~n}function ns(e){if(Vo){for(e=e.memoizedState;e!==null;){var t=e.queue;
vendor: 4,766 bytes, line 9
9t!==null&&(t.pending=null),e=e.next}Vo=!1}zo=0,Bo=G=W=null,Ho=!1,Go=Wo=0,Ko=null}function rs(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return Bo===null?W.memoizedState=Bo=e:Bo=Bo.next=e,Bo}function is(){if(G===null){var e=W.alternate;e=e===null?null:e.memoizedState}else e=G.next;var t=Bo===null?W.memoizedState:Bo.next;if(t!==null)Bo=t,G=e;else{if(e===null)throw W.alternate===null?Error(i(467)):Error(i(310));G=e,e={memoizedState:G.memoizedState,baseState:G.baseState,baseQueue:G.baseQueue,queue:G.queue,next:null},Bo===null?W.memoizedState=Bo=e:Bo=Bo.next=e}return Bo}function as(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function os(e){var t=Go;return Go+=1,Ko===null&&(Ko=[]),e=eo(Ko,e,t),t=W,(Bo===null?t.memoizedState:Bo.next)===null&&(t=t.alternate,E.H=t===null||t.memoizedState===null?pc:mc),e}function ss(e){if(typeof e==`object`&&e){if(typeof e.then==`function`)return os(e);if(e.$$typeof===ye)return;if(e.$$typeof===le)return ja(e)}throw Error(i(438,String(e)))}function cs(e){var t=null,n=W.updateQueue;if(n!==null&&(t=n.memoCache),t==null){var r=W.alternate;r!==null&&(r=r.updateQueue,r!==null&&(r=r.memoCache,r!=null&&(t={data:r.data.map(function(e){return e.slice()}),index:0})))}if(t??={data:[],index:0},n===null&&(n=as(),W.updateQueue=n),n.memoCache=t,n=t.data[t.index],n===void 0)for(n=t.data[t.index]=Array(e),r=0;r<e;r++)n[r]=_e;return t.index++,n}function ls(e,t){return typeof t==`function`?t(e):t}function us(e){return ds(is(),G,e)}function ds(e,t,n){var r=e.queue;if(r===null)throw Error(i(311));r.lastRenderedReducer=n;var a=e.baseQueue,o=r.pending;if(o!==null){if(a!==null){var s=a.next;a.next=o.next,o.next=s}t.baseQueue=a=o,r.pending=null}if(o=e.baseState,a===null)e.memoizedState=o;else{t=a.next;var c=s=null,l=null,u=t,d=!1;do{var f=u.lane&-536870913;if(f===u.lane?(zo&f)===f:(Y&f)===f){var p=u.revertLane;if(p===0)l!==null&&(l=l.next={lane:0,revertLane:0,gesture:null,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null}),f===Ha&&(d=!0);else if((zo&p)===p){u=u.next,p===Ha&&(d=!0);continue}else f={lane:0,revertLane:u.revertLane,gesture:null,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null},l===null?(c=l=f,s=o):l=l.next=f,W.lanes|=p,od|=p;f=u.action,Uo&&n(o,f),o=u.hasEagerState?u.eagerState:n(o,f)}else p={lane:f,revertLane:u.revertLane,gesture:u.gesture,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null},l===null?(c=l=p,s=o):l=l.next=p,W.lanes|=f,od|=f;u=u.next}while(u!==null&&u!==t);if(l===null?s=o:l.next=c,!Jr(o,e.memoizedState)&&(jc=!0,d&&(n=R,n!==null)))throw n;e.memoizedState=o,e.baseState=s,e.baseQueue=l,r.lastRenderedState=o}return a===null&&(r.lanes=0),[e.memoizedState,r.dispatch]}function fs(e){var t=is(),n=t.queue;if(n===null)throw Error(i(311));n.lastRenderedReducer=e;var r=n.dispatch,a=n.pending,o=t.memoizedState;if(a!==null){n.pending=null;var s=a=a.next;do o=e(o,s.action),s=s.next;while(s!==a);Jr(o,t.memoizedState)||(jc=!0),t.memoizedState=o,t.baseQueue===null&&(t.baseState=o),n.lastRenderedState=o}return[o,r]}function ps(e,t,n){var r=W,a=is(),o=N;if(o){if(n===void 0)throw Error(i(407));n=n()}else n=t();var s=!Jr((G||a).memoizedState,n);if(s&&(a.memoizedState=n,jc=!0),a=a.queue,Rs(gs.bind(null,r,a,e),[e]),e=a.getSnapshot!==t||s||Bo!==null&&!!(Bo.memoizedState.tag&1),Ns(e?9:8,{destroy:void 0},hs.bind(null,r,a,n,t),null),e){if(r.flags|=2048,$u===null)throw Error(i(349));o||zo&127||ms(r,t,n)}return n}function ms(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},t=W.updateQueue,t===null?(t=as(),W.updateQueue=t,t.stores=[e]):(n=t.stores,n===null?t.stores=[e]:n.push(e))}function hs(e,t,n,r){t.value=n,t.getSnapshot=r,_s(t)&&vs(e)}function gs(e,t,n){return n(function(){_s(t)&&vs(e)})}function _s(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!Jr(e,n)}catch{return!0}}function vs(e){var t=Pi(e,2);t!==null&&Pd(t,e,2)}function ys(e){var t=rs();if(typeof e==`function`){var n=e;if(e=n(),Uo){st(!0);try{n()}finally{st(!1)}}}return t.memoizedState=t.baseState=e,t.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:ls,lastRenderedState:e},t}function bs(e,t,n,r){return e.baseState=n,ds(e,G,typeof r==`function`?r:ls)}function xs(e,t,n,r,a){if(lc(e))throw Error(i(485));if(e=t.action,e!==null){var o={payload:a,action:e,next:null,isTransition:!0,status:`pending`,value:null,reason:null,listeners:[],then:function(e){o.listeners.push(e)}};E.T===null?o.isTransition=!1:n(!0),r(o),n=t.pending,n===null?(o.next=t.pending=o,Ss(t,o)):(o.next=n.next,t.pending=n.next=o)}}function Ss(e,t){var n=t.action,r=t.payload,i=e.state;if(t.isTransition){var a=E.T,o={};o.types=a===null?null:a.types,E.T=o;try{var s=n(i,r),c=E.S;c!==null&&c(o,s),Cs(e,t,s)}
vendor: 23,185 bytes, line 9
9catch(n){Ts(e,t,n)}finally{a!==null&&o.types!==null&&(a.types=o.types),E.T=a}}else try{a=n(i,r),Cs(e,t,a)}catch(n){Ts(e,t,n)}}function Cs(e,t,n){typeof n==`object`&&n&&typeof n.then==`function`?n.then(function(n){ws(e,t,n)},function(n){return Ts(e,t,n)}):ws(e,t,n)}function ws(e,t,n){t.status=`fulfilled`,t.value=n,Es(t),e.state=n,t=e.pending,t!==null&&(n=t.next,n===t?e.pending=null:(n=n.next,t.next=n,Ss(e,n)))}function Ts(e,t,n){var r=e.pending;if(e.pending=null,r!==null){r=r.next;do t.status=`rejected`,t.reason=n,Es(t),t=t.next;while(t!==r)}e.action=null}function Es(e){e=e.listeners;for(var t=0;t<e.length;t++)(0,e[t])()}function Ds(e,t){return t}function Os(e,t){if(N){var n=$u.formState;if(n!==null){a:{var r=W;if(N){if(da){b:{for(var i=da,a=pa;i.nodeType!==8;){if(!a){i=null;break b}if(i=lm(i.nextSibling),i===null){i=null;break b}}a=i.data,i=a===`F!`||a===`F`?i:null}if(i){da=lm(i.nextSibling),r=i.data===`F!`;break a}}ha(r)}r=!1}r&&(t=n[0])}}return n=rs(),n.memoizedState=n.baseState=t,r={pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ds,lastRenderedState:t},n.queue=r,n=oc.bind(null,W,r),r.dispatch=n,r=ys(!1),a=cc.bind(null,W,!1,r.queue),r=rs(),i={state:t,dispatch:null,action:e,pending:null},r.queue=i,n=xs.bind(null,W,i,a,n),i.dispatch=n,r.memoizedState=e,[t,n,!1]}function ks(e){return As(is(),G,e)}function As(e,t,n){if(t=ds(e,t,Ds)[0],e=us(ls)[0],typeof t==`object`&&t&&typeof t.then==`function`)try{var r=os(t)}catch(e){throw e===Za?z:e}else r=t;t=is();var i=t.queue,a=i.dispatch;return n!==t.memoizedState&&(W.flags|=2048,Ns(9,{destroy:void 0},js.bind(null,i,n),null)),[r,a,e]}function js(e,t){e.action=t}function Ms(e){var t=is(),n=G;if(n!==null)return As(t,n,e);is(),t=t.memoizedState,n=is();var r=n.queue.dispatch;return n.memoizedState=e,[t,r,!1]}function Ns(e,t,n,r){return e={tag:e,create:n,deps:r,inst:t,next:null},t=W.updateQueue,t===null&&(t=as(),W.updateQueue=t),n=t.lastEffect,n===null?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function Ps(){return is().memoizedState}function Fs(e,t,n,r){var i=rs();W.flags|=e,i.memoizedState=Ns(1|t,{destroy:void 0},n,r===void 0?null:r)}function Is(e,t,n,r){var i=is();r=r===void 0?null:r;var a=i.memoizedState.inst;G!==null&&r!==null&&Yo(r,G.memoizedState.deps)?i.memoizedState=Ns(t,a,n,r):(W.flags|=e,i.memoizedState=Ns(1|t,a,n,r))}function Ls(e,t){Fs(8390656,8,e,t)}function Rs(e,t){Is(2048,8,e,t)}function zs(e){W.flags|=4;var t=W.updateQueue;if(t===null)t=as(),W.updateQueue=t,t.events=[e];else{var n=t.events;n===null?t.events=[e]:n.push(e)}}function Bs(e){var t=is().memoizedState;return zs({ref:t,nextImpl:e}),function(){if(q&2)throw Error(i(440));return t.impl.apply(void 0,arguments)}}function Vs(e,t){return Is(4,2,e,t)}function Hs(e,t){return Is(4,4,e,t)}function Us(e,t){if(typeof t==`function`){e=e();var n=t(e);return function(){typeof n==`function`?n():t(null)}}if(t!=null)return e=e(),t.current=e,function(){t.current=null}}function Ws(e,t,n){n=n==null?null:n.concat([e]),Is(4,4,Us.bind(null,t,e),n)}function Gs(){}function Ks(e,t){var n=is();t=t===void 0?null:t;var r=n.memoizedState;return t!==null&&Yo(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function qs(e,t){var n=is();t=t===void 0?null:t;var r=n.memoizedState;if(t!==null&&Yo(t,r[1]))return r[0];if(r=e(),Uo){st(!0);try{e()}finally{st(!1)}}return n.memoizedState=[r,t],r}function Js(e,t,n){return n===void 0||zo&1073741824&&!(Y&261930)?e.memoizedState=t:(e.memoizedState=n,e=Md(),W.lanes|=e,od|=e,n)}function Ys(e,t,n,r){return Jr(n,t)?n:Co.current===null?!(zo&106)||zo&1073741824&&!(Y&261930)?(jc=!0,e.memoizedState=n):(e=Md(),W.lanes|=e,od|=e,t):(e=Js(e,n,r),Jr(e,t)||(jc=!0),e)}function Xs(e,t,n,r,i){var a=D.p;D.p=a!==0&&8>a?a:8;var o=E.T,s={};s.types=o===null?null:o.types,E.T=s,cc(e,!1,t,n);try{var c=i(),l=E.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?sc(e,t,Ga(c,r),jd(e)):sc(e,t,r,jd(e))}catch(n){sc(e,t,{then:function(){},status:`rejected`,reason:n},jd())}finally{D.p=a,o!==null&&s.types!==null&&(o.types=s.types),E.T=o}}function Zs(){}function Qs(e,t,n,r){if(e.tag!==5)throw Error(i(476));var a=$s(e).queue;Xs(e,a,t,Te,n===null?Zs:function(){return ec(e),n(r)})}function $s(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:Te,baseState:Te,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ls,lastRenderedState:Te},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ls,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function ec(e){var t=$s(e);t.next===null&&(t=e.alternate.memoizedState),sc(e,t.next.queue,{},jd())}function tc(){return ja(sh)}function nc(){return is().memoizedState}function rc(){return is().memoizedState}function ic(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=jd();e=mo(n);var r=ho(t,e,n);r!==null&&(Pd(r,t,n),go(r,t,n)),t={cache:Ia()},e.payload=t;return}t=t.return}}function ac(e,t,n){var r=jd();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},lc(e)?uc(t,n):(n=Ni(e,t,n,r),n!==null&&(Pd(n,e,r),dc(n,t,r)))}function oc(e,t,n){sc(e,t,n,jd())}function sc(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(lc(e))uc(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,Jr(s,o))return Mi(e,t,i,0),$u===null&&ji(),!1}catch{}if(n=Ni(e,t,i,r),n!==null)return Pd(n,e,r),dc(n,t,r),!0}return!1}function cc(e,t,n,r){if(r={lane:2,revertLane:Pf(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},lc(e)){if(t)throw Error(i(479))}else t=Ni(e,n,r,2),t!==null&&Pd(t,e,2)}function lc(e){var t=e.alternate;return e===W||t!==null&&t===W}function uc(e,t){Ho=Vo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function dc(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Tt(e,n)}}var fc={readContext:ja,use:ss,useCallback:Jo,useContext:Jo,useEffect:Jo,useImperativeHandle:Jo,useLayoutEffect:Jo,useInsertionEffect:Jo,useMemo:Jo,useReducer:Jo,useRef:Jo,useState:Jo,useDebugValue:Jo,useDeferredValue:Jo,useTransition:Jo,useSyncExternalStore:Jo,useId:Jo,useHostTransitionStatus:Jo,useFormState:Jo,useActionState:Jo,useOptimistic:Jo,useMemoCache:Jo,useCacheRefresh:Jo,useEffectEvent:Jo},pc={readContext:ja,use:ss,useCallback:function(e,t){return rs().memoizedState=[e,t===void 0?null:t],e},useContext:ja,useEffect:Ls,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),Fs(4194308,4,Us.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Fs(4194308,4,e,t)},useInsertionEffect:function(e,t){Fs(4,2,e,t)},useMemo:function(e,t){var n=rs();t=t===void 0?null:t;var r=e();if(Uo){st(!0);try{e()}finally{st(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=rs();if(n!==void 0){var i=n(t);if(Uo){st(!0);try{n(t)}finally{st(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=ac.bind(null,W,e),[r.memoizedState,e]},useRef:function(e){var t=rs();return e={current:e},t.memoizedState=e},useState:function(e){e=ys(e);var t=e.queue,n=oc.bind(null,W,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:Gs,useDeferredValue:function(e,t){return Js(rs(),e,t)},useTransition:function(){var e=ys(!1);return e=Xs.bind(null,W,e.queue,!0,!1),rs().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=W,a=rs();if(N){if(n===void 0)throw Error(i(407));n=n()}else{if(n=t(),$u===null)throw Error(i(349));Y&127||ms(r,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,Ls(gs.bind(null,r,o,e),[e]),r.flags|=2048,Ns(9,{destroy:void 0},hs.bind(null,r,o,n,t),null),n},useId:function(){var e=rs(),t=$u.identifierPrefix;if(N){var n=ia,r=ra;n=(r&~(1<<32-ct(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=Wo++,0<n&&(t+=`H`+n.toString(32)),t+=`_`}else n=qo++,t=`_`+t+`r_`+n.toString(32)+`_`;return e.memoizedState=t},useHostTransitionStatus:tc,useFormState:Os,useActionState:Os,useOptimistic:function(e){var t=rs();t.memoizedState=t.baseState=e;var n={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return t.queue=n,t=cc.bind(null,W,!0,n),n.dispatch=t,[e,t]},useMemoCache:cs,useCacheRefresh:function(){return rs().memoizedState=ic.bind(null,W)},useEffectEvent:function(e){var t=rs(),n={impl:e};return t.memoizedState=n,function(){if(q&2)throw Error(i(440));return n.impl.apply(void 0,arguments)}}},mc={readContext:ja,use:ss,useCallback:Ks,useContext:ja,useEffect:Rs,useImperativeHandle:Ws,useInsertionEffect:Vs,useLayoutEffect:Hs,useMemo:qs,useReducer:us,useRef:Ps,useState:function(){return us(ls)},useDebugValue:Gs,useDeferredValue:function(e,t){return Ys(is(),G.memoizedState,e,t)},useTransition:function(){var e=us(ls)[0],t=is().memoizedState;return[typeof e==`boolean`?e:os(e),t]},useSyncExternalStore:ps,useId:nc,useHostTransitionStatus:tc,useFormState:ks,useActionState:ks,useOptimistic:function(e,t){return bs(is(),G,e,t)},useMemoCache:cs,useCacheRefresh:rc,useEffectEvent:Bs},hc={readContext:ja,use:ss,useCallback:Ks,useContext:ja,useEffect:Rs,useImperativeHandle:Ws,useInsertionEffect:Vs,useLayoutEffect:Hs,useMemo:qs,useReducer:fs,useRef:Ps,useState:function(){return fs(ls)},useDebugValue:Gs,useDeferredValue:function(e,t){var n=is();return G===null?Js(n,e,t):Ys(n,G.memoizedState,e,t)},useTransition:function(){var e=fs(ls)[0],t=is().memoizedState;return[typeof e==`boolean`?e:os(e),t]},useSyncExternalStore:ps,useId:nc,useHostTransitionStatus:tc,useFormState:Ms,useActionState:Ms,useOptimistic:function(e,t){var n=is();return G===null?(n.baseState=e,[e,n.queue.dispatch]):bs(n,G,e,t)},useMemoCache:cs,useCacheRefresh:rc,useEffectEvent:Bs};function gc(e,t,n,r){t=e.memoizedState,n=n(r,t),n=n==null?t:T({},t,n),e.memoizedState=n,e.lanes===0&&(e.updateQueue.baseState=n)}var _c={enqueueSetState:function(e,t,n){e=e._reactInternals;var r=jd(),i=mo(r);i.payload=t,n!=null&&(i.callback=n),t=ho(e,i,r),t!==null&&(Pd(t,e,r),go(t,e,r))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=jd(),i=mo(r);i.tag=1,i.payload=t,n!=null&&(i.callback=n),t=ho(e,i,r),t!==null&&(Pd(t,e,r),go(t,e,r))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=jd(),r=mo(n);r.tag=2,t!=null&&(r.callback=t),t=ho(e,r,n),t!==null&&(Pd(t,e,n),go(t,e,n))}};function vc(e,t,n,r,i,a,o){return e=e.stateNode,typeof e.shouldComponentUpdate==`function`?e.shouldComponentUpdate(r,a,o):t.prototype&&t.prototype.isPureReactComponent?!Yr(n,r)||!Yr(i,a):!0}function yc(e,t,n,r){e=t.state,typeof t.componentWillReceiveProps==`function`&&t.componentWillReceiveProps(n,r),typeof t.UNSAFE_componentWillReceiveProps==`function`&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&_c.enqueueReplaceState(t,t.state,null)}function bc(e,t){var n=t;if(`ref`in t)for(var r in n={},t)r!==`ref`&&(n[r]=t[r]);if(e=e.defaultProps)for(var i in n===t&&(n=T({},n)),e)n[i]===void 0&&(n[i]=e[i]);return n}function xc(e){Di(e)}function Sc(e){console.error(e)}function Cc(e){Di(e)}function wc(e,t){try{var n=e.onUncaughtError;n(t.value,{componentStack:t.stack})}catch(e){setTimeout(function(){throw e})}}function Tc(e,t,n){try{var r=e.onCaughtError;r(n.value,{componentStack:n.stack,errorBoundary:t.tag===1?t.stateNode:null})}catch(e){setTimeout(function(){throw e})}}function Ec(e,t,n){return n=mo(n),n.tag=3,n.payload={element:null},n.callback=function(){wc(e,t)},n}function Dc(e){return e=mo(e),e.tag=3,e}function Oc(e,t,n,r){var i=n.type.getDerivedStateFromError;if(typeof i==`function`){var a=r.value;e.payload=function(){return i(a)},e.callback=function(){Tc(t,n,r)}}var o=n.stateNode;o!==null&&typeof o.componentDidCatch==`function`&&(e.callback=function(){Tc(t,n,r),typeof i!=`function`&&(vd===null?vd=new Set([this]):vd.add(this));var e=r.stack;this.componentDidCatch(r.value,{componentStack:e===null?``:e})})}function kc(e,t,n,r,a){if(n.flags|=32768,typeof r==`object`&&r&&typeof r.then==`function`){if(t=n.alternate,t!==null&&Oa(t,n,a,!0),n=Oo.current,n!==null){switch(n.tag){case 31:case 13:case 19:return ko===null?Kd():n.alternate===null&&ad===0&&(ad=3),n.flags&=-257,n.flags|=65536,n.lanes=a,r===B?n.flags|=16384:(t=n.updateQueue,t===null?n.updateQueue=new Set([r]):t.add(r),mf(e,r,a)),!1;case 22:return n.flags|=65536,r===B?n.flags|=16384:(t=n.updateQueue,t===null?(t={transitions:null,markerInstances:null,retryQueue:new Set([r])},n.updateQueue=t):(n=t.retryQueue,n===null?t.retryQueue=new Set([r]):n.add(r)),mf(e,r,a)),!1}throw Error(i(435,n.tag))}return mf(e,r,a),Kd(),!1}if(N)return t=Oo.current,t===null?(r!==ma&&(t=Error(i(423),{cause:r}),xa(Yi(t,n))),e=e.current.alternate,e.flags|=65536,a&=-a,e.lanes|=a,r=Yi(r,n),a=Ec(e.stateNode,r,a),_o(e,a),ad!==4&&(ad=2)):(!(t.flags&65536)&&(t.flags|=256),t.flags|=65536,t.lanes=a,r!==ma&&(e=Error(i(422),{cause:r}),xa(Yi(e,n)))),!1;var o=Error(i(520),{cause:r});if(o=Yi(o,n),dd===null?dd=[o]:dd.push(o),ad!==4&&(ad=2),t===null)return!0;r=Yi(r,n),n=t;do{switch(n.tag){case 3:return n.flags|=65536,e=a&-a,n.lanes|=e,e=Ec(n.stateNode,r,e),_o(n,e),!1;case 1:if(t=n.type,o=n.stateNode,!(n.flags&128)&&(typeof t.getDerivedStateFromError==`function`||o!==null&&typeof o.componentDidCatch==`function`&&(vd===null||!vd.has(o))))return n.flags|=65536,a&=-a,n.lanes|=a,a=Dc(a),Oc(a,e,n,r),_o(n,a),!1;break;case 22:if(n.memoizedState!==null)return n.flags|=65536,!1}n=n.return}while(n!==null);return!1}var Ac=Error(i(461)),jc=!1;function Mc(e,t,n,r){t.child=e===null?lo(t,null,n,r):co(t,e.child,n,r)}function Nc(e,t,n,r,i){n=n.render;var a=t.ref;if(`ref`in r){var o={};for(var s in r)s!==`ref`&&(o[s]=r[s])}else o=r;return Aa(t),r=Xo(e,t,n,o,a,i),s=es(),e!==null&&!jc?(ts(e,t,i),sl(e,t,i)):(N&&s&&sa(t),t.flags|=1,Mc(e,t,r,i),t.child)}function Pc(e,t,n,r,i){if(e===null){var a=n.type;return typeof a==`function`&&!Bi(a)&&a.defaultProps===void 0&&n.compare===null?(t.tag=15,t.type=a,Fc(e,t,a,r,i)):(e=Ui(n.type,null,r,t,t.mode,i),e.ref=t.ref,e.return=t,t.child=e)}if(a=e.child,!cl(e,i)){var o=a.memoizedProps;if(n=n.compare,n=n===null?Yr:n,n(o,r)&&e.ref===t.ref)return sl(e,t,i)}return t.flags|=1,e=Vi(a,r),e.ref=t.ref,e.return=t,t.child=e}function Fc(e,t,n,r,i){if(e!==null){var a=e.memoizedProps;if(Yr(a,r)&&e.ref===t.ref){if(jc=!1,t.pendingProps=r=a,cl(e,i))e.flags&131072&&(jc=!0);else return t.lanes=e.lanes,sl(e,t,i)}}return Uc(e,t,n,r,i)}function Ic(e,t,n,r){var i=r.children,a=e===null?null:e.memoizedState;if(e===null&&t.stateNode===null&&(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),r.mode===`hidden`){if(t.flags&128){if(a=a===null?n:a.baseLanes|n,e!==null){for(r=t.child=e.child,i=0;r!==null;)i=i|r.lanes|r.childLanes,r=r.sibling;r=i&~a}else r=0,t.child=null;return Rc(e,t,a,n,r)}if(n&536870912)t.memoizedState={baseLanes:0,cachePool:null},e!==null&&Ya(t,a===null?null:a.cachePool),a===null?Eo():To(t,a),Mo(t);else return r=t.lanes=536870912,Rc(e,t,a===null?n:a.baseLanes|n,n,r)}else a===null?(e!==null&&Ya(t,null),Eo(),No()):(Ya(t,a.cachePool),To(t,a),No(),t.memoizedState=null);return Mc(e,t,i,n),t.child}function Lc(e,t){return e!==null&&e.tag===22||t.stateNode!==null||(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),t.sibling}function Rc(e,t,n,r,i){var a=Ja();return a=a===null?null:{parent:I._currentValue,pool:a},t.memoizedState={baseLanes:n,cachePool:a},e!==null&&Ya(t,null),Eo(),Mo(t),e!==null&&Oa(e,t,r,!0),t.childLanes=i,null}function zc(e,t){return t=Qc({mode:t.mode,children:t.children},e.mode),t.ref=e.ref,e.child=t,t.return=e,t}function Bc(e,t,n){return co(t,e.child,null,n),e=zc(t,t.pendingProps),e.flags|=2,Po(t),t.memoizedState=null,e}function Vc(e,t,n){var r=t.pendingProps,a=!!(t.flags&128);if(t.flags&=-129,e===null){if(N){if(r.mode===`hidden`)return e=zc(t,r),t.lanes=536870912,e.memoizedState={baseLanes:0,cachePool:null},Lc(null,e);if(jo(t),(e=da)?(e=am(e,pa),e=e!==null&&e.data===`&`?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:na===null?null:{id:ra,overflow:ia},retryLane:536870912,hydrationErrors:null},n=Ki(e),n.return=t,t.child=n,ua=t,da=null)):e=null,e===null)throw ha(t);return t.lanes=536870912,null}return zc(t,r)}var o=e.memoizedState;if(o!==null){var s=o.dehydrated;if(jo(t),a){if(t.flags&256)t.flags&=-257,t=Bc(e,t,n);else if(t.memoizedState!==null)t.child=e.child,t.flags|=128,t=null;else throw Error(i(558))}else if(jc||Oa(e,t,n,!1),a=(n&e.childLanes)!==0,jc||a){if(Co.current===null){if(r=$u,r!==null&&(s=Et(r,n),s!==0&&s!==o.retryLane))throw o.retryLane=s,Pi(e,s),Pd(r,e,s),Ac;Kd()}t=Bc(e,t,n)}else e=o.treeContext,da=lm(s.nextSibling),ua=t,N=!0,fa=null,pa=!1,e!==null&&la(t,e),t=zc(t,r),t.flags|=134221824;return t}return e=Vi(e.child,{mode:r.mode,children:r.children}),e.ref=t.ref,t.child=e,e.return=t,e}function Hc(e,t){var n=t.ref;if(n===null)e!==null&&e.ref!==null&&(t.flags|=4194816);else{if(typeof n!=`function`&&typeof n!=`object`)throw Error(i(284));(e===null||e.ref!==n)&&(t.flags|=4194816)}}function Uc(e,t,n,r,i){return Aa(t),n=Xo(e,t,n,r,void 0,i),r=es(),e!==null&&!jc?(ts(e,t,i),sl(e,t,i)):(N&&r&&sa(t),t.flags|=1,Mc(e,t,n,i),t.child)}function Wc(e,t,n,r,i,a){return Aa(t),t.updateQueue=null,n=Qo(t,r,n,i),Zo(e),r=es(),e!==null&&!jc?(ts(e,t,a),sl(e,t,a)):(N&&r&&sa(t),t.flags|=1,Mc(e,t,n,a),t.child)}function Gc(e,t,n,r,i){if(Aa(t),t.stateNode===null){var a=Li,o=n.contextType;typeof o==`object`&&o&&(a=ja(o)),a=new n(r,a),t.memoizedState=a.state!==null&&a.state!==void 0?a.state:null,a.updater=_c,t.stateNode=a,a._reactInternals=t,a=t.stateNode,a.props=r,a.state=t.memoizedState,a.refs={},fo(t),o=n.contextType,a.context=typeof o==`object`&&o?ja(o):Li,a.state=t.memoizedState,o=n.getDerivedStateFromProps,typeof o==`function`&&(gc(t,n,o,r),a.state=t.memoizedState),typeof n.getDerivedStateFromProps==`function`||typeof a.getSnapshotBeforeUpdate==`function`||typeof a.UNSAFE_componentWillMount!=`function`&&typeof a.componentWillMount!=`function`||(o=a.state,typeof a.componentWillMount==`function`&&a.componentWillMount(),typeof a.UNSAFE_componentWillMount==`function`&&a.UNSAFE_componentWillMount(),o!==a.state&&_c.enqueueReplaceState(a,a.state,null),bo(t,r,a,i),yo(),a.state=t.memoizedState),typeof a.componentDidMount==`function`&&(t.flags|=4194308),r=!0}else if(e===null){a=t.stateNode;var s=t.memoizedProps,c=bc(n,s);a.props=c;var l=a.context,u=n.contextType;o=Li,typeof u==`object`&&u&&(o=ja(u));var d=n.getDerivedStateFromProps;u=typeof d==`function`||typeof a.getSnapshotBeforeUpdate==`function`,s=t.pendingProps!==s,u||typeof a.UNSAFE_componentWillReceiveProps!=`function`&&typeof a.componentWillReceiveProps!=`function`||(s||l!==o)&&yc(t,a,r,o),uo=!1;var f=t.memoizedState;a.state=f,bo(t,r,a,i),yo(),l=t.memoizedState,s||f!==l||uo?(typeof d==`function`&&(gc(t,n,d,r),l=t.memoizedState),(c=uo||vc(t,n,c,r,f,l,o))?(u||typeof a.UNSAFE_componentWillMount!=`function`&&typeof a.componentWillMount!=`function`||(typeof a.componentWillMount==`function`&&a.componentWillMount(),typeof a.UNSAFE_componentWillMount==`function`&&a.UNSAFE_componentWillMount()),typeof a.componentDidMount==`function`&&(t.flags|=4194308)):(typeof a.componentDidMount==`function`&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=l),a.props=r,a.state=l,a.context=o,r=c):(typeof a.componentDidMount==`function`&&(t.flags|=4194308),r=!1)}else{a=t.stateNode,po(e,t),o=t.memoizedProps,u=bc(n,o),a.props=u,d=t.pendingProps,f=a.context,l=n.contextType,c=Li,typeof l==`object`&&l&&(c=ja(l)),s=n.getDerivedStateFromProps,(l=typeof s==`function`||typeof a.getSnapshotBeforeUpdate==`function`)||typeof a.UNSAFE_componentWillReceiveProps!=`function`&&typeof a.componentWillReceiveProps!=`function`||(o!==d||f!==c)&&yc(t,a,r,c),uo=!1,f=t.memoizedState,a.state=f,bo(t,r,a,i),yo();var p=t.memoizedState;o!==d||f!==p||uo||e!==null&&e.dependencies!==null&&ka(e.dependencies)?(typeof s==`function`&&(gc(t,n,s,r),p=t.memoizedState),(u=uo||vc(t,n,u,r,f,p,c)||e!==null&&e.dependencies!==null&&ka(e.dependencies))?(l||typeof a.UNSAFE_componentWillUpdate!=`function`&&typeof a.componentWillUpdate!=`function`||(typeof a.componentWillUpdate==`function`&&a.componentWillUpdate(r,p,c),typeof a.UNSAFE_componentWillUpdate==`function`&&a.UNSAFE_componentWillUpdate(r,p,c)),typeof a.componentDidUpdate==`function`&&(t.flags|=4),typeof a.getSnapshotBeforeUpdate==`function`&&(t.flags|=1024)):(typeof a.componentDidUpdate!=`function`||o===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),typeof a.getSnapshotBeforeUpdate!=`function`||o===e.memoizedProps&&f===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=p),a.props=r,a.state=p,a.context=c,r=u):(typeof a.componentDidUpdate!=`function`||o===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),typeof a.getSnapshotBeforeUpdate!=`function`||o===e.memoizedProps&&f===e.memoizedState||(t.flags|=1024),r=!1)}return a=r,Hc(e,t),r=!!(t.flags&128),a||r?(a=t.stateNode,n=r&&typeof n.getDerivedStateFromError!=`function`?null:a.render(),t.flags|=1,e!==null&&r?(t.child=co(t,e.child,null,i),t.child=co(t,null,n,i)):Mc(e,t,n,i),t.memoizedState=a.state,e=t.child):e=sl(e,t,i),e}function Kc(e,t,n,r){return ya(),t.flags|=256,Mc(e,t,n,r),t.child}var qc={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function Jc(e){return{baseLanes:e,cachePool:Xa()}}function Yc(e,t,n){return e=e===null?0:e.childLanes&~n,t&&(e|=ld),e}function Xc(e,t,n){var r=t.pendingProps,i=!1,a=!!(t.flags&128),o;if((o=a)||(o=e!==null&&e.memoizedState===null?!1:!!(Fo.current&2)),o&&(i=!0,t.flags&=-129),o=!!(t.flags&32),t.flags&=-33,e===null){if(N){if(i?Ao(t):No(),(e=da)?(e=am(e,pa),e=e!==null&&e.data!==`&`?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:na===null?null:{id:ra,overflow:ia},retryLane:536870912,hydrationErrors:null},n=Ki(e),n.return=t,t.child=n,ua=t,da=null)):e=null,e===null)throw ha(t);return t.lanes=sm(e)?32:536870912,null}return a=r.children,r=r.fallback,i?(No(),i=t.mode,a=Qc({mode:`hidden`,children:a},i),r=Wi(r,i,n,null),a.return=t,r.return=t,a.sibling=r,t.child=a,r=t.child,r.memoizedState=Jc(n),r.childLanes=Yc(e,o,n),t.memoizedState=qc,Lc(null,r)):(Ao(t),Zc(t,a))}var s=e.memoizedState;if(s!==null){var c=s.dehydrated;if(c!==null)return el(e,t,a,o,r,c,s,n)}return i?(No(),i=r.fallback,a=t.mode,s=e.child,c=s.sibling,r=Vi(s,{mode:`hidden`,children:r.children}),r.subtreeFlags=s.subtreeFlags&1206910976,c===null?(i=Wi(i,a,n,null),i.flags|=2):i=Vi(c,i),i.return=t,r.return=t,r.sibling=i,t.child=r,Lc(null,r),r=t.child,i=e.child.memoizedState,i===null?i=Jc(n):(a=i.cachePool,a===null?a=Xa():(s=I._currentValue,a=a.parent===s?a:{parent:s,pool:s}),i={baseLanes:i.baseLanes|n,cachePool:a}),r.memoizedState=i,r.childLanes=Yc(e,o,n),t.memoizedState=qc,Lc(e.child,r)):(Ao(t),n=e.child,e=n.sibling,n=Vi(n,{mode:`visible`,children:r.children}),n.return=t,n.sibling=null,e!==null&&(o=t.deletions,o===null?(t.deletions=[e],t.flags|=16):o.push(e)),t.child=n,t.memoizedState=null,n)}function Zc(e,t){return t=Qc({mode:`visible`,children:t},e.mode),t.return=e,e.child=t}function Qc(e,t){return e=zi(22,e,null,t),e.lanes=0,e}
9function $c(e,t,n){return co(t,e.child,null,n),e=Zc(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function el(e,t,n,r,a,o,s,c){if(n)return t.flags&256?(Ao(t),t.flags&=-257,$c(e,t,c)):t.memoizedState===null?(No(),o=a.fallback,s=t.mode,a=Qc({mode:`visible`,children:a.children},s),o=Wi(o,s,c,null),o.flags|=2,a.return=t,o.return=t,a.sibling=o,t.child=a,co(t,e.child,null,c),a=t.child,a.memoizedState=Jc(c),a.childLanes=Yc(e,r,c),t.memoizedState=qc,Lc(null,a)):(No(),t.child=e.child,t.flags|=128,null);if(Ao(t),sm(o)){if(r=o.nextSibling&&o.nextSibling.dataset,r)var l=r.dgst;return r=l,r!==``&&(a=Error(i(419)),a.stack=``,a.digest=r,xa({value:a,source:null,stack:null})),$c(e,t,c)}if(jc||Oa(e,t,c,!1),r=(c&e.childLanes)!==0,jc||r){if(Co.current!==null)return $c(e,t,c);if(r=$u,r!==null&&(a=Et(r,c),a!==0&&a!==s.retryLane))throw s.retryLane=a,Pi(e,a),Pd(r,e,a),Ac;return om(o)||Kd(),$c(e,t,c)}return om(o)?(t.flags|=192,t.child=e.child,null):(e=s.treeContext,da=lm(o.nextSibling),ua=t,N=!0,fa=null,pa=!1,e!==null&&la(t,e),t=Zc(t,a.children),t.flags|=134221824,t)}function tl(e,t,n){e.lanes|=t;var r=e.alternate;r!==null&&(r.lanes|=t),Ea(e.return,t,n)}function nl(e){for(var t=null;e!==null;){var n=e.alternate;n!==null&&Ro(n)===null&&(t=e),e=e.sibling}return t}function rl(e,t,n,r,i,a){var o=e.memoizedState;o===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:i,treeForkCount:a}:(o.isBackwards=t,o.rendering=null,o.renderingStartTime=0,o.last=r,o.tail=n,o.tailMode=i,o.treeForkCount=a)}function il(e){var t=e.child;for(e.child=null;t!==null;){var n=t.sibling;t.sibling=e.child,e.child=t,t=n}}function al(e,t,n){var r=t.pendingProps,i=r.revealOrder,a=r.tail;r=r.children;var o=Fo.current;if(t.flags&128)return Io(t,o),null;var s=!!(o&2);if(s?(o=o&1|2,t.flags|=128):o&=1,Io(t,o),i===`backwards`&&e!==null?(il(e),Mc(e,t,r,n),il(e)):Mc(e,t,r,n),r=N?$i:0,!s&&e!==null&&e.flags&128)a:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&tl(e,n,t);else if(e.tag===19)tl(e,n,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break a;for(;e.sibling===null;){if(e.return===null||e.return===t)break a;e=e.return}e.sibling.return=e.return,e=e.sibling}switch(i){case`backwards`:n=nl(t.child),n===null?(i=t.child,t.child=null):(i=n.sibling,n.sibling=null,il(t)),rl(t,!0,i,null,a,r);break;case`unstable_legacy-backwards`:for(n=null,i=t.child,t.child=null;i!==null;){if(e=i.alternate,e!==null&&Ro(e)===null){t.child=i;break}e=i.sibling,i.sibling=n,n=i,i=e}rl(t,!0,n,null,a,r);break;case`together`:rl(t,!1,null,null,void 0,r);break;case`independent`:t.memoizedState=null;break;default:n=nl(t.child),n===null?(i=t.child,t.child=null):(i=n.sibling,n.sibling=null),rl(t,!1,i,n,a,r)}return t.child}function ol(e,t,n){var r=t.pendingProps;return wa(t,t.type,r.value),Mc(e,t,r.children,n),t.child}function sl(e,t,n){if(e!==null&&(t.dependencies=e.dependencies),od|=t.lanes,(n&t.childLanes)===0){if(e!==null){if(Oa(e,t,n,!1),(n&t.childLanes)===0)return null}else return null}if(e!==null&&t.child!==e.child)throw Error(i(153));if(t.child!==null){for(e=t.child,n=Vi(e,e.pendingProps),t.child=n,n.return=t;e.sibling!==null;)e=e.sibling,n=n.sibling=Vi(e,e.pendingProps),n.return=t;n.sibling=null}return t.child}function cl(e,t){return(e.lanes&t)!==0||(e=e.dependencies,!!(e!==null&&ka(e)))}function ll(e,t,n){switch(t.tag){case 3:Pe(t,t.stateNode.containerInfo),wa(t,I,e.memoizedState.cache),ya();break;case 27:case 5:Ie(t);break;case 4:Pe(t,t.stateNode.containerInfo);break;case 10:wa(t,t.type,t.memoizedProps.value);break;case 31:if(t.memoizedState!==null)return t.flags|=128,jo(t),null;break;case 13:var r=t.memoizedState;if(r!==null){if(r.dehydrated!==null)return Ao(t),t.flags|=128,null;r=Oa(e,t,n,!1);var i=t.child.childLanes;return r||(n&i)!==0?Xc(e,t,n):(Ao(t),e=sl(e,t,n),e===null?null:e.sibling)}Ao(t);break;case 19:if(t.flags&128)return al(e,t,n);if(i=!!(e.flags&128),r=(n&t.childLanes)!==0,r||=(Oa(e,t,n,!1),(n&t.childLanes)!==0),i){if(r)return al(e,t,n);t.flags|=128}if(i=t.memoizedState,i!==null&&(i.rendering=null,i.tail=null,i.lastEffect=null),Io(t,Fo.current),r)break;return null;case 22:return t.lanes=0,Ic(e,t,n,t.pendingProps);case 24:wa(t,I,e.memoizedState.cache)}return sl(e,t,n)}function ul(e,t,n){if(e!==null){if(e.memoizedProps!==t.pendingProps)jc=!0;else{if(!cl(e,n)&&!(t.flags&128))return jc=!1,ll(e,t,n);jc=!!(e.flags&131072)}
vendor: 11,479 bytes, line 9
9}else jc=!1,N&&t.flags&1048576&&oa(t,$i,t.index);switch(t.lanes=0,t.tag){case 16:a:{var r=t.pendingProps;if(e=V(t.elementType),t.type=e,typeof e==`function`)Bi(e)?(r=bc(e,r),t.tag=1,t=Gc(null,t,e,r,n)):(t.tag=0,t=Uc(null,t,e,r,n));else{if(e!=null){var a=e.$$typeof;if(a===ue){t.tag=11,t=Nc(null,t,e,r,n);break a}if(a===pe){t.tag=14,t=Pc(null,t,e,r,n);break a}if(a===le){t.tag=10,t.type=e,t=ol(null,t,n);break a}}throw t=Ce(e)||e,Error(i(306,t,``))}}return t;case 0:return Uc(e,t,t.type,t.pendingProps,n);case 1:return r=t.type,a=bc(r,t.pendingProps),Gc(e,t,r,a,n);case 3:a:{if(Pe(t,t.stateNode.containerInfo),e===null)throw Error(i(387));r=t.pendingProps;var o=t.memoizedState;a=o.element,po(e,t),bo(t,r,null,n);var s=t.memoizedState;if(r=s.cache,wa(t,I,r),r!==o.cache&&Da(t,[I],n,!0),yo(),r=s.element,o.isDehydrated){if(o={element:r,isDehydrated:!1,cache:s.cache},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){t=Kc(e,t,r,n);break a}if(r!==a){a=Yi(Error(i(424)),t),xa(a),t=Kc(e,t,r,n);break a}switch(e=t.stateNode.containerInfo,e.nodeType){case 9:e=e.body;break;default:e=e.nodeName===`HTML`?e.ownerDocument.body:e}for(da=lm(e.firstChild),ua=t,N=!0,fa=null,pa=!0,n=lo(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|134221824,n=n.sibling}else{if(ya(),r===a){t=sl(e,t,n);break a}Mc(e,t,r,n)}t=t.child}return t;case 26:return Hc(e,t),e===null?(n=Nm(t.type,null,t.pendingProps,null))?t.memoizedState=n:N||(t.stateNode=fp(t.type,t.pendingProps,Me.current,t)):t.memoizedState=Nm(t.type,e.memoizedProps,t.pendingProps,e.memoizedState),null;case 27:return Ie(t),e===null&&N&&(r=t.stateNode=hm(t.type,t.pendingProps,Me.current),ua=t,pa=!0,a=da,Sp(t.type)?(um=a,da=lm(r.firstChild)):da=a),Mc(e,t,t.pendingProps.children,n),Hc(e,t),e===null&&(t.flags|=4194304),t.child;case 5:return e===null&&N&&((a=r=da)&&(r=rm(r,t.type,t.pendingProps,pa),r===null?a=!1:(t.stateNode=r,ua=t,da=lm(r.firstChild),pa=!1,a=!0)),a||ha(t)),Ie(t),a=t.type,o=t.pendingProps,s=e===null?null:e.memoizedProps,r=o.children,pp(a,o)?r=null:s!==null&&pp(a,s)&&(t.flags|=32),t.memoizedState!==null&&(a=Xo(e,t,$o,null,null,n),sh._currentValue=a),Hc(e,t),Mc(e,t,r,n),t.child;case 6:return e===null&&N&&((e=n=da)&&(n=im(n,t.pendingProps,pa),n===null?e=!1:(t.stateNode=n,ua=t,da=null,e=!0)),e||ha(t)),null;case 13:return Xc(e,t,n);case 4:return Pe(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=co(t,null,r,n):Mc(e,t,r,n),t.child;case 11:return Nc(e,t,t.type,t.pendingProps,n);case 7:return r=t.pendingProps,Hc(e,t),Mc(e,t,r,n),t.child;case 8:return Mc(e,t,t.pendingProps.children,n),t.child;case 12:return Mc(e,t,t.pendingProps.children,n),t.child;case 10:return ol(e,t,n);case 9:return a=t.type._context,r=t.pendingProps.children,Aa(t),a=ja(a),r=r(a),t.flags|=1,Mc(e,t,r,n),t.child;case 14:return Pc(e,t,t.type,t.pendingProps,n);case 15:return Fc(e,t,t.type,t.pendingProps,n);case 19:return al(e,t,n);case 31:return Vc(e,t,n);case 22:return Ic(e,t,n,t.pendingProps);case 24:return Aa(t),r=ja(I),e===null?(a=Ja(),a===null&&(a=$u,o=Ia(),a.pooledCache=o,o.refCount++,o!==null&&(a.pooledCacheLanes|=n),a=o),t.memoizedState={parent:r,cache:a},fo(t),wa(t,I,a)):((e.lanes&n)!==0&&(po(e,t),bo(t,null,null,n),yo()),a=e.memoizedState,o=t.memoizedState,a.parent===r?(r=o.cache,wa(t,I,r),r!==a.cache&&Da(t,[I],n,!0)):(a={parent:r,cache:r},t.memoizedState=a,t.lanes===0&&(t.memoizedState=t.updateQueue.baseState=a),wa(t,I,r))),Mc(e,t,t.pendingProps.children,n),t.child;case 30:return t.stateNode===null&&(t.stateNode={autoName:null,paired:null,clones:null,ref:null}),r=t.pendingProps,r.name!=null&&r.name!==`auto`?t.flags|=e===null?18882560:18874368:N&&sa(t),e!==null&&e.memoizedProps.name!==r.name?t.flags|=4194816:Hc(e,t),Mc(e,t,r.children,n),t.child;case 29:throw t.pendingProps}throw Error(i(156,t.tag))}function dl(e){e.flags|=4}function fl(e,t,n,r,i){var a;if((a=!!(e.mode&32))&&(a=n===null?Jm(t,r):Jm(t,r)&&(r.src!==n.src||r.srcSet!==n.srcSet)),a){if(e.flags|=16777216,(i&335544128)===i){if(e.stateNode.complete)e.flags|=8192;else if(Ud())e.flags|=8192;else throw H=B,Qa}}else e.flags&=-16777217}function pl(e,t){if(t.type!==`stylesheet`||t.state.loading&4)e.flags&=-16777217;else if(e.flags|=16777216,!Ym(t)){if(Ud())e.flags|=8192;else throw H=B,Qa}}function ml(e,t){t!==null&&(e.flags|=4),e.flags&16384&&(t=e.tag===22?536870912:bt(),e.lanes|=t,ud|=t)}function hl(e,t){if(!N)switch(e.tailMode){case`visible`:break;case`collapsed`:for(var n=e.tail,r=null;n!==null;)n.alternate!==null&&(r=n),n=n.sibling;r===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:r.sibling=null;break;default:for(t=e.tail,n=null;t!==null;)t.alternate!==null&&(n=t),t=t.sibling;n===null?e.tail=null:n.sibling=null}}function gl(e){var t=e.alternate!==null&&e.alternate.child===e.child,n=0,r=0;if(t)for(var i=e.child;i!==null;)n|=i.lanes|i.childLanes,r|=i.subtreeFlags&1206910976,r|=i.flags&1206910976,i.return=e,i=i.sibling;else for(i=e.child;i!==null;)n|=i.lanes|i.childLanes,r|=i.subtreeFlags,r|=i.flags,i.return=e,i=i.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function _l(e,t,n){var r=t.pendingProps;switch(ca(t),t.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return gl(t),null;case 1:return gl(t),null;case 3:return n=t.stateNode,r=null,e!==null&&(r=e.memoizedState.cache),t.memoizedState.cache!==r&&(t.flags|=2048),Ta(I),Fe(),n.pendingContext&&(n.context=n.pendingContext,n.pendingContext=null),(e===null||e.child===null)&&(va(t)?dl(t):e===null||e.memoizedState.isDehydrated&&!(t.flags&256)||(t.flags|=1024,ba())),gl(t),null;case 26:var a=t.type,o=t.memoizedState;return e===null?(dl(t),o===null?(gl(t),fl(t,a,null,r,n)):(gl(t),pl(t,o))):o?o===e.memoizedState?(gl(t),t.flags&=-16777217):(dl(t),gl(t),pl(t,o)):(e=e.memoizedProps,e!==r&&dl(t),gl(t),fl(t,a,e,r,n)),null;case 27:if(Le(t),n=Me.current,a=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==r&&dl(t);else{if(!r){if(t.stateNode===null)throw Error(i(166));return gl(t),t.subtreeFlags&=-33554433,null}e=Ae.current,va(t)?ga(t,e):(e=hm(a,r,n),t.stateNode=e,dl(t))}return gl(t),t.subtreeFlags&=-33554433,null;case 5:if(Le(t),a=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==r&&dl(t);else{if(!r){if(t.stateNode===null)throw Error(i(166));return gl(t),t.subtreeFlags&=-33554433,null}if(o=Ae.current,va(t))ga(t,o);else{var s=lp(Me.current);switch(o){case 1:o=s.createElementNS(`http://www.w3.org/2000/svg`,a);break;case 2:o=s.createElementNS(`http://www.w3.org/1998/Math/MathML`,a);break;default:switch(a){case`svg`:o=s.createElementNS(`http://www.w3.org/2000/svg`,a);break;case`math`:o=s.createElementNS(`http://www.w3.org/1998/Math/MathML`,a);break;case`script`:o=s.createElement(`div`),o.innerHTML=`<script><\/script>`,o=o.removeChild(o.firstChild);break;case`select`:o=typeof r.is==`string`?s.createElement(`select`,{is:r.is}):s.createElement(`select`),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o=typeof r.is==`string`?s.createElement(a,{is:r.is}):s.createElement(a)}}o[Mt]=t,o[Nt]=r;a:for(s=t.child;s!==null;){if(s.tag===5||s.tag===6)o.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===t)break a;for(;s.sibling===null;){if(s.return===null||s.return===t)break a;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=o;a:switch(np(o,a,r),a){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&dl(t)}}return gl(t),t.subtreeFlags&=-33554433,fl(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&dl(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(i(166));if(e=Me.current,va(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,a=ua,a!==null)switch(a.tag){case 27:case 5:r=a.memoizedProps}e[Mt]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||ep(e.nodeValue,n)),e||ha(t,!0)}else e=lp(e).createTextNode(r),e[Mt]=t,t.stateNode=e}return gl(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=va(t),n!==null){if(e===null){if(!r)throw Error(i(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(557));e[Mt]=t}else ya(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;gl(t),e=!1}else n=ba(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(Po(t),t):(Po(t),null);if(t.flags&128)throw Error(i(558))}return gl(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(a=va(t),r!==null&&r.dehydrated!==null){if(e===null){if(!a)throw Error(i(318));if(a=t.memoizedState,a=a===null?null:a.dehydrated,!a)throw Error(i(317));a[Mt]=t}else ya(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;gl(t),a=!1}else a=ba(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return t.flags&256?(Po(t),t):(Po(t),null)}return Po(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,a=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(a=r.alternate.memoizedState.cachePool.pool),o=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(o=r.memoizedState.cachePool.pool),o!==a&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),ml(t,t.updateQueue),gl(t),null);case 4:return Fe(),e===null&&Wf(t.stateNode.containerInfo),t.flags|=67108864,gl(t),null;case 10:return Ta(t.type),gl(t),null;case 19:if(Lo(t),r=t.memoizedState,r===null)return gl(t),null;if(a=!!(t.flags&128),o=r.rendering,o===null){if(a)hl(r,!1);else{if(ad!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=Ro(e),o!==null){for(t.flags|=128,hl(r,!1),e=o.updateQueue,t.updateQueue=e,ml(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)Hi(n,e),n=n.sibling;return Io(t,Fo.current&1|2),N&&aa(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&Xe()>gd&&(t.flags|=128,a=!0,hl(r,!1),t.lanes=4194304)}}else{if(!a){if(e=Ro(o),e!==null){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,ml(t,e),hl(r,!0),r.tail===null&&r.tailMode!==`collapsed`&&r.tailMode!==`visible`&&!o.alternate&&!N)return gl(t),null}else 2*Xe()-r.renderingStartTime>gd&&n!==536870912&&(t.flags|=128,a=!0,hl(r,!1),t.lanes=4194304)}r.isBackwards?(o.sibling=t.child,t.child=o):(e=r.last,e===null?t.child=o:e.sibling=o,r.last=o)}if(r.tail!==null){e=r.tail;a:{for(n=e;n!==null;){if(n.alternate!==null){n=!1;break a}n=n.sibling}n=!0}return r.rendering=e,r.tail=e.sibling,r.renderingStartTime=Xe(),e.sibling=null,o=Fo.current,o=a?o&1|2:o&1,r.tailMode===`visible`||r.tailMode===`collapsed`||!n||N?Io(t,o):(n=o,ke(Oo,t),ke(Fo,n),ko===null&&(ko=t)),N&&aa(t,r.treeForkCount),e}return gl(t),null;case 22:case 23:return Po(t),Do(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(gl(t),t.subtreeFlags&6&&(t.flags|=8192)):gl(t),n=t.updateQueue,n!==null&&ml(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&Oe(qa),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),Ta(I),gl(t),null;case 25:return null;case 30:return t.flags|=33554432,gl(t),null}throw Error(i(156,t.tag))}function vl(e,t){switch(ca(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;
vendor: 4,825 bytes, line 9
9case 3:return Ta(I),Fe(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Le(t),null;case 31:if(t.memoizedState!==null){if(Po(t),t.alternate===null)throw Error(i(340));ya()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(Po(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(i(340));ya()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Lo(t),e=t.flags,e&65536?(t.flags=e&-65537|128,e=t.memoizedState,e!==null&&(e.rendering=null,e.tail=null),t.flags|=4,t):null;case 4:return Fe(),null;case 10:return Ta(t.type),null;case 22:case 23:return Po(t),Do(),e!==null&&Oe(qa),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return Ta(I),null;case 25:return null;default:return null}}function yl(e,t){switch(ca(t),t.tag){case 3:Ta(I),Fe();break;case 26:case 27:case 5:Le(t);break;case 4:Fe();break;case 31:t.memoizedState!==null&&Po(t);break;case 13:Po(t);break;case 19:Lo(t);break;case 10:Ta(t.type);break;case 22:case 23:Po(t),Do(),e!==null&&Oe(qa);break;case 24:Ta(I)}}function bl(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){Z(t,t.return,e)}}function xl(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){Z(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){Z(t,t.return,e)}}function Sl(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{So(t,n)}catch(t){Z(e,e.return,t)}}}function Cl(e,t,n){n.props=bc(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){Z(e,t,n)}}function wl(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:var i=e.stateNode,a=wi(e.memoizedProps,i);(i.ref===null||i.ref.name!==a)&&(i.ref=Pp(a)),r=i.ref;break;case 7:if(e.stateNode===null){var o=new Fp(e);h(e.child,!1,Qp,o,void 0,void 0),e.stateNode=o}r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){Z(e,t,n)}}function Tl(e,t){var n=e.ref,r=e.refCleanup;if(n!==null){if(typeof r==`function`)try{r()}catch(n){Z(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){Z(e,t,n)}else n.current=null}}function El(e,t){if((e.tag===5||e.tag===27||e.tag===6)&&e.alternate===null&&t!==null)for(var n=0;n<t.length;n++)em(e.stateNode,t[n])}function Dl(e){for(var t=e.return;t!==null&&(Al(t)&&em(e.stateNode,t.stateNode),!kl(t));)t=t.return}function Ol(e){for(var t=e.return;t!==null&&(Al(t)&&tm(e.stateNode,t.stateNode),!kl(t));)t=t.return}function kl(e){return e.tag===5||e.tag===3||e.tag===27}function Al(e){return e&&e.tag===7&&e.stateNode!==null}function jl(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{a:switch(t){case`button`:case`input`:case`select`:case`textarea`:n.autoFocus&&r.focus();break a;case`img`:n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(t){Z(e,e.return,t)}}function Ml(e,t,n){try{var r=e.stateNode;ip(r,e.type,n,t),r[Nt]=t}catch(t){Z(e,e.return,t)}}function Nl(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Sp(e.type)||e.tag===4}function Pl(e){a:for(;;){for(;e.sibling===null;){if(e.return===null||Nl(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Sp(e.type)||e.flags&2||e.child===null||e.tag===4)continue a;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Fl(e,t,n,r){var i=e.tag;if(i===5||i===6)i=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n).insertBefore(i,t):(t=n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n,t.appendChild(i),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=On)),El(e,r),k=!0;else if(i!==4&&(i===27&&(El(e,r),r=null,Sp(e.type)&&(n=e.stateNode,t=null)),e=e.child,e!==null))for(Fl(e,t,n,r),e=e.sibling;e!==null;)Fl(e,t,n,r),e=e.sibling}function Il(e,t,n,r){var i=e.tag;if(i===5||i===6)i=e.stateNode,t?n.insertBefore(i,t):n.appendChild(i),El(e,r),k=!0;else if(i!==4&&(i===27&&(El(e,r),r=null,Sp(e.type)&&(n=e.stateNode)),e=e.child,e!==null))for(Il(e,t,n,r),e=e.sibling;e!==null;)Il(e,t,n,r),e=e.sibling}function Ll(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,i=t.attributes;i.length;)t.removeAttributeNode(i[0]);np(t,r,n),t[Mt]=e,t[Nt]=n}catch(t){Z(e,e.return,t)}}var Rl=!1,zl=null;function Bl(e){(e.tag===30||e.subtreeFlags&33554432)&&(Rl=!0)}var Vl=null;function Hl(){var e=Vl;return Vl=null,e}var Ul=0;function Wl(e,t,n,r,i){return Ul=0,Gl(e.child,t,n,r,i)}function Gl(e,t,n,r,i){for(var a=!1;
9e!==null;){if(e.tag===5){var o=e.stateNode;if(r!==null){var s=Op(o);r.push(s),s.view&&(a=!0)}else a||Op(o).view&&(a=!0);Rl=!0,Tp(o,Ul===0?t:t+`_`+Ul,n),Ul++}else(e.tag!==22||e.memoizedState===null)&&(e.tag===30&&i||Gl(e.child,t,n,r,i)&&(a=!0));e=e.sibling}return a}function Kl(e,t){for(;e!==null;)e.tag===5?Ep(e.stateNode,e.memoizedProps):(e.tag!==22||e.memoizedState===null)&&(e.tag===30&&t||Kl(e.child,t)),e=e.sibling}function ql(e){if(e.subtreeFlags&18874368)for(e=e.child;e!==null;){if((e.tag!==22||e.memoizedState===null)&&(ql(e),e.tag===30&&e.flags&18874368&&e.stateNode.paired)){var t=e.memoizedProps;if(t.name==null||t.name===`auto`)throw Error(i(544));var n=t.name;t=Ei(t.default,t.share),t!==`none`&&(Wl(e,n,t,null,!1)||Kl(e.child,!1))}e=e.sibling}}function Jl(e,t){if(e.tag===30){var n=e.stateNode,r=e.memoizedProps,i=wi(r,n),a=Ei(r.default,n.paired?r.share:r.enter);a===`none`?ql(e):Wl(e,i,a,null,!1)?(ql(e),n.paired||t||Nd(e,r.onEnter)):Kl(e.child,!1)}else if(e.subtreeFlags&33554432)for(e=e.child;e!==null;)Jl(e,t),e=e.sibling;else ql(e)}function Yl(e){if(zl!==null&&zl.size!==0){var t=zl;if(e.subtreeFlags&18874368)for(e=e.child;e!==null;){if(e.tag!==22||e.memoizedState===null){if(e.tag===30&&e.flags&18874368){var n=e.memoizedProps,r=n.name;if(r!=null&&r!==`auto`){var i=t.get(r);if(i!==void 0){var a=Ei(n.default,n.share);if(a!==`none`&&(Wl(e,r,a,null,!1)?(a=e.stateNode,i.paired=a,a.paired=i,Nd(e,n.onShare)):Kl(e.child,!1)),t.delete(r),t.size===0)break}}}Yl(e)}e=e.sibling}}}function Xl(e){if(e.tag===30){var t=e.memoizedProps,n=wi(t,e.stateNode),r=zl===null?void 0:zl.get(n),i=Ei(t.default,r===void 0?t.exit:t.share);i!==`none`&&(Wl(e,n,i,null,!1)?r===void 0?Nd(e,t.onExit):(i=e.stateNode,r.paired=i,i.paired=r,zl.delete(n),Nd(e,t.onShare)):Kl(e.child,!1)),zl!==null&&Yl(e)}else if(e.subtreeFlags&33554432)for(e=e.child;e!==null;)Xl(e),e=e.sibling;else zl!==null&&Yl(e)}function Zl(e){for(e=e.child;e!==null;){if(e.tag===30){var t=e.memoizedProps,n=wi(t,e.stateNode);t=Ei(t.default,t.update),e.flags&=-5,t!==`none`&&Wl(e,n,t,e.memoizedState=[],!1)}else e.subtreeFlags&33554432&&Zl(e);e=e.sibling}}function Ql(e){if(e.subtreeFlags&18874368)for(e=e.child;e!==null;){if(e.tag!==22||e.memoizedState===null){if(e.tag===30&&e.flags&18874368){var t=e.stateNode;t.paired!==null&&(t.paired=null,Kl(e.child,!1))}Ql(e)}e=e.sibling}}function $l(e){if(e.tag===30)e.stateNode.paired=null,Kl(e.child,!1),Ql(e);else if(e.subtreeFlags&33554432)for(e=e.child;e!==null;)$l(e),e=e.sibling;else Ql(e)}function eu(e){for(e=e.child;e!==null;)e.tag===30?Kl(e.child,!1):e.subtreeFlags&33554432&&eu(e),e=e.sibling}function tu(e,t,n,r,i,a,o){for(var s=!1;t!==null;){if(t.tag===5){var c=t.stateNode;if(a!==null&&Ul<a.length){var l=a[Ul],u=Op(c);(l.view||u.view)&&(s=!0);var d;if(d=!(e.flags&4)){if(u.clip)d=!0;else{d=l.rect;var f=u.rect;d=d.y!==f.y||d.x!==f.x||d.height!==f.height||d.width!==f.width}}d&&(e.flags|=4),u.abs?u=!l.abs:(l=l.rect,u=u.rect,u=l.height!==u.height||l.width!==u.width),u&&(e.flags|=32)}else e.flags|=32;
vendor: 21,048 bytes, line 9
9e.flags&4&&Tp(c,Ul===0?n:n+`_`+Ul,i),s&&e.flags&4||(Vl===null&&(Vl=[]),Vl.push(c,Ul===0?r:r+`_`+Ul,t.memoizedProps)),Ul++}else(t.tag!==22||t.memoizedState===null)&&(t.tag===30&&o?e.flags|=t.flags&32:tu(e,t.child,n,r,i,a,o)&&(s=!0));t=t.sibling}return s}function nu(e,t){for(e=e.child;e!==null;){if(e.tag===30){var n=e.memoizedProps,r=e.stateNode,i=wi(n,r),a=Ei(n.default,n.update);if(t){r=r.clones;var o=r===null?null:r.map(kp)}else o=e.memoizedState,e.memoizedState=null;r=e;var s=e.child;Ul=0,i=tu(r,s,i,i,a,o,!1),e.flags&4&&i&&(t||Nd(e,n.onUpdate))}else e.subtreeFlags&33554432&&nu(e,t);e=e.sibling}}var ru=!1,K=!1,iu=!1,au=!1,ou=typeof WeakSet==`function`?WeakSet:Set,su=null,cu=!1,lu=!1,uu=!1,du=!1;function fu(e,t,n){if(e=e.containerInfo,sp=gh,e=ei(e),ti(e)){if(`selectionStart`in e)var r={start:e.selectionStart,end:e.selectionEnd};else a:{r=(r=e.ownerDocument)&&r.defaultView||window;var i=r.getSelection&&r.getSelection();if(i&&i.rangeCount!==0){r=i.anchorNode;var a=i.anchorOffset,o=i.focusNode;i=i.focusOffset;try{r.nodeType,o.nodeType}catch{r=null;break a}var s=0,c=-1,l=-1,u=0,d=0,f=e,p=null;b:for(;;){for(var m;f!==r||a!==0&&f.nodeType!==3||(c=s+a),f!==o||i!==0&&f.nodeType!==3||(l=s+i),f.nodeType===3&&(s+=f.nodeValue.length),(m=f.firstChild)!==null;)p=f,f=m;for(;;){if(f===e)break b;if(p===r&&++u===a&&(c=s),p===o&&++d===i&&(l=s),(m=f.nextSibling)!==null)break;f=p,p=f.parentNode}f=m}r=c===-1||l===-1?null:{start:c,end:l}}else r=null}r||={start:0,end:0}}else r=null;for(cp={focusedElem:e,selectionRange:r},gh=!1,n=(n&335544064)===n,su=t,t=n?9270:1024;su!==null;){if(e=su,n&&(r=e.deletions,r!==null))for(a=0;a<r.length;a++)n&&Xl(r[a]);if(e.alternate===null&&e.flags&2)n&&Bl(e),pu(n);else{if(e.tag===22){if(r=e.alternate,e.memoizedState!==null){r!==null&&r.memoizedState===null&&n&&Xl(r),pu(n);continue}if(r!==null&&r.memoizedState!==null){n&&Bl(e),pu(n);continue}}r=e.child,(e.subtreeFlags&t)!==0&&r!==null?(r.return=e,su=r):(n&&Zl(e),pu(n))}}zl=null}function pu(e){for(;su!==null;){var t=su,n=e,r=t.alternate,a=t.flags;switch(t.tag){case 0:case 11:case 15:break;case 1:if(a&1024&&r!==null){n=void 0,a=r.memoizedProps,r=r.memoizedState;var o=t.stateNode;try{var s=bc(t.type,a);n=o.getSnapshotBeforeUpdate(s,r),o.__reactInternalSnapshotBeforeUpdate=n}catch(e){Z(t,t.return,e)}}break;case 3:if(a&1024){if(r=t.stateNode.containerInfo,n=r.nodeType,n===9)nm(r);else if(n===1)switch(r.nodeName){case`HEAD`:case`HTML`:case`BODY`:nm(r);break;default:r.textContent=``}}break;case 5:case 26:case 27:case 6:case 4:case 17:break;case 30:n&&r!==null&&(n=wi(r.memoizedProps,r.stateNode),a=t.memoizedProps,a=Ei(a.default,a.update),a!==`none`&&Wl(r,n,a,r.memoizedState=[],!0));break;default:if(a&1024)throw Error(i(163))}if(r=t.sibling,r!==null){r.return=t.return,su=r;break}su=t.return}}function mu(e,t,n){var r=n.flags;switch(n.tag){case 0:case 11:case 15:Pu(e,n),r&4&&bl(5,n);break;case 1:if(Pu(e,n),r&4){if(e=n.stateNode,t===null)try{e.componentDidMount()}catch(e){Z(n,n.return,e)}else{var i=bc(n.type,t.memoizedProps);t=t.memoizedState;try{e.componentDidUpdate(i,t,e.__reactInternalSnapshotBeforeUpdate)}catch(e){Z(n,n.return,e)}}}r&64&&Sl(n),r&512&&wl(n,n.return);break;case 3:if(Pu(e,n),r&64&&(e=n.updateQueue,e!==null)){if(t=null,n.child!==null)switch(n.child.tag){case 27:case 5:t=n.child.stateNode;break;case 1:t=n.child.stateNode}try{So(e,t)}catch(e){Z(n,n.return,e)}}break;case 27:t===null&&r&4&&Ll(n);case 26:case 5:Pu(e,n),t===null&&r&4&&jl(n),r&512&&wl(n,n.return);break;case 12:Pu(e,n);break;case 31:Pu(e,n),r&4&&Cu(e,n);break;case 13:Pu(e,n),r&4&&wu(e,n),r&64&&(e=n.memoizedState,e!==null&&(e=e.dehydrated,e!==null&&(n=_f.bind(null,n),cm(e,n))));break;case 22:if(r=n.memoizedState!==null||ru,!r){var a=t!==null&&t.memoizedState!==null||K;t=ru,i=K,ru=r,(K=a)&&!i?(r=2,n.subtreeFlags&8772&&(r|=1),Iu(e,n,r)):Pu(e,n),ru=t,K=i}break;case 30:Pu(e,n),r&512&&wl(n,n.return);break;case 7:r&512&&wl(n,n.return);default:Pu(e,n)}}function hu(e,t){for(e=e.child;e!==null;)gu(e,t),e=e.sibling}function gu(e,t){switch(e.tag){case 5:case 26:try{var n=e.stateNode;if(t){var r=n.style;typeof r.setProperty==`function`?r.setProperty(`display`,`none`,`important`):r.display=`none`}else{var i=e.stateNode,a=e.memoizedProps.style,o=a!=null&&a.hasOwnProperty(`display`)?a.display:null;i.style.display=o==null||typeof o==`boolean`?``:(``+o).trim()}}catch(t){Z(e,e.return,t)}_u(e,t);break;case 6:try{e.stateNode.nodeValue=t?``:e.memoizedProps,k=!0}catch(t){Z(e,e.return,t)}break;case 18:try{var s=e.stateNode;t?wp(s,!0):wp(e.stateNode,!1)}catch(t){Z(e,e.return,t)}break;case 22:case 23:e.memoizedState===null&&hu(e,t);break;default:hu(e,t)}}function _u(e,t){if(e.subtreeFlags&67108864)for(e=e.child;e!==null;){a:{var n=e,r=t;switch(n.tag){case 4:gu(n,r);break a;case 22:n.memoizedState===null&&_u(n,r);break a;default:_u(n,r)}}e=e.sibling}}function vu(e){var t=e.alternate;t!==null&&(e.alternate=null,vu(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&Vt(t)),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}var yu=null,bu=!1;function xu(e,t,n){for(n=n.child;n!==null;)Su(e,t,n),n=n.sibling}function Su(e,t,n){if(ot&&typeof ot.onCommitFiberUnmount==`function`)try{ot.onCommitFiberUnmount(at,n)}catch{}switch(n.tag){case 26:K||Tl(n,t),xu(e,t,n),n.memoizedState?n.memoizedState.count--:n.stateNode&&!K&&(n=n.stateNode,n.parentNode.removeChild(n));break;case 27:K||Tl(n,t),Ol(n);var r=yu,i=bu;Sp(n.type)&&(yu=n.stateNode,bu=!1),xu(e,t,n),gm(n.stateNode,n.type,n.memoizedProps),yu=r,bu=i;break;case 5:K||Tl(n,t),Ol(n);case 6:if(n.tag===6&&Ol(n),r=yu,i=bu,yu=null,xu(e,t,n),yu=r,bu=i,yu!==null){if(bu)try{(yu.nodeType===9?yu.body:yu.nodeName===`HTML`?yu.ownerDocument.body:yu).removeChild(n.stateNode),k=!0}catch(e){Z(n,t,e)}else try{yu.removeChild(n.stateNode),k=!0}catch(e){Z(n,t,e)}}break;case 18:yu!==null&&(bu?(e=yu,Cp(e.nodeType===9?e.body:e.nodeName===`HTML`?e.ownerDocument.body:e,n.stateNode),Hh(e)):Cp(yu,n.stateNode));break;case 4:r=yu,i=bu,yu=n.stateNode.containerInfo,bu=!0,xu(e,t,n),yu=r,bu=i;break;case 0:case 11:case 14:case 15:xl(2,n,t),K||xl(4,n,t),xu(e,t,n);break;case 1:K||(Tl(n,t),r=n.stateNode,typeof r.componentWillUnmount==`function`&&Cl(n,t,r)),xu(e,t,n);break;case 21:xu(e,t,n);break;case 22:K=(r=K)||n.memoizedState!==null,xu(e,t,n),K=r;break;case 30:Tl(n,t),xu(e,t,n);break;case 7:K||Tl(n,t),xu(e,t,n);break;default:xu(e,t,n)}}function Cu(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null))){e=e.dehydrated;try{Hh(e)}catch(e){Z(t,t.return,e)}}}function wu(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null&&(e=e.dehydrated,e!==null))))try{Hh(e)}catch(e){Z(t,t.return,e)}}function Tu(e){switch(e.tag){case 31:case 13:case 19:var t=e.stateNode;return t===null&&(t=e.stateNode=new ou),t;case 22:return e=e.stateNode,t=e._retryCache,t===null&&(t=e._retryCache=new ou),t;default:throw Error(i(435,e.tag))}}function Eu(e,t){var n=Tu(e);t.forEach(function(t){if(!n.has(t)){n.add(t);var r=vf.bind(null,e,t);t.then(r,r)}})}function Du(e,t,n){var r=t.deletions;if(r!==null)for(var a=0;a<r.length;a++){var o=r[a],s=e,c=t,l=c;a:for(;l!==null;){switch(l.tag){case 27:if(Sp(l.type)){yu=l.stateNode,bu=!1;break a}break;case 5:yu=l.stateNode,bu=!1;break a;case 3:case 4:yu=l.stateNode.containerInfo,bu=!0;break a}l=l.return}if(yu===null)throw Error(i(160));Su(s,c,o),yu=null,bu=!1,s=o.alternate,s!==null&&(s.return=null),o.return=null}if(t.subtreeFlags&13886)for(t=t.child;t!==null;)ku(t,e,n),t=t.sibling}var Ou=null;function ku(e,t,n){var r=e.alternate,a=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:if(a&4&&(r=e.updateQueue,r=r===null?null:r.events,r!==null))for(var o=0;o<r.length;o++){var s=r[o];s.ref.impl=s.nextImpl}Du(t,e,n),Au(e),a&4&&(xl(3,e,e.return),bl(3,e),xl(5,e,e.return));break;case 1:Du(t,e,n),Au(e),a&512&&(K||r===null||Tl(r,r.return)),a&64&&ru&&(e=e.updateQueue,e!==null&&(t=e.callbacks,t!==null&&(n=e.shared.hiddenCallbacks,e.shared.hiddenCallbacks=n===null?t:n.concat(t))));break;case 26:if(o=Ou,Du(t,e,n),Au(e),a&512&&(K||r===null||Tl(r,r.return)),a&4){if(a=r===null?null:r.memoizedState,n=e.memoizedState,r===null){if(n===null){if(e.stateNode===null){if(ru)e.stateNode=fp(e.type,e.memoizedProps,t.containerInfo,e);else{a:{t=e.type,n=e.memoizedProps,a=o.ownerDocument||o;b:switch(t){case`title`:r=a.getElementsByTagName(`title`)[0],(!r||r[zt]||r[Mt]||r.namespaceURI===`http://www.w3.org/2000/svg`||r.hasAttribute(`itemprop`))&&(r=a.createElement(t),a.head.insertBefore(r,a.querySelector(`head > title`))),np(r,t,n),r[Mt]=e,Kt(r),t=r;break a;case`link`:if(o=Gm(`link`,`href`,a).get(t+(n.href||``))){for(s=0;s<o.length;s++)if(r=o[s],r.getAttribute(`href`)===(n.href==null||n.href===``?null:n.href)&&r.getAttribute(`rel`)===(n.rel==null?null:n.rel)&&r.getAttribute(`title`)===(n.title==null?null:n.title)&&r.getAttribute(`crossorigin`)===(n.crossOrigin==null?null:n.crossOrigin)){o.splice(s,1);break b}}r=a.createElement(t),np(r,t,n),a.head.appendChild(r);break;case`meta`:if(o=Gm(`meta`,`content`,a).get(t+(n.content||``))){for(s=0;s<o.length;s++)if(r=o[s],r.getAttribute(`content`)===(n.content==null?null:``+n.content)&&r.getAttribute(`name`)===(n.name==null?null:n.name)&&r.getAttribute(`property`)===(n.property==null?null:n.property)&&r.getAttribute(`http-equiv`)===(n.httpEquiv==null?null:n.httpEquiv)&&r.getAttribute(`charset`)===(n.charSet==null?null:n.charSet)){o.splice(s,1);break b}}r=a.createElement(t),np(r,t,n),a.head.appendChild(r);break;default:throw Error(i(468,t))}r[Mt]=e,Kt(r),t=r}e.stateNode=t}}else ru||Km(o,e.type,e.stateNode)}else e.stateNode=Bm(o,n,e.memoizedProps)}else a===n?n===null&&e.stateNode!==null&&Ml(e,e.memoizedProps,r.memoizedProps):(a===null?(t=r.stateNode,t===null||K||t.parentNode.removeChild(t)):a.count--,n===null?ru||Km(o,e.type,e.stateNode):Bm(o,n,e.memoizedProps))}break;case 27:Du(t,e,n),Au(e),a&512&&(K||r===null||Tl(r,r.return)),r!==null&&a&4&&Ml(e,e.memoizedProps,r.memoizedProps);break;case 5:if(o=iu,iu=!1,Du(t,e,n),iu=o,Au(e),a&512&&(K||r===null||Tl(r,r.return)),e.flags&32){t=e.stateNode;try{bn(t,``),k=!0}catch(t){Z(e,e.return,t)}}a&4&&e.stateNode!=null&&(t=e.memoizedProps,Ml(e,t,r===null?t:r.memoizedProps)),a&1024&&(au=!0);break;case 6:if(Du(t,e,n),Au(e),a&4){if(e.stateNode===null)throw Error(i(162));t=e.memoizedProps,n=e.stateNode;try{n.nodeValue=t,k=!0}catch(t){Z(e,e.return,t)}}break;case 3:if(k=!1,Wm=null,o=Ou,Ou=bm(t.containerInfo),Du(t,e,n),Ou=o,Au(e),a&4&&r!==null&&r.memoizedState.isDehydrated)try{Hh(t.containerInfo)}catch(t){Z(e,e.return,t)}au&&(au=!1,ju(e)),k=!1;break;case 4:a=iu,iu=ru,r=nn(),o=Ou,Ou=bm(e.stateNode.containerInfo),Du(t,e,n),Au(e),Ou=o,k&&lu&&(uu=!0),k=r,iu=a;break;case 12:Du(t,e,n),Au(e);break;case 31:Du(t,e,n),Au(e),a&4&&(t=e.updateQueue,t!==null&&(e.updateQueue=null,Eu(e,t)));break;case 13:Du(t,e,n),Au(e),e.child.flags&8192&&e.memoizedState!==null!=(r!==null&&r.memoizedState!==null)&&(md=Xe()),a&4&&(t=e.updateQueue,t!==null&&(e.updateQueue=null,Eu(e,t)));break;case 22:o=e.memoizedState!==null,s=r!==null&&r.memoizedState!==null;var c=ru,l=K,u=iu;ru=c||o,iu=u||o,K=l||s,Du(t,e,n),K=l,iu=u,ru=c,Au(e),a&8192&&(t=e.stateNode,t._visibility=o?t._visibility&-2:t._visibility|1,!o||r===null||s||ru||K||(t=s||K,n=ru,r=K,ru=o||ru,K=t,Fu(e,2),ru=n,K=r),!o&&iu||hu(e,o)),a&4&&(t=e.updateQueue,t!==null&&(n=t.retryQueue,n!==null&&(t.retryQueue=null,Eu(e,n))));break;case 19:Du(t,e,n),Au(e),a&4&&(t=e.updateQueue,t!==null&&(e.updateQueue=null,Eu(e,t)));break;case 30:a&512&&(K||r===null||Tl(r,r.return)),a=nn(),o=lu,s=(n&335544064)===n,c=e.memoizedProps,lu=s&&Ei(c.default,c.update)!==`none`,Du(t,e,n),Au(e),s&&r!==null&&k&&(e.flags|=4),lu=o,k=a;break;case 21:break;case 7:a&512&&(K||r===null||Tl(r,r.return)),r&&r.stateNode!==null&&(r.stateNode._fragmentFiber=e);default:Du(t,e,n),Au(e)}}function Au(e){var t=e.flags;if(t&2){try{for(var n,r=e.return;r!==null;){if(Nl(r)){n=r;break}r=r.return}r=null;for(var a=e.return;a!==null;){if(Al(a)){var o=a.stateNode;r===null?r=[o]:r.push(o)}if(kl(a))break;a=a.return}var s=r;if(n==null)throw Error(i(160));switch(n.tag){case 27:var c=n.stateNode;Il(e,Pl(e),c,s);break;case 5:var l=n.stateNode;n.flags&32&&(bn(l,``),n.flags&=-33),Il(e,Pl(e),l,s);break;case 3:case 4:var u=n.stateNode.containerInfo;Fl(e,Pl(e),u,s);break;default:throw Error(i(161))}}catch(t){Z(e,e.return,t)}e.flags&=-3}t&4096&&(e.flags&=-4097)}function ju(e){if(e.subtreeFlags&1024)for(e=e.child;e!==null;){var t=e;ju(t),t.tag===5&&t.flags&1024&&(t=t.stateNode,gh=!0,t.reset(),gh=!1),e=e.sibling}}function Mu(e,t){if(t.subtreeFlags&9270)for(t=t.child;t!==null;)Nu(t,e),t=t.sibling;else nu(t,!1)}function Nu(e,t){var n=e.alternate;if(n===null)Jl(e,!1);else switch(e.tag){case 3:if(du=cu=!1,Hl(),Mu(t,e),!cu&&!uu){if(e=Vl,e!==null)for(var r=0;r<e.length;r+=3){n=e[r];var i=e[r+1];Ep(n,e[r+2]),n=n.ownerDocument.documentElement,n!==null&&n.animate({opacity:[0,0],pointerEvents:[`none`,`none`]},{duration:0,fill:`forwards`,pseudoElement:`::view-transition-group(`+i+`)`})}e=t.containerInfo,e=e.nodeType===9?e.documentElement:e.ownerDocument.documentElement,e!==null&&e.style.viewTransitionName===``&&(e.style.viewTransitionName=`none`,e.animate({opacity:[0,0],pointerEvents:[`none`,`none`]},{duration:0,fill:`forwards`,pseudoElement:`::view-transition-group(root)`}),e.animate({width:[0,0],height:[0,0]},{duration:0,fill:`forwards`,pseudoElement:`::view-transition`})),du=!0}Vl=null;break;case 5:Mu(t,e);break;case 4:r=cu,cu=!1,Mu(t,e),cu&&(uu=!0),cu=r;break;case 22:e.memoizedState===null&&(n.memoizedState===null?Mu(t,e):Jl(e,!1));break;case 30:r=cu,i=Hl(),cu=!1,Mu(t,e),cu&&(e.flags|=4);var a=e.memoizedProps,o=e.stateNode;t=wi(a,o),o=wi(n.memoizedProps,o);var s=Ei(a.default,a.update);s===`none`?t=!1:(a=n.memoizedState,n.memoizedState=null,n=e.child,Ul=0,t=tu(e,n,t,o,s,a,!0),Ul!==(a===null?0:a.length)&&(e.flags|=32)),e.flags&4&&t?(Nd(e,e.memoizedProps.onUpdate),Vl=i):i!==null&&(i.push.apply(i,Vl),Vl=i),cu=e.flags&32?!0:r;break;default:Mu(t,e)}}function Pu(e,t){if(t.subtreeFlags&8772)for(t=t.child;t!==null;)mu(e,t.alternate,t),t=t.sibling}function Fu(e,t){for(e=e.child;e!==null;){var n=e,r=t;switch(n.tag){case 0:case 11:case 14:case 15:xl(4,n,n.return),Fu(n,r);break;case 1:Tl(n,n.return);var i=n.stateNode;typeof i.componentWillUnmount==`function`&&Cl(n,n.return,i),Fu(n,r);break;case 27:r&2&&gm(n.stateNode,n.type,n.memoizedProps);case 5:Tl(n,n.return),n.tag!==5&&n.tag!==27||Ol(n),Fu(n,r);break;case 6:Ol(n);break;case 26:Tl(n,n.return),i=n.stateNode,n.memoizedState!==null||i===null||K||i.parentNode.removeChild(i),Fu(n,r);break;case 22:n.memoizedState===null&&Fu(n,r);break;case 30:Tl(n,n.return),Fu(n,r);break;case 7:Tl(n,n.return);default:Fu(n,r)}e=e.sibling}}function Iu(e,t,n){for(n=t.subtreeFlags&8772?n:n&-2,t=t.child;t!==null;){var r=t.alternate,i=e,a=t,o=a.flags,s=!!(n&1);switch(a.tag){case 0:case 11:case 15:Iu(i,a,n),bl(4,a);break;case 1:if(Iu(i,a,n),r=a,i=r.stateNode,typeof i.componentDidMount==`function`)try{i.componentDidMount()}catch(e){Z(r,r.return,e)}if(r=a,i=r.updateQueue,i!==null){var c=r.stateNode;try{var l=i.shared.hiddenCallbacks;if(l!==null)for(i.shared.hiddenCallbacks=null,i=0;i<l.length;i++)xo(l[i],c)}catch(e){Z(r,r.return,e)}}s&&o&64&&Sl(a),wl(a,a.return);break;case 27:n&2&&Ll(a);case 5:a.tag!==5&&a.tag!==27||Dl(a),Iu(i,a,n),s&&r===null&&o&4&&jl(a),wl(a,a.return);break;case 6:Dl(a);break;case 26:c=a.stateNode,a.memoizedState!==null||c===null||ru||Km(bm(c.ownerDocument),a.type,c),Iu(i,a,n),s&&r===null&&o&4&&jl(a),wl(a,a.return);break;case 12:Iu(i,a,n);break;case 31:Iu(i,a,n),s&&o&4&&Cu(i,a);break;case 13:Iu(i,a,n),s&&o&4&&wu(i,a);break;case 22:a.memoizedState===null&&Iu(i,a,n),wl(a,a.return);break;case 30:Iu(i,a,n),wl(a,a.return);break;case 7:wl(a,a.return);default:Iu(i,a,n)}t=t.sibling}}function Lu(e,t){var n=null;e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),e=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(e=t.memoizedState.cachePool.pool),e!==n&&(e!=null&&e.refCount++,n!=null&&La(n))}function Ru(e,t){e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&La(e))}function zu(e,t,n,r){var i=(n&335544064)===n;if(t.subtreeFlags&(i?10262:10256))for(t=t.child;t!==null;)Bu(e,t,n,r),t=t.sibling;else i&&eu(t)}function Bu(e,t,n,r){var i=(n&335544064)===n;i&&t.alternate===null&&t.return!==null&&t.return.alternate!==null&&$l(t);var a=t.flags;switch(t.tag){case 0:case 11:case 15:zu(e,t,n,r),a&2048&&bl(9,t);break;case 1:zu(e,t,n,r);break;case 3:zu(e,t,n,r),i&&du&&(e=e.containerInfo,e=e.nodeType===9?e.body:e.nodeName===`HTML`?e.ownerDocument.body:e,e.style.viewTransitionName===`root`&&(e.style.viewTransitionName=``),e=e.ownerDocument.documentElement,e!==null&&e.style.viewTransitionName===`none`&&(e.style.viewTransitionName=``)),a&2048&&(a=null,t.alternate!==null&&(a=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==a&&(t.refCount++,a!=null&&La(a)));break;case 12:if(a&2048){zu(e,t,n,r),a=t.stateNode;try{var o=t.memoizedProps,s=o.id,c=o.onPostCommit;typeof c==`function`&&c(s,t.alternate===null?`mount`:`update`,a.passiveEffectDuration,-0)}catch(e){Z(t,t.return,e)}}else zu(e,t,n,r);break;case 31:zu(e,t,n,r);break;case 13:zu(e,t,n,r);break;case 23:break;case 22:o=t.stateNode,s=t.alternate,t.memoizedState===null?(i&&s!==null&&s.memoizedState!==null&&$l(t),o._visibility&2?zu(e,t,n,r):(o._visibility|=2,Vu(e,t,n,r,!!(t.subtreeFlags&10256)||!1))):(i&&s!==null&&s.memoizedState===null&&$l(s),o._visibility&2?zu(e,t,n,r):Hu(e,t)),a&2048&&Lu(s,t);break;case 24:zu(e,t,n,r),a&2048&&Ru(t.alternate,t);break;case 30:i&&(a=t.alternate,a!==null&&(Kl(a.child,!0),Kl(t.child,!0))),zu(e,t,n,r);break;default:zu(e,t,n,r)}}function Vu(e,t,n,r,i){for(i&&=!!(t.subtreeFlags&10256)||!1,t=t.child;t!==null;){var a=e,o=t,s=n,c=r,l=o.flags;switch(o.tag){case 0:case 11:case 15:Vu(a,o,s,c,i),bl(8,o);break;case 23:break;case 22:var u=o.stateNode;o.memoizedState===null?(u._visibility|=2,Vu(a,o,s,c,i)):u._visibility&2?Vu(a,o,s,c,i):Hu(a,o),i&&l&2048&&Lu(o.alternate,o);break;case 24:Vu(a,o,s,c,i),i&&l&2048&&Ru(o.alternate,o);break;default:Vu(a,o,s,c,i)}t=t.sibling}}function Hu(e,t){if(t.subtreeFlags&10256)for(t=t.child;t!==null;){var n=e,r=t,i=r.flags;switch(r.tag){case 22:Hu(n,r),i&2048&&Lu(r.alternate,r);break;case 24:Hu(n,r),i&2048&&Ru(r.alternate,r);break;default:Hu(n,r)}t=t.sibling}}var Uu=8192;function Wu(e,t,n){if(e.subtreeFlags&Uu)for(e=e.child;e!==null;)Gu(e,t,n),e=e.sibling}function Gu(e,t,n){switch(e.tag){case 26:Wu(e,t,n),e.flags&Uu&&(e.memoizedState===null?(e=e.stateNode,(t&335544128)===t&&Zm(n,e)):Qm(n,Ou,e.memoizedState,e.memoizedProps));break;case 5:Wu(e,t,n),e.flags&Uu&&(e=e.stateNode,(t&335544128)===t&&Zm(n,e));break;case 3:case 4:var r=Ou;Ou=bm(e.stateNode.containerInfo),Wu(e,t,n),Ou=r;break;case 22:e.memoizedState===null&&(r=e.alternate,r!==null&&r.memoizedState!==null?(r=Uu,Uu=16777216,Wu(e,t,n),Uu=r):Wu(e,t,n));break;case 30:if((e.flags&Uu)!==0&&(r=e.memoizedProps.name,r!=null&&r!==`auto`)){var i=e.stateNode;i.paired=null,zl===null&&(zl=new Map),zl.set(r,i)}Wu(e,t,n);break;default:Wu(e,t,n)}}function Ku(e){var t=e.alternate;if(t!==null&&(e=t.child,e!==null)){t.child=null;do t=e.sibling,e.sibling=null,e=t;while(e!==null)}}function qu(e){var t=e.deletions;if(e.flags&16){if(t!==null)for(var n=0;n<t.length;n++){var r=t[n];su=r,Xu(r,e)}Ku(e)}if(e.subtreeFlags&10256)for(e=e.child;e!==null;)Ju(e),e=e.sibling}function Ju(e){switch(e.tag){case 0:case 11:case 15:qu(e),e.flags&2048&&xl(9,e,e.return);break;case 3:qu(e);break;case 12:qu(e);break;case 22:var t=e.stateNode;e.memoizedState!==null&&t._visibility&2&&(e.return===null||e.return.tag!==13)?(t._visibility&=-3,Yu(e)):qu(e);break;default:qu(e)}}function Yu(e){var t=e.deletions;if(e.flags&16){if(t!==null)for(var n=0;n<t.length;n++){var r=t[n];su=r,Xu(r,e)}Ku(e)}for(e=e.child;e!==null;){switch(t=e,t.tag){case 0:case 11:case 15:xl(8,t,t.return),Yu(t);break;case 22:n=t.stateNode,n._visibility&2&&(n._visibility&=-3,Yu(t));break;default:Yu(t)}e=e.sibling}}function Xu(e,t){for(;su!==null;){var n=su;switch(n.tag){case 0:case 11:case 15:xl(8,n,t);break;case 23:case 22:if(n.memoizedState!==null&&n.memoizedState.cachePool!==null){var r=n.memoizedState.cachePool.pool;r!=null&&r.refCount++}break;case 24:La(n.memoizedState.cache)}if(r=n.child,r!==null)r.return=n,su=r;else a:for(n=e;su!==null;){r=su;var i=r.sibling,a=r.return;if(vu(r),r===n){su=null;break a}if(i!==null){i.return=a,su=i;break a}su=a}}}var Zu={getCacheForType:function(e){var t=ja(I),n=t.data.get(e);return n===void 0&&(n=e(),t.data.set(e,n)),n},cacheSignal:function(){return ja(I).controller.signal}},Qu=typeof WeakMap==`function`?WeakMap:Map,q=0,$u=null,J=null,Y=0,X=0,ed=null,td=!1,nd=!1,rd=!1,id=0,ad=0,od=0,sd=0,cd=0,ld=0,ud=0,dd=null,fd=null,pd=!1,md=0,hd=0,gd=1/0,_d=null,vd=null,yd=0,bd=null,xd=null,Sd=0,Cd=0,wd=null,Td=null,Ed=null,Dd=null,Od=null,kd=0,Ad=null;
9function jd(){return q&2&&Y!==0?Y&-Y:E.T===null?kt():Pf()}function Md(){if(ld===0){if(!(Y&536870912)||N){var e=pt;pt<<=1,!(pt&3932160)&&(pt=262144),ld=e}else ld=536870912}return e=Oo.current,e!==null&&(e.flags|=32),ld}function Nd(e,t){if(t!=null){var n=e.stateNode,r=n.ref;r===null&&(r=n.ref=Pp(wi(e.memoizedProps,n))),Dd===null&&(Dd=[]),Dd.push(t.bind(null,r))}}function Pd(e,t,n){(e===$u&&(X===2||X===9)||e.cancelPendingCommit!==null)&&(Vd(e,0),Rd(e,Y,ld,!1)),St(e,n),(!(q&2)||e!==$u)&&(e===$u&&(!(q&2)&&(sd|=n),ad===4&&Rd(e,Y,ld,!1)),Ef(e))}function Fd(e,t,n){if(q&6)throw Error(i(327));var r=!n&&!(t&127)&&(t&e.expiredLanes)===0||_t(e,t),a=r?Yd(e,t):qd(e,t,!0),o=r;do{if(a===0){nd&&!r&&Rd(e,t,0,!1);break}if(n=e.current.alternate,o&&!Ld(n)){a=qd(e,t,!1),o=!1;continue}if(a===2){if(o=t,e.errorRecoveryDisabledLanes&o)var s=0;else s=e.pendingLanes&-536870913,s=s===0?s&536870912?536870912:0:s;if(s!==0){t=s;a:{var c=e;a=dd;var l=c.current.memoizedState.isDehydrated;if(l&&(Vd(c,s).flags|=256),s=qd(c,s,!1),s!==2&&s!==6){if(rd&&!l){c.errorRecoveryDisabledLanes|=o,sd|=o,a=4;break a}o=fd,fd=a,o!==null&&(fd===null?fd=o:fd.push.apply(fd,o))}a=s}if(o=!1,a!==2)continue}}if(a===1){Vd(e,0),Rd(e,t,0,!0);break}a:{switch(r=e,o=a,o){case 0:case 1:throw Error(i(345));case 4:if((t&4194048)!==t&&(t&62914560)!==t)break;case 6:Rd(r,t,ld,!td);break a;case 2:fd=null;break;case 3:case 5:break;default:throw Error(i(329))}if((t&62914560)===t&&(a=md+300-Xe(),10<a)){if(Rd(r,t,ld,!td),gt(r,0,!0)!==0)break a;Sd=t,r.timeoutHandle=gp(Id.bind(null,r,n,fd,_d,pd,t,ld,sd,ud,td,o,`Throttled`,-0,0),a);break a}Id(r,n,fd,_d,pd,t,ld,sd,ud,td,o,null,-0,0)}break}while(1);Ef(e)}function Id(e,t,n,r,i,a,o,s,c,l,u,d,f,p){e.timeoutHandle=-1;var m=t.subtreeFlags,h=(a&335544064)===a;if(d=null,(h||m&8192||(m&16785408)==16785408)&&(d={stylesheets:null,count:0,imgCount:0,imgBytes:0,suspenseyImages:[],waitingForImages:!0,waitingForViewTransition:!1,unsuspend:On},zl=null,Gu(t,a,d),h&&(m=d,h=e.containerInfo,h=(h.nodeType===9?h:h.ownerDocument).__reactViewTransition,h!=null&&(m.count++,m.waitingForViewTransition=!0,m=nh.bind(m),h.finished.then(m,m))),m=(a&62914560)===a?md-Xe():(a&4194048)===a?hd-Xe():0,m=eh(d,m),m!==null)){Sd=a,e.cancelPendingCommit=m(nf.bind(null,e,t,a,n,r,i,o,s,c,l,u,d,null,f,p)),Rd(e,a,o,!l);return}nf(e,t,a,n,r,i,o,s,c,l,u,d)}function Ld(e){for(var t=e;;){var n=t.tag;if((n===0||n===11||n===15)&&t.flags&16384&&(n=t.updateQueue,n!==null&&(n=n.stores,n!==null)))for(var r=0;r<n.length;r++){var i=n[r],a=i.getSnapshot;i=i.value;try{if(!Jr(a(),i))return!1}catch{return!1}}if(n=t.child,t.subtreeFlags&16384&&n!==null)n.return=t,t=n;else{if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}function Rd(e,t,n,r){t=vt(e,t),t&=~cd,t&=~sd,e.suspendedLanes|=t,e.pingedLanes&=~t,r&&(e.warmLanes|=t),r=e.expirationTimes;for(var i=t;0<i;){var a=31-ct(i),o=1<<a;r[a]=-1,i&=~o}n!==0&&wt(e,n,t)}function zd(){return q&6?!0:(Df(0,!1),!1)}function Bd(){if(J!==null){if(X===0)var e=J.return;else e=J,Ca=Sa=null,ns(e),no=null,ro=0,e=J;for(;e!==null;)yl(e.alternate,e),e=e.return;J=null}}function Vd(e,t){var n=e.timeoutHandle;return n!==-1&&(e.timeoutHandle=-1,_p(n)),n=e.cancelPendingCommit,n!==null&&(e.cancelPendingCommit=null,n()),Sd=0,Bd(),$u=e,J=n=Vi(e.current,null),Y=t,X=0,ed=null,td=!1,nd=_t(e,t),rd=!1,ud=ld=cd=sd=od=ad=0,fd=dd=null,pd=!1,id=vt(e,t),ji(),n}function Hd(e,t){W=null,E.H=fc,t===Za||t===z?(t=to(),X=3):t===Qa?(t=to(),X=4):X=t===Ac?8:typeof t==`object`&&t&&typeof t.then==`function`?6:1,ed=t,J===null&&(ad=1,wc(e,Yi(t,e.current)))}function Ud(){var e=Oo.current;return e===null?!0:(Y&4194048)===Y?ko===null:(Y&62914560)===Y||Y&536870912?e===ko:!1}function Wd(){var e=E.H;return E.H=fc,e===null?fc:e}function Gd(){var e=E.A;return E.A=Zu,e}function Kd(){ad=4,td||(Y&4194048)!==Y&&Oo.current!==null||(nd=!0),!(od&134217727)&&!(sd&134217727)||$u===null||Rd($u,Y,ld,!1)}function qd(e,t,n){var r=q;q|=2;var i=Wd(),a=Gd();($u!==e||Y!==t)&&(_d=null,Vd(e,t)),t=!1;var o=ad;a:do try{if(X!==0&&J!==null){var s=J,c=ed;switch(X){case 8:Bd(),o=6;break a;case 3:case 2:case 9:case 6:Oo.current===null&&(t=!0);var l=X;if(X=0,ed=null,$d(e,s,c,l),n&&nd){o=0;break a}break;default:l=X,X=0,ed=null,$d(e,s,c,l)}}Jd(),o=ad;break}catch(t){Hd(e,t)}while(1);return t&&e.shellSuspendCounter++,Ca=Sa=null,q=r,E.H=i,E.A=a,J===null&&($u=null,Y=0,ji()),o}function Jd(){for(;J!==null;)Zd(J)}function Yd(e,t){var n=q;q|=2;var r=Wd(),a=Gd();
vendor: 5,095 bytes, line 9
9$u!==e||Y!==t?(_d=null,gd=Xe()+500,Vd(e,t)):nd=_t(e,t);a:do try{if(X!==0&&J!==null){t=J;var o=ed;b:switch(X){case 1:X=0,ed=null,$d(e,t,o,1);break;case 2:case 9:if($a(o)){X=0,ed=null,Qd(t);break}t=function(){X!==2&&X!==9||$u!==e||(X=7),Ef(e)},o.then(t,t);break a;case 3:X=7;break a;case 4:X=5;break a;case 7:$a(o)?(X=0,ed=null,Qd(t)):(X=0,ed=null,$d(e,t,o,7));break;case 5:var s=null;switch(J.tag){case 26:s=J.memoizedState;case 5:case 27:var c=J;if(s?Ym(s):c.stateNode.complete){X=0,ed=null;var l=c.sibling;if(l!==null)J=l;else{var u=c.return;u===null?J=null:(J=u,ef(u))}break b}}X=0,ed=null,$d(e,t,o,5);break;case 6:X=0,ed=null,$d(e,t,o,6);break;case 8:Bd(),ad=6;break a;default:throw Error(i(462))}}Xd();break}catch(t){Hd(e,t)}while(1);return Ca=Sa=null,E.H=r,E.A=a,q=n,J===null?($u=null,Y=0,ji(),ad):0}function Xd(){for(;J!==null&&!Je();)Zd(J)}function Zd(e){var t=ul(e.alternate,e,id);e.memoizedProps=e.pendingProps,t===null?ef(e):J=t}function Qd(e){var t=e,n=t.alternate;switch(t.tag){case 15:case 0:t=Wc(n,t,t.pendingProps,t.type,void 0,Y);break;case 11:t=Wc(n,t,t.pendingProps,t.type.render,t.ref,Y);break;case 5:ns(t);var r=t;r===ua&&(N?(_a(r),r.tag===5&&r.stateNode!=null&&(da=r.stateNode)):(_a(r),N=!0));default:yl(n,t),t=J=Hi(t,id),t=ul(n,t,id)}e.memoizedProps=e.pendingProps,t===null?ef(e):J=t}function $d(e,t,n,r){Ca=Sa=null,ns(t),no=null,ro=0;var i=t.return;try{if(kc(e,i,t,n,Y)){ad=1,wc(e,Yi(n,e.current)),J=null;return}}catch(t){if(i!==null)throw J=i,t;ad=1,wc(e,Yi(n,e.current)),J=null;return}t.flags&32768?(N||r===1?e=!0:nd||Y&536870912?e=!1:(td=e=!0,(r===2||r===9||r===3||r===6)&&(r=Oo.current,r!==null&&r.tag===13&&(r.flags|=16384))),tf(t,e)):ef(t)}function ef(e){var t=e;do{if(t.flags&32768){tf(t,td);return}e=t.return;var n=_l(t.alternate,t,id);if(n!==null){J=n;return}if(t=t.sibling,t!==null){J=t;return}J=t=e}while(t!==null);ad===0&&(ad=5)}function tf(e,t){do{var n=vl(e.alternate,e);if(n!==null){n.flags&=32767,J=n;return}if(n=e.return,n!==null&&(n.flags|=32768,n.subtreeFlags=0,n.deletions=null),!t&&(e=e.sibling,e!==null)){J=e;return}J=e=n}while(e!==null);ad=6,J=null}function nf(e,t,n,r,a,o,s,c,l,u,d,f){e.cancelPendingCommit=null;do df();while(yd!==0);if(q&6)throw Error(i(327));if(t!==null){if(t===e.current)throw Error(i(177));e===$u&&(J=$u=null,Y=0),xd=t,bd=e,Sd=n,wd=a,Td=r,rf(e,t,n,s,c,l,f)}}function rf(e,t,n,r,i,a,o){var s=t.lanes|t.childLanes;if(Cd=s,s|=Ai,Ct(e,n,s,r,i,a),Dd=null,(n&335544064)===n?(Od=Ba(e),r=10262):(Od=null,r=10256),(t.subtreeFlags&r)!==0||(t.flags&r)!==0?(e.callbackNode=null,e.callbackPriority=0,yf(et,function(){return ff(),null})):(e.callbackNode=null,e.callbackPriority=0),Rl=!1,r=!!(t.flags&13878),t.subtreeFlags&13878||r){r=E.T,E.T=null,i=D.p,D.p=2,a=q,q|=4;try{fu(e,t,n)}finally{q=a,D.p=i,E.T=r}}yd=1,Rl?Ed=Mp(o,e.containerInfo,Od,sf,cf,of,lf,ff,af,null,null):(sf(),cf(),lf())}function af(e){if(yd!==0){var t=bd.onRecoverableError;t(e,{componentStack:null})}}function of(){yd===3&&(yd=0,Nu(xd,bd),yd=4)}function sf(){if(yd===1){yd=0;var e=bd,t=xd,n=Sd,r=!!(t.flags&13878);if(t.subtreeFlags&13878||r){r=E.T,E.T=null;var i=D.p;D.p=2;var a=q;q|=4;try{lu=uu=!1,ku(t,e,n),n=cp;var o=ei(e.containerInfo),s=n.focusedElem,c=n.selectionRange;if(o!==s&&s&&s.ownerDocument&&$r(s.ownerDocument.documentElement,s)){if(c!==null&&ti(s)){var l=c.start,u=c.end;if(u===void 0&&(u=l),`selectionStart`in s)s.selectionStart=l,s.selectionEnd=Math.min(u,s.value.length);else{var d=s.ownerDocument||document,f=d&&d.defaultView||window;if(f.getSelection){var p=f.getSelection(),m=s.textContent.length,h=Math.min(c.start,m),g=c.end===void 0?h:Math.min(c.end,m);!p.extend&&h>g&&(o=g,g=h,h=o);var _=Qr(s,h),v=Qr(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;s<d.length;s++){var b=d[s];b.element.scrollLeft=b.left,b.element.scrollTop=b.top}}gh=!!sp,cp=sp=null}finally{q=a,D.p=i,E.T=r}}e.current=t,yd=2}}function cf(){if(yd===2){yd=0;var e=bd,t=xd,n=!!(t.flags&8772);if(t.subtreeFlags&8772||n){n=E.T,E.T=null;var r=D.p;D.p=2;var i=q;q|=4;try{mu(e,t.alternate,t)}finally{q=i,D.p=r,E.T=n}}yd=3}}function lf(){if(yd===4||yd===3){yd=0;var e=Ed;Ed=null,Ye();var t=bd,n=xd,r=Sd,i=Td,a=(r&335544064)===r?10262:10256;if((n.subtreeFlags&a)!==0||(n.flags&a)!==0?yd=5:(yd=0,xd=bd=null,uf(t,t.pendingLanes)),a=t.pendingLanes,a===0&&(vd=null),Ot(r),n=n.stateNode,ot&&typeof ot.onCommitFiberRoot==`function`)try{ot.onCommitFiberRoot(at,n,void 0,(n.current.flags&128)==128)}catch{}if(i!==null){n=E.T,a=D.p,D.p=2,E.T=null;try{for(var o=t.onRecoverableError,s=0;s<i.length;s++){var c=i[s];o(c.value,{componentStack:c.stack})}}finally{E.T=n,D.p=a}}if(i=Dd,o=Od,Od=null,i!==null&&(Dd=null,o===null&&(o=[]),e!==null))for(c=0;c<i.length;c++)n=(0,i[c])(o),n!==void 0&&e.finished.finally(n);
vendor: 5,385 bytes, line 9
9Sd&3&&df(),Ef(t),a=t.pendingLanes,r&261930&&a&42?t===Ad?kd++:(kd=0,Ad=t):(kd=0,Ad=null),Df(0,!1)}}function uf(e,t){(e.pooledCacheLanes&=t)===0&&(t=e.pooledCache,t!=null&&(e.pooledCache=null,La(t)))}function df(){return Ed!==null&&(Ed.skipTransition(),Ed=null),sf(),cf(),lf(),ff()}function ff(){if(yd!==5)return!1;var e=bd,t=Cd;Cd=0;var n=Ot(Sd),r=E.T,a=D.p;try{D.p=32>n?32:n,E.T=null,n=wd,wd=null;var o=bd,s=Sd;if(yd=0,xd=bd=null,Sd=0,q&6)throw Error(i(331));var c=q;if(q|=4,Ju(o.current),Bu(o,o.current,s,n),q=c,Df(0,!1),ot&&typeof ot.onPostCommitFiberRoot==`function`)try{ot.onPostCommitFiberRoot(at,o)}catch{}return!0}finally{D.p=a,E.T=r,uf(e,t)}}function pf(e,t,n){t=Yi(n,t),t=Ec(e.stateNode,t,2),e=ho(e,t,2),e!==null&&(St(e,2),Ef(e))}function Z(e,t,n){if(e.tag===3)pf(e,e,n);else for(;t!==null;){if(t.tag===3){pf(t,e,n);break}if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(vd===null||!vd.has(r))){e=Yi(n,e),n=Dc(2),r=ho(t,n,2),r!==null&&(Oc(n,r,t,e),St(r,2),Ef(r));break}}t=t.return}}function mf(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new Qu;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(rd=!0,i.add(n),e=hf.bind(null,e,t,n),t.then(e,e))}function hf(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,$u===e&&(Y&n)===n&&(ad===4||ad===3&&(Y&62914560)===Y&&300>Xe()-md?q&2?cd|=n:Vd(e,0):cd|=n,ud===Y&&(ud=0)),Ef(e)}function gf(e,t){t===0&&(t=bt()),e=Pi(e,t),e!==null&&(St(e,t),Ef(e))}function _f(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),gf(e,n)}function vf(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;a!==null&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}r!==null&&r.delete(t),gf(e,n)}function yf(e,t){return Ke(e,t)}var bf=null,xf=null,Sf=!1,Cf=!1,wf=!1,Tf=0;function Ef(e){e!==xf&&e.next===null&&(xf===null?bf=xf=e:xf=xf.next=e),Cf=!0,Sf||(Sf=!0,Nf())}function Df(e,t){if(!wf&&Cf){wf=!0;do for(var n=!1,r=bf;r!==null;){if(!t){if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-ct(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,Mf(r,a))}else a=Y,a=gt(r,r===$u?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||_t(r,a)||(n=!0,Mf(r,a))}r=r.next}while(n);wf=!1}}function Of(){kf()}function kf(){Cf=Sf=!1;var e=0;Tf!==0&&hp()&&(e=Tf);for(var t=Xe(),n=null,r=bf;r!==null;){var i=r.next,a=Af(r,t);a===0?(r.next=null,n===null?bf=i:n.next=i,i===null&&(xf=n)):(n=r,(e!==0||a&3)&&(Cf=!0)),r=i}yd!==0&&yd!==5||Df(e,!1),Tf!==0&&(Tf=0)}function Af(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0<a;){var o=31-ct(a),s=1<<o,c=i[o];c===-1?((s&n)===0||(s&r)!==0)&&(i[o]=yt(s,t)):c<=t&&(e.expiredLanes|=s),a&=~s}if(t=$u,n=Y,n=gt(e,e===t?n:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),r=e.callbackNode,n===0||e===t&&(X===2||X===9)||e.cancelPendingCommit!==null)return r!==null&&r!==null&&qe(r),e.callbackNode=null,e.callbackPriority=0;if(!(n&3)||_t(e,n)){if(t=n&-n,t===e.callbackPriority)return t;switch(r!==null&&qe(r),Ot(n)){case 2:case 8:n=$e;break;case 32:n=et;break;case 268435456:n=nt;break;default:n=et}return r=jf.bind(null,e),n=Ke(n,r),e.callbackPriority=t,e.callbackNode=n,t}return r!==null&&r!==null&&qe(r),e.callbackPriority=2,e.callbackNode=null,2}function jf(e,t){if(yd!==0&&yd!==5)return e.callbackNode=null,e.callbackPriority=0,null;var n=e.callbackNode;if(df()&&e.callbackNode!==n)return null;var r=Y;return r=gt(e,e===$u?r:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),r===0?null:(Fd(e,r,t),Af(e,Xe()),e.callbackNode!=null&&e.callbackNode===n?jf.bind(null,e):null)}function Mf(e,t){if(df())return null;Fd(e,t,!0)}function Nf(){bp(function(){q&6?Ke(Qe,Of):kf()})}function Pf(){if(Tf===0){var e=Ha;e===0&&(e=ft,ft<<=1,!(ft&261888)&&(ft=256)),Tf=e}return Tf}function Ff(e){return e==null||typeof e==`symbol`||typeof e==`boolean`?null:typeof e==`function`?e:Dn(e)}function If(e,t,n,r,i){if(t===`submit`&&n&&n.stateNode===i){var a=Ff((i[Nt]||null).action),o=r.submitter;o&&(t=(t=o[Nt]||null)?Ff(t.formAction):o.getAttribute(`formAction`),t!==null&&(a=t,o=null));var s=new Yn(`action`,`action`,null,r,i);e.push({event:s,listeners:[{instance:null,listener:function(){if(r.defaultPrevented){if(Tf!==0){var e=new FormData(i,o);Qs(n,{pending:!0,data:e,method:i.method,action:a},null,e)}}else typeof a==`function`&&(s.preventDefault(),e=new FormData(i,o),Qs(n,{pending:!0,data:e,method:i.method,action:a},a,e))},currentTarget:i}]})}}for(var Lf=0;Lf<xi.length;Lf++){var Rf=xi[Lf];Si(Rf.toLowerCase(),`on`+(Rf[0].toUpperCase()+Rf.slice(1)))}Si(pi,`onAnimationEnd`),Si(mi,`onAnimationIteration`),Si(hi,`onAnimationStart`),Si(`dblclick`,`onDoubleClick`),Si(`focusin`,`onFocus`),Si(`focusout`,`onBlur`),Si(gi,`onTransitionRun`),Si(_i,`onTransitionStart`),Si(vi,`onTransitionCancel`),Si(yi,`onTransitionEnd`),Zt(`onMouseEnter`,[`mouseout`,`mouseover`]),Zt(`onMouseLeave`,[`mouseout`,`mouseover`]),Zt(`onPointerEnter`,[`pointerout`,`pointerover`]),Zt(`onPointerLeave`,[`pointerout`,`pointerover`]),Xt(`onChange`,`change click focusin focusout input keydown keyup selectionchange`.split(` `)),Xt(`onSelect`,`focusout contextmenu dragend focu
9sin keydown keyup mousedown mouseup selectionchange`.split(` `)),Xt(`onBeforeInput`,[`compositionend`,`keypress`,`textInput`,`paste`]),Xt(`onCompositionEnd`,`compositionend focusout keydown keypress keyup mousedown`.split(` `)),Xt(`onCompositionStart`,`compositionstart focusout keydown keypress keyup mousedown`.split(` `)),Xt(`onCompositionUpdate`,`compositionupdate focusout keydown keypress keyup mousedown`.split(` `));var zf=`abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting`.split(` `),Bf=new Set(`beforetoggle cancel close invalid load scroll scrollend toggle`.split(` `).concat(zf));function Vf(e,t){t=!!(t&4);for(var n=0;n<e.length;n++){var r=e[n],i=r.event;r=r.listeners;a:{var a=void 0;if(t)for(var o=r.length-1;0<=o;o--){var s=r[o],c=s.instance,l=s.currentTarget;if(s=s.listener,c!==a&&i.isPropagationStopped())break a;a=s,i.currentTarget=l;try{a(i)}catch(e){Di(e)}i.currentTarget=null,a=c}else for(o=0;o<r.length;o++){if(s=r[o],c=s.instance,l=s.currentTarget,s=s.listener,c!==a&&i.isPropagationStopped())break a;a=s,i.currentTarget=l;try{a(i)}catch(e){Di(e)}i.currentTarget=null,a=c}}}}function Q(e,t){var n=t[Ft];n===void 0&&(n=t[Ft]=new Set);var r=e+`__bubble`;n.has(r)||(Gf(t,e,2,!1),n.add(r))}function Hf(e,t,n){var r=0;t&&(r|=4),Gf(n,e,r,t)}var Uf=`_reactListening`+Math.random().toString(36).slice(2);function Wf(e){if(!e[Uf]){e[Uf]=!0,Jt.forEach(function(t){t!==`selectionchange`&&(Bf.has(t)||Hf(t,!1,e),Hf(t,!0,e))});var t=e.nodeType===9?e:e.ownerDocument;t===null||t[Uf]||(t[Uf]=!0,Hf(`selectionchange`,!1,t))}}function Gf(e,t,n,r){switch(Ch(t)){case 2:var i=_h;break;case 8:i=vh;break;default:i=yh}n=i.bind(null,t,n,e),i=void 0,!Rn||t!==`touchstart`&&t!==`touchmove`&&t!==`wheel`||(i=!0),r?i===void 0?e.addEventListener(t,n,!0):e.addEventListener(t,n,{capture:!0,passive:i}):i===void 0?e.addEventListener(t,n,!1):e.addEventListener(t,n,{passive:i})}function Kf(e,t,n,r,i){var a=r;if(!(t&1)&&!(t&2)&&r!==null)a:for(;;){if(r===null)return;var o=r.tag;if(o===3||o===4){var c=r.stateNode.containerInfo;if(c===i)break;if(o===4)for(o=r.return;o!==null;){var l=o.tag;if((l===3||l===4)&&o.stateNode.containerInfo===i)return;o=o.return}for(;c!==null;){if(o=Ht(c),o===null)return;if(l=o.tag,l===5||l===6||l===26||l===27){r=a=o;continue a}c=c.parentNode}}r=r.return}Fn(function(){var r=a,i=An(n),o=[];a:{var c=bi.get(e);if(c!==void 0){var l=Yn,u=e;switch(e){case`keypress`:if(Wn(n)===0)break a;case`keydown`:case`keyup`:l=pr;break;case`focusin`:u=`focus`,l=ir;break;case`focusout`:u=`blur`,l=ir;break;case`beforeblur`:case`afterblur`:l=ir;break;case`click`:if(n.button===2)break a;case`auxclick`:case`dblclick`:case`mousedown`:case`mousemove`:case`mouseup`:case`mouseout`:case`mouseover`:case`contextmenu`:l=nr;break;case`drag`:case`dragend`:case`dragenter`:case`dragexit`:case`dragleave`:case`dragover`:case`dragstart`:case`drop`:l=rr;break;case`touchcancel`:case`touchend`:case`touchmove`:case`touchstart`:l=gr;break;case pi:case mi:case hi:l=ar;break;case yi:l=_r;break;case`scroll`:case`scrollend`:l=Zn;break;case`wheel`:l=vr;break;case`copy`:case`cut`:case`paste`:l=or;break;case`gotpointercapture`:case`lostpointercapture`:case`pointercancel`:case`pointerdown`:case`pointermove`:case`pointerout`:case`pointerover`:case`pointerup`:l=mr;break;case`submit`:l=hr;break;case`toggle`:case`beforetoggle`:l=yr}var d=!!(t&4),f=!d&&(e===`scroll`||e===`scrollend`),p=d?c===null?null:c+`Capture`:c;d=[];for(var m=r,h;m!==null;){var g=m;if(h=g.stateNode,g=g.tag,g!==5&&g!==26&&g!==27||h===null||p===null||(g=In(m,p),g!=null&&d.push(qf(m,g,h))),f)break;m=m.return}0<d.length&&(c=new l(c,u,null,n,i),o.push({event:c,listeners:d}))}}if(!(t&7)){a:{if(l=e===`mouseover`||e===`pointerover`,c=e===`mouseout`||e===`pointerout`,l&&n!==kn&&(u=n.relatedTarget||n.fromElement)&&(Ht(u)||u[Pt]))break a;(c||l)&&(u=i.window===i?i:(l=i.ownerDocument)?l.defaultView||l.parentWindow:window,c?(l=n.relatedTarget||n.toElement,c=r,l=l?Ht(l):null,l!==null&&(f=s(l),d=l.tag,l!==f||d!==5&&d!==27&&d!==6)&&(l=null)):(c=null,l=r),c!==l&&(d=nr,g=`onMouseLeave`,p=`onMouseEnter`,m=`mouse`,(e===`pointerout`||e===`pointerover`)&&(d=mr,g=`onPointerLeave`,p=`onPointerEnter`,m=`pointer`),f=c==null?u:Wt(c),h=l==null?u:Wt(l),u=new d(g,m+`leave`,c,n,i),u.target=f,u.relatedTarget=h,g=null,Ht(i)===r&&(d=new d(p,m+`enter`,l,n,i),d.target=h,d.relatedTarget=f,g=d),f=g,d=c&&l?te(c,l,Yf):null,c!==null&&Xf(o,u,c,d,!1),l!==null&&f!==null&&Xf(o,f,l,d,!0)))}a:{if(c=r?Wt(r):window,l=c.nodeName&&c.nodeName.toLowerCase(),l===`select`||l===`input`&&c.type===`file`)var _=Ir;else if(Ar(c)){if(Lr)_=Kr;else{_=Wr;var v=Ur}}else l=c.nodeName,!l||l.toLowerCase()!==`input`||c.type!==`checkbox`&&c.type!==`radio`?r&&wn(r.elementType)&&(_=Ir):_=Gr;if(_&&=_(e,r)){jr(o,_,n,i);break a}v&&v(e,c,r)}switch(v=r?Wt(r):window,e){case`focusin`:(Ar(v)||v.contentEditable===`true`)&&(ri=v,ii=r,ai=null);break;case`focusout`:ai=ii=ri=null;break;case`mousedown`:oi=!0;break;case`contextmenu`:case`mouseup`:case`dragend`:oi=!1,si(o,n,i);break;case`selectionchange`:if(ni)break;case`keydown`:case`keyup`:si(o,n,i)}var y;if(xr)b:{switch(e){case`compositionstart`:var b=`onCompositionStart`;break b;case`compositionend`:b=`onCompositionEnd`;break b;case`compositionupdate`:b=`onCompositionUpdate`;break b}b=void 0}else j?Er(e,n)&&(b=`onCompositionEnd`):e===`keydown`&&n.keyCode===229&&(b=`onCompositionStart`);b&&(wr&&n.locale!==`ko`&&(j||b!==`onCompositionStart`?b===`onCompositionEnd`&&j&&(y=Un()):(Bn=i,Vn=`value`in Bn?Bn.value:Bn.textContent,j=!0)),v=Jf(r,b),0<v.length&&(b=new sr(b,e,null,n,i),o.push({event:b,listeners:v}
vendor: 6,615 bytes, lines 9-10
9),y?b.data=y:(y=Dr(n),y!==null&&(b.data=y)))),(y=Cr?M(e,n):Or(e,n))&&(b=Jf(r,`onBeforeInput`),0<b.length&&(v=new sr(`onBeforeInput`,`beforeinput`,null,n,i),o.push({event:v,listeners:b}),v.data=y)),If(o,e,r,n,i)}Vf(o,t)})}function qf(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Jf(e,t){for(var n=t+`Capture`,r=[];e!==null;){var i=e,a=i.stateNode;if(i=i.tag,i!==5&&i!==26&&i!==27||a===null||(i=In(e,n),i!=null&&r.unshift(qf(e,i,a)),i=In(e,t),i!=null&&r.push(qf(e,i,a))),e.tag===3)return r;e=e.return}return[]}function Yf(e){if(e===null)return null;do e=e.return;while(e&&e.tag!==5&&e.tag!==27);return e||null}function Xf(e,t,n,r,i){for(var a=t._reactName,o=[];n!==null&&n!==r;){var s=n,c=s.alternate,l=s.stateNode;if(s=s.tag,c!==null&&c===r)break;s!==5&&s!==26&&s!==27||l===null||(c=l,i?(l=In(n,a),l!=null&&o.unshift(qf(n,l,c))):i||(l=In(n,a),l!=null&&o.push(qf(n,l,c)))),n=n.return}o.length!==0&&e.push({event:t,listeners:o})}var Zf=/\r\n?/g,Qf=/\u0000|\uFFFD/g;function $f(e){return(typeof e==`string`?e:``+e).replace(Zf,` 10`).replace(Qf,``)}function ep(e,t){return t=$f(t),$f(e)===t}function $(e,t,n,r,a,o){switch(n){case`children`:if(typeof r==`string`)t===`body`||t===`textarea`&&r===``||bn(e,r);else if(typeof r==`number`||typeof r==`bigint`)t!==`body`&&bn(e,``+r);else return;break;case`className`:an(e,`class`,r);break;case`tabIndex`:an(e,`tabindex`,r);break;case`dir`:case`role`:case`viewBox`:case`width`:case`height`:an(e,n,r);break;case`style`:Cn(e,r,o);return;case`data`:if(t!==`object`){an(e,`data`,r);break}case`src`:case`href`:if(r===``&&(t!==`a`||n!==`href`)){e.removeAttribute(n);break}if(r==null||typeof r==`function`||typeof r==`symbol`||typeof r==`boolean`){e.removeAttribute(n);break}r=Dn(r),e.setAttribute(n,r);break;case`action`:case`formAction`:if(typeof r==`function`){e.setAttribute(n,`javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')`);break}if(typeof o==`function`&&(n===`formAction`?(t!==`input`&&$(e,t,`name`,a.name,a,null),$(e,t,`formEncType`,a.formEncType,a,null),$(e,t,`formMethod`,a.formMethod,a,null),$(e,t,`formTarget`,a.formTarget,a,null)):($(e,t,`encType`,a.encType,a,null),$(e,t,`method`,a.method,a,null),$(e,t,`target`,a.target,a,null))),r==null||typeof r==`symbol`||typeof r==`boolean`){e.removeAttribute(n);break}r=Dn(r),e.setAttribute(n,r);break;case`onClick`:r!=null&&(e.onclick=On);return;case`onScroll`:r!=null&&Q(`scroll`,e);return;case`onScrollEnd`:r!=null&&Q(`scrollend`,e);return;case`dangerouslySetInnerHTML`:if(r!=null){if(typeof r!=`object`||!(`__html`in r))throw Error(i(61));if(n=r.__html,n!=null){if(a.children!=null)throw Error(i(60));o?.__html!==n&&(e.innerHTML=n)}}break;case`multiple`:e.multiple=r&&typeof r!=`function`&&typeof r!=`symbol`;break;case`muted`:e.muted=r&&typeof r!=`function`&&typeof r!=`symbol`;break;case`suppressContentEditableWarning`:case`suppressHydrationWarning`:case`defaultValue`:case`defaultChecked`:case`innerHTML`:case`ref`:break;case`autoFocus`:break;case`xlinkHref`:if(r==null||typeof r==`function`||typeof r==`boolean`||typeof r==`symbol`){e.removeAttribute(`xlink:href`);break}n=Dn(r),e.setAttributeNS(`http://www.w3.org/1999/xlink`,`xlink:href`,n);break;case`contentEditable`:case`spellCheck`:case`draggable`:case`value`:case`autoReverse`:case`externalResourcesRequired`:case`focusable`:case`preserveAlpha`:r!=null&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,r):e.removeAttribute(n);break;case`inert`:case`allowFullScreen`:case`async`:case`autoPlay`:case`controls`:case`credentialless`:case`default`:case`defer`:case`disabled`:case`disablePictureInPicture`:case`disableRemotePlayback`:case`formNoValidate`:case`hidden`:case`loop`:case`noModule`:case`noValidate`:case`open`:case`playsInline`:case`readOnly`:case`required`:case`reversed`:case`scoped`:case`seamless`:case`itemScope`:r&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,``):e.removeAttribute(n);break;case`capture`:case`download`:!0===r?e.setAttribute(n,``):!1!==r&&r!=null&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,r):e.removeAttribute(n);break;case`cols`:case`rows`:case`size`:case`span`:r!=null&&typeof r!=`function`&&typeof r!=`symbol`&&!isNaN(r)&&1<=r?e.setAttribute(n,r):e.removeAttribute(n);break;case`rowSpan`:case`start`:r==null||typeof r==`function`||typeof r==`symbol`||isNaN(r)?e.removeAttribute(n):e.setAttribute(n,r);break;case`popover`:Q(`beforetoggle`,e),Q(`toggle`,e),rn(e,`popover`,r);break;case`xlinkActuate`:on(e,`http://www.w3.org/1999/xlink`,`xlink:actuate`,r);break;case`xlinkArcrole`:on(e,`http://www.w3.org/1999/xlink`,`xlink:arcrole`,r);break;case`xlinkRole`:on(e,`http://www.w3.org/1999/xlink`,`xlink:role`,r);break;case`xlinkShow`:on(e,`http://www.w3.org/1999/xlink`,`xlink:show`,r);break;case`xlinkTitle`:on(e,`http://www.w3.org/1999/xlink`,`xlink:title`,r);break;case`xlinkType`:on(e,`http://www.w3.org/1999/xlink`,`xlink:type`,r);break;case`xmlBase`:on(e,`http://www.w3.org/XML/1998/namespace`,`xml:base`,r);break;case`xmlLang`:on(e,`http://www.w3.org/XML/1998/namespace`,`xml:lang`,r);break;case`xmlSpace`:on(e,`http://www.w3.org/XML/1998/namespace`,`xml:space`,r);break;case`is`:rn(e,`is`,r);break;case`innerText`:case`textContent`:return;default:if(!(2<n.length)||n[0]!==`o`&&n[0]!==`O`||n[1]!==`n`&&n[1]!==`N`)n=Tn.get(n)||n,rn(e,n,r);else return}k=!0}function tp(e,t,n,r,a,o){switch(n){case`style`:Cn(e,r,o);return;case`dangerouslySetInnerHTML`:if(r!=null){if(typeof r!=`object`||!(`__html`in r))throw Error(i(61));if(n=r.__html,n!=null){if(a.children!=null)throw Error(i(60));o?.__html!==n&&(e.innerHTML=n)}}break;case`children`:if(typeof r==`string`)bn(e,r);else if(typeof r==`number`||typeof r==`bigint`)bn(e,``+r);else return;break;case`onScroll`:r!=null&&Q(`scroll`,e);return;case`onScrollEnd`:r!=null&&Q(`scrollend`,e);return;case`onClick`:r!=null&&(e.onclick=On);return;case`suppressContentEditableWarning`:case`suppressHydrationWarning`:case`innerHTML`:case`ref`:return;case`innerText`:case`textContent`:return;default:if(!Yt.hasOwnProperty(n))a:{if(n[0]===`o`&&n[1]===`n`&&(a=n.endsWith(`Capture`),o=n.slice(2,a?n.length-7:void 0),t=e[Nt]||null,t=t==null?null:t[n],typeof t==`function`&&e.removeEventListener(o,t,a),typeof r==`function`)){typeof t!=`function`&&t!==null&&(n in e?e[n]=null:e.hasAttribute(n)&&e.removeAttribute(n)),e.addEventListener(o,r,a);break a}k=!0,n in e?e[n]=r:!0===r?e.setAttribute(n,``):rn(e,n,r)}return}k=!0}
vendor: 5,091 bytes, line 10
10function np(e,t,n){switch(t){case`div`:case`span`:case`svg`:case`path`:case`a`:case`g`:case`p`:case`li`:break;case`img`:Q(`error`,e),Q(`load`,e);var r=!1,a=!1,o;for(o in n)if(n.hasOwnProperty(o)){var s=n[o];if(s!=null)switch(o){case`src`:r=!0;break;case`srcSet`:a=!0;break;case`children`:case`dangerouslySetInnerHTML`:throw Error(i(137,t));default:$(e,t,o,s,n,null)}}a&&$(e,t,`srcSet`,n.srcSet,n,null),r&&$(e,t,`src`,n.src,n,null);return;case`input`:Q(`invalid`,e);var c=o=s=a=null,l=null,u=null;for(r in n)if(n.hasOwnProperty(r)){var d=n[r];if(d!=null)switch(r){case`name`:a=d;break;case`type`:s=d;break;case`checked`:l=d;break;case`defaultChecked`:u=d;break;case`value`:o=d;break;case`defaultValue`:c=d;break;case`children`:case`dangerouslySetInnerHTML`:if(d!=null)throw Error(i(137,t));break;default:$(e,t,r,d,n,null)}}hn(e,o,c,l,u,s,a,!1);return;case`select`:for(a in Q(`invalid`,e),r=s=o=null,n)if(n.hasOwnProperty(a)&&(c=n[a],c!=null))switch(a){case`value`:o=c;break;case`defaultValue`:s=c;break;case`multiple`:r=c;default:$(e,t,a,c,n,null)}t=o,n=s,e.multiple=!!r,t==null?n!=null&&_n(e,!!r,n,!0):_n(e,!!r,t,!1);return;case`textarea`:for(s in Q(`invalid`,e),o=a=r=null,n)if(n.hasOwnProperty(s)&&(c=n[s],c!=null))switch(s){case`value`:r=c;break;case`defaultValue`:a=c;break;case`children`:o=c;break;case`dangerouslySetInnerHTML`:if(c!=null)throw Error(i(91));break;default:$(e,t,s,c,n,null)}yn(e,r,a,o);return;case`option`:for(l in n)if(n.hasOwnProperty(l)&&(r=n[l],r!=null))switch(l){case`selected`:e.selected=r&&typeof r!=`function`&&typeof r!=`symbol`;break;default:$(e,t,l,r,n,null)}return;case`dialog`:Q(`beforetoggle`,e),Q(`toggle`,e),Q(`cancel`,e),Q(`close`,e);break;case`iframe`:case`object`:Q(`load`,e);break;case`video`:case`audio`:for(r=0;r<zf.length;r++)Q(zf[r],e);break;case`image`:Q(`error`,e),Q(`load`,e);break;case`details`:Q(`toggle`,e);break;case`embed`:case`source`:case`link`:Q(`error`,e),Q(`load`,e);case`area`:case`base`:case`br`:case`col`:case`hr`:case`keygen`:case`meta`:case`param`:case`track`:case`wbr`:case`menuitem`:for(u in n)if(n.hasOwnProperty(u)&&(r=n[u],r!=null))switch(u){case`children`:case`dangerouslySetInnerHTML`:throw Error(i(137,t));default:$(e,t,u,r,n,null)}return;default:if(wn(t)){for(d in n)n.hasOwnProperty(d)&&(r=n[d],r!==void 0&&tp(e,t,d,r,n,void 0));return}}for(c in n)n.hasOwnProperty(c)&&(r=n[c],r!=null&&$(e,t,c,r,n,null))}var rp={};function ip(e,t,n,r){switch(t){case`div`:case`span`:case`svg`:case`path`:case`a`:case`g`:case`p`:case`li`:break;case`input`:var a=null,o=null,s=null,c=null,l=null,u=null,d=null;for(m in n){var f=n[m];if(n.hasOwnProperty(m)&&f!=null)switch(m){case`checked`:break;case`value`:break;case`defaultValue`:l=f;default:r.hasOwnProperty(m)||$(e,t,m,null,r,f)}}for(var p in r){var m=r[p];if(f=n[p],r.hasOwnProperty(p)&&(m!=null||f!=null))switch(p){case`type`:m!==f&&(k=!0),o=m;break;case`name`:m!==f&&(k=!0),a=m;break;case`checked`:m!==f&&(k=!0),u=m;break;case`defaultChecked`:m!==f&&(k=!0),d=m;break;case`value`:m!==f&&(k=!0),s=m;break;case`defaultValue`:m!==f&&(k=!0),c=m;break;case`children`:case`dangerouslySetInnerHTML`:if(m!=null)throw Error(i(137,t));break;default:m!==f&&$(e,t,p,m,r,f)}}mn(e,s,c,l,u,d,o,a);return;case`select`:for(o in m=s=c=p=null,n)if(l=n[o],n.hasOwnProperty(o)&&l!=null)switch(o){case`value`:break;case`multiple`:m=l;default:r.hasOwnProperty(o)||$(e,t,o,null,r,l)}for(a in r)if(o=r[a],l=n[a],r.hasOwnProperty(a)&&(o!=null||l!=null))switch(a){case`value`:o!==l&&(k=!0),p=o;break;case`defaultValue`:o!==l&&(k=!0),c=o;break;case`multiple`:o!==l&&(k=!0),s=o;default:o!==l&&$(e,t,a,o,r,l)}t=c,n=s,r=m,p==null?!!r!=!!n&&(t==null?_n(e,!!n,n?[]:``,!1):_n(e,!!n,t,!0)):_n(e,!!n,p,!1);return;case`textarea`:for(c in m=p=null,n)if(a=n[c],n.hasOwnProperty(c)&&a!=null&&!r.hasOwnProperty(c))switch(c){case`value`:break;case`children`:break;default:$(e,t,c,null,r,a)}for(s in r)if(a=r[s],o=n[s],r.hasOwnProperty(s)&&(a!=null||o!=null))switch(s){case`value`:a!==o&&(k=!0),p=a;break;case`defaultValue`:a!==o&&(k=!0),m=a;break;case`children`:break;case`dangerouslySetInnerHTML`:if(a!=null)throw Error(i(91));break;default:a!==o&&$(e,t,s,a,r,o)}vn(e,p,m);return;case`option`:for(var h in n)if(p=n[h],n.hasOwnProperty(h)&&p!=null&&!r.hasOwnProperty(h))switch(h){case`selected`:e.selected=!1;break;default:$(e,t,h,null,r,p)}for(l in r)if(p=r[l],m=n[l],r.hasOwnProperty(l)&&p!==m&&(p!=null||m!=null))switch(l){case`selected`:p!==m&&(k=!0),e.selected=p&&typeof p!=`function`&&typeof p!=`symbol`;break;default:$(e,t,l,p,r,m)}return;case`img`:case`link`:case`area`:case`base`:case`br`:case`col`:case`embed`:case`hr`:case`keygen`:case`meta`:case`param`:case`source`:case`track`:case`wbr`:case`menuitem`:for(var g in n)p=n[g],n.hasOwnProperty(g)&&p!=null&&!r.hasOwnProperty(g)&&$(e,t,g,null,r,p);for(u in r)if(p=r[u],m=n[u],r.hasOwnProperty(u)&&p!==m&&(p!=null||m!=null))switch(u){case`children`:case`dangerouslySetInnerHTML`:if(p!=null)throw Error(i(137,t));break;default:$(e,t,u,p,r,m)}return;default:if(wn(t)){for(var _ in n)p=n[_],n.hasOwnProperty(_)&&p!==void 0&&!r.hasOwnProperty(_)&&tp(e,t,_,void 0,r,p);
10for(d in r)p=r[d],m=n[d],!r.hasOwnProperty(d)||p===m||p===void 0&&m===void 0||tp(e,t,d,p,r,m);return}}for(var v in n)p=n[v],n.hasOwnProperty(v)&&p!=null&&!r.hasOwnProperty(v)&&$(e,t,v,null,r,p);for(f in r)p=r[f],m=n[f],!r.hasOwnProperty(f)||p===m||p==null&&m==null||$(e,t,f,p,r,m)}function ap(e){switch(e){case`css`:case`script`:case`font`:case`img`:case`image`:case`input`:case`link`:return!0;default:return!1}}function op(){if(typeof performance.getEntriesByType==`function`){for(var e=0,t=0,n=performance.getEntriesByType(`resource`),r=0;r<n.length;r++){var i=n[r],a=i.transferSize,o=i.initiatorType,s=i.duration;if(a&&s&&ap(o)){for(o=0,s=i.responseEnd,r+=1;r<n.length;r++){var c=n[r],l=c.startTime;if(l>s)break;var u=c.transferSize,d=c.initiatorType;u&&ap(d)&&(c=c.responseEnd,o+=u*(c<s?1:(s-l)/(c-l)))}if(--r,t+=8*(a+o)/(i.duration/1e3),e++,10<e)break}}if(0<e)return t/e/1e6}return navigator.connection&&(e=navigator.connection.downlink,typeof e==`number`)?e:5}var sp=null,cp=null;function lp(e){return e.nodeType===9?e:e.ownerDocument}function up(e){switch(e){case`http://www.w3.org/2000/svg`:return 1;case`http://www.w3.org/1998/Math/MathML`:return 2;default:return 0}}function dp(e,t){if(e===0)switch(t){case`svg`:return 1;case`math`:return 2;default:return 0}return e===1&&t===`foreignObject`?0:e}function fp(e,t,n,r){return n=lp(n).createElement(e),n[Mt]=r,n[Nt]=t,np(n,e,t),Kt(n),n}function pp(e,t){return e===`textarea`||e===`noscript`||typeof t.children==`string`||typeof t.children==`number`||typeof t.children==`bigint`||typeof t.dangerouslySetInnerHTML==`object`&&t.dangerouslySetInnerHTML!==null&&t.dangerouslySetInnerHTML.__html!=null}var mp=null;function hp(){var e=window.event;return e&&e.type===`popstate`?e!==mp&&(mp=e,!0):(mp=null,!1)}var gp=typeof setTimeout==`function`?setTimeout:void 0,_p=typeof clearTimeout==`function`?clearTimeout:void 0,vp=typeof Promise==`function`?Promise:void 0,yp=typeof requestAnimationFrame==`function`?requestAnimationFrame:gp,bp=typeof queueMicrotask==`function`?queueMicrotask:vp===void 0?gp:function(e){return vp.resolve(null).then(e).catch(xp)};function xp(e){setTimeout(function(){throw e})}function Sp(e){return e===`head`}function Cp(e,t){var n=t,r=0;do{var i=n.nextSibling;if(e.removeChild(n),i&&i.nodeType===8){if(n=i.data,n===`/$`||n===`/&`){if(r===0){e.removeChild(i),Hh(t);return}r--}else if(n===`$`||n===`$?`||n===`$~`||n===`$!`||n===`&`)r++;else if(n===`html`)_m(e.ownerDocument.documentElement);else if(n===`head`){n=e.ownerDocument.head,_m(n);for(var a=n.firstChild;a;){var o=a.nextSibling,s=a.nodeName;a[zt]||s===`SCRIPT`||s===`STYLE`||s===`LINK`&&a.rel.toLowerCase()===`stylesheet`||n.removeChild(a),a=o}}else n===`body`&&_m(e.ownerDocument.body)}n=i}while(n);Hh(t)}function wp(e,t){var n=e;e=0;do{var r=n.nextSibling;if(n.nodeType===1?t?(n._stashedDisplay=n.style.display,n.style.display=`none`):(n.style.display=n._stashedDisplay||``,n.getAttribute(`style`)===``&&n.removeAttribute(`style`)):n.nodeType===3&&(t?(n._stashedText=n.nodeValue,n.nodeValue=``):n.nodeValue=n._stashedText||``),r&&r.nodeType===8){if(n=r.data,n===`/$`){if(e===0)break;e--}else n!==`$`&&n!==`$?`&&n!==`$~`&&n!==`$!`||e++}n=r}while(n)}function Tp(e,t,n){if(t=CSS.escape(t)===t?t:`r-`+btoa(t).replace(/=/g,``),e.style.viewTransitionName=t,n!=null&&(e.style.viewTransitionClass=n),n=getComputedStyle(e),n.display===`inline`){if(t=e.getClientRects(),t.length===1)var r=1;else for(var i=r=0;i<t.length;i++){var a=t[i];0<a.width&&0<a.height&&r++}r===1&&(e=e.style,e.display=t.length===1?`inline-block`:`block`,e.marginTop=`-`+n.paddingTop,e.marginBottom=`-`+n.paddingBottom)}}function Ep(e,t){e=e.style,t=t.style;var n=t==null?null:t.hasOwnProperty(`viewTransitionName`)?t.viewTransitionName:t.hasOwnProperty(`view-transition-name`)?t[`view-transition-name`]:null;e.viewTransitionName=n==null||typeof n==`boolean`?``:(``+n).trim(),n=t==null?null:t.hasOwnProperty(`viewTransitionClass`)?t.viewTransitionClass:t.hasOwnProperty(`view-transition-class`)?t[`view-transition-class`]:null,e.viewTransitionClass=n==null||typeof n==`boolean`?``:(``+n).trim(),e.display===`inline-block`&&(t==null?e.display=e.margin=``:(n=t.display,e.display=n==null||typeof n==`boolean`?``:n,n=t.margin,n==null?(n=t.hasOwnProperty(`marginTop`)?t.marginTop:t[`margin-top`],e.marginTop=n==null||typeof n==`boolean`?``:n,t=t.hasOwnProperty(`marginBottom`)?t.marginBottom:t[`margin-bottom`],e.marginBottom=t==null||typeof t==`boolean`?``:t):e.margin=n))}function Dp(e,t,n){return n=n.ownerDocument.defaultView,{rect:e,abs:t.position===`absolute`||t.position===`fixed`,clip:t.clipPath!==`none`||t.overflow!==`visible`||t.filter!==`none`||t.mask!==`none`||t.mask!==`none`||t.borderRadius!==`0px`,view:0<=e.bottom&&0<=e.right&&e.top<=n.innerHeight&&e.left<=n.innerWidth}}function Op(e){return Dp(e.getBoundingClientRect(),getComputedStyle(e),e)}function kp(e){var t=e.getBoundingClientRect();t=new DOMRect(t.x+2e4,t.y+2e4,t.width,t.height);var n=getComputedStyle(e);return Dp(t,n,e)}function Ap(e){return e.documentElement.clientHeight}function jp(e){this.addEventListener(`load`,e),this.addEventListener(`error`,e)}function Mp(e,t,n,r,i,a,o,s,c){var l=t.nodeType===9?t:t.ownerDocument;try{var u=l.startViewTransition({update:function(){var t=l.defaultView,n=t.navigation&&t.navigation.transition,o=l.fonts.status;r();var s=[];if(o===`loaded`&&(Ap(l),l.fonts.status===`loading`&&s.push(l.fonts.ready)),o=s.length,e!==null)for(var c=e.suspenseyImages,u=0,d=0;d<c.length;d++){var f=c[d];if(!f.complete){var p=f.getBoundingClientRect();
vendor: 18,623 bytes, line 10
10if(0<p.bottom&&0<p.right&&p.top<t.innerHeight&&p.left<t.innerWidth){if(u+=Xm(f),u>$m){s.length=o;break}f=new Promise(jp.bind(f)),s.push(f)}}}if(0<s.length)return t=Promise.race([Promise.all(s),new Promise(function(e){return setTimeout(e,500)})]).then(i,i),(n?Promise.allSettled([n.finished,t]):t).then(a,a);if(i(),n)return n.finished.then(a,a);a()},types:n});l.__reactViewTransition=u;var d=[];return u.ready.then(function(){for(var e=l.documentElement.getAnimations({subtree:!0}),t=0;t<e.length;t++){var n=e[t],r=n.effect,i=r.pseudoElement;if(i!=null&&i.startsWith(`::view-transition`)){d.push(n),n=r.getKeyframes();for(var a=i=void 0,s=!0,c=0;c<n.length;c++){var u=n[c],f=u.width;if(i===void 0)i=f;else if(i!==f){s=!1;break}if(f=u.height,a===void 0)a=f;else if(a!==f){s=!1;break}delete u.width,delete u.height,u.transform===`none`&&delete u.transform}s&&i!==void 0&&a!==void 0&&(r.setKeyframes(n),s=getComputedStyle(r.target,r.pseudoElement),s.width!==i||s.height!==a)&&(s=n[0],s.width=i,s.height=a,s=n[n.length-1],s.width=i,s.height=a,r.setKeyframes(n))}}o()},function(e){l.__reactViewTransition===u&&(l.__reactViewTransition=null);try{if(typeof e==`object`&&e)switch(e.name){case`InvalidStateError`:(e.message===`View transition was skipped because document visibility state is hidden.`||e.message===`Skipping view transition because document visibility state has become hidden.`||e.message===`Skipping view transition because viewport size changed.`||e.message===`Transition was aborted because of invalid state`)&&(e=null)}e!==null&&c(e)}finally{r(),i(),o()}}),u.finished.finally(function(){for(var e=0;e<d.length;e++)d[e].cancel();l.__reactViewTransition===u&&(l.__reactViewTransition=null),s()}),u}catch{return r(),i(),o(),null}}function Np(e,t){this._scope=document.documentElement,this._selector=`::view-transition-`+e+`(`+t+`)`}Np.prototype.animate=function(e,t){return t=typeof t==`number`?{duration:t}:T({},t),t.pseudoElement=this._selector,this._scope.animate(e,t)},Np.prototype.getAnimations=function(){for(var e=this._scope,t=this._selector,n=e.getAnimations({subtree:!0}),r=[],i=0;i<n.length;i++){var a=n[i].effect;a!==null&&a.target===e&&a.pseudoElement===t&&r.push(n[i])}return r},Np.prototype.getComputedStyle=function(){return getComputedStyle(this._scope,this._selector)};function Pp(e){return{name:e,group:new Np(`group`,e),imagePair:new Np(`image-pair`,e),old:new Np(`old`,e),new:new Np(`new`,e)}}function Fp(e){this._fragmentFiber=e,this._observers=this._eventListeners=null}Fp.prototype.addEventListener=function(e,t,n){var r=null,i=null;if(!(n!=null&&typeof n!=`boolean`&&(r=n.signal||null,r!==null&&r.aborted))){this._eventListeners===null&&(this._eventListeners=[]);var a=this._eventListeners;if(Bp(a,e,t,n)===-1){var o=this,s=t;n!=null&&typeof n!=`boolean`&&!0===n.once&&(s=function(r){o.removeEventListener(e,t,n),typeof t==`function`?t.call(this,r):t.handleEvent(r)}),r!==null&&(i=o.removeEventListener.bind(o,e,t,n),r.addEventListener(`abort`,i,{once:!0}),i=r.removeEventListener.bind(r,`abort`,i)),r=Rp(n),a.push({type:e,listener:t,optionsOrUseCapture:n,attachedListener:s,cleanup:i}),h(this._fragmentFiber.child,!1,Ip,e,s,r)}this._eventListeners=a}};function Ip(e,t,n,r){return b(e).addEventListener(t,n,r),!1}Fp.prototype.removeEventListener=function(e,t,n){var r=this._eventListeners;if(r!==null&&(t=Bp(r,e,t,n),t!==-1)){var i=r[t];n=i.attachedListener;var a=i.cleanup;i=Rp(i.optionsOrUseCapture),h(this._fragmentFiber.child,!1,Lp,e,n,i),r.splice(t,1),a!==null&&a()}};function Lp(e,t,n,r){return b(e).removeEventListener(t,n,r),!1}function Rp(e){return e!=null&&typeof e!=`boolean`&&(!0===e.once||e.signal instanceof AbortSignal)?{capture:e.capture,passive:e.passive}:e}function zp(e){return e==null?`c=0`:typeof e==`boolean`?`c=`+(e?`1`:`0`):`c=`+(e.capture?`1`:`0`)}function Bp(e,t,n,r){if(e.length===0)return-1;r=zp(r);for(var i=0;i<e.length;i++){var a=e[i];if(a.type===t&&a.listener===n&&zp(a.optionsOrUseCapture)===r)return i}return-1}Fp.prototype.dispatchEvent=function(e){var t=g(this._fragmentFiber);if(t===null)return!0;t=b(t);var n=this._eventListeners;if(n!==null&&0<n.length||!e.bubbles){var r=t.nodeType===9?t.createComment(``):document.createTextNode(``);if(n)for(var i=0;i<n.length;i++){var a=n[i];r.addEventListener(a.type,a.attachedListener,Rp(a.optionsOrUseCapture))}if(t.appendChild(r),e=r.dispatchEvent(e),n)for(i=0;i<n.length;i++)a=n[i],r.removeEventListener(a.type,a.attachedListener,Rp(a.optionsOrUseCapture));return t.removeChild(r),e}return t.dispatchEvent(e)},Fp.prototype.focus=function(e){h(this._fragmentFiber.child,!0,Vp,e,void 0,void 0)};function Vp(e,t){return e.tag!==6&&(e=b(e),pm(e,t))}Fp.prototype.focusLast=function(e){var t=[];h(this._fragmentFiber.child,!0,Hp,t,void 0,void 0);for(var n=t.length-1;0<=n&&!Vp(t[n],e);n--);};function Hp(e,t){return t.push(e),!1}Fp.prototype.blur=function(){var e=g(this._fragmentFiber);e!==null&&(e=b(e),e=lp(e).activeElement,e!==null&&h(this._fragmentFiber.child,!1,Up,e,void 0,void 0))};function Up(e,t){return e.tag!==6&&(e=b(e),e===t||e.contains(t)?(t.blur(),!0):!1)}Fp.prototype.observeUsing=function(e){this._observers===null&&(this._observers=new Set),this._observers.add(e),h(this._fragmentFiber.child,!1,Wp,e,void 0,void 0)};function Wp(e,t){return e.tag!==6&&(e=b(e),t.observe(e),!1)}Fp.prototype.unobserveUsing=function(e){var t=this._observers;if(t!==null&&t.has(e)){t.delete(e),h(this._fragmentFiber.child,!1,Gp,e,void 0,void 0);for(var n=t=0;n<Kp.length;n++){var r=Kp[n];r.fragmentInstance===this&&r.observer===e?e.unobserve(r.instance):Kp[t++]=r}Kp.length=t}};function Gp(e,t){return e.tag!==6&&(e=b(e),t.unobserve(e),!1)}var Kp=[],qp=!1;function Jp(e,t,n){Kp.push({fragmentInstance:e,observer:t,instance:n}),qp||(qp=!0,mm(function(){qp=!1;var e=Kp;Kp=[];for(var t=0;t<e.length;t++){var n=e[t];n.observer.unobserve(n.instance)}}))}Fp.prototype.getClientRects=function(){var e=[];return h(this._fragmentFiber.child,!1,Yp,e,void 0,void 0),e};function Yp(e,t){if(e.tag===6){e=e.stateNode;var n=e.ownerDocument.createRange();n.selectNodeContents(e),t.push.apply(t,n.getClientRects())}else e=b(e),t.push.apply(t,e.getClientRects());return!1}Fp.prototype.getRootNode=function(e){var t=g(this._fragmentFiber);return t===null?this:b(t).getRootNode(e)},Fp.prototype.compareDocumentPosition=function(e){var t=g(this._fragmentFiber);if(t===null)return Node.DOCUMENT_POSITION_DISCONNECTED;var n=[];h(this._fragmentFiber.child,!1,Hp,n,void 0,void 0);var r=b(t);if(n.length===0){if(n=r,_(this._fragmentFiber)){a:{for(t=this._fragmentFiber.return;t!==null;){if(t.tag===4){t=t.stateNode.containerInfo;break a}if(t.tag===3||t.tag===5||t.tag===27)break;t=t.return}t=null}t!=null&&(n=t)}t=this._fragmentFiber;var i=r=n.compareDocumentPosition(e);return n===e?i=Node.DOCUMENT_POSITION_CONTAINS:r&Node.DOCUMENT_POSITION_CONTAINED_BY&&(n=v(t)[1],n===null?i=Node.DOCUMENT_POSITION_PRECEDING:(e=b(n).compareDocumentPosition(e),i=e===0||e&Node.DOCUMENT_POSITION_FOLLOWING?Node.DOCUMENT_POSITION_FOLLOWING:Node.DOCUMENT_POSITION_PRECEDING)),i|=Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC}t=b(n[0]),i=b(n[n.length-1]);var a=_(this._fragmentFiber)?t.parentElement:r;if(a==null)return Node.DOCUMENT_POSITION_DISCONNECTED;r=a.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_CONTAINED_BY,a=a.compareDocumentPosition(i)&Node.DOCUMENT_POSITION_CONTAINED_BY;var o=t.compareDocumentPosition(e),s=i.compareDocumentPosition(e),c=o&Node.DOCUMENT_POSITION_CONTAINED_BY||s&Node.DOCUMENT_POSITION_CONTAINED_BY;return s=r&&a&&o&Node.DOCUMENT_POSITION_FOLLOWING&&s&Node.DOCUMENT_POSITION_PRECEDING,t=r&&t===e||a&&i===e||c||s?Node.DOCUMENT_POSITION_CONTAINED_BY:!r&&t===e||!a&&i===e?Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC:o,t&Node.DOCUMENT_POSITION_DISCONNECTED||t&Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC||Xp(t,this._fragmentFiber,n[0],n[n.length-1],e)?t:Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC};function Xp(e,t,n,r,i){var a=Ht(i);if(e&Node.DOCUMENT_POSITION_CONTAINED_BY){if(n=!!a)a:{for(;a!==null;){if(a.tag===7&&(a===t||a.alternate===t)){n=!0;break a}a=a.return}n=!1}return n}if(e&Node.DOCUMENT_POSITION_CONTAINS){if(a===null)return a=i.ownerDocument,i===a||i===a.documentElement||i===a.body;a:{for(a=t,t=g(t);a!==null;){if(!(a.tag!==5&&a.tag!==3&&a.tag!==27||a!==t&&a.alternate!==t)){a=!0;break a}a=a.return}a=!1}return a}return e&Node.DOCUMENT_POSITION_PRECEDING?((t=!!a)&&!(t=a===n)&&(t=te(n,a,w),t===null?t=!1:(h(t,!0,C,a,n),a=x,x=null,t=a!==null)),t):e&Node.DOCUMENT_POSITION_FOLLOWING?((t=!!a)&&!(t=a===r)&&(t=te(r,a,w),t===null?t=!1:(h(t,!0,ee,a,r),a=x,S=x=null,t=a!==null)),t):!1}function Zp(e,t){var n=e.ownerDocument.createRange();n.selectNodeContents(e),e=n.getBoundingClientRect(),window.scrollTo(window.scrollX+e.left,t?window.scrollY+e.top:window.scrollY+e.bottom-window.innerHeight)}Fp.prototype.scrollIntoView=function(e){if(typeof e==`object`)throw Error(i(566));var t=[];h(this._fragmentFiber.child,!1,Hp,t,void 0,void 0);var n=!1!==e;if(t.length===0){var r=v(this._fragmentFiber);if(r=n?r[1]||r[0]||g(this._fragmentFiber):r[0]||r[1],r===null)return;if(r.tag===6){e=b(r),Zp(e,n);return}if(r=b(r),r.nodeType!==9){if(r.nodeType===11){n=`host`in r?r.host:null,n!==null&&n.scrollIntoView(e);return}r.scrollIntoView(e)}}for(r=n?t.length-1:0;r!==(n?-1:t.length);){var a=t[r];a.tag===6?(a=b(a),Zp(a,n)):b(a).scrollIntoView(e),r+=n?-1:1}};function Qp(e,t){return e=b(e),$p(e,t),!1}function $p(e,t){e.reactFragments??=new Set,e.reactFragments.add(t)}function em(e,t){var n=t._eventListeners;if(n!==null)for(var r=0;r<n.length;r++){var i=n[r];e.addEventListener(i.type,i.attachedListener,Rp(i.optionsOrUseCapture))}e.nodeType!==3&&(n=t._observers,n!==null&&n.forEach(function(n){for(var r=0,i=0;i<Kp.length;i++){var a=Kp[i];(a.fragmentInstance!==t||a.observer!==n||a.instance!==e)&&(Kp[r++]=a)}Kp.length=r,n.observe(e)}),$p(e,t))}function tm(e,t){var n=t._eventListeners;if(n!==null)for(var r=0;r<n.length;r++){var i=n[r];e.removeEventListener(i.type,i.attachedListener,Rp(i.optionsOrUseCapture))}e.nodeType!==3&&(n=t._observers,n!==null&&n.forEach(function(n){typeof n.rootMargin==`string`?Jp(t,n,e):n.unobserve(e)}),e.reactFragments!=null&&e.reactFragments.delete(t))}function nm(e){var t=e.firstChild;for(t&&t.nodeType===10&&(t=t.nextSibling);t;){var n=t;switch(t=t.nextSibling,n.nodeName){case`HTML`:case`HEAD`:case`BODY`:nm(n),Vt(n);continue;case`SCRIPT`:case`STYLE`:continue;case`LINK`:if(n.rel.toLowerCase()===`stylesheet`)continue}e.removeChild(n)}}function rm(e,t,n,r){for(;e.nodeType===1;){var i=n;if(e.nodeName.toLowerCase()!==t.toLowerCase()){if(!r&&(e.nodeName!==`INPUT`||e.type!==`hidden`))break}else if(!r){if(t===`input`&&e.type===`hidden`){var a=i.name==null?null:``+i.name;if(i.type===`hidden`&&e.getAttribute(`name`)===a)return e}else return e}else if(!e[zt])switch(t){case`meta`:if(!e.hasAttribute(`itemprop`))break;return e;case`link`:if(a=e.getAttribute(`rel`),a===`stylesheet`&&e.hasAttribute(`data-precedence`)||a!==i.rel||e.getAttribute(`href`)!==(i.href==null||i.href===``?null:i.href)||e.getAttribute(`crossorigin`)!==(i.crossOrigin==null?null:i.crossOrigin)||e.getAttribute(`title`)!==(i.title==null?null:i.title))break;return e;case`style`:if(e.hasAttribute(`data-precedence`))break;return e;case`script`:if(a=e.getAttribute(`src`),(a!==(i.src==null?null:i.src)||e.getAttribute(`type`)!==(i.type==null?null:i.type)||e.getAttribute(`crossorigin`)!==(i.crossOrigin==null?null:i.crossOrigin))&&a&&e.hasAttribute(`async`)&&!e.hasAttribute(`itemprop`))break;return e;default:return e}if(e=lm(e.nextSibling),e===null)break}return null}function im(e,t,n){if(t===``)return null;for(;e.nodeType!==3;)if((e.nodeType!==1||e.nodeName!==`INPUT`||e.type!==`hidden`)&&!n||(e=lm(e.nextSibling),e===null))return null;return e}function am(e,t){for(;e.nodeType!==8;)if((e.nodeType!==1||e.nodeName!==`INPUT`||e.type!==`hidden`)&&!t||(e=lm(e.nextSibling),e===null))return null;return e}function om(e){return e.data===`$?`||e.data===`$~`}function sm(e){return e.data===`$!`||e.data===`$?`&&e.ownerDocument.readyState!==`loading`}function cm(e,t){var n=e.ownerDocument;if(e.data===`$~`)e._reactRetry=t;else if(e.data!==`$?`||n.readyState!==`loading`)t();else{var r=function(){t(),n.removeEventListener(`DOMContentLoaded`,r)};n.addEventListener(`DOMContentLoaded`,r),e._reactRetry=r}}function lm(e){for(;e!=null;e=e.nextSibling){var t=e.nodeType;if(t===1||t===3)break;if(t===8){if(t=e.data,t===`$`||t===`$!`||t===`$?`||t===`$~`||t===`&`||t===`F!`||t===`F`)break;if(t===`/$`||t===`/&`)return null}}return e}var um=null;function dm(e){e=e.nextSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n===`/$`||n===`/&`){if(t===0)return lm(e.nextSibling);t--}else n!==`$`&&n!==`$!`&&n!==`$?`&&n!==`$~`&&n!==`&`||t++}e=e.nextSibling}return null}function fm(e){e=e.previousSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n===`$`||n===`$!`||n===`$?`||n===`$~`||n===`&`){if(t===0)return e;t--}else n!==`/$`&&n!==`/&`||t++}e=e.previousSibling}return null}function pm(e,t){function n(){r=!0}if(e.ownerDocument.activeElement===e)return!0;var r=!1;try{e.ownerDocument.addEventListener(`focus`,n,!0),(e.focus||HTMLElement.prototype.focus).call(e,t)}finally{e.ownerDocument.removeEventListener(`focus`,n,!0)}return r}function mm(e){yp(function(){yp(function(t){return e(t)})})}function hm(e,t,n){switch(t=lp(n),e){case`html`:if(e=t.documentElement,!e)throw Error(i(452));return e;case`head`:if(e=t.head,!e)throw Error(i(453));return e;case`body`:if(e=t.body,!e)throw Error(i(454));return e;default:throw Error(i(451))}}function gm(e,t,n){for(var r in n){var i=n[r];n.hasOwnProperty(r)&&i!=null&&$(e,t,r,null,rp,i)}n.dangerouslySetInnerHTML!=null&&(e.textContent=``),e.onclick===On&&(e.onclick=null),Vt(e)}function _m(e){for(var t=e.attributes;t.length;)e.removeAttributeNode(t[0]);Vt(e)}var vm=new Map,ym=new Set;function bm(e){if(typeof e.getRootNode==`function`){var t=e.getRootNode();if(t.nodeType===9||t.nodeType===11)return t}return e.nodeType===9?e:e.ownerDocument}var xm=D.d;D.d={f:Sm,r:Cm,D:Em,C:Dm,L:Om,m:km,X:jm,S:Am,M:Mm};function Sm(){var e=xm.f(),t=zd();return e||t}function Cm(e){var t=Ut(e);t!==null&&t.tag===5&&t.type===`form`?ec(t):xm.r(e)}var wm=typeof document>`u`?null:document;function Tm(e,t,n){var r=wm;if(r&&typeof t==`string`&&t){var i=pn(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),ym.has(i)||(ym.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),np(t,`link`,e),Kt(t),r.head.appendChild(t)))}}function Em(e){xm.D(e),Tm(`dns-prefetch`,e,null)}function Dm(e,t){xm.C(e,t),Tm(`preconnect`,e,t)}function Om(e,t,n){xm.L(e,t,n);var r=wm;if(r&&e&&t){var i=`link[rel="preload"][as="`+pn(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+pn(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+pn(n.imageSizes)+`"]`)):i+=`[href="`+pn(e)+`"]`;var a=i;switch(t){case`style`:a=Pm(e);break;case`script`:a=Rm(e)}if(!(vm.has(a)||(e=T({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),vm.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(Fm(a))||t===`script`&&r.querySelector(zm(a))))){var o=r.createElement(`link`);np(o,`link`,e),t===`style`&&(o[Bt]=!0,o.onload=o.onerror=function(){qt(o)}),Kt(o),r.head.appendChild(o)}}}function km(e,t){xm.m(e,t);var n=wm;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+pn(r)+`"][href="`+pn(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Rm(e)}if(!vm.has(a)&&(e=T({rel:`modulepreload`,href:e},t),vm.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(zm(a)))return}r=n.createElement(`link`),np(r,`link`,e),Kt(r),n.head.appendChild(r)}}}function Am(e,t,n){xm.S(e,t,n);var r=wm;if(r&&e){var i=Gt(r).hoistableStyles,a=Pm(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(Fm(a)))s.loading=5;else{e=T({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=vm.get(a))&&Hm(e,n);var c=o=r.createElement(`link`);Kt(c),np(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Vm(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function jm(e,t){xm.X(e,t);var n=wm;if(n&&e){var r=Gt(n).hoistableScripts,i=Rm(e),a=r.get(i);a||(a=n.querySelector(zm(i)),a||(e=T({src:e,async:!0},t),(t=vm.get(i))&&Um(e,t),a=n.createElement(`script`),Kt(a),np(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Mm(e,t){xm.M(e,t);var n=wm;if(n&&e){var r=Gt(n).hoistableScripts,i=Rm(e),a=r.get(i);a||(a=n.querySelector(zm(i)),a||(e=T({src:e,async:!0,type:`module`},t),(t=vm.get(i))&&Um(e,t),a=n.createElement(`script`),Kt(a),np(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Nm(e,t,n,r){var a=(a=Me.current)?bm(a):null;if(!a)throw Error(i(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(n=Pm(n.href),t=Gt(a).hoistableStyles,r=t.get(n),r||(r={type:`style`,instance:null,count:0,state:null},t.set(n,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Pm(n.href);var o=Gt(a).hoistableStyles,s=o.get(e);if(s||(a=a.ownerDocument||a,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=a.querySelector(Fm(e)))?o._p||(s.instance=o,s.state.loading=5):(o=vm.get(e),o||(o={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},vm.set(e,o)),Lm(a,e,o,s.state))),t&&r===null)throw Error(i(528,``));return s}if(t&&r!==null)throw Error(i(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(n=Rm(n),t=Gt(a).hoistableScripts,r=t.get(n),r||(r={type:`script`,instance:null,count:0,state:null},t.set(n,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function Pm(e){return`href="`+pn(e)+`"`}function Fm(e){return`link[rel="stylesheet"][`+e+`]`}function Im(e){return T({},e,{"data-precedence":e.precedence,precedence:null})}function Lm(e,t,n,r){if(t=e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)){
10if(!0!==t[Bt]){r.loading=1;return}}else t=e.createElement(`link`),t[Bt]=!0,t.onload=t.onerror=qt.bind(null,t),np(t,`link`,n),Kt(t),e.head.appendChild(t);r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2})}function Rm(e){return`[src="`+pn(e)+`"]`}function zm(e){return`script[async]`+e}function Bm(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+pn(n.href)+`"]`);if(r)return t.instance=r,Kt(r),r;var a=T({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),Kt(r),np(r,`style`,a),Vm(r,n.precedence,e),t.instance=r;case`stylesheet`:a=Pm(n.href);var o=e.querySelector(Fm(a));if(o)return t.state.loading|=4,t.instance=o,Kt(o),o;r=Im(n),(a=vm.get(a))&&Hm(r,a),o=(e.ownerDocument||e).createElement(`link`),Kt(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),np(o,`link`,r),t.state.loading|=4,Vm(o,n.precedence,e),t.instance=o;case`script`:return o=Rm(n.src),(a=e.querySelector(zm(o)))?(t.instance=a,Kt(a),a):(r=n,(a=vm.get(o))&&(r=T({},n),Um(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),Kt(a),np(a,`link`,r),e.head.appendChild(a),t.instance=a);case`void`:return null;default:throw Error(i(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Vm(r,n.precedence,e));return t.instance}function Vm(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o<r.length;o++){var s=r[o];if(s.dataset.precedence===t)a=s;else if(a!==i)break}a?a.parentNode.insertBefore(e,a.nextSibling):(t=n.nodeType===9?n.head:n,t.insertBefore(e,t.firstChild))}function Hm(e,t){e.crossOrigin??=t.crossOrigin,e.referrerPolicy??=t.referrerPolicy,e.title??=t.title}function Um(e,t){e.crossOrigin??=t.crossOrigin,e.referrerPolicy??=t.referrerPolicy,e.integrity??=t.integrity}var Wm=null;function Gm(e,t,n){if(Wm===null){var r=new Map,i=Wm=new Map;i.set(n,r)}else i=Wm,r=i.get(n),r||(r=new Map,i.set(n,r));if(r.has(e))return r;for(r.set(e,null),n=n.getElementsByTagName(e),i=0;i<n.length;i++){var a=n[i];if(!(a[zt]||a[Mt]||e===`link`&&a.getAttribute(`rel`)===`stylesheet`)&&a.namespaceURI!==`http://www.w3.org/2000/svg`){var o=a.getAttribute(t)||``;o=e+o;var s=r.get(o);s?s.push(a):r.set(o,[a])}}return r}function Km(e,t,n){e=e.ownerDocument||e,e.head.insertBefore(n,t===`title`?e.querySelector(`head > title`):null)}function qm(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Jm(e,t){return e===`img`&&t.src!=null&&t.src!==``&&t.onLoad==null&&t.loading!==`lazy`}function Ym(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Xm(e){return(e.width||100)*(e.height||100)*(typeof devicePixelRatio==`number`?devicePixelRatio:1)*.25}function Zm(e,t){typeof t.decode==`function`&&(e.imgCount++,t.complete||(e.imgBytes+=Xm(t),e.suspenseyImages.push(t)),e=rh.bind(e),t.decode().then(e,e))}function Qm(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Pm(r.href),a=t.querySelector(Fm(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=nh.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,Kt(a);return}a=t.ownerDocument||t,r=Im(r),(i=vm.get(i))&&Hm(r,i),a=a.createElement(`link`),Kt(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),np(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),
vendor: 4,920 bytes, line 10
10(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=nh.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var $m=0;function eh(e,t){return e.stylesheets&&e.count===0&&ah(e,e.stylesheets),0<e.count||0<e.imgCount?function(n){var r=setTimeout(function(){if(e.stylesheets&&ah(e,e.stylesheets),e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}},6e4+t);0<e.imgBytes&&$m===0&&($m=62500*op());var i=setTimeout(function(){if(e.waitingForImages=!1,e.count===0&&(e.stylesheets&&ah(e,e.stylesheets),e.unsuspend)){var t=e.unsuspend;e.unsuspend=null,t()}},(e.imgBytes>$m?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function th(e){if(e.count===0&&(e.imgCount===0||!e.waitingForImages)){if(e.stylesheets)ah(e,e.stylesheets);else if(e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}}}function nh(){this.count--,th(this)}function rh(){this.imgCount--,th(this)}var ih=null;function ah(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,ih=new Map,t.forEach(oh,e),ih=null,nh.call(e))}function oh(e,t){if(!(t.state.loading&4)){var n=ih.get(e);if(n)var r=n.get(null);else{n=new Map,ih.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a<i.length;a++){var o=i[a];(o.nodeName===`LINK`||o.getAttribute(`media`)!==`not all`)&&(n.set(o.dataset.precedence,o),r=o)}r&&n.set(null,r)}i=t.instance,o=i.getAttribute(`data-precedence`),a=n.get(o)||r,a===r&&n.set(null,i),n.set(o,i),this.count++,r=nh.bind(this),i.addEventListener(`load`,r),i.addEventListener(`error`,r),a?a.parentNode.insertBefore(i,a.nextSibling):(e=e.nodeType===9?e.head:e,e.insertBefore(i,e.firstChild)),t.state.loading|=4}}var sh={$$typeof:le,Provider:null,Consumer:null,_currentValue:Te,_currentValue2:Te,_threadCount:0};function ch(e,t,n,r,i,a,o,s,c){this.tag=1,this.containerInfo=e,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=xt(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=xt(0),this.hiddenUpdates=xt(null),this.identifierPrefix=r,this.onUncaughtError=i,this.onCaughtError=a,this.onRecoverableError=o,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=c,this.transitionTypes=null,this.incompleteTransitions=new Map}function lh(e,t,n,r,i,a,o,s,c,l,u,d){return e=new ch(e,t,n,o,c,l,u,d,s),t=1,!0===a&&(t|=24),a=zi(3,null,null,t),e.current=a,a.stateNode=e,t=Ia(),t.refCount++,e.pooledCache=t,t.refCount++,a.memoizedState={element:r,isDehydrated:n,cache:t},fo(a),e}function uh(e){return e?(e=Li,e):Li}function dh(e,t,n,r,i,a){i=uh(i),r.context===null?r.context=i:r.pendingContext=i,r=mo(t),r.payload={element:n},a=a===void 0?null:a,a!==null&&(r.callback=a),n=ho(e,r,t),n!==null&&(Pd(n,e,t),go(n,e,t))}function fh(e,t){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var n=e.retryLane;e.retryLane=n!==0&&n<t?n:t}}function ph(e,t){fh(e,t),(e=e.alternate)&&fh(e,t)}function mh(e){if(e.tag===13||e.tag===31){var t=Pi(e,67108864);t!==null&&Pd(t,e,67108864),ph(e,67108864)}}function hh(e){if(e.tag===13||e.tag===31){var t=jd();t=Dt(t);var n=Pi(e,t);n!==null&&Pd(n,e,t),ph(e,t)}}var gh=!0;function _h(e,t,n,r){var i=E.T;E.T=null;var a=D.p;try{D.p=2,yh(e,t,n,r)}finally{D.p=a,E.T=i}}function vh(e,t,n,r){var i=E.T;E.T=null;var a=D.p;try{D.p=8,yh(e,t,n,r)}finally{D.p=a,E.T=i}}function yh(e,t,n,r){if(gh){var i=bh(r);if(i===null)Kf(e,t,r,xh,n),Mh(e,r);else if(Ph(i,e,t,n,r))r.stopPropagation();else if(Mh(e,r),t&4&&-1<jh.indexOf(e)){for(;i!==null;){var a=Ut(i);if(a!==null)switch(a.tag){case 3:if(a=a.stateNode,a.current.memoizedState.isDehydrated){var o=ht(a.pendingLanes);if(o!==0){var s=a;for(s.pendingLanes|=2,s.entangledLanes|=2;o;){var c=1<<31-ct(o);s.entanglements[1]|=c,o&=~c}Ef(a),!(q&6)&&(gd=Xe()+500,Df(0,!1))}}break;case 31:case 13:s=Pi(a,2),s!==null&&Pd(s,a,2),zd(),ph(a,2)}if(a=bh(r),a===null&&Kf(e,t,r,xh,n),a===i)break;i=a}i!==null&&r.stopPropagation()}else Kf(e,t,r,null,n)}}function bh(e){return e=An(e),Sh(e)}var xh=null;function Sh(e){if(xh=null,e=Ht(e),e!==null){var t=s(e);if(t===null)e=null;else{var n=t.tag;if(n===13){if(e=c(t),e!==null)return e;e=null}else if(n===31){if(e=l(t),e!==null)return e;e=null}else if(n===3){if(t.stateNode.current.memoizedState.isDehydrated)return t.tag===3?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null)}}return xh=e,null}function Ch(e){switch(e){case`beforetoggle`:case`cancel`:case`click`:case`close`:case`contextmenu`:case`copy`:case`cut`:case`auxclick`:case`dblclick`:case`dragend`:case`dragstart`:case`drop`:case`focusin`:case`focusout`:case`input`:case`invalid`:case`keydown`:case`keypress`:case`keyup`:case`mousedown`:case`mouseup`:case`paste`:case`pause`:case`play`
vendor: 6,003 bytes, line 10
10:case`pointercancel`:case`pointerdown`:case`pointerup`:case`ratechange`:case`reset`:case`seeked`:case`submit`:case`toggle`:case`touchcancel`:case`touchend`:case`touchstart`:case`volumechange`:case`change`:case`selectionchange`:case`textInput`:case`compositionstart`:case`compositionend`:case`compositionupdate`:case`beforeblur`:case`afterblur`:case`beforeinput`:case`blur`:case`fullscreenchange`:case`fullscreenerror`:case`focus`:case`hashchange`:case`popstate`:case`select`:case`selectstart`:return 2;case`drag`:case`dragenter`:case`dragexit`:case`dragleave`:case`dragover`:case`mousemove`:case`mouseout`:case`mouseover`:case`pointermove`:case`pointerout`:case`pointerover`:case`resize`:case`scroll`:case`touchmove`:case`wheel`:case`mouseenter`:case`mouseleave`:case`pointerenter`:case`pointerleave`:return 8;case`message`:switch(Ze()){case Qe:return 2;case $e:return 8;case et:case tt:return 32;case nt:return 268435456;default:return 32}default:return 32}}var wh=!1,Th=null,Eh=null,Dh=null,Oh=new Map,kh=new Map,Ah=[],jh=`mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset`.split(` `);function Mh(e,t){switch(e){case`focusin`:case`focusout`:Th=null;break;case`dragenter`:case`dragleave`:Eh=null;break;case`mouseover`:case`mouseout`:Dh=null;break;case`pointerover`:case`pointerout`:Oh.delete(t.pointerId);break;case`gotpointercapture`:case`lostpointercapture`:kh.delete(t.pointerId)}}function Nh(e,t,n,r,i,a){return e===null||e.nativeEvent!==a?(e={blockedOn:t,domEventName:n,eventSystemFlags:r,nativeEvent:a,targetContainers:[i]},t!==null&&(t=Ut(t),t!==null&&mh(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,i!==null&&t.indexOf(i)===-1&&t.push(i),e)}function Ph(e,t,n,r,i){switch(t){case`focusin`:return Th=Nh(Th,e,t,n,r,i),!0;case`dragenter`:return Eh=Nh(Eh,e,t,n,r,i),!0;case`mouseover`:return Dh=Nh(Dh,e,t,n,r,i),!0;case`pointerover`:var a=i.pointerId;return Oh.set(a,Nh(Oh.get(a)||null,e,t,n,r,i)),!0;case`gotpointercapture`:return a=i.pointerId,kh.set(a,Nh(kh.get(a)||null,e,t,n,r,i)),!0}return!1}function Fh(e){var t=Ht(e.target);if(t!==null){var n=s(t);if(n!==null){if(t=n.tag,t===13){if(t=c(n),t!==null){e.blockedOn=t,At(e.priority,function(){hh(n)});return}}else if(t===31){if(t=l(n),t!==null){e.blockedOn=t,At(e.priority,function(){hh(n)});return}}else if(t===3&&n.stateNode.current.memoizedState.isDehydrated){e.blockedOn=n.tag===3?n.stateNode.containerInfo:null;return}}}e.blockedOn=null}function Ih(e){if(e.blockedOn!==null)return!1;for(var t=e.targetContainers;0<t.length;){var n=bh(e.nativeEvent);if(n===null){n=e.nativeEvent;var r=new n.constructor(n.type,n);kn=r,n.target.dispatchEvent(r),kn=null}else return t=Ut(n),t!==null&&mh(t),e.blockedOn=n,!1;t.shift()}return!0}function Lh(e,t,n){Ih(e)&&n.delete(t)}function Rh(){wh=!1,Th!==null&&Ih(Th)&&(Th=null),Eh!==null&&Ih(Eh)&&(Eh=null),Dh!==null&&Ih(Dh)&&(Dh=null),Oh.forEach(Lh),kh.forEach(Lh)}function zh(e,n){e.blockedOn===n&&(e.blockedOn=null,wh||(wh=!0,t.unstable_scheduleCallback(t.unstable_NormalPriority,Rh)))}var Bh=null;function Vh(e){Bh!==e&&(Bh=e,t.unstable_scheduleCallback(t.unstable_NormalPriority,function(){Bh===e&&(Bh=null);for(var t=0;t<e.length;t+=3){var n=e[t],r=e[t+1],i=e[t+2];if(typeof r!=`function`){if(Sh(r||n)===null)continue;break}var a=Ut(n);a!==null&&(e.splice(t,3),t-=3,Qs(a,{pending:!0,data:i,method:n.method,action:r},r,i))}}))}function Hh(e){function t(t){return zh(t,e)}Th!==null&&zh(Th,e),Eh!==null&&zh(Eh,e),Dh!==null&&zh(Dh,e),Oh.forEach(t),kh.forEach(t);for(var n=0;n<Ah.length;n++){var r=Ah[n];r.blockedOn===e&&(r.blockedOn=null)}for(;0<Ah.length&&(n=Ah[0],n.blockedOn===null);)Fh(n),n.blockedOn===null&&Ah.shift();if(n=(e.ownerDocument||e).$$reactFormReplay,n!=null)for(r=0;r<n.length;r+=3){var i=n[r],a=n[r+1],o=i[Nt]||null;if(typeof a==`function`)o||Vh(n);else if(o){var s=null;if(a&&a.hasAttribute(`formAction`)){if(i=a,o=a[Nt]||null)s=o.formAction;else if(Sh(i)!==null)continue}else s=o.action;typeof s==`function`?n[r+1]=s:(n.splice(r,3),r-=3),Vh(n)}}}function Uh(){function e(e){e.canIntercept&&e.info===`react-transition`&&e.intercept({handler:function(){return new Promise(function(e){return i=e})},focusReset:`manual`,scroll:`manual`})}function t(){i!==null&&(i(),i=null),r||setTimeout(n,20)}function n(){if(!r&&!navigation.transition){var e=navigation.currentEntry;e&&e.url!=null&&navigation.navigate(e.url,{state:e.getState(),info:`react-transition`,history:`replace`})}}if(typeof navigation==`object`){var r=!1,i=null;return navigation.addEventListener(`navigate`,e),navigation.addEventListener(`navigatesuccess`,t),navigation.addEventListener(`navigateerror`,t),setTimeout(n,100),function(){r=!0,navigation.removeEventListener(`navigate`,e),navigation.removeEventListener(`navigatesuccess`,t),navigation.removeEventListener(`navigateerror`,t),i!==null&&(i(),i=null)}}}function Wh(e){this._internalRoot=e}Gh.prototype.render=Wh.prototype.render=function(e){var t=this._internalRoot;if(t===null)throw Error(i(409));var n=t.current;dh(n,jd(),e,t,null,null)},Gh.prototype.unmount=Wh.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var t=e.containerInfo;dh(e.current,2,null,e,null,null),zd(),t[Pt]=null}};function Gh(e){this._internalRoot=e}Gh.prototype.unstable_scheduleHydration=function(e){if(e){var t=kt();e={blockedOn:null,target:e,priority:t};for(var n=0;n<Ah.length&&t!==0&&t<Ah[n].priority;n++);Ah.splice(n,0,e),n===0&&Fh(e)}};var Kh=n.version;if(Kh!==`19.3.0`)throw Error(i(527,Kh,`19.3.0`));D.findDOMNode=function(e){var t=e._reactInternals;if(t===void 0)throw typeof e.render==`function`?Error(i(188)):(e=Object.keys(e).join(`,`),Error(i(268,e)));return e=p(t),e=e===null?null:m(e),e=e===null?null:e.stateNode,e};var qh={bundleType:0,version:`19.3.0`,rendererPackageName:`react-dom`,currentDispatcherRef:E,reconcilerVersion:`19.3.0`};
10if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`){var Jh=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!Jh.isDisabled&&Jh.supportsFiber)try{at=Jh.inject(qh),ot=Jh}catch{}}e.createRoot=function(e,t){if(!a(e))throw Error(i(299));var n=!1,r=``,o=xc,s=Sc,c=Cc;return t!=null&&(!0===t.unstable_strictMode&&(n=!0),t.identifierPrefix!==void 0&&(r=t.identifierPrefix),t.onUncaughtError!==void 0&&(o=t.onUncaughtError),t.onCaughtError!==void 0&&(s=t.onCaughtError),t.onRecoverableError!==void 0&&(c=t.onRecoverableError)),t=lh(e,1,!1,null,null,n,r,null,o,s,c,Uh),e[Pt]=t.current,Wf(e),new Wh(t)},e.hydrateRoot=function(e,t,n){if(!a(e))throw Error(i(299));var r=!1,o=``,s=xc,c=Sc,l=Cc,u=null;return n!=null&&(!0===n.unstable_strictMode&&(r=!0),n.identifierPrefix!==void 0&&(o=n.identifierPrefix),n.onUncaughtError!==void 0&&(s=n.onUncaughtError),n.onCaughtError!==void 0&&(c=n.onCaughtError),n.onRecoverableError!==void 0&&(l=n.onRecoverableError),n.formState!==void 0&&(u=n.formState)),t=lh(e,1,!0,t,n??null,r,o,u,s,c,l,Uh),t.context=uh(null),n=t.current,r=jd(),r=Dt(r),o=mo(r),o.callback=null,ho(n,o,r),n=r,t.current.lanes=n,St(t,n),Ef(t),e[Pt]=t.current,Wf(e),new Gh(t)}})),m=e(a(((e,t)=>{function n(){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE==`function`)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=p()}))(),1);function h(e){return e instanceof Function||typeof e==`function`}var g=[`Head`,`bodyAttributes`,`htmlAttributes`];function _(e,t){return e.includes(t)}function v(e,t){let n=t._configViaHook?.[e],r=t.config[e],i=e=>h(e)?e(t):e;return _(g,e)?[...(r??[]).map(i),...n??[]]:n===void 0?i(r):n}var y=e(o(),1);function b(e,t){let n=globalThis[x]=globalThis[x]||{};return n[e]=n[e]||t}var x=`_vike_react`,S=b(`usePageContext.tsx`,{reactContext:y.createContext(void 0)});function C({pageContext:e,children:t}){let{reactContext:n}=S;return y.createElement(n.Provider,{value:e},t)}function ee(){let{reactContext:e}=S;return(0,y.useContext)(e)}function w(e){let{Page:t,config:{Loading:n}}=e,r=t?y.createElement(t,null):null,i=e=>n?.layout?y.createElement(y.Suspense,{fallback:y.createElement(n.layout,null)},r):e;r=i(r),[...e.config.Layout||[],...e.config.Wrapper||[]].forEach(e=>{r=y.createElement(e,null,r),r=i(r)}),r=y.createElement(C,{pageContext:e},r);let a,o,s=new Promise((e,t)=>{a=e,o=t});return r=y.createElement(te,{renderPromiseResolve:a},r),e.config.reactStrictMode!==!1&&(r=y.createElement(y.StrictMode,null,r)),{page:r,renderPromise:s,renderPromiseReject:o}}function te({children:e,renderPromiseResolve:t}){return(0,y.useEffect)(t),e}async function T(e,t){if(!e)return[];let r=e.map(e=>h(e)?(n(t),e(t)):e);return await Promise.all(r)}function ne(e,t){e!==void 0&&(document.title=e||``),t!==void 0&&(document.documentElement.lang=t||`en`)}function re(e){return Object.entries(e)}function ie(e){let t={};return(e.config.react??[]).forEach(n=>{let r=h(n)?n(e):n;r&&re(r).forEach(([e,n])=>{n&&(t[e]??(t[e]={}),re(n).forEach(([n,r])=>{var i;if(!h(r))(i=t[e])[n]??(i[n]=r);else{let i=t[e][n];t[e][n]=(...e)=>{i?.(...e),r(...e)}}}))})}),t}function ae(e){return typeof e==`object`&&!!e}function oe(e,t){return Object.assign(e,t),e}var se=b(`onRenderClient.tsx`,{});async function ce(e){e._headAlreadySet=e.isHydration,await T(e.config.onBeforeRenderClient,e);let{page:t,renderPromise:n,renderPromiseReject:r}=w(e);e.page=t,se.onUncaughtErrorLocal=e=>{r(e)};let i=document.getElementById(`root`),{hydrateRootOptions:a,createRootOptions:o}=ie(e);e.isHydration&&i.innerHTML!==``?se.root=m.hydrateRoot(i,t,{...a,onUncaughtError(...e){ue.call(this,e,a)}}):(se.root||=m.createRoot(i,{...o,onUncaughtError(...e){ue.call(this,e,o)}}),se.root.render(t)),e.root=se.root;try{await n}finally{delete se.onUncaughtErrorLocal}e.isHydration||(e._headAlreadySet=!0,le(e)),await T(e.config.onAfterRenderClient,e)}function le(e){ne(v(`title`,e),v(`lang`,e))}function ue(e,t){let[n,r]=e,i=de(n,r);console.error(i),ae(i)&&(i.isAlreadyLogged=!0),se.onUncaughtErrorLocal?.(i),t?.onUncaughtError?.call(this,i,r)}function de(e,t){if(!t?.componentStack||!ae(e))return e;let n=String(e.stack).split(` 11`),r=n.findIndex(e=>e.includes(`react_stack_bottom_frame`));if(r===-1&&(r=n.findIndex(e=>
11e.includes(`node_modules`)&&e.includes(`react`))),r===-1)return e;let i=n.slice(0,r),a=n.slice(r),o=t.componentStack.split(` 12`).filter(Boolean);return o[0]===i.at(-1)&&o.shift(),oe(e,{stack:[...i,...o,...a].join(` 13`)})}var fe=t({onPageTransitionStart:()=>pe});async function pe(){document.body.classList.add(`page-transition`)}function me(e,t=`CTA`,n=``,r=1){typeof window<`u`&&window.gtag&&window.gtag(`event`,e,{event_category:t,event_label:n,value:r})}function he(e,t,n){typeof window<`u`&&window.gtag&&window.gtag(`event`,`page_view`,{page_title:e,page_location:t,page_path:n})}function ge(e){me(`signup_click`,`CTA`,e)}function _e(e){me(`login_click`,`CTA`,e)}function ve(e,t){me(`external_link_click`,`Navigation`,`${e}_to_${t}`)}function ye(e){me(`pricing_cta_click`,`Pricing`,e)}function be(e){me(`video_play`,`Engagement`,e)}var xe=`locize_attribution_from`,Se={"chatgpt.com":`chatgpt`,"chat.openai.com":`chatgpt`,"perplexity.ai":`perplexity`,"claude.ai":`claude`,"copilot.microsoft.com":`copilot`,"gemini.google.com":`gemini`,"linkedin.com":`linkedin`,"lnkd.in":`linkedin`,"t.co":`x`,"x.com":`x`,"twitter.com":`x`};function Ce(e){if(!e)return null;try{let t=new URL(e).hostname.toLowerCase().replace(/^www\./,``),n=Object.keys(Se).find(e=>t===e||t.endsWith(`.${e}`));return n?`${Se[n]}__referral`:null}catch{return null}}function we(){if(typeof window>`u`)return null;try{let e=new URLSearchParams(window.location.search),t=e.get(`from`)||e.get(`utm_source`);if(t){let e=t.slice(0,256);try{window.sessionStorage.setItem(xe,e)}catch{}return e}let n=null;try{n=window.sessionStorage.getItem(xe)}catch{}if(n)return n;let r=Ce(typeof document<`u`?document.referrer:``);if(r){try{window.sessionStorage.setItem(xe,r)}catch{}return r}return null}catch{return null}}function E(e){let t=we();if(t)try{let n=e.getAttribute(`href`)||``,r=new URL(n,window.location.origin),i=r.searchParams.get(`from`);if(i===t||i&&i.startsWith(`${t}__`))return;let a=i?`${t}__${i}`:t;r.searchParams.set(`from`,a),e.setAttribute(`href`,r.toString())}catch{}}function D(){typeof document<`u`&&(we(),document.addEventListener(`click`,e=>{let t=e.target.closest(`a[href]`);if(!t)return;let n=t.getAttribute(`href`);if(!n||n.startsWith(`#`)||n.startsWith(`javascript:`))return;let r=window.location.pathname;if(n.includes(`locize.app/register`)){E(t),ge(r);return}if(n.includes(`locize.app/login`)){_e(r);return}try{let e=new URL(n,window.location.origin);e.hostname!==window.location.hostname&&e.protocol.startsWith(`http`)&&ve(r,e.hostname)}catch{}}))}var Te=t({onPageTransitionEnd:()=>Ee});async function Ee(e){document.body.classList.remove(`page-transition`);let t=document.getElementById(`page-content`);t&&(t.tabIndex=-1,t.focus({preventScroll:!0})),he(document.title,window.location.href,e?.urlPathname||window.location.pathname)}var O=e=>typeof e==`string`,De=()=>{let e,t,n=new Promise((n,r)=>{e=n,t=r});return n.resolve=e,n.reject=t,n},Oe=e=>e==null?``:String(e),ke=(e,t,n)=>{e.forEach(e=>{t[e]&&(n[e]=t[e])})},Ae=/###/g,je=e=>e&&e.includes(`###`)?e.replace(Ae,`.`):e,Me=e=>!e||O(e),Ne=(e,t,n)=>{let r=O(t)?t.split(`.`):t,i=0;for(;i<r.length-1;){if(Me(e))return{};let t=je(r[i]);!e[t]&&n&&(e[t]=new n),e=Object.prototype.hasOwnProperty.call(e,t)?e[t]:{},++i}return Me(e)?{}:{obj:e,k:je(r[i])}},Pe=(e,t,n)=>{let{obj:r,k:i}=Ne(e,t,Object);if(r!==void 0||t.length===1){r[i]=n;return}let a=t[t.length-1],o=t.slice(0,t.length-1),s=Ne(e,o,Object);for(;s.obj===void 0&&o.length;)a=`${o[o.length-1]}.${a}`,o=o.slice(0,o.length-1),s=Ne(e,o,Object),s?.obj&&s.obj[`${s.k}.${a}`]!==void 0&&(s.obj=void 0);s.obj[`${s.k}.${a}`]=n},Fe=(e,t,n,r)=>{let{obj:i,k:a}=Ne(e,t,Object);i[a]=i[a]||[],i[a].push(n)},Ie=(e,t)=>{let{obj:n,k:r}=Ne(e,t);if(n&&Object.prototype.hasOwnProperty.call(n,r))return n[r]},Le=(e,t,n)=>{let r=Ie(e,n);return r===void 0?Ie(t,n):r},Re=(e,t,n)=>{for(let r in t)r!==`__proto__`&&r!==`constructor`&&(r in e?O(e[r])||e[r]instanceof String||O(t[r])||t[r]instanceof String?n&&(e[r]=t[r]):Re(e[r],t[r],n):e[r]=t[r]);return e},ze=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,`\\$&`),Be={"&":`&`,"<":`<`,">":`>`,'"':`"`,"'":`'`,"/":`/`},Ve=e=>O(e)?e.replace(/[&<>
13"'\/]/g,e=>Be[e]):e,He=class{constructor(e){this.capacity=e,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(e){let t=this.regExpMap.get(e);if(t!==void 0)return t;let n=new RegExp(e);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(e,n),this.regExpQueue.push(e),n}},Ue=[` `,`,`,`?`,`!`,`;`],We=new He(20),Ge=(e,t,n)=>{t||=``,n||=``;let r=Ue.filter(e=>!t.includes(e)&&!n.includes(e));if(r.length===0)return!0;let i=We.getRegExp(`(${r.map(e=>e===`?`?`\\?`:e).join(`|`)})`),a=!i.test(e);if(!a){let t=e.indexOf(n);t>0&&!i.test(e.substring(0,t))&&(a=!0)}return a},Ke=(e,t,n=`.`)=>{if(!e)return;if(e[t])return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0;let r=t.split(n),i=e;for(let e=0;e<r.length;){if(!i||typeof i!=`object`)return;let t,a=``;for(let o=e;o<r.length;++o)if(o!==e&&(a+=n),a+=r[o],t=i[a],t!==void 0){if([`string`,`number`,`boolean`].includes(typeof t)&&o<r.length-1)continue;e+=o-e+1;break}i=t}return i},qe=e=>e?.replace(/_/g,`-`),Je={type:`logger`,log(e){this.output(`log`,e)},warn(e){this.output(`warn`,e)},error(e){this.output(`error`,e)},output(e,t){console?.[e]?.apply?.(console,t)}},Ye=new class e{constructor(e,t={}){this.init(e,t)}init(e,t={}){this.prefix=t.prefix||`i18next:`,this.logger=e||Je,this.options=t,this.debug=t.debug}log(...e){return this.forward(e,`log`,``,!0)}warn(...e){return this.forward(e,`warn`,``,!0)}error(...e){return this.forward(e,`error`,``)}deprecate(...e){return this.forward(e,`warn`,`WARNING DEPRECATED: `,!0)}forward(e,t,n,r){return r&&!this.debug?null:(e=e.map(e=>O(e)?e.replace(/[\r\n\x00-\x1F\x7F]/g,` `):e),O(e[0])&&(e[0]=`${n}${this.prefix} ${e[0]}`),this.logger[t](e))}create(t){return new e(this.logger,{prefix:`${this.prefix}:${t}:`,...this.options})}clone(t){return t||=this.options,t.prefix=t.prefix||this.prefix,new e(this.logger,t)}},Xe=class{constructor(){this.observers={}}on(e,t){return e.split(` `).forEach(e=>{this.observers[e]||(this.observers[e]=new Map);let n=this.observers[e].get(t)||0;this.observers[e].set(t,n+1)}),this}off(e,t){if(this.observers[e]){if(!t){delete this.observers[e];return}this.observers[e].delete(t)}}once(e,t){let n=(...r)=>{t(...r),this.off(e,n)};return this.on(e,n),this}emit(e,...t){this.observers[e]&&Array.from(this.observers[e].entries()).forEach(([e,n])=>{for(let r=0;r<n;r++)e(...t)}),this.observers[`*`]&&Array.from(this.observers[`*`].entries()).forEach(([n,r])=>{for(let i=0;i<r;i++)n(e,...t)})}},Ze=class extends Xe{constructor(e,t={ns:[`translation`],defaultNS:`translation`}){super(),this.data=e||{},this.options=t,this.options.keySeparator===void 0&&(this.options.keySeparator=`.`),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(e){this.options.ns.includes(e)||this.options.ns.push(e)}removeNamespaces(e){let t=this.options.ns.indexOf(e);t>-1&&this.options.ns.splice(t,1)}getResource(e,t,n,r={}){let i=r.keySeparator===void 0?this.options.keySeparator:r.keySeparator,a=r.ignoreJSONStructure===void 0?this.options.ignoreJSONStructure:r.ignoreJSONStructure,o;e.includes(`.`)?o=e.split(`.`):(o=[e,t],n&&(Array.isArray(n)?o.push(...n):O(n)&&i?o.push(...n.split(i)):o.push(n)));let s=Ie(this.data,o);return!s&&!t&&!n&&e.includes(`.`)&&(e=o[0],t=o[1],n=o.slice(2).join(`.`)),s||!a||!O(n)?s:Ke(this.data?.[e]?.[t],n,i)}addResource(e,t,n,r,i={silent:!1}){let a=i.keySeparator===void 0?this.options.keySeparator:i.keySeparator,o=[e,t];
vendor: 34,553 bytes, line 13
13n&&(o=o.concat(a?n.split(a):n)),e.includes(`.`)&&(o=e.split(`.`),r=t,t=o[1]),this.addNamespaces(t),Pe(this.data,o,r),i.silent||this.emit(`added`,e,t,n,r)}addResources(e,t,n,r={silent:!1}){for(let r in n)(O(n[r])||Array.isArray(n[r]))&&this.addResource(e,t,r,n[r],{silent:!0});r.silent||this.emit(`added`,e,t,n)}addResourceBundle(e,t,n,r,i,a={silent:!1,skipCopy:!1}){let o=[e,t];e.includes(`.`)&&(o=e.split(`.`),r=n,n=t,t=o[1]),this.addNamespaces(t);let s=Ie(this.data,o)||{};a.skipCopy||(n=JSON.parse(JSON.stringify(n))),r?Re(s,n,i):s={...s,...n},Pe(this.data,o,s),a.silent||this.emit(`added`,e,t,n)}removeResourceBundle(e,t){this.hasResourceBundle(e,t)&&delete this.data[e][t],this.removeNamespaces(t),this.emit(`removed`,e,t)}hasResourceBundle(e,t){return this.getResource(e,t)!==void 0}getResourceBundle(e,t){return t||=this.options.defaultNS,this.getResource(e,t)}getDataByLanguage(e){return this.data[e]}hasLanguageSomeTranslations(e){let t=this.getDataByLanguage(e);return!!(t&&Object.keys(t)||[]).find(e=>t[e]&&Object.keys(t[e]).length>0)}toJSON(){return this.data}},Qe={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,n,r,i){return e.forEach(e=>{t=this.processors[e]?.process(t,n,r,i)??t}),t}},$e=Symbol(`i18next/PATH_KEY`);function et(){let e=[],t=Object.create(null),n;return t.get=(r,i)=>(n?.revoke?.(),i===$e?e:(e.push(i),n=Proxy.revocable(r,t),n.proxy)),Proxy.revocable(Object.create(null),t).proxy}function tt(e,t){let{[$e]:n}=e(et()),r=t?.keySeparator??`.`,i=t?.nsSeparator??`:`,a=t?.enableSelector===`strict`;if(n.length>1&&i){let e=t?.ns,o=a?Array.isArray(e)?e:e?[e]:null:Array.isArray(e)?e:null;if(o&&(a?o:o.length>1?o.slice(1):[]).includes(n[0]))return`${n[0]}${i}${n.slice(1).join(r)}`}return n.join(r)}var nt=e=>!O(e)&&typeof e!=`boolean`&&typeof e!=`number`,rt=class e extends Xe{constructor(e,t={}){super(),ke([`resourceStore`,`languageUtils`,`pluralResolver`,`interpolator`,`backendConnector`,`i18nFormat`,`utils`],e,this),this.options=t,this.options.keySeparator===void 0&&(this.options.keySeparator=`.`),this.logger=Ye.create(`translator`),this.checkedLoadedFor={}}changeLanguage(e){e&&(this.language=e)}exists(e,t={interpolation:{}}){let n={...t};if(e==null)return!1;let r=this.resolve(e,n);if(r?.res===void 0)return!1;let i=nt(r.res);return!(n.returnObjects===!1&&i)}extractFromKey(e,t){let n=t.nsSeparator===void 0?this.options.nsSeparator:t.nsSeparator;n===void 0&&(n=`:`);let r=t.keySeparator===void 0?this.options.keySeparator:t.keySeparator,i=t.ns||this.options.defaultNS||[],a=n&&e.includes(n),o=!this.options.userDefinedKeySeparator&&!t.keySeparator&&!this.options.userDefinedNsSeparator&&!t.nsSeparator&&!Ge(e,n,r);if(a&&!o){let t=e.match(this.interpolator.nestingRegexp);if(t&&t.length>0)return{key:e,namespaces:O(i)?[i]:i};let a=e.split(n);(n!==r||n===r&&this.options.ns.includes(a[0]))&&(i=a.shift()),e=a.join(r)}return{key:e,namespaces:O(i)?[i]:i}}translate(t,n,r){let i=typeof n==`object`?{...n}:n;if(typeof i!=`object`&&this.options.overloadTranslationOptionHandler&&(i=this.options.overloadTranslationOptionHandler(arguments)),typeof i==`object`&&(i={...i}),i||={},t==null)return``;typeof t==`function`&&(t=tt(t,{...this.options,...i})),Array.isArray(t)||(t=[String(t)]),t=t.map(e=>typeof e==`function`?tt(e,{...this.options,...i}):String(e));let a=i.returnDetails===void 0?this.options.returnDetails:i.returnDetails,o=i.keySeparator===void 0?this.options.keySeparator:i.keySeparator,{key:s,namespaces:c}=this.extractFromKey(t[t.length-1],i),l=c[c.length-1],u=i.nsSeparator===void 0?this.options.nsSeparator:i.nsSeparator;u===void 0&&(u=`:`);let d=i.lng||this.language,f=i.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(d?.toLowerCase()===`cimode`)return f?a?{res:`${l}${u}${s}`,usedKey:s,exactUsedKey:s,usedLng:d,usedNS:l,usedParams:this.getUsedParamsDetails(i)}:`${l}${u}${s}`:a?{res:s,usedKey:s,exactUsedKey:s,usedLng:d,usedNS:l,usedParams:this.getUsedParamsDetails(i)}:s;let p=this.resolve(t,i),m=p?.res,h=p?.usedKey||s,g=p?.exactUsedKey||s,_=[`[object Number]`,`[object Function]`,`[object RegExp]`],v=i.joinArrays===void 0?this.options.joinArrays:i.joinArrays,y=!this.i18nFormat||this.i18nFormat.handleAsObject,b=i.count!==void 0&&!O(i.count),x=e.hasDefaultValue(i),S=b?this.pluralResolver.getSuffix(d,i.count,i):``,C=i.ordinal&&b?this.pluralResolver.getSuffix(d,i.count,{ordinal:!1}):``,ee=b&&!i.ordinal&&i.count===0,w=ee&&i[`defaultValue${this.options.pluralSeparator}zero`]||i[`defaultValue${S}`]||i[`defaultValue${C}`]||i.defaultValue,te=m;y&&!m&&x&&(te=w);let T=nt(te),ne=Object.prototype.toString.apply(te);if(y&&te&&T&&!_.includes(ne)&&!(O(v)&&Array.isArray(te))){if(!i.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn(`accessing an object - but returnObjects options is not enabled!`);let e=this.options.returnedObjectHandler?this.options.returnedObjectHandler(h,te,{...i,ns:c}):`key '${s} (${this.language})' returned an object instead of string.`;return a?(p.res=e,p.usedParams=this.getUsedParamsDetails(i),p):e}if(o){let e=Array.isArray(te),t=e?[]:{},n=e?g:h;for(let e in te)if(Object.prototype.hasOwnProperty.call(te,e)){let r=`${n}${o}${e}`;t[e]=x&&!m?this.translate(r,{...i,defaultValue:nt(w)?w[e]:void 0,joinArrays:!1,ns:c}):this.translate(r,{...i,joinArrays:!1,ns:c}),t[e]===r&&(t[e]=te[e])}m=t}}else if(y&&O(v)&&Array.isArray(m))m=m.join(v),m&&=this.extendTranslation(m,t,i,r);else{let e=!1,n=!1;!this.isValidLookup(m)&&x&&(e=!0,m=w),this.isValidLookup(m)||(n=!0,m=s);let a=(i.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&n?void 0:m,c=x&&w!==m&&this.options.updateMissing;if(n||e||c){if(this.logger.log(c?`updateKey`:`missingKey`,d,l,b&&!c?`${s}${this.pluralResolver.getSuffix(d,i.count,i)}`:s,c?w:m),o){let e=this.resolve(s,{...i,keySeparator:!1});e&&e.res&&this.logger.warn(`Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.`)}let e=[],t=this.languageUtils.getFallbackCodes(this.options.fallbackLng,i.lng||this.language);if(this.options.saveMissingTo===`fallback`&&t&&t[0])for(let n=0;n<t.length;n++)e.push(t[n]);else this.options.saveMissingTo===`all`?e=this.languageUtils.toResolveHierarchy(i.lng||this.language):e.push(i.lng||this.language);let n=(e,t,n)=>{let r=x&&n!==m?n:a;this.options.missingKeyHandler?this.options.missingKeyHandler(e,l,t,r,c,i):this.backendConnector?.saveMissing&&this.backendConnector.saveMissing(e,l,t,r,c,i),this.emit(`missingKey`,e,l,t,m)};this.options.saveMissing&&(this.options.saveMissingPlurals&&b?e.forEach(e=>{let t=this.pluralResolver.getSuffixes(e,i);ee&&i[`defaultValue${this.options.pluralSeparator}zero`]&&!t.includes(`${this.options.pluralSeparator}zero`)&&t.push(`${this.options.pluralSeparator}zero`),t.forEach(t=>{n([e],s+t,i[`defaultValue${t}`]||w)})}):n(e,s,w))}m=this.extendTranslation(m,t,i,p,r),n&&m===s&&this.options.appendNamespaceToMissingKey&&(m=`${l}${u}${s}`),(n||e)&&this.options.parseMissingKeyHandler&&(m=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${l}${u}${s}`:s,e?m:void 0,i))}return a?(p.res=m,p.usedParams=this.getUsedParamsDetails(i),p):m}extendTranslation(e,t,n,r,i){if(this.i18nFormat?.parse)e=this.i18nFormat.parse(e,{...this.options.interpolation.defaultVariables,...n},n.lng||this.language||r.usedLng,r.usedNS,r.usedKey,{resolved:r});else if(!n.skipInterpolation){n.interpolation&&this.interpolator.init({...n,interpolation:{...this.options.interpolation,...n.interpolation}});let a=O(e)&&(n?.interpolation?.skipOnVariables===void 0?this.options.interpolation.skipOnVariables:n.interpolation.skipOnVariables),o;if(a){let t=e.match(this.interpolator.nestingRegexp);o=t&&t.length}let s=n.replace&&!O(n.replace)?n.replace:n;if(this.options.interpolation.defaultVariables&&(s={...this.options.interpolation.defaultVariables,...s}),e=this.interpolator.interpolate(e,s,n.lng||this.language||r.usedLng,n),a){let t=e.match(this.interpolator.nestingRegexp),r=t&&t.length;o<r&&(n.nest=!1)}!n.lng&&r&&r.res&&(n.lng=this.language||r.usedLng),n.nest!==!1&&(e=this.interpolator.nest(e,(...e)=>i?.[0]===e[0]&&!n.context?(this.logger.warn(`It seems you are nesting recursively key: ${e[0]} in key: ${t[0]}`),null):this.translate(...e,t),n)),n.interpolation&&this.interpolator.reset()}let a=n.postProcess||this.options.postProcess,o=O(a)?[a]:a;return e!=null&&o?.length&&n.applyPostProcessor!==!1&&(e=Qe.handle(o,e,t,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...r,usedParams:this.getUsedParamsDetails(n)},...n}:n,this)),e}resolve(e,t={}){let n,r,i,a,o;return O(e)&&(e=[e]),Array.isArray(e)&&(e=e.map(e=>typeof e==`function`?tt(e,{...this.options,...t}):e)),e.forEach(e=>{if(this.isValidLookup(n))return;let s=this.extractFromKey(e,t),c=s.key;r=c;let l=s.namespaces;this.options.fallbackNS&&(l=l.concat(this.options.fallbackNS));let u=t.count!==void 0&&!O(t.count),d=u&&!t.ordinal&&t.count===0,f=t.context!==void 0&&(O(t.context)||typeof t.context==`number`)&&t.context!==``,p=t.lngs?t.lngs:this.languageUtils.toResolveHierarchy(t.lng||this.language,t.fallbackLng);l.forEach(e=>{this.isValidLookup(n)||(o=e,!this.checkedLoadedFor[`${p[0]}-${e}`]&&this.utils?.hasLoadedNamespace&&!this.utils?.hasLoadedNamespace(o)&&(this.checkedLoadedFor[`${p[0]}-${e}`]=!0,this.logger.warn(`key "${r}" for languages "${p.join(`, `)}" won't get resolved as namespace "${o}" was not yet loaded`,`This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!`)),p.forEach(r=>{if(this.isValidLookup(n))return;a=r;let o=[c];if(this.i18nFormat?.addLookupKeys)this.i18nFormat.addLookupKeys(o,c,r,e,t);else{let e;u&&(e=this.pluralResolver.getSuffix(r,t.count,t));let n=`${this.options.pluralSeparator}zero`,i=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(u&&(t.ordinal&&e.startsWith(i)&&o.push(c+e.replace(i,this.options.pluralSeparator)),o.push(c+e),d&&o.push(c+n)),f){let r=`${c}${this.options.contextSeparator||`_`}${t.context}`;o.push(r),u&&(t.ordinal&&e.startsWith(i)&&o.push(r+e.replace(i,this.options.pluralSeparator)),o.push(r+e),d&&o.push(r+n))}}let s;for(;s=o.pop();)this.isValidLookup(n)||(i=s,n=this.getResource(r,e,s,t))}))})}),{res:n,usedKey:r,exactUsedKey:i,usedLng:a,usedNS:o}}isValidLookup(e){return e!==void 0&&!(!this.options.returnNull&&e===null)&&!(!this.options.returnEmptyString&&e===``)}getResource(e,t,n,r={}){return this.i18nFormat?.getResource?this.i18nFormat.getResource(e,t,n,r):this.resourceStore.getResource(e,t,n,r)}getUsedParamsDetails(e={}){let t=[`defaultValue`,`ordinal`,`context`,`replace`,`lng`,`lngs`,`fallbackLng`,`ns`,`keySeparator`,`nsSeparator`,`returnObjects`,`returnDetails`,`joinArrays`,`postProcess`,`interpolation`],n=e.replace&&!O(e.replace),r=n?e.replace:e;if(n&&e.count!==void 0&&(r.count=e.count),this.options.interpolation.defaultVariables&&(r={...this.options.interpolation.defaultVariables,...r}),!n){r={...r};for(let e of t)delete r[e]}return r}static hasDefaultValue(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&t.startsWith(`defaultValue`)&&e[t]!==void 0)return!0;return!1}},it=class{constructor(e){this.options=e,this.supportedLngs=this.options.supportedLngs||!1,this.logger=Ye.create(`languageUtils`)}getScriptPartFromCode(e){if(e=qe(e),!e||!e.includes(`-`))return null;let t=e.split(`-`);return t.length===2||(t.pop(),t[t.length-1].toLowerCase()===`x`)?null:this.formatLanguageCode(t.join(`-`))}getLanguagePartFromCode(e){if(e=qe(e),!e||!e.includes(`-`))return e;let t=e.split(`-`);return this.formatLanguageCode(t[0])}formatLanguageCode(e){if(O(e)&&e.includes(`-`)){let t;try{t=Intl.getCanonicalLocales(e)[0]}catch{}return t&&this.options.lowerCaseLng&&(t=t.toLowerCase()),t||(this.options.lowerCaseLng?e.toLowerCase():e)}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}isSupportedCode(e){return(this.options.load===`languageOnly`||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.includes(e)}getBestMatchFromCodes(e){if(!e)return null;let t;return e.forEach(e=>{if(t)return;let n=this.formatLanguageCode(e);(!this.options.supportedLngs||this.isSupportedCode(n))&&(t=n)}),!t&&this.options.supportedLngs&&e.forEach(e=>{if(t)return;let n=this.getScriptPartFromCode(e);if(this.isSupportedCode(n))return t=n;let r=this.getLanguagePartFromCode(e);if(this.isSupportedCode(r))return t=r;t=this.options.supportedLngs.find(e=>e===r?!0:!e.includes(`-`)&&!r.includes(`-`)?!1:!!(e.includes(`-`)&&!r.includes(`-`)&&e.slice(0,e.indexOf(`-`))===r||e.startsWith(r)&&r.length>1))}),t||=this.getFallbackCodes(this.options.fallbackLng)[0],t}getFallbackCodes(e,t){if(!e)return[];if(typeof e==`function`&&(e=e(t)),O(e)&&(e=[e]),Array.isArray(e))return e;if(!t)return e.default||[];let n=e[t];return n||=e[this.getScriptPartFromCode(t)],n||=e[this.formatLanguageCode(t)],n||=e[this.getLanguagePartFromCode(t)],n||=e.default,n||[]}toResolveHierarchy(e,t){let n=this.getFallbackCodes((t===!1?[]:t)||this.options.fallbackLng||[],e),r=[],i=e=>{e&&(this.isSupportedCode(e)?r.push(e):this.logger.warn(`rejecting language code not found in supportedLngs: ${e}`))};return O(e)&&(e.includes(`-`)||e.includes(`_`))?(this.options.load!==`languageOnly`&&i(this.formatLanguageCode(e)),this.options.load!==`languageOnly`&&this.options.load!==`currentOnly`&&i(this.getScriptPartFromCode(e)),this.options.load!==`currentOnly`&&i(this.getLanguagePartFromCode(e))):O(e)&&i(this.formatLanguageCode(e)),n.forEach(e=>{r.includes(e)||i(this.formatLanguageCode(e))}),r}},at={zero:0,one:1,two:2,few:3,many:4,other:5},ot={select:e=>e===1?`one`:`other`,resolvedOptions:()=>({pluralCategories:[`one`,`other`]})},st=class{constructor(e,t={}){this.languageUtils=e,this.options=t,this.logger=Ye.create(`pluralResolver`),this.pluralRulesCache={}}clearCache(){this.pluralRulesCache={}}getRule(e,t={}){let n=qe(e===`dev`?`en`:e),r=t.ordinal?`ordinal`:`cardinal`,i=JSON.stringify({cleanedCode:n,type:r});if(i in this.pluralRulesCache)return this.pluralRulesCache[i];let a;try{a=new Intl.PluralRules(n,{type:r})}catch{if(typeof Intl>`u`)return this.logger.error(`No Intl support, please use an Intl polyfill!`),ot;if(!e.match(/-|_/))return ot;let n=this.languageUtils.getLanguagePartFromCode(e);a=this.getRule(n,t)}return this.pluralRulesCache[i]=a,a}needsPlural(e,t={}){let n=this.getRule(e,t);return n||=this.getRule(`dev`,t),n?.resolvedOptions().pluralCategories.length>1}getPluralFormsOfKey(e,t,n={}){return this.getSuffixes(e,n).map(e=>`${t}${e}`)}getSuffixes(e,t={}){let n=this.getRule(e,t);return n||=this.getRule(`dev`,t),n?n.resolvedOptions().pluralCategories.sort((e,t)=>at[e]-at[t]).map(e=>`${this.options.prepend}${t.ordinal?`ordinal${this.options.prepend}`:``}${e}`):[]}getSuffix(e,t,n={}){let r=this.getRule(e,n);return r?`${this.options.prepend}${n.ordinal?`ordinal${this.options.prepend}`:``}${r.select(t)}`:(this.logger.warn(`no plural rule found for: ${e}`),this.getSuffix(`dev`,t,n))}},ct=(e,t,n,r=`.`,i=!0)=>{let a=Le(e,t,n);return!a&&i&&O(n)&&(a=Ke(e,n,r),a===void 0&&(a=Ke(t,n,r))),a},lt=e=>e.replace(/\$/g,`$$$$`),ut=class{constructor(e={}){this.logger=Ye.create(`interpolator`),this.options=e,this.format=e?.interpolation?.format||(e=>e),this.init(e)}init(e={}){e.interpolation||={escapeValue:!0};let{escape:t,escapeValue:n,useRawValueToEscape:r,prefix:i,prefixEscaped:a,suffix:o,suffixEscaped:s,formatSeparator:c,unescapeSuffix:l,unescapePrefix:u,nestingPrefix:d,nestingPrefixEscaped:f,nestingSuffix:p,nestingSuffixEscaped:m,nestingOptionsSeparator:h,maxReplaces:g,alwaysFormat:_}=e.interpolation;this.escape=t===void 0?Ve:t,this.escapeValue=n===void 0||n,this.useRawValueToEscape=r!==void 0&&r,this.prefix=i?ze(i):a||`{{`,this.suffix=o?ze(o):s||`}}`,this.formatSeparator=c||`,`,this.unescapePrefix=l?``:u?ze(u):`-`,this.unescapeSuffix=this.unescapePrefix?``:l?ze(l):``,this.nestingPrefix=d?ze(d):f||ze(`$t(`),this.nestingSuffix=p?ze(p):m||ze(`)`),this.nestingOptionsSeparator=h||`,`,this.maxReplaces=g||1e3,this.alwaysFormat=_!==void 0&&_,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){let e=(e,t)=>e?.source===t?(e.lastIndex=0,e):new RegExp(t,`g`);this.regexp=e(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=e(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=e(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(e,t,n,r){let i,a,o,s=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},c=e=>{if(!e.includes(this.formatSeparator)){let i=ct(t,s,e,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(i,void 0,n,{...r,...t,interpolationkey:e}):i}let i=e.split(this.formatSeparator),a=i.shift().trim(),o=i.join(this.formatSeparator).trim();return this.format(ct(t,s,a,this.options.keySeparator,this.options.ignoreJSONStructure),o,n,{...r,...t,interpolationkey:a})};this.resetRegExp(),!this.escapeValue&&typeof e==`string`&&/\$t\([^)]*\{[^}]*\{\{/.test(e)&&this.logger.warn(`nesting options string contains interpolated variables with escapeValue: false â if any of those values are attacker-controlled they can inject additional nesting options (e.g. redirect lng/ns). Sanitise untrusted input before passing it to t(), or keep escapeValue: true.`);let l=r?.missingInterpolationHandler||this.options.missingInterpolationHandler,u=r?.interpolation?.skipOnVariables===void 0?this.options.interpolation.skipOnVariables:r.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:e=>lt(e)},{regex:this.regexp,safeValue:e=>this.escapeValue?lt(this.escape(e)):lt(e)}].forEach(t=>{for(o=0;i=t.regex.exec(e);){let n=i[1].trim();if(a=c(n),a===void 0){if(typeof l==`function`){let t=l(e,i,r);a=O(t)?t:``}else if(r&&Object.prototype.hasOwnProperty.call(r,n))a=``;else if(u){a=i[0];continue}else this.logger.warn(`missed to pass in variable ${n} for interpolating ${e}`),a=``}else!O(a)&&!this.useRawValueToEscape&&(a=Oe(a));let s=t.safeValue(a);if(e=e.replace(i[0],s),u?(t.regex.lastIndex+=a.length,t.regex.lastIndex-=i[0].length):t.regex.lastIndex=0,o++,o>=this.maxReplaces)break}}),e}nest(e,t,n={}){let r,i,a,o=(e,t)=>{let n=this.nestingOptionsSeparator;if(!e.includes(n))return e;let r=e.split(RegExp(`${ze(n)}[ ]*{`)),i=`{${r[1]}`;e=r[0],i=this.interpolate(i,a);let o=i.match(/'/g),s=i.match(/"/g);((o?.length??0)%2==0&&!s||(s?.length??0)%2!=0)&&(i=i.replace(/'/g,`"`));try{a=JSON.parse(i),t&&(a={...t,...a})}catch(t){return this.logger.warn(`failed parsing options string in nesting for key ${e}`,t),`${e}${n}${i}`}return a.defaultValue&&a.defaultValue.includes(this.prefix)&&delete a.defaultValue,e};for(;r=this.nestingRegexp.exec(e);){let s=[];a={...n},a=a.replace&&!O(a.replace)?a.replace:a,a.applyPostProcessor=!1,delete a.defaultValue;let c=/{.*}/.test(r[1])?r[1].lastIndexOf(`}`)+1:r[1].indexOf(this.formatSeparator);if(c!==-1&&(s=r[1].slice(c).split(this.formatSeparator).map(e=>e.trim()).filter(Boolean),r[1]=r[1].slice(0,c)),i=t(o.call(this,r[1].trim(),a),a),i&&r[0]===e&&!O(i))return i;O(i)||(i=Oe(i)),i||=(this.logger.warn(`missed to resolve ${r[1]} for nesting ${e}`),``),s.length&&(i=s.reduce((e,t)=>this.format(e,t,n.lng,{...n,interpolationkey:r[1].trim()}),i.trim())),e=e.replace(r[0],i),this.regexp.lastIndex=0}return e}},dt=e=>{let t=e.toLowerCase().trim(),n={};if(e.includes(`(`)){let r=e.split(`(`);t=r[0].toLowerCase().trim();let i=r[1].slice(0,-1);t===`currency`&&!i.includes(`:`)?n.currency||=i.trim():t===`relativetime`&&!i.includes(`:`)?n.range||=i.trim():i.split(`;`).forEach(e=>{if(e){let[t,...r]=e.split(`:`),i=r.join(`:`).trim().replace(/^'+|'+$/g,``),a=t.trim();n[a]||(n[a]=i),i===`false`&&(n[a]=!1),i===`true`&&(n[a]=!0),isNaN(i)||(n[a]=parseInt(i,10))}})}return{formatName:t,formatOptions:n}},ft=e=>{let t={};return(n,r,i)=>{let a=i;i&&i.interpolationkey&&i.formatParams&&i.formatParams[i.interpolationkey]&&i[i.interpolationkey]&&(a={...a,[i.interpolationkey]:void 0});let o=r+JSON.stringify(a),s=t[o];return s||(s=e(qe(r),i),t[o]=s),s(n)}},pt=e=>(t,n,r)=>e(qe(n),r)(t),mt=class{constructor(e={}){this.logger=Ye.create(`formatter`),this.options=e,this.init(e)}init(e,t={interpolation:{}}){this.formatSeparator=t.interpolation.formatSeparator||`,`;let n=t.cacheInBuiltFormats?ft:pt;this.formats={number:n((e,t)=>{let n=new Intl.NumberFormat(e,{...t});return e=>n.format(e)}),currency:n((e,t)=>{let n=new Intl.NumberFormat(e,{...t,style:`currency`});return e=>n.format(e)}),datetime:n((e,t)=>{let n=new Intl.DateTimeFormat(e,{...t});return e=>n.format(e)}),relativetime:n((e,t)=>{let n=new Intl.RelativeTimeFormat(e,{...t});return e=>n.format(e,t.range||`day`)}),list:n((e,t)=>{let n=new Intl.ListFormat(e,{...t});return e=>n.format(e)})}}add(e,t){this.formats[e.toLowerCase().trim()]=t}addCached(e,t){this.formats[e.toLowerCase().trim()]=ft(t)}format(e,t,n,r={}){if(!t||e==null)return e;let i=t.split(this.formatSeparator),a=[];for(let e=0;e<i.length;e++){let t=i[e];for(;t.indexOf(`(`)>-1&&!t.includes(`)`)&&e+1<i.length;)t=`${t}${this.formatSeparator}${i[++e]}`;a.push(t)}return a.reduce((e,t)=>{let{formatName:i,formatOptions:a}=dt(t);if(this.formats[i]){let t=e;try{let o=r?.formatParams?.[r.interpolationkey]||{},s=o.locale||o.lng||r.locale||r.lng||n;t=this.formats[i](e,s,{...a,...r,...o})}catch(e){this.logger.warn(e)}return t}return this.logger.warn(`there was no format function for ${i}`),e},e)}},ht=(e,t)=>{e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)},gt=class extends Xe{constructor(e,t,n,r={}){super(),this.backend=e,this.store=t,this.services=n,this.languageUtils=n.languageUtils,this.options=r,this.logger=Ye.create(`backendConnector`),this.waitingReads=[],this.maxParallelReads=r.maxParallelReads||10,this.readingCalls=0,this.maxRetries=r.maxRetries>=0?r.maxRetries:5,this.retryTimeout=r.retryTimeout>=1?r.retryTimeout:350,this.state={},this.queue=[],this.backend?.init?.(n,r.backend,r)}queueLoad(e,t,n,r){let i={},a={},o={},s={};return e.forEach(e=>{let r=!0;t.forEach(t=>{let o=`${e}|${t}`;!n.reload&&this.store.hasResourceBundle(e,t)?this.state[o]=2:this.state[o]<0||(this.state[o]===1?a[o]===void 0&&(a[o]=!0):(this.state[o]=1,r=!1,a[o]===void 0&&(a[o]=!0),i[o]===void 0&&(i[o]=!0),s[t]===void 0&&(s[t]=!0)))}),r||(o[e]=!0)}),(Object.keys(i).length||Object.keys(a).length)&&this.queue.push({pending:a,pendingCount:Object.keys(a).length,loaded:{},errors:[],callback:r}),{toLoad:Object.keys(i),pending:Object.keys(a),toLoadLanguages:Object.keys(o),toLoadNamespaces:Object.keys(s)}}loaded(e,t,n){let r=e.split(`|`),i=r[0],a=r[1];t&&this.emit(`failedLoading`,i,a,t),!t&&n&&this.store.addResourceBundle(i,a,n,void 0,void 0,{skipCopy:!0}),this.state[e]=t?-1:2,t&&n&&(this.state[e]=0);let o={};this.queue.forEach(n=>{Fe(n.loaded,[i],a),ht(n,e),t&&n.errors.push(t),n.pendingCount===0&&!n.done&&(Object.keys(n.loaded).forEach(e=>{o[e]||(o[e]={});let t=n.loaded[e];t.length&&t.forEach(t=>{o[e][t]===void 0&&(o[e][t]=!0)})}),n.done=!0,n.errors.length?n.callback(n.errors):n.callback())}),this.emit(`loaded`,o),this.queue=this.queue.filter(e=>!e.done)}read(e,t,n,r=0,i=this.retryTimeout,a){if(!e.length)return a(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:e,ns:t,fcName:n,tried:r,wait:i,callback:a});return}this.readingCalls++;let o=(o,s)=>{if(this.readingCalls--,this.waitingReads.length>0){let e=this.waitingReads.shift();this.read(e.lng,e.ns,e.fcName,e.tried,e.wait,e.callback)}if(o&&s&&r<this.maxRetries){setTimeout(()=>{this.read(e,t,n,r+1,i*2,a)},i);return}a(o,s)},s=this.backend[n].bind(this.backend);if(s.length===2){try{let n=s(e,t);n&&typeof n.then==`function`?n.then(e=>o(null,e)).catch(o):o(null,n)}catch(e){o(e)}return}return s(e,t,o)}prepareLoading(e,t,n={},r){if(!this.backend)return this.logger.warn(`No backend was added via i18next.use. Will not load resources.`),r&&r();O(e)&&(e=this.languageUtils.toResolveHierarchy(e)),O(t)&&(t=[t]);let i=this.queueLoad(e,t,n,r);if(!i.toLoad.length)return i.pending.length||r(),null;i.toLoad.forEach(e=>{this.loadOne(e)})}load(e,t,n){this.prepareLoading(e,t,{},n)}reload(e,t,n){this.prepareLoading(e,t,{reload:!0},n)}loadOne(e,t=``){let n=e.split(`|`),r=n[0],i=n[1];this.read(r,i,`read`,void 0,void 0,(n,a)=>{n&&this.logger.warn(`${t}loading namespace ${i} for language ${r} failed`,n),!n&&a&&this.logger.log(`${t}loaded namespace ${i} for language ${r}`,a),this.loaded(e,n,a)})}saveMissing(e,t,n,r,i,a={},o=()=>{}){if(this.services?.utils?.hasLoadedNamespace&&!this.services?.utils?.hasLoadedNamespace(t)){this.logger.warn(`did not save key "${n}" as the namespace "${t}" was not yet loaded`,`This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!`);return}if(n!=null&&n!==``){if(this.backend?.create){let s={...a,isUpdate:i},c=this.backend.create.bind(this.backend);if(c.length<6)try{let i;i=c.length===5?c(e,t,n,r,s):c(e,t,n,r),i&&typeof i.then==`function`?i.then(e=>o(null,e)).catch(o):o(null,i)}catch(e){o(e)}else c(e,t,n,r,o,s)}e&&e[0]&&this.store.addResource(e[0],t,n,r)}}},_t=()=>({debug:!1,initAsync:!0,ns:[`translation`],defaultNS:[`translation`],fallbackLng:[`dev`],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:`all`,preload:!1,keySeparator:`.`,nsSeparator:`:`,pluralSeparator:`_`,contextSeparator:`_`,enableSelector:!1,partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:`fallback`,saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:e=>{let t={};if(typeof e[1]==`object`&&(t=e[1]),O(e[1])&&(t.defaultValue=e[1]),O(e[2])&&(t.tDescription=e[2]),typeof e[2]==`object`||typeof e[3]==`object`){let n=e[3]||e[2];Object.keys(n).forEach(e=>{t[e]=n[e]})}return t},interpolation:{escapeValue:!0,prefix:`{{`,suffix:`}}`,formatSeparator:`,`,unescapePrefix:`-`,nestingPrefix:`$t(`,nestingSuffix:`)`,nestingOptionsSeparator:`,`,maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),vt=e=>(O(e.ns)&&(e.ns=[e.ns]),O(e.fallbackLng)&&(e.fallbackLng=[e.fallbackLng]),O(e.fallbackNS)&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs&&!e.supportedLngs.includes(`cimode`)&&(e.supportedLngs=e.supportedLngs.concat([`cimode`])),e),yt=()=>{},bt=e=>{Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(t=>{typeof e[t]==`function`&&(e[t]=e[t].bind(e))})},xt=class e extends Xe{constructor(e={},t){if(super(),this.options=vt(e),this.services={},this.logger=Ye,this.modules={external:[]},bt(this),t&&!this.isInitialized&&!e.isClone){if(!this.options.initAsync)return this.init(e,t),this;setTimeout(()=>{this.init(e,t)},0)}}init(e={},t){this.isInitializing=!0,typeof e==`function`&&(t=e,e={}),e.defaultNS==null&&e.ns&&(O(e.ns)?e.defaultNS=e.ns:e.ns.includes(`translation`)||(e.defaultNS=e.ns[0]));let n=_t();this.options={...n,...this.options,...vt(e)},this.options.interpolation={...n.interpolation,...this.options.interpolation},e.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=e.keySeparator),e.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=e.nsSeparator),typeof this.options.overloadTranslationOptionHandler!=`function`&&(this.options.overloadTranslationOptionHandler=n.overloadTranslationOptionHandler);let r=e=>e?typeof e==`function`?new e:e:null;if(!this.options.isClone){this.modules.logger?Ye.init(r(this.modules.logger),this.options):Ye.init(null,this.options);let e;e=this.modules.formatter?this.modules.formatter:mt;let t=new it(this.options);this.store=new Ze(this.options.resources,this.options);let n=this.services;n.logger=Ye,n.resourceStore=this.store,n.languageUtils=t,n.pluralResolver=new st(t,{prepend:this.options.pluralSeparator}),e&&(n.formatter=r(e),n.formatter.init&&n.formatter.init(n,this.options),this.options.interpolation.format=n.formatter.format.bind(n.formatter)),n.interpolator=new ut(this.options),n.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},n.backendConnector=new gt(r(this.modules.backend),n.resourceStore,n,this.options),n.backendConnector.on(`*`,(e,...t)=>{this.emit(e,...t)}),this.modules.languageDetector&&(n.languageDetector=r(this.modules.languageDetector),n.languageDetector.init&&n.languageDetector.init(n,this.options.detection,this.options)),this.modules.i18nFormat&&(n.i18nFormat=r(this.modules.i18nFormat),n.i18nFormat.init&&n.i18nFormat.init(this)),this.translator=new rt(this.services,this.options),this.translator.on(`*`,(e,...t)=>{this.emit(e,...t)}),this.modules.external.forEach(e=>{e.init&&e.init(this)})}if(this.format=this.options.interpolation.format,t||=yt,this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){let e=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);e.length>0&&e[0]!==`dev`&&(this.options.lng=e[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn(`init: no languageDetector is used and no lng is defined`),[`getResource`,`hasResourceBundle`,`getResourceBundle`,`getDataByLanguage`].forEach(e=>{this[e]=(...t)=>this.store[e](...t)}),[`addResource`,`addResources`,`addResourceBundle`,`removeResourceBundle`].forEach(e=>{this[e]=(...t)=>(this.store[e](...t),this)});let i=De(),a=()=>{let e=(e,n)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn(`init: i18next is already initialized. You should call init just once!`),this.isInitialized=!0,this.options.isClone||this.logger.log(`initialized`,this.options),this.emit(`initialized`,this.options),i.resolve(n),t(e,n)};if((this.languages||this.isLanguageChangingTo)&&!this.isInitialized)return e(null,this.t.bind(this));this.changeLanguage(this.options.lng,e)};return this.options.resources||!this.options.initAsync?a():setTimeout(a,0),i}loadResources(e,t=yt){let n=t,r=O(e)?e:this.language;if(typeof e==`function`&&(n=e),!this.options.resources||this.options.partialBundledLanguages){if(r?.toLowerCase()===`cimode`&&(!this.options.preload||this.options.preload.length===0))return n();let e=[],t=t=>{t&&t!==`cimode`&&this.services.languageUtils.toResolveHierarchy(t).forEach(t=>{t!==`cimode`&&(e.includes(t)||e.push(t))})};r?t(r):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(e=>t(e)),this.options.preload?.forEach?.(e=>t(e)),this.services.backendConnector.load(e,this.options.ns,e=>{!e&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),n(e)})}else n(null)}reloadResources(e,t,n){let r=De();return typeof e==`function`&&(n=e,e=void 0),typeof t==`function`&&(n=t,t=void 0),e||=this.languages,t||=this.options.ns,n||=yt,this.services.backendConnector.reload(e,t,e=>{r.resolve(),n(e)}),r}use(e){if(!e)throw Error(`You are passing an undefined module! Please check the object you are passing to i18next.use()`);if(!e.type)throw Error(`You are passing a wrong module! Please check the object you are passing to i18next.use()`);return e.type===`backend`&&(this.modules.backend=e),(e.type===`logger`||e.log&&e.warn&&e.error)&&(this.modules.logger=e),e.type===`languageDetector`&&(this.modules.languageDetector=e),e.type===`i18nFormat`&&(this.modules.i18nFormat=e),e.type===`postProcessor`&&Qe.addPostProcessor(e),e.type===`formatter`&&(this.modules.formatter=e),e.type===`3rdParty`&&this.modules.external.push(e),this}setResolvedLanguage(e){if(e&&this.languages&&![`cimode`,`dev`].includes(e)){for(let e=0;e<this.languages.length;e++){let t=this.languages[e];if(![`cimode`,`dev`].includes(t)&&this.store.hasLanguageSomeTranslations(t)){this.resolvedLanguage=t;break}}!this.resolvedLanguage&&!this.languages.includes(e)&&this.store.hasLanguageSomeTranslations(e)&&(this.resolvedLanguage=e,this.languages.unshift(e))}}changeLanguage(e,t){this.isLanguageChangingTo=e;let n=De();this.emit(`languageChanging`,e);let r=e=>{this.language=e,this.languages=this.services.languageUtils.toResolveHierarchy(e),this.resolvedLanguage=void 0,this.setResolvedLanguage(e)},i=(i,a)=>{a?this.isLanguageChangingTo===e&&(r(a),this.translator.changeLanguage(a),this.isLanguageChangingTo=void 0,this.emit(`languageChanged`,a),this.logger.log(`languageChanged`,a)):this.isLanguageChangingTo=void 0,n.resolve((...e)=>this.t(...e)),t&&t(i,(...e)=>this.t(...e))},a=t=>{!e&&!t&&this.services.languageDetector&&(t=[]);let n=O(t)?t:t&&t[0],a=this.store.hasLanguageSomeTranslations(n)?n:this.services.languageUtils.getBestMatchFromCodes(O(t)?[t]:t);a&&(this.language||r(a),this.translator.language||this.translator.changeLanguage(a),this.services.languageDetector?.cacheUserLanguage?.(a)),this.loadResources(a,e=>{i(e,a)})};return!e&&this.services.languageDetector&&!this.services.languageDetector.async?a(this.services.languageDetector.detect()):!e&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(a):this.services.languageDetector.detect(a):a(e),n}getFixedT(e,t,n,r){let i=r?.scopeNs,a=(e,t,...r)=>{let o;o=typeof t==`object`?{...t}:this.options.overloadTranslationOptionHandler([e,t].concat(r)),o.lng=o.lng||a.lng,o.lngs=o.lngs||a.lngs;let s=o.ns!==void 0&&o.ns!==null;o.ns=o.ns||a.ns,o.keyPrefix!==``&&(o.keyPrefix=o.keyPrefix||n||a.keyPrefix);let c={...this.options,...o};Array.isArray(i)&&!s&&(c.ns=i),typeof o.keyPrefix==`function`&&(o.keyPrefix=tt(o.keyPrefix,c));let l=this.options.keySeparator||`.`,u;return o.keyPrefix&&Array.isArray(e)?u=e.map(e=>(typeof e==`function`&&(e=tt(e,c)),`${o.keyPrefix}${l}${e}`)):(typeof e==`function`&&(e=tt(e,c)),u=o.keyPrefix?`${o.keyPrefix}${l}${e}`:e),this.t(u,o)};return O(e)?a.lng=e:a.lngs=e,a.ns=t,a.keyPrefix=n,a}t(...e){return this.translator?.translate(...e)}exists(...e){return this.translator?.exists(...e)}setDefaultNamespace(e){this.options.defaultNS=e}hasLoadedNamespace(e,t={}){if(!this.isInitialized)return this.logger.warn(`hasLoadedNamespace: i18next was not initialized`,this.languages),!1;
13if(!this.languages||!this.languages.length)return this.logger.warn(`hasLoadedNamespace: i18n.languages were undefined or empty`,this.languages),!1;let n=t.lng||this.resolvedLanguage||this.languages[0],r=this.options?this.options.fallbackLng:!1,i=this.languages[this.languages.length-1];if(n.toLowerCase()===`cimode`)return!0;let a=(e,t)=>{let n=this.services.backendConnector.state[`${e}|${t}`];return n===-1||n===0||n===2};if(t.precheck){let e=t.precheck(this,a);if(e!==void 0)return e}return!!(this.hasResourceBundle(n,e)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||a(n,e)&&(!r||a(i,e)))}loadNamespaces(e,t){let n=De();return this.options.ns?(O(e)&&(e=[e]),e.forEach(e=>{this.options.ns.includes(e)||this.options.ns.push(e)}),this.loadResources(e=>{n.resolve(),t&&t(e)}),n):(t&&t(),Promise.resolve())}loadLanguages(e,t){let n=De();O(e)&&(e=[e]);let r=this.options.preload||[],i=e.filter(e=>!r.includes(e)&&this.services.languageUtils.isSupportedCode(e));return i.length?(this.options.preload=r.concat(i),this.loadResources(e=>{n.resolve(),t&&t(e)}),n):(t&&t(),Promise.resolve())}dir(e){if(e||=this.resolvedLanguage||(this.languages?.length>0?this.languages[0]:this.language),!e)return`rtl`;try{let t=new Intl.Locale(e);if(t&&t.getTextInfo){let e=t.getTextInfo();if(e&&e.direction)return e.direction}}catch{}let t=`ar.shu.sqr.ssh.xaa.yhd.yud.aao.abh.abv.acm.acq.acw.acx.acy.adf.ads.aeb.aec.afb.ajp.apc.apd.arb.arq.ars.ary.arz.auz.avl.ayh.ayl.ayn.ayp.bbz.pga.he.iw.ps.pbt.pbu.pst.prp.prd.ug.ur.ydd.yds.yih.ji.yi.hbo.men.xmn.fa.jpr.peo.pes.prs.dv.sam.ckb`.split(`.`),n=this.services?.languageUtils||new it(_t());return e.toLowerCase().indexOf(`-latn`)>1?`ltr`:t.includes(n.getLanguagePartFromCode(e))||e.toLowerCase().indexOf(`-arab`)>1?`rtl`:`ltr`}static createInstance(t={},n){let r=new e(t,n);return r.createInstance=e.createInstance,r}cloneInstance(t={},n=yt){let r=t.forkResourceStore;r&&delete t.forkResourceStore;let i={...this.options,...t,isClone:!0},a=new e(i);if((t.debug!==void 0||t.prefix!==void 0)&&(a.logger=a.logger.clone(t)),[`store`,`services`,`language`].forEach(e=>{a[e]=this[e]}),a.services={...this.services},a.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},r&&(a.store=new Ze(Object.keys(this.store.data).reduce((e,t)=>(e[t]={...this.store.data[t]},e[t]=Object.keys(e[t]).reduce((n,r)=>(n[r]={...e[t][r]},n),e[t]),e),{}),i),a.services.resourceStore=a.store),t.interpolation){let e={..._t().interpolation,...this.options.interpolation,...t.interpolation},n={...i,interpolation:e};a.services.interpolator=new ut(n)}return a.translator=new rt(a.services,i),a.translator.on(`*`,(e,...t)=>{a.emit(e,...t)}),a.init(i,n),a.translator.options=i,a.translator.backendConnector.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},a}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}.createInstance();xt.createInstance,xt.dir,xt.init,xt.loadResources,xt.reloadResources,xt.use,xt.changeLanguage,xt.getFixedT,xt.t,xt.exists,xt.setDefaultNamespace,xt.hasLoadedNamespace,xt.loadNamespaces,xt.loadLanguages;var St=e(a(((e,t)=>{t.exports={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0}}))()),Ct=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?("[^"]*"|'[^']*')/g;function wt(e){var t={type:`tag`,name:``,voidElement:!1,attrs:{},children:[]},n=e.match(/<\/?([^\s]+?)[/\s>]/);if(n&&(t.name=n[1],(St.default[n[1]]||e.charAt(e.length-2)===`/`)&&(t.voidElement=!0),t.name.startsWith(`!--`))){var r=e.indexOf(`-->`);return{type:`comment`,comment:r===-1?``:e.slice(4,r)}}for(var i=new RegExp(Ct),a=null;(a=i.exec(e))!==null;)if(a[0].trim()){if(a[1]){var o=a[1].trim(),s=[o,``];o.indexOf(`=`)>-1&&(s=o.split(`=`)),t.attrs[s[0]]=s[1],i.lastIndex--}else a[2]&&(t.attrs[a[2]]=a[3].trim().substring(1,a[3].length-1))}return t}var Tt=/<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g,Et=/^\s*$/,Dt=Object.create(null);function Ot(e,t){switch(t.type){case`text`:return e+t.content;case`tag`:return e+=`<`+t.name+(t.attrs?function(e){var t=[];for(var n in e)t.push(n+`="`+e[n]+`"`);return t.length?` `+t.join(` `):``}(t.attrs):``)+(t.voidElement?`/>`:`>
13`),t.voidElement?e:e+t.children.reduce(Ot,``)+`</`+t.name+`>`;case`comment`:return e+`<!--`+t.comment+`-->`}}var kt={parse:function(e,t){t||={},t.components||(t.components=Dt);var n,r=[],i=[],a=-1,o=!1;if(e.indexOf(`<`)!==0){var s=e.indexOf(`<`);r.push({type:`text`,content:s===-1?e:e.substring(0,s)})}for(var c,l=[];c=Tt.exec(e);)l.push(c);return l.forEach(function(e,t){var n=e[0];if(n&&!n.startsWith(`<!--`)){for(var r=0,i=0,a=-1,o=null,s=0;s<n.length;s++){var c=n.charAt(s);o?c===o&&(o=null):c===`"`||c===`'`?o=c:c===`<`?++r==2&&(a=s):c===`>`&&i++}var u=a>-1&&/[a-zA-Z0-9\-!/]/.test(n.charAt(a+1));if(r>i&&u){var d=n.substring(0,a),f=n.substring(d.length);l[t][0]=f,l[t].index+=d.length}}}),l.forEach(function(s,c){var u=s[0];if(u){var d=s.index;if(o){if(u!==`</`+n.name+`>`)return;o=!1}var f,p,m=u.charAt(1)!==`/`,h=u.startsWith(`<!--`),g=d+u.length,_=e.charAt(g),v=l[c+1];if(_===`<`&&v){var y=e.substring(g,v.index);f=y.split(`<`).length>y.split(`>`).length}if(h){var b=wt(u);if(a<0)return r.push(b),r;(p=i[a]).children.push(b);var x=e.slice(g,v?v.index:void 0);return x.length>0&&p.children.push({type:`text`,content:x}),r}if(m&&(a++,(n=wt(u)).type===`tag`&&t.components[n.name]&&(n.type=`component`,o=!0),n.voidElement||o||!_||_===`<`||n.children.push({type:`text`,content:e.slice(g,v?v.index:void 0)}),a===0&&r.push(n),(p=i[a-1])&&p.children.push(n),i[a]=n),(!m||n.voidElement)&&(a>-1&&(n.voidElement||n.name===u.slice(2,-1))&&(a--,n=a===-1?r:i[a]),!o&&(_!==`<`||f)&&_)){p=a===-1?r:i[a].children;var S=v?v.index:-1,C=e.slice(g,S===-1?void 0:S);Et.test(C)&&(C=` `),(S>-1&&a+p.length>=0||C!==` `)&&p.push({type:`text`,content:C})}}}),r},stringify:function(e){return e.reduce(function(e,t){return e+Ot(``,t)},``)}},At=(e,t,n,r)=>{let i=[n,{code:t,...r||{}}];if(e?.services?.logger?.forward)return e.services.logger.forward(i,`warn`,`react-i18next::`,!0);Lt(i[0])&&(i[0]=`react-i18next:: ${i[0]}`),e?.services?.logger?.warn?e.services.logger.warn(...i):console?.warn&&console.warn(...i)},jt={},Mt=(e,t,n,r)=>{Lt(n)&&jt[n]||(Lt(n)&&(jt[n]=new Date),At(e,t,n,r))},Nt=(e,t)=>()=>{if(e.isInitialized)t();else{let n=()=>{setTimeout(()=>{e.off(`initialized`,n)},0),t()};e.on(`initialized`,n)}},Pt=(e,t,n)=>{e.loadNamespaces(t,Nt(e,n))},Ft=(e,t,n,r)=>{if(Lt(n)&&(n=[n]),e.options.preload&&e.options.preload.indexOf(t)>-1)return Pt(e,n,r);n.forEach(t=>{e.options.ns.indexOf(t)<0&&e.options.ns.push(t)}),e.loadLanguages(t,Nt(e,r))},It=(e,t,n={})=>!t.languages||!t.languages.length?(Mt(t,`NO_LANGUAGES`,`i18n.languages were undefined or empty`,{languages:t.languages}),!0):t.hasLoadedNamespace(e,{lng:n.lng,precheck:(t,r)=>{if(n.bindI18n&&n.bindI18n.indexOf(`languageChanging`)>-1&&t.services.backendConnector.backend&&t.isLanguageChangingTo&&!r(t.isLanguageChangingTo,e))return!1}}),Lt=e=>typeof e==`string`,Rt=e=>typeof e==`object`&&!!e,zt=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,Bt={"&":`&`,"&":`&`,"<":`<`,"<":`<`,">":`>`,">":`>`,"'":`'`,"'":`'`,""":`"`,""":`"`," ":` `," ":` `,"©":`©`,"©":`©`,"®":`®`,"®":`®`,"…":`â¦`,"…":`â¦`,"/":`/`,"/":`/`},Vt=e=>Bt[e],Ht=e=>e.replace(zt,Vt),Ut={bindI18n:`languageChanged`,bindI18nStore:``,transEmptyNodeValue:``,transSupportBasicHtmlNodes:!0,transWrapTextNodes:``,transKeepBasicHtmlNodesFor:[`br`,`strong`,`i`,`p`],useSuspense:!0,unescape:Ht,transDefaultProps:void 0},Wt=(e={})=>{Ut={...Ut,...e}},Gt=()=>Ut,Kt,qt=e=>{Kt=e},Jt=()=>Kt,Yt=(e,t)=>{if(!e)return!1;let n=e.props?.children??e.children;return t?n.length>0:!!n},Xt=e=>{if(!e)return[];let t=e.props?.children??e.children;return e.props?.i18nIsDynamicList?Qt(t):t},Zt=e=>Array.isArray(e)&&e.every(y.isValidElement),Qt=e=>Array.isArray(e)?e:[e],$t=(e,t)=>{let n={...t};return n.props={...t.props,...e.props},n},en=e=>{let t={};if(!e)return t;let n=e=>{Qt(e).forEach(e=>{Lt(e)||(Yt(e)?n(Xt(e)):Rt(e)&&!(0,y.isValidElement)(e)&&Object.assign(t,e))})};return n(e),t},tn=(e,t,n,r)=>{if(!e)return``;let i=``,a=Qt(e),o=t?.transSupportBasicHtmlNodes?t.transKeepBasicHtmlNodesFor??[]:[];return a.forEach((e,a)=>{if(Lt(e)){i+=`${e}`;return}if((0,y.isValidElement)(e)){let{props:s,type:c}=e,l=Object.keys(s).length,u=o.indexOf(c)>-1,d=s.children;if(!d&&u&&!l){i+=`<${c}/>`;return}if(!d&&(!u||l)||s.i18nIsDynamicList){i+=`<${a}></${a}>`;return}if(u&&l<=1){let e=Lt(d)?d:tn(d,t,n,r);i+=`<${c}>${e}</${c}>`;return}let f=tn(d,t,n,r);i+=`<${a}>${f}</${a}>`;return}if(e===null){At(n,`TRANS_NULL_VALUE`,`Passed in a null value as child`,{i18nKey:r});return}if(Rt(e)){let{format:t,...a}=e,o=Object.keys(a);if(o.length===1){let e=t?`${o[0]}, ${t}`:o[0];i+=`{{${e}}}`;return}At(n,`TRANS_INVALID_OBJ`,`Invalid child - Object should only have keys {{ value, format }} (format is optional).`,{i18nKey:r,child:e});return}At(n,`TRANS_INVALID_VAR`,`Passed in a variable like {number} - pass variables for interpolation as full objects like {{number}}.`,{i18nKey:r,child:e})}),i},k=(e,t=[],n={})=>
13{if(!e)return e;let r=Object.keys(n),i=[...t,...r],a=``,o=0;for(;o<e.length;)if(e[o]===`<`){let t=!1,n=e.slice(o).match(/^<\/(\d+|[a-zA-Z][a-zA-Z0-9_-]*)>/);if(n){let e=n[1];(/^\d+$/.test(e)||i.includes(e))&&(t=!0,a+=n[0],o+=n[0].length)}if(!t){let n=e.slice(o).match(/^<(\d+|[a-zA-Z][a-zA-Z0-9_-]*)(\s+[\w-]+(?:=(?:"[^"]*"|'[^']*'|[^\s>]+))?)*\s*(\/)?>/);if(n){let e=n[1];(/^\d+$/.test(e)||i.includes(e))&&(t=!0,a+=n[0],o+=n[0].length)}}t||(a+=`<`,o+=1)}else a+=e[o],o+=1;return a},nn=(e,t,n,r,i,a,o)=>{if(n===``)return[];let s=i.transKeepBasicHtmlNodesFor||[],c=n&&new RegExp(s.map(e=>`<${e}`).join(`|`)).test(n);if(!e&&!t&&!c&&!o)return[n];let l=t??{},u=e=>{Qt(e).forEach(e=>{Lt(e)||(Yt(e)?u(Xt(e)):Rt(e)&&!(0,y.isValidElement)(e)&&Object.assign(l,e))})};u(e);let d=k(n,s,l),f=kt.parse(`<0>${d}</0>`),p={...l,...a},m=(e,t,n)=>{let r=Xt(e),i=g(r,t.children,n);return Zt(r)&&i.length===0||e.props?.i18nIsDynamicList?r:i},h=(e,t,n,r,i)=>{e.dummy?(e.children=t,n.push((0,y.cloneElement)(e,{key:r},i?void 0:t))):n.push(...y.Children.map([e],e=>{if(e.type===y.Fragment||e.props?.i18nIsDynamicList!==void 0){let n={key:r};return e&&e.props&&Object.keys(e.props).forEach(t=>{t!==`children`&&t!==`i18nIsDynamicList`&&(n[t]=e.props[t])}),(0,y.createElement)(e.type,n,i?null:t)}let n={key:r};return e&&e.props&&Object.keys(e.props).forEach(t=>{t!==`ref`&&t!==`children`&&(n[t]=e.props[t])}),(0,y.cloneElement)(e,n,i?null:t)}))},g=(e,n,a)=>{let l=Qt(e),u=Qt(n),d={};return u.reduce((e,n,u)=>{let f=n.children?.[0]?.content&&r.services.interpolator.interpolate(n.children[0].content,p,r.language);if(n.type===`tag`){let _=l[parseInt(n.name,10)];!_&&t&&(_=t[n.name]),a.length===1&&!_&&(_=a[0][n.name]),_||={};let v={...n.attrs};o&&Object.keys(v).forEach(e=>{let t=v[e];Lt(t)&&(v[e]=Ht(t))});let b=Object.keys(v).length===0?_:$t({props:v},_),x=(0,y.isValidElement)(b),S=x&&Yt(n,!0)&&!n.voidElement,C=c&&Rt(b)&&b.dummy&&!x,ee=Rt(t)&&Object.hasOwnProperty.call(t,n.name);if(Lt(b)){let t=r.services.interpolator.interpolate(b,p,r.language);e.push(t)}else if(Yt(b)||S){let t=m(b,n,a);h(b,t,e,u)}else if(C){let t=g(l,n.children,a);h(b,t,e,u)}
13else if(Number.isNaN(parseFloat(n.name))){if(ee){let t=m(b,n,a);h(b,t,e,u,n.voidElement)}else if(i.transSupportBasicHtmlNodes&&s.indexOf(n.name)>-1){if(n.voidElement)e.push((0,y.createElement)(n.name,{key:`${n.name}-${u}`}));else{let t=d[n.name]||0;d[n.name]=t+1;let r,i=0;for(let e=0;e<l.length;e+=1){let a=l[e];if((0,y.isValidElement)(a)&&a.type===n.name){if(i===t){r=a;break}i+=1}}let o=r?Qt(Xt(r)):l,s=g(o,n.children,a);e.push((0,y.createElement)(n.name,{key:`${n.name}-${u}`},s))}}else if(n.voidElement)e.push(`<${n.name} />`);else{let t=g(l,n.children,a);e.push(`<${n.name}>${t}</${n.name}>`)}}else if(Rt(b)&&!x){let t=n.children[0]?f:null;t&&e.push(t)}else h(b,f,e,u,n.children.length!==1||!f)}else if(n.type===`text`){let t=i.transWrapTextNodes,a=typeof i.unescape==`function`?i.unescape:Gt().unescape,s=o?a(r.services.interpolator.interpolate(n.content,p,r.language)):r.services.interpolator.interpolate(n.content,p,r.language);t?e.push((0,y.createElement)(t,{key:`${n.name}-${u}`},s)):e.push(s)}return e},[])};return Xt(g([{dummy:!0,children:e||[]}],f,Qt(e||[]))[0])},rn=(e,t,n)=>{let r=e.key||t,i=(0,y.cloneElement)(e,{key:r});if(!i.props||!i.props.children||n.indexOf(`${t}/>`)<0&&n.indexOf(`${t} />`)<0)return i;function a(){return(0,y.createElement)(y.Fragment,null,i)}return(0,y.createElement)(a,{key:r})},an=(e,t)=>e.map((e,n)=>rn(e,n,t)),on=(e,t)=>{let n={};return Object.keys(e).forEach(r=>{Object.assign(n,{[r]:rn(e[r],r,t)})}),n},sn=(e,t,n,r)=>e?Array.isArray(e)?an(e,t):Rt(e)?on(e,t):(Mt(n,`TRANS_INVALID_COMPONENTS`,`<Trans /> "components" prop expects an object or array`,{i18nKey:r}),null):null,cn=e=>!Rt(e)||Array.isArray(e)?!1:Object.keys(e).reduce((e,t)=>e&&Number.isNaN(Number.parseFloat(t)),!0);function ln({children:e,count:t,parent:n,i18nKey:r,context:i,tOptions:a={},values:o,defaults:s,components:c,ns:l,i18n:u,t:d,shouldUnescape:f,...p}){let m=u||Jt();if(!m)return Mt(m,`NO_I18NEXT_INSTANCE`,`Trans: You need to pass in an i18next instance using i18nextReactModule`,{i18nKey:r}),e;let h=d||m.t.bind(m)||(e=>e),g={...Gt(),...m.options?.react},_=l||h.ns||m.options?.defaultNS;_=Lt(_)?[_]:_||[`translation`];let{transDefaultProps:v}=g,b=v?.tOptions?{...v.tOptions,...a}:a,x=f??v?.shouldUnescape,S=v?.values?{...v.values,...o}:o,C=v?.components?{...v.components,...c}:c,ee=tn(e,g,m,r),w=s||b?.defaultValue||ee||g.transEmptyNodeValue||(typeof r==`function`?tt(r):r),{hashTransKey:te}=g,T=r||(te?te(ee||w):ee||w);o=m.options?.interpolation?.defaultVariables?S&&Object.keys(S).length>0?{...S,...m.options.interpolation.defaultVariables}:{...m.options.interpolation.defaultVariables}:S;let ne=en(e);ne&&typeof ne.count==`number`&&t===void 0&&(t=ne.count);let re=o||t!==void 0&&!m.options?.interpolation?.alwaysFormat||!e?b.interpolation:{interpolation:{...b.interpolation,prefix:`#$?`,suffix:`?$#`}},ie={...b,context:i||b.context,count:t,...o,...re,defaultValue:w,ns:_},ae=T?h(T,ie):w;ae===T&&w&&(ae=w);let oe=sn(C,ae,m,r),se=oe||e,ce=null;cn(oe)&&(ce=oe,se=e);let le=nn(se,ce,ae,m,g,ie,x),ue=n??g.defaultTransParent;return ue?(0,y.createElement)(ue,p,le):le}var un={type:`3rdParty`,init(e){Wt(e.options.react),qt(e)}},dn=(0,y.createContext)(),fn=class{constructor(){this.usedNamespaces={}}addUsedNamespaces(e){e.forEach(e=>{this.usedNamespaces[e]||(this.usedNamespaces[e]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}};function pn({children:e,count:t,parent:n,i18nKey:r,context:i,tOptions:a={},values:o,defaults:s,components:c,ns:l,i18n:u,t:d,shouldUnescape:f,...p}){let{i18n:m,defaultNS:h}=(0,y.useContext)(dn)||{},g=u||m||Jt(),_=d||g?.t.bind(g);return ln({children:e,count:t,parent:n,i18nKey:r,context:i,tOptions:a,values:o,defaults:s,components:c,ns:l||_?.ns||h||g?.options?.defaultNS,i18n:g,t:d,shouldUnescape:f,...p})}var mn=a((e=>{var t=o();function n(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var r=typeof Object.is==`function`?Object.is:n,i=t.useState,a=t.useEffect,s=t.useLayoutEffect,c=t.useDebugValue;function l(e,t){var n=t(),r=i({inst:{value:n,getSnapshot:t}}),o=r[0].inst,l=r[1];return s(function(){o.value=n,o.getSnapshot=t,u(o)&&l({inst:o})},[e,n,t]),a(function(){return u(o)&&l({inst:o}),e(function(){u(o)&&l({inst:o})})},[e]),c(n),n}function u(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!r(e,n)}catch{return!0}}function d(e,t){return t()}var f=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?d:l;e.useSyncExternalStore=t.useSyncExternalStore===void 0?f:t.useSyncExternalStore})),hn=a(((e,t)=>{t.exports=mn()}))(),gn={t:(e,t)=>{if(Lt(t))return t;if(Rt(t)&&Lt(t.defaultValue))return t.defaultValue;if(typeof e==`function`)return``;if(Array.isArray(e)){let t=e[e.length-1];return typeof t==`function`?``:t}return e},ready:!1},_n=()=>()=>{},vn=(e,t={})=>{let{i18n:n}=t,{i18n:r,defaultNS:i}=(0,y.useContext)(dn)||{},a=n||r||Jt();a&&!a.reportNamespaces&&(a.reportNamespaces=new fn),a||Mt(a,`NO_I18NEXT_INSTANCE`,`useTranslation: You will need to pass in an i18next instance by using initReactI18next`);let o=(0,y.useMemo)(()=>({...Gt(),...a?.options?.react,...t}),[a,t]),{useSuspense:s,keyPrefix:c}=o,l=e||i||a?.options?.defaultNS,u=Lt(l)?[l]:l||[`translation`],d=(0,y.useMemo)(()=>u,u);
vendor: 2,351 bytes, line 13
13a?.reportNamespaces?.addUsedNamespaces?.(d);let f=(0,y.useRef)(0),p=(0,y.useCallback)(e=>{if(!a)return _n;let{bindI18n:t,bindI18nStore:n}=o,r=()=>{f.current+=1,e()};return t&&a.on(t,r),n&&a.store.on(n,r),()=>{t&&t.split(` `).forEach(e=>a.off(e,r)),n&&n.split(` `).forEach(e=>a.store.off(e,r))}},[a,o]),m=(0,y.useRef)(),h=(0,y.useCallback)(()=>{if(!a)return gn;let e=!!(a.isInitialized||a.initializedStoreOnce)&&d.every(e=>It(e,a,o)),n=t.lng||a.language,r=f.current,i=m.current;if(i&&i.ready===e&&i.lng===n&&i.keyPrefix===c&&i.revision===r)return i;let s={t:a.getFixedT(n,o.nsMode===`fallback`?d:d[0],c,{scopeNs:d}),ready:e,lng:n,keyPrefix:c,revision:r};return m.current=s,s},[a,d,c,o,t.lng]),[g,_]=(0,y.useState)(0),{t:v,ready:b}=(0,hn.useSyncExternalStore)(p,h,h);(0,y.useEffect)(()=>{if(a&&!b&&!s){let e=()=>_(e=>e+1);t.lng?Ft(a,t.lng,d,e):Pt(a,d,e)}},[a,t.lng,d,b,s,g]);let x=a||{},S=(0,y.useRef)(null),C=(0,y.useRef)(),ee=e=>{let t=Object.getOwnPropertyDescriptors(e);t.__original&&delete t.__original;let n=Object.create(Object.getPrototypeOf(e),t);if(!Object.prototype.hasOwnProperty.call(n,`__original`))try{Object.defineProperty(n,"__original",{value:e,writable:!1,enumerable:!1,configurable:!1})}catch{}return n},w=(0,y.useMemo)(()=>{let e=x,t=e?.language,n=e;e&&(S.current&&S.current.__original===e&&C.current===t?n=S.current:(n=ee(e),S.current=n,C.current=t));let r=!b&&!s?(...e)=>(Mt(a,`USE_T_BEFORE_READY`,`useTranslation: t was called before ready. When using useSuspense: false, make sure to check the ready flag before using t.`),v(...e)):v,i=[r,n,b];return i.t=r,i.i18n=n,i.ready=b,i},[v,x,b,x.resolvedLanguage,x.language,x.languages]);if(a&&s&&!b)throw new Promise(e=>{let n=()=>e();t.lng?Ft(a,t.lng,d,n):Pt(a,d,n)});return w},yn=f(),bn=[`/`,`/pricing`,`/how-it-works`,`/ai`,`/for-your-team`,`/why-not-just-use-ai`,`/why-no-sales`,`/swiss-made-tms`,`/eu-accessibility-act-localization`,`/ai-act-check`,`/multi-tenant`,`/customers`,`/services`,`/blog`,`/docs/introduction`,`/docs/getting-started`,`/docs/getting-started/create-a-user-account`,`/docs/getting-started/add-a-new-project`,`/docs/getting-started/add-content`,`/docs/whats-inside`,`/docs/the-different-views`,`/docs/the-different-views/project-dashboard`,`/docs/the-different-views/cat`,`/docs/the-different-views/incontext`,`/docs/eu-ai-act-article-50`],xn=Object.assign({
13"../pages/blog/posts/10-years-of-locize.mdx":()=>i(()=>import(`./chunk-CEL6vSbQ.js`).then(e=>e.t),__vite__mapDeps([0,1,2])),
13"../pages/blog/posts/8-signs-you-should-improve-your-localization-process.mdx":()=>i(()=>import(`./chunk-BPjY-kQj.js`).then(e=>e.t),__vite__mapDeps([3,1,2])),
13"../pages/blog/posts/a-tale-of-the-last-10-years-in-web-development.mdx":()=>i(()=>import(`./chunk-CHPuWe_Y.js`).then(e=>e.t),__vite__mapDeps([4,1,2])),
13"../pages/blog/posts/ai-act-article-50.mdx":()=>i(()=>import(`./chunk-Biy4ZVfm.js`).then(e=>e.t),__vite__mapDeps([5,1,2])),
13"../pages/blog/posts/ai-act-transparency-code-of-practice.mdx":()=>i(()=>import(`./chunk-DGQvR-_9.js`).then(e=>e.t),__vite__mapDeps([6,1,2])),
13"../pages/blog/posts/ai-in-localization.mdx":()=>i(()=>import(`./chunk-FIlUNtxA.js`).then(e=>e.t),__vite__mapDeps([7,1,2])),
13"../pages/blog/posts/ai-quickstart-locize.mdx":()=>i(()=>import(`./chunk-CnnduCCs.js`).then(e=>e.t),__vite__mapDeps([8,1,2])),
13"../pages/blog/posts/ai-translation-changes-things.mdx":()=>i(()=>import(`./chunk-CkNfFR2n.js`).then(e=>e.t),__vite__mapDeps([9,1,2])),
13"../pages/blog/posts/ai-translation-quality-estimation.mdx":()=>i(()=>import(`./chunk-DliwoSP_.js`).then(e=>e.t),__vite__mapDeps([10,1,2])),
13"../pages/blog/posts/ai-vs-mt-vs-tm.mdx":()=>i(()=>import(`./chunk-DBVtunAy.js`).then(e=>e.t),__vite__mapDeps([11,1,2])),
13"../pages/blog/posts/angular-i18next.mdx":()=>i(()=>import(`./chunk-BMya43B0.js`).then(e=>e.t),__vite__mapDeps([12,1,2])),
13"../pages/blog/posts/astro-i18n.mdx":()=>i(()=>import(`./chunk-CRqv3qhj.js`).then(e=>e.t),__vite__mapDeps([13,1,2])),
13"../pages/blog/posts/automatic-translation-i18next-locize.mdx":()=>i(()=>import(`./chunk-DEpaBhRE.js`).then(e=>e.t),__vite__mapDeps([14,1,2])),
13"../pages/blog/posts/back-to-roots-locize-website.mdx":()=>i(()=>import(`./chunk-DkHTWjlq.js`).then(e=>e.t),__vite__mapDeps([15,1,2])),
13"../pages/blog/posts/browser-translates.mdx":()=>i(()=>import(`./chunk-BozCb3SQ.js`).then(e=>e.t),__vite__mapDeps([16,1,2])),
13"../pages/blog/posts/building-robust-offline-first-apps-with-i18next.mdx":()=>i(()=>import(`./chunk-Cs6fbtxP.js`).then(e=>e.t),__vite__mapDeps([17,1,2])),
13"../pages/blog/posts/bunny-cdn.mdx":()=>i(()=>import(`./chunk-CFSjrja1.js`).then(e=>e.t),__vite__mapDeps([18,1,2])),
13"../pages/blog/posts/cat.mdx":()=>i(()=>import(`./chunk-CDgmGONK.js`).then(e=>e.t),__vite__mapDeps([19,1,2])),
13"../pages/blog/posts/coding-agents-translation.mdx":()=>i(()=>import(`./chunk-C_zhq0WO.js`).then(e=>e.t),__vite__mapDeps([20,1,2])),
13"../pages/blog/posts/continuous-development-integration-and-localization.mdx":()=>i(()=>import(`./chunk-Cc4X257I.js`).then(e=>e.t),__vite__mapDeps([21,1,2])),
13"../pages/blog/posts/continuous-localization-deployment.mdx":()=>i(()=>import(`./chunk-D2UydqUW.js`).then(e=>e.t),__vite__mapDeps([22,1,2])),
13"../pages/blog/posts/day-zero-how-all-began.mdx":()=>i(()=>import(`./chunk-BNj_5Ria.js`).then(e=>e.t),__vite__mapDeps([23,1,2])),
13"../pages/blog/posts/diy-localization-trap-ai-json.mdx":()=>i(()=>import(`./chunk-BGF7yq6Q.js`).then(e=>e.t),__vite__mapDeps([24,1,2])),
13"../pages/blog/posts/eat-our-own-dogfood.mdx":()=>i(()=>import(`./chunk-CDZhwPPR.js`).then(e=>e.t),__vite__mapDeps([25,1,2])),
13"../pages/blog/posts/enterprise-translation-management-system.mdx":()=>i(()=>import(`./chunk-Dw0tUlBu.js`).then(e=>e.t),__vite__mapDeps([26,1,2])),
13"../pages/blog/posts/focus-view-poll-with-vaultrice.mdx":()=>i(()=>import(`./chunk-pc1iL3O8.js`).then(e=>e.t),__vite__mapDeps([27,1,2])),
13"../pages/blog/posts/future-of-translation.mdx":()=>i(()=>import(`./chunk-ySYRUPmd.js`).then(e=>e.t),__vite__mapDeps([28,1,2])),
13"../pages/blog/posts/gatsby-i18n.mdx":()=>i(()=>import(`./chunk-DPz-j2oz.js`).then(e=>e.t),__vite__mapDeps([29,1,2])),
13"../pages/blog/posts/give-vue-i18n-more-superpowers.mdx":()=>i(()=>import(`./chunk-BhX1WTfc.js`).then(e=>e.t),__vite__mapDeps([30,1,2])),
13"../pages/blog/posts/globalization-vs-localization.mdx":()=>i(()=>import(`./chunk-BWTfldEJ.js`).then(e=>e.t),__vite__mapDeps([31,1,2])),
13"../pages/blog/posts/google-translate-accuracy.mdx":()=>i(()=>import(`./chunk-DZGDW4un.js`).then(e=>e.t),__vite__mapDeps([32,1,2])),
13"../pages/blog/posts/guide-to-i18n-key-naming.mdx":()=>i(()=>import(`./chunk-BOFvEUYl.js`).then(e=>e.t),__vite__mapDeps([33,1,2])),
13"../pages/blog/posts/help-tech-leads.mdx":()=>i(()=>import(`./chunk-DelQq9sv.js`).then(e=>e.t),__vite__mapDeps([34,1,2])),
13"../pages/blog/posts/hidden-localization-costs.mdx":()=>i(()=>import(`./chunk-WsNO0CwC.js`).then(e=>e.t),__vite__mapDeps([35,1,2])),
13"../pages/blog/posts/how-does-server-side-internationalization-look-like.mdx":()=>i(()=>import(`./chunk-C1VDWfG_.js`).then(e=>e.t),__vite__mapDeps([36,1,2])),
13"../pages/blog/posts/how-locize-leverages-serverless.mdx":()=>i(()=>import(`./chunk-CKB6dUkw.js`).then(e=>e.t),__vite__mapDeps([37,1,2])),
13"../pages/blog/posts/how-to-choose-the-right-translation-management-system-with-i18next.mdx":()=>i(()=>import(`./chunk-DYOxpNSN.js`).then(e=>e.t),__vite__mapDeps([38,1,2])),
13"../pages/blog/posts/how-to-easily-add-i18n-to-your-software.mdx":()=>i(()=>import(`./chunk-Cuj5IgXA.js`).then(e=>e.t),__vite__mapDeps([39,1,2])),
13"../pages/blog/posts/how-to-use-i18next-t-outside-react-components.mdx":()=>i(()=>import(`./chunk-DNxVuibX.js`).then(e=>e.t),__vite__mapDeps([40,1,2])),
13"../pages/blog/posts/i18n-for-deno-with-i18next.mdx":()=>i(()=>import(`./chunk-BW6p7ugU.js`).then(e=>e.t),__vite__mapDeps([41,1,2])),
13"../pages/blog/posts/i18n-formats-javascript.mdx":()=>i(()=>import(`./chunk-DQLJB6oC.js`).then(e=>e.t),__vite__mapDeps([42,1,2])),
13"../pages/blog/posts/i18n-formatting.mdx":()=>i(()=>import(`./chunk-xvOKGv17.js`).then(e=>e.t),__vite__mapDeps([43,1,2])),
13"../pages/blog/posts/i18n-next-app-router.mdx":()=>i(()=>import(`./chunk-CGiN_ANj.js`).then(e=>e.t),__vite__mapDeps([44,1,2])),
13"../pages/blog/posts/i18n-pluralization.mdx":()=>i(()=>import(`./chunk-tP8s_nnS.js`).then(e=>e.t),__vite__mapDeps([45,1,2])),
13"../pages/blog/posts/i18n-serverless.mdx":()=>i(()=>import(`./chunk-CJN43cna.js`).then(e=>e.t),__vite__mapDeps([46,1,2])),
13"../pages/blog/posts/i18n-without-translation-files.mdx":()=>i(()=>import(`./chunk-CH8QOjoR.js`).then(e=>e.t),__vite__mapDeps([47,1,2])),
13"../pages/blog/posts/i18next-cli-instrument.mdx":()=>i(()=>import(`./chunk-Dp0b-wQ3.js`).then(e=>e.t),__vite__mapDeps([48,1,2])),
13"../pages/blog/posts/i18next-cli-localize.mdx":()=>i(()=>import(`./chunk-DTug5v3V.js`).then(e=>e.t),__vite__mapDeps([49,1,2])),
13"../pages/blog/posts/i18next-cli.mdx":()=>i(()=>import(`./chunk-Dep9PKhr.js`).then(e=>e.t),__vite__mapDeps([50,1,2])),
13"../pages/blog/posts/i18next-in-production.mdx":()=>i(()=>import(`./chunk-CETsXSrJ.js`).then(e=>e.t),__vite__mapDeps([51,1,2])),
13"../pages/blog/posts/i18next-in-react.mdx":()=>i(()=>import(`./chunk-BX7sermR.js`).then(e=>e.t),__vite__mapDeps([52,1,2])),
13"../pages/blog/posts/i18next-locize-ai-human.mdx":()=>i(()=>import(`./chunk-BFvSVFv3.js`).then(e=>e.t),__vite__mapDeps([53,1,2])),
13"../pages/blog/posts/i18next-migrate.mdx":()=>i(()=>import(`./chunk-CUYykLs8.js`).then(e=>e.t),__vite__mapDeps([54,1,2])),
13"../pages/blog/posts/i18next-monorepo-typescript.mdx":()=>i(()=>import(`./chunk-DFEMVQnD.js`).then(e=>e.t),__vite__mapDeps([55,1,2])),
13"../pages/blog/posts/i18next-savemissing-ai-automation.mdx":()=>i(()=>import(`./chunk-C7RboqYM.js`).then(e=>e.t),__vite__mapDeps([56,1,2])),
13"../pages/blog/posts/i18next-support-notice.mdx":()=>i(()=>import(`./chunk-C8orSMzI.js`).then(e=>e.t),__vite__mapDeps([57,1,2])),
13"../pages/blog/posts/i18next-tips-and-tricks.mdx":()=>i(()=>import(`./chunk-DtfNEf7t.js`).then(e=>e.t),__vite__mapDeps([58,1,2])),
13"../pages/blog/posts/i18next-translations-not-loaded.mdx":()=>i(()=>import(`./chunk-C1-D5ogY.js`).then(e=>e.t),__vite__mapDeps([59,1,2])),
13"../pages/blog/posts/i18next-typescript-selector-api.mdx":()=>i(()=>import(`./chunk-IAcd5hb8.js`).then(e=>e.t),__vite__mapDeps([60,1,2])),
13"../pages/blog/posts/i18next-typescript.mdx":()=>i(()=>import(`./chunk-p63ZK5C4.js`).then(e=>e.t),__vite__mapDeps([61,1,2])),
13"../pages/blog/posts/i18next-vue.mdx":()=>i(()=>import(`./chunk-CPdNJcNp.js`).then(e=>e.t),__vite__mapDeps([62,1,2])),
13"../pages/blog/posts/immersive-locize.mdx":()=>i(()=>import(`./chunk-kpnXrBaO.js`).then(e=>e.t),__vite__mapDeps([63,1,2])),
13"../pages/blog/posts/improve-i18next-usage.mdx":()=>i(()=>import(`./chunk-Cywdm4Wy.js`).then(e=>e.t),__vite__mapDeps([64,1,2])),
13"../pages/blog/posts/in-context-translation-editor-tools-comparison.mdx":()=>i(()=>import(`./chunk-Db22pEeu.js`).then(e=>e.t),__vite__mapDeps([65,1,2])),
13"../pages/blog/posts/inlang-interop.mdx":()=>i(()=>import(`./chunk-Bl9er3fy.js`).then(e=>e.t),__vite__mapDeps([66,1,2])),
13"../pages/blog/posts/is-sdl-trados-still-relevant.mdx":()=>i(()=>import(`./chunk-FnRNn8Ls.js`).then(e=>e.t),__vite__mapDeps([67,1,2])),
13"../pages/blog/posts/is-your-software-ready-for-localization.mdx":()=>i(()=>import(`./chunk-_IKu7xtJ.js`).then(e=>e.t),__vite__mapDeps([68,1,2])),
13"../pages/blog/posts/jquery-i18next.mdx":()=>i(()=>import(`./chunk-RjB8BnR7.js`).then(e=>e.t),__vite__mapDeps([69,1,2])),
13"../pages/blog/posts/l10n.mdx":()=>i(()=>import(`./chunk-B7UDoExI.js`).then(e=>e.t),__vite__mapDeps([70,1,2])),
13"../pages/blog/posts/language-localization.mdx":()=>i(()=>import(`./chunk-_UFcmO0l.js`).then(e=>e.t),__vite__mapDeps([71,1,2])),
13"../pages/blog/posts/localization-as-code.mdx":()=>i(()=>import(`./chunk-ar_OdjxM.js`).then(e=>e.t),__vite__mapDeps([72,1,2])),
13"../pages/blog/posts/localization-context.mdx":()=>i(()=>import(`./chunk-BjxGBaZs.js`).then(e=>e.t),__vite__mapDeps([73,1,2])),
13"../pages/blog/posts/localization-marketing.mdx":()=>i(()=>import(`./chunk-zDGwG3q1.js`).then(e=>e.t),__vite__mapDeps([74,1,2])),
13"../pages/blog/posts/localization-should-be-fun.mdx":()=>i(()=>import(`./chunk-BTIf3T1z.js`).then(e=>e.t),__vite__mapDeps([75,1,2])),
13"../pages/blog/posts/localization-strategy.mdx":()=>i(()=>import(`./chunk-DOJA2YQT.js`).then(e=>e.t),__vite__mapDeps([76,1,2])),
13"../pages/blog/posts/localization.mdx":()=>i(()=>import(`./chunk-Df7-ax-B.js`).then(e=>e.t),__vite__mapDeps([77,1,2])),
13"../pages/blog/posts/locize-alternatives-compared.mdx":()=>i(()=>import(`./chunk-CS2JP9qN.js`).then(e=>e.t),__vite__mapDeps([78,1,2])),
13"../pages/blog/posts/locize-double-win-2018-for-translation-software.mdx":()=>i(()=>import(`./chunk-DZk3Wacz.js`).then(e=>e.t),__vite__mapDeps([79,1,2])),
13"../pages/blog/posts/locizify-v2-improvements.mdx":()=>i(()=>import(`./chunk-DxBBc3zI.js`).then(e=>e.t),__vite__mapDeps([80,1,2])),
13"../pages/blog/posts/maintaining-open-source.mdx":()=>i(()=>import(`./chunk-Rc9QT7hF.js`).then(e=>e.t),__vite__mapDeps([81,1,2])),
13"../pages/blog/posts/many-projects-one-team.mdx":()=>i(()=>import(`./chunk-Y6dJx8TQ.js`).then(e=>e.t),__vite__mapDeps([82,1,2])),
13"../pages/blog/posts/market-expansion.mdx":()=>i(()=>import(`./chunk-CTDXhAkn.js`).then(e=>e.t),__vite__mapDeps([83,1,2])),
13"../pages/blog/posts/mcp-context-tools.mdx":()=>i(()=>import(`./chunk-BFGVurqc.js`).then(e=>e.t),__vite__mapDeps([84,1,2])),
13"../pages/blog/posts/mcp-server.mdx":()=>i(()=>import(`./chunk-1EbhoPdD.js`).then(e=>e.t),__vite__mapDeps([85,1,2])),
13"../pages/blog/posts/messageformat-2-i18next.mdx":()=>i(()=>import(`./chunk-C1sHKuwF.js`).then(e=>e.t),__vite__mapDeps([86,1,2])),
13"../pages/blog/posts/missing-translations.mdx":()=>i(()=>import(`./chunk-DuM1UVNb.js`).then(e=>e.t),__vite__mapDeps([87,1,2])),
13"../pages/blog/posts/multi-tenant.mdx":()=>i(()=>import(`./chunk-Cfgk9zKD.js`).then(e=>e.t),__vite__mapDeps([88,1,2])),
13"../pages/blog/posts/networkme-locize.mdx":()=>i(()=>import(`./chunk-BY2iBYgt.js`).then(e=>e.t),__vite__mapDeps([89,1,2])),
13"../pages/blog/posts/new-locize.mdx":()=>i(()=>import(`./chunk-CuHnWwWE.js`).then(e=>e.t),__vite__mapDeps([90,1,2])),
13"../pages/blog/posts/new-pricing-plans.mdx":()=>i(()=>import(`./chunk-DxdS67Ik.js`).then(e=>e.t),__vite__mapDeps([91,1,2])),
13"../pages/blog/posts/next-app-dir-i18n.mdx":()=>i(()=>import(`./chunk-CeCL1W3a.js`).then(e=>e.t),__vite__mapDeps([92,1,2])),
13"../pages/blog/posts/next-i18n-static.mdx":()=>i(()=>import(`./chunk-DJNpEc6y.js`).then(e=>e.t),__vite__mapDeps([93,1,2])),
13"../pages/blog/posts/next-i18next-v16.mdx":()=>i(()=>import(`./chunk-Ijkdv5ta.js`).then(e=>e.t),__vite__mapDeps([94,1,2])),
13"../pages/blog/posts/next-i18next.mdx":()=>i(()=>import(`./chunk-BN9CU8dk.js`).then(e=>e.t),__vite__mapDeps([95,1,2])),
13"../pages/blog/posts/next-intl-vs-next-i18next.mdx":()=>i(()=>import(`./chunk-CcVjy4ms.js`).then(e=>e.t),__vite__mapDeps([96,1,2])),
13"../pages/blog/posts/nuxt-i18n.mdx":()=>i(()=>import(`./chunk-CihMM6TR.js`).then(e=>e.t),__vite__mapDeps([97,1,2])),
13"../pages/blog/posts/offline-first-apps.mdx":()=>i(()=>import(`./chunk-Myp9yqTd.js`).then(e=>e.t),__vite__mapDeps([98,1,2])),
13"../pages/blog/posts/phrase-lokalise-price-changes-2026.mdx":()=>i(()=>import(`./chunk-BHGkuPEo.js`).then(e=>e.t),__vite__mapDeps([99,1,2])),
13"../pages/blog/posts/product-localization.mdx":()=>i(()=>import(`./chunk-7azjjBo0.js`).then(e=>e.t),__vite__mapDeps([100,1,2])),
13"../pages/blog/posts/react-i18next.mdx":()=>i(()=>import(`./chunk-B_KXgQZ3.js`).then(e=>e.t),__vite__mapDeps([101,1,2])),
13"../pages/blog/posts/react-intl-vs-react-i18next.mdx":()=>i(()=>import(`./chunk-BKEL4B2a.js`).then(e=>e.t),__vite__mapDeps([102,1,2])),
13"../pages/blog/posts/react-router-i18next.mdx":()=>i(()=>import(`./chunk-BrJZswdL.js`).then(e=>e.t),__vite__mapDeps([103,1,2])),
13"../pages/blog/posts/remix-i18n.mdx":()=>i(()=>import(`./chunk-DgR8L2qn.js`).then(e=>e.t),__vite__mapDeps([104,1,2])),
13"../pages/blog/posts/remix-i18next.mdx":()=>i(()=>import(`./chunk-CKAursMI.js`).then(e=>e.t),__vite__mapDeps([105,1,2])),
13"../pages/blog/posts/supertext-partnership.mdx":()=>i(()=>import(`./chunk-BDTWn0Jc.js`).then(e=>e.t),__vite__mapDeps([106,1,2])),
13"../pages/blog/posts/svelte-i18n.mdx":()=>i(()=>import(`./chunk-DaPDrD0y.js`).then(e=>e.t),__vite__mapDeps([107,1,2])),
13"../pages/blog/posts/technology-stack.mdx":()=>i(()=>import(`./chunk-CLRw6eXu.js`).then(e=>e.t),__vite__mapDeps([108,1,2])),
13"../pages/blog/posts/the-freedom-of-choice-i18next-polyglot-or-formatjs.mdx":()=>i(()=>import(`./chunk-CCyDV-t1.js`).then(e=>e.t),__vite__mapDeps([109,1,2])),
13"../pages/blog/posts/tms.mdx":()=>i(()=>import(`./chunk-Cozeawrs.js`).then(e=>e.t),__vite__mapDeps([110,1,2])),
13"../pages/blog/posts/translation-and-localization-companies.mdx":()=>i(()=>import(`./chunk-Ci5n9MHx.js`).then(e=>e.t),__vite__mapDeps([111,1,2])),
13"../pages/blog/posts/translation-distraction.mdx":()=>i(()=>import(`./chunk-DINq3J9R.js`).then(e=>e.t),__vite__mapDeps([112,1,2])),
13"../pages/blog/posts/translation-files-without-manual-json-editing.mdx":()=>i(()=>import(`./chunk-BCN9U0lj.js`).then(e=>e.t),__vite__mapDeps([113,1,2])),
13"../pages/blog/posts/translation-glossary.mdx":()=>i(()=>import(`./chunk-CiyyMK3Y.js`).then(e=>e.t),__vite__mapDeps([114,1,2])),
13"../pages/blog/posts/translation-memory.mdx":()=>i(()=>import(`./chunk-CB_OzlKF.js`).then(e=>e.t),__vite__mapDeps([115,1,2])),
13"../pages/blog/posts/translation-project-management.mdx":()=>i(()=>import(`./chunk-1WCDVoIK.js`).then(e=>e.t),__vite__mapDeps([116,1,2])),
13"../pages/blog/posts/translation-qa-checks.mdx":()=>i(()=>import(`./chunk-C6_wDdd9.js`).then(e=>e.t),__vite__mapDeps([117,1,2])),
13"../pages/blog/posts/unleash-the-hidden-superpowers-of-react-intl.mdx":()=>i(()=>import(`./chunk-CPQR49Jq.js`).then(e=>e.t),__vite__mapDeps([118,1,2])),
13"../pages/blog/posts/vue-js-from-internationalization-i18n-to-localization-l10n-and-back-again.mdx":()=>i(()=>import(`./chunk--uNmd4Dm.js`).then(e=>e.t),__vite__mapDeps([119,1,2])),
13"../pages/blog/posts/website-internationalization-best-practices.mdx":()=>i(()=>import(`./chunk-Cd8EzeGY.js`).then(e=>e.t),__vite__mapDeps([120,1,2])),
13"../pages/blog/posts/website-localization.mdx":()=>i(()=>import(`./chunk-B_xTcWnb.js`).then(e=>e.t),__vite__mapDeps([121,1,2])),
13"../pages/blog/posts/websiteplanet-interview.mdx":()=>i(()=>import(`./chunk-DAdFrGAk.js`).then(e=>e.t),__vite__mapDeps([122,1,2])),
13"../pages/blog/posts/what-is-continuous-localization.mdx":()=>i(()=>import(`./chunk-qWz3HHNE.js`).then(e=>e.t),__vite__mapDeps([123,1,2])),
13"../pages/blog/posts/what-is-i18n.mdx":()=>i(()=>import(`./chunk-DUrheYoT.js`).then(e=>e.t),__vite__mapDeps([124,1,2])),
13"../pages/blog/posts/what-is-locize.mdx":()=>i(()=>import(`./chunk-DPBqRoBD.js`).then(e=>e.t),__vite__mapDeps([125,1,2])),
13"../pages/blog/posts/what-is-mobile-app-localization.mdx":()=>i(()=>import(`./chunk-hwVzThr0.js`).then(e=>e.t),__vite__mapDeps([126,1,2])),
13"../pages/blog/posts/what-is-software-localization.mdx":()=>i(()=>import(`./chunk-C2p6t7TE.js`).then(e=>e.t),__vite__mapDeps([127,1,2])),
13"../pages/blog/posts/what-is-translation.mdx":()=>i(()=>import(`./chunk-DjCW0_PB.js`).then(e=>e.t),__vite__mapDeps([128,1,2])),
13"../pages/blog/posts/what-is-video-game-localization.mdx":()=>i(()=>import(`./chunk-CQ6WOmkW.js`).then(e=>e.t),__vite__mapDeps([129,1,2])),
13"../pages/blog/posts/when-ai-translations-break.mdx":()=>i(()=>import(`./chunk-Bg3CG0JW.js`).then(e=>e.t),__vite__mapDeps([130,1,2])),
13"../pages/blog/posts/who-uses-i18next.mdx":()=>i(()=>import(`./chunk-Bb7kUnHm.js`).then(e=>e.t),__vite__mapDeps([131,1,2,132])),
13"../pages/blog/posts/you-will-need-to-pass-in-an-i18next-instance-by-using-initreacti18next.mdx":()=>i(()=>import(`./chunk-DIwHacHW.js`).then(e=>e.t),__vite__mapDeps([133,1,2]))}),Sn=Object.assign({
13"../pages/@lang/blog/posts/de/10-years-of-locize.mdx":()=>i(()=>import(`./chunk-10cmnp6K.js`).then(e=>e.t),__vite__mapDeps([134,1,2])),
13"../pages/@lang/blog/posts/de/ai-act-article-50.mdx":()=>i(()=>import(`./chunk-XtRUNb0N.js`).then(e=>e.t),__vite__mapDeps([135,1,2])),
13"../pages/@lang/blog/posts/de/ai-act-transparency-code-of-practice.mdx":()=>i(()=>import(`./chunk-C8asNnHO.js`).then(e=>e.t),__vite__mapDeps([136,1,2])),
13"../pages/@lang/blog/posts/de/ai-translation-quality-estimation.mdx":()=>i(()=>import(`./chunk-BqKcrnhl.js`).then(e=>e.t),__vite__mapDeps([137,1,2])),
13"../pages/@lang/blog/posts/de/astro-i18n.mdx":()=>i(()=>import(`./chunk-DlSC_c6Q.js`).then(e=>e.t),__vite__mapDeps([138,1,2])),
13"../pages/@lang/blog/posts/de/browser-translates.mdx":()=>i(()=>import(`./chunk-BMEEFpm-.js`).then(e=>e.t),__vite__mapDeps([139,1,2])),
13"../pages/@lang/blog/posts/de/coding-agents-translation.mdx":()=>i(()=>import(`./chunk-Do6HFdIb.js`).then(e=>e.t),__vite__mapDeps([140,1,2])),
13"../pages/@lang/blog/posts/de/continuous-localization-deployment.mdx":()=>i(()=>import(`./chunk-BobQeihJ.js`).then(e=>e.t),__vite__mapDeps([141,1,2])),
13"../pages/@lang/blog/posts/de/i18n-formatting.mdx":()=>i(()=>import(`./chunk-PESExu1y.js`).then(e=>e.t),__vite__mapDeps([142,1,2])),
13"../pages/@lang/blog/posts/de/i18n-pluralization.mdx":()=>i(()=>import(`./chunk-CeCejzZa.js`).then(e=>e.t),__vite__mapDeps([143,1,2])),
13"../pages/@lang/blog/posts/de/i18n-without-translation-files.mdx":()=>i(()=>import(`./chunk-DH1wCOIj.js`).then(e=>e.t),__vite__mapDeps([144,1,2])),
13"../pages/@lang/blog/posts/de/i18next-cli-localize.mdx":()=>i(()=>import(`./chunk-D-nWuvaO.js`).then(e=>e.t),__vite__mapDeps([145,1,2])),
13"../pages/@lang/blog/posts/de/i18next-monorepo-typescript.mdx":()=>i(()=>import(`./chunk-DVogK9oJ.js`).then(e=>e.t),__vite__mapDeps([146,1,2])),
13"../pages/@lang/blog/posts/de/inlang-interop.mdx":()=>i(()=>import(`./chunk-D94C_uAy.js`).then(e=>e.t),__vite__mapDeps([147,1,2])),
13"../pages/@lang/blog/posts/de/localization-strategy.mdx":()=>i(()=>import(`./chunk--WmVMqBW.js`).then(e=>e.t),__vite__mapDeps([148,1,2])),
13"../pages/@lang/blog/posts/de/many-projects-one-team.mdx":()=>i(()=>import(`./chunk-gZqgKIAw.js`).then(e=>e.t),__vite__mapDeps([149,1,2])),
13"../pages/@lang/blog/posts/de/mcp-context-tools.mdx":()=>i(()=>import(`./chunk-DIeNQ97l.js`).then(e=>e.t),__vite__mapDeps([150,1,2])),
13"../pages/@lang/blog/posts/de/nuxt-i18n.mdx":()=>i(()=>import(`./chunk-ufWWVxEr.js`).then(e=>e.t),__vite__mapDeps([151,1,2])),
13"../pages/@lang/blog/posts/de/phrase-lokalise-price-changes-2026.mdx":()=>i(()=>import(`./chunk-C7NQ1qqP.js`).then(e=>e.t),__vite__mapDeps([152,1,2])),
13"../pages/@lang/blog/posts/de/react-i18next.mdx":()=>i(()=>import(`./chunk-Clz300P4.js`).then(e=>e.t),__vite__mapDeps([153,1,2])),
13"../pages/@lang/blog/posts/de/react-router-i18next.mdx":()=>i(()=>import(`./chunk-m41a8VNO.js`).then(e=>e.t),__vite__mapDeps([154,1,2])),
13"../pages/@lang/blog/posts/de/translation-files-without-manual-json-editing.mdx":()=>i(()=>import(`./chunk-2n0kSIGH.js`).then(e=>e.t),__vite__mapDeps([155,1,2])),
13"../pages/@lang/blog/posts/de/translation-glossary.mdx":()=>i(()=>import(`./chunk-DvI2w8kH.js`).then(e=>e.t),__vite__mapDeps([156,1,2])),
13"../pages/@lang/blog/posts/de/translation-memory.mdx":()=>i(()=>import(`./chunk-i7aDkWNc.js`).then(e=>e.t),__vite__mapDeps([157,1,2])),
13"../pages/@lang/blog/posts/de/translation-qa-checks.mdx":()=>i(()=>import(`./chunk-XWAEk-KQ.js`).then(e=>e.t),__vite__mapDeps([158,1,2])),
13"../pages/@lang/blog/posts/de/what-is-continuous-localization.mdx":()=>i(()=>import(`./chunk-CIozG2mg.js`).then(e=>e.t),__vite__mapDeps([159,1,2])),
13"../pages/@lang/blog/posts/de/what-is-locize.mdx":()=>i(()=>import(`./chunk-9hVEJhJR.js`).then(e=>e.t),__vite__mapDeps([160,1,2])),
13"../pages/@lang/blog/posts/de/when-ai-translations-break.mdx":()=>i(()=>import(`./chunk-BYUcM0ol.js`).then(e=>e.t),__vite__mapDeps([161,1,2])),
13"../pages/@lang/blog/posts/de/who-uses-i18next.mdx":()=>i(()=>import(`./chunk-BQlHIXmA.js`).then(e=>e.t),__vite__mapDeps([162,1,2,132])),
13"../pages/@lang/blog/posts/fr/10-years-of-locize.mdx":()=>i(()=>import(`./chunk-ZvWWEqSi.js`).then(e=>e.t),__vite__mapDeps([163,1,2])),
13"../pages/@lang/blog/posts/fr/ai-act-article-50.mdx":()=>i(()=>import(`./chunk-CNJdx7UT.js`).then(e=>e.t),__vite__mapDeps([164,1,2])),
13"../pages/@lang/blog/posts/fr/ai-act-transparency-code-of-practice.mdx":()=>i(()=>import(`./chunk-CAJIKl0I.js`).then(e=>e.t),__vite__mapDeps([165,1,2])),
13"../pages/@lang/blog/posts/fr/ai-translation-quality-estimation.mdx":()=>i(()=>import(`./chunk-BnEn0yFm.js`).then(e=>e.t),__vite__mapDeps([166,1,2])),
13"../pages/@lang/blog/posts/fr/astro-i18n.mdx":()=>i(()=>import(`./chunk-CkgngnHJ.js`).then(e=>e.t),__vite__mapDeps([167,1,2])),
13"../pages/@lang/blog/posts/fr/browser-translates.mdx":()=>i(()=>import(`./chunk-BKffgkv-.js`).then(e=>e.t),__vite__mapDeps([168,1,2])),
13"../pages/@lang/blog/posts/fr/coding-agents-translation.mdx":()=>i(()=>import(`./chunk-OShUCZC3.js`).then(e=>e.t),__vite__mapDeps([169,1,2])),
13"../pages/@lang/blog/posts/fr/continuous-localization-deployment.mdx":()=>i(()=>import(`./chunk-BjPxb4Fe.js`).then(e=>e.t),__vite__mapDeps([170,1,2])),
13"../pages/@lang/blog/posts/fr/i18n-formatting.mdx":()=>i(()=>import(`./chunk-JgFflvl1.js`).then(e=>e.t),__vite__mapDeps([171,1,2])),
13"../pages/@lang/blog/posts/fr/i18n-pluralization.mdx":()=>i(()=>import(`./chunk-LJZ9PrRB.js`).then(e=>e.t),__vite__mapDeps([172,1,2])),
13"../pages/@lang/blog/posts/fr/i18n-without-translation-files.mdx":()=>i(()=>import(`./chunk-C_mWn2ZQ.js`).then(e=>e.t),__vite__mapDeps([173,1,2])),
13"../pages/@lang/blog/posts/fr/i18next-cli-localize.mdx":()=>i(()=>import(`./chunk-hVV5LW75.js`).then(e=>e.t),__vite__mapDeps([174,1,2])),
13"../pages/@lang/blog/posts/fr/i18next-monorepo-typescript.mdx":()=>i(()=>import(`./chunk-B2EuEe4d.js`).then(e=>e.t),__vite__mapDeps([175,1,2])),
13"../pages/@lang/blog/posts/fr/inlang-interop.mdx":()=>i(()=>import(`./chunk-D5yRm8yY.js`).then(e=>e.t),__vite__mapDeps([176,1,2])),
13"../pages/@lang/blog/posts/fr/localization-strategy.mdx":()=>i(()=>import(`./chunk-D_s-Ls2J.js`).then(e=>e.t),__vite__mapDeps([177,1,2])),
13"../pages/@lang/blog/posts/fr/many-projects-one-team.mdx":()=>i(()=>import(`./chunk--CMGxAur.js`).then(e=>e.t),__vite__mapDeps([178,1,2])),
13"../pages/@lang/blog/posts/fr/mcp-context-tools.mdx":()=>i(()=>import(`./chunk-D4xyQJcg.js`).then(e=>e.t),__vite__mapDeps([179,1,2])),
13"../pages/@lang/blog/posts/fr/nuxt-i18n.mdx":()=>i(()=>import(`./chunk-DBjAMJ03.js`).then(e=>e.t),__vite__mapDeps([180,1,2])),
13"../pages/@lang/blog/posts/fr/phrase-lokalise-price-changes-2026.mdx":()=>i(()=>import(`./chunk-CN98lSGI.js`).then(e=>e.t),__vite__mapDeps([181,1,2])),
13"../pages/@lang/blog/posts/fr/react-i18next.mdx":()=>i(()=>import(`./chunk-Cbsprsp3.js`).then(e=>e.t),__vite__mapDeps([182,1,2])),
13"../pages/@lang/blog/posts/fr/react-router-i18next.mdx":()=>i(()=>import(`./chunk-DBh8AHDj.js`).then(e=>e.t),__vite__mapDeps([183,1,2])),
13"../pages/@lang/blog/posts/fr/translation-files-without-manual-json-editing.mdx":()=>i(()=>import(`./chunk-_NFqVLTW.js`).then(e=>e.t),__vite__mapDeps([184,1,2])),
13"../pages/@lang/blog/posts/fr/translation-glossary.mdx":()=>i(()=>import(`./chunk-B8O_ZdBw.js`).then(e=>e.t),__vite__mapDeps([185,1,2])),
13"../pages/@lang/blog/posts/fr/translation-memory.mdx":()=>i(()=>import(`./chunk-BnD6gS2m.js`).then(e=>e.t),__vite__mapDeps([186,1,2])),
13"../pages/@lang/blog/posts/fr/translation-qa-checks.mdx":()=>i(()=>import(`./chunk-CmPg8szk.js`).then(e=>e.t),__vite__mapDeps([187,1,2])),
13"../pages/@lang/blog/posts/fr/what-is-continuous-localization.mdx":()=>i(()=>import(`./chunk-QyM0uSNk.js`).then(e=>e.t),__vite__mapDeps([188,1,2])),
13"../pages/@lang/blog/posts/fr/what-is-locize.mdx":()=>i(()=>import(`./chunk-DdfOVbSG.js`).then(e=>e.t),__vite__mapDeps([189,1,2])),
13"../pages/@lang/blog/posts/fr/when-ai-translations-break.mdx":()=>i(()=>import(`./chunk-6yT8g75w.js`).then(e=>e.t),__vite__mapDeps([190,1,2])),
13"../pages/@lang/blog/posts/fr/who-uses-i18next.mdx":()=>i(()=>import(`./chunk-CshtZZYe.js`).then(e=>e.t),__vite__mapDeps([191,1,2,132])),
13"../pages/@lang/blog/posts/it/10-years-of-locize.mdx":()=>i(()=>import(`./chunk-Bvvsx9SR.js`).then(e=>e.t),__vite__mapDeps([192,1,2])),
13"../pages/@lang/blog/posts/it/ai-act-article-50.mdx":()=>i(()=>import(`./chunk-5F7PO7kY.js`).then(e=>e.t),__vite__mapDeps([193,1,2])),
13"../pages/@lang/blog/posts/it/ai-act-transparency-code-of-practice.mdx":()=>i(()=>import(`./chunk-C5Z_OJI7.js`).then(e=>e.t),__vite__mapDeps([194,1,2])),
13"../pages/@lang/blog/posts/it/ai-translation-quality-estimation.mdx":()=>i(()=>import(`./chunk-C4qeTarH.js`).then(e=>e.t),__vite__mapDeps([195,1,2])),
13"../pages/@lang/blog/posts/it/astro-i18n.mdx":()=>i(()=>import(`./chunk-CxW_EBCI.js`).then(e=>e.t),__vite__mapDeps([196,1,2])),
13"../pages/@lang/blog/posts/it/browser-translates.mdx":()=>i(()=>import(`./chunk-Brk7dFac.js`).then(e=>e.t),__vite__mapDeps([197,1,2])),
13"../pages/@lang/blog/posts/it/coding-agents-translation.mdx":()=>i(()=>import(`./chunk-Bz6B1Ngq.js`).then(e=>e.t),__vite__mapDeps([198,1,2])),
13"../pages/@lang/blog/posts/it/continuous-localization-deployment.mdx":()=>i(()=>import(`./chunk-BGdJKb1G.js`).then(e=>e.t),__vite__mapDeps([199,1,2])),
13"../pages/@lang/blog/posts/it/i18n-formatting.mdx":()=>i(()=>import(`./chunk-CNOHxOci.js`).then(e=>e.t),__vite__mapDeps([200,1,2])),
13"../pages/@lang/blog/posts/it/i18n-pluralization.mdx":()=>i(()=>import(`./chunk-BH493Oqf.js`).then(e=>e.t),__vite__mapDeps([201,1,2])),
13"../pages/@lang/blog/posts/it/i18n-without-translation-files.mdx":()=>i(()=>import(`./chunk-DTSJtIaB.js`).then(e=>e.t),__vite__mapDeps([202,1,2])),
13"../pages/@lang/blog/posts/it/i18next-cli-localize.mdx":()=>i(()=>import(`./chunk-DMJ-8mM5.js`).then(e=>e.t),__vite__mapDeps([203,1,2])),
13"../pages/@lang/blog/posts/it/i18next-monorepo-typescript.mdx":()=>i(()=>import(`./chunk--z6sF_n5.js`).then(e=>e.t),__vite__mapDeps([204,1,2])),
13"../pages/@lang/blog/posts/it/inlang-interop.mdx":()=>i(()=>import(`./chunk-D-hGAg-z.js`).then(e=>e.t),__vite__mapDeps([205,1,2])),
13"../pages/@lang/blog/posts/it/localization-strategy.mdx":()=>i(()=>import(`./chunk-oGK6BOcP.js`).then(e=>e.t),__vite__mapDeps([206,1,2])),
13"../pages/@lang/blog/posts/it/many-projects-one-team.mdx":()=>i(()=>import(`./chunk-CN4W6HIn.js`).then(e=>e.t),__vite__mapDeps([207,1,2])),
13"../pages/@lang/blog/posts/it/mcp-context-tools.mdx":()=>i(()=>import(`./chunk-C4EkzGwG.js`).then(e=>e.t),__vite__mapDeps([208,1,2])),
13"../pages/@lang/blog/posts/it/nuxt-i18n.mdx":()=>i(()=>import(`./chunk-CAc3ruev.js`).then(e=>e.t),__vite__mapDeps([209,1,2])),
13"../pages/@lang/blog/posts/it/phrase-lokalise-price-changes-2026.mdx":()=>i(()=>import(`./chunk-CTq_ilE_.js`).then(e=>e.t),__vite__mapDeps([210,1,2])),
13"../pages/@lang/blog/posts/it/react-i18next.mdx":()=>i(()=>import(`./chunk-B_9_44JP.js`).then(e=>e.t),__vite__mapDeps([211,1,2])),
13"../pages/@lang/blog/posts/it/react-router-i18next.mdx":()=>i(()=>import(`./chunk-BJLEDrBs.js`).then(e=>e.t),__vite__mapDeps([212,1,2])),
13"../pages/@lang/blog/posts/it/translation-files-without-manual-json-editing.mdx":()=>i(()=>import(`./chunk-VdUJuZ_i.js`).then(e=>e.t),__vite__mapDeps([213,1,2])),
13"../pages/@lang/blog/posts/it/translation-glossary.mdx":()=>i(()=>import(`./chunk-BJzaq4xA.js`).then(e=>e.t),__vite__mapDeps([214,1,2])),
13"../pages/@lang/blog/posts/it/translation-memory.mdx":()=>i(()=>import(`./chunk-Bn-Mv8xr.js`).then(e=>e.t),__vite__mapDeps([215,1,2])),
13"../pages/@lang/blog/posts/it/translation-qa-checks.mdx":()=>i(()=>import(`./chunk-DPZzDLkD.js`).then(e=>e.t),__vite__mapDeps([216,1,2])),
13"../pages/@lang/blog/posts/it/what-is-continuous-localization.mdx":()=>i(()=>import(`./chunk-D88C0DdW.js`).then(e=>e.t),__vite__mapDeps([217,1,2])),
13"../pages/@lang/blog/posts/it/what-is-locize.mdx":()=>i(()=>import(`./chunk-DDtFF-Pu.js`).then(e=>e.t),__vite__mapDeps([218,1,2])),
13"../pages/@lang/blog/posts/it/when-ai-translations-break.mdx":()=>i(()=>import(`./chunk-DOvtPLn-.js`).then(e=>e.t),__vite__mapDeps([219,1,2])),
13"../pages/@lang/blog/posts/it/who-uses-i18next.mdx":()=>i(()=>import(`./chunk-cerqHmjQ.js`).then(e=>e.t),__vite__mapDeps([220,1,2,132]))
13}),Cn=r.filter(e=>e!==`en`),wn=new Map;for(let e of Object.keys(Sn)){let t=e.match(/\/pages\/@lang\/blog\/posts\/([a-z]{2})\/(.+)\.mdx$/);if(!t)continue;let[,n,r]=t;wn.has(r)||wn.set(r,new Set),wn.get(r).add(n)}var Tn=Object.keys(xn).map(e=>e.match(/\/pages\/blog\/posts\/(.+)\.mdx$/)?.[1]).filter(Boolean).filter(e=>{let t=wn.get(e);return t?Cn.every(e=>t.has(e)):!1}).map(e=>`/blog/${e}`),En=new Set([...bn,...Tn]);function Dn(e,t){return e?t===`en`?e:e.replace(RegExp(`^/${t}`),``)||`/`:`/`}function On(e,t){return t===`en`?e:En.has(e)?`/${t}${e}`:e}function kn(e,t,n){return`${e}?from=${t===`en`?n:`${t}-${n}`}`}var An=`https://www.locize.app/register`,jn=`https://www.locize.app/login`,Mn={en:`en-US`,de:`de-DE`,it:`it-IT`,fr:`fr-FR`};function Nn(e){return Mn[e]||Mn.en}function Pn(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function Fn(e,t){if(e==null)return{};var n,r,i=Pn(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function In(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function Ln(e){if(Array.isArray(e))return In(e)}function Rn(e){if(typeof Symbol<`u`&&e[Symbol.iterator]!=null||e[`@@iterator`]!=null)return Array.from(e)}function zn(e,t){if(e){if(typeof e==`string`)return In(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?In(e,t):void 0}}function Bn(){throw TypeError(`Invalid attempt to spread non-iterable instance. 14In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Vn(e){return Ln(e)||Rn(e)||zn(e)||Bn()}function Hn(e){"@babel/helpers - typeof";return Hn=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},Hn(e)}function Un(e,t){if(Hn(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(Hn(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function Wn(e){var t=Un(e,`string`);return Hn(t)==`symbol`?t:t+``}function Gn(e,t,n){return(t=Wn(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Kn(){return Kn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Kn.apply(null,arguments)}function qn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Jn(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?qn(Object(n),!0).forEach(function(t){Gn(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):qn(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Yn(e){var t=e.length;if(t===0||t===1)return e;if(t===2)return[e[0],e[1],`${e[0]}.${e[1]}`,`${e[1]}.${e[0]}`];if(t===3)return[e[0],e[1],e[2],`${e[0]}.${e[1]}`,`${e[0]}.${e[2]}`,`${e[1]}.${e[0]}`,`${e[1]}.${e[2]}`,`${e[2]}.${e[0]}`,`${e[2]}.${e[1]}`,`${e[0]}.${e[1]}.${e[2]}`,`${e[0]}.${e[2]}.${e[1]}`,`${e[1]}.${e[0]}.${e[2]}`,`${e[1]}.${e[2]}.${e[0]}`,`${e[2]}.${e[0]}.${e[1]}`,`${e[2]}.${e[1]}.${e[0]}`];if(t>=4)return[e[0],e[1],e[2],e[3],`${e[0]}.${e[1]}`,`${e[0]}.${e[2]}`,`${e[0]}.${e[3]}`,`${e[1]}.${e[0]}`,`${e[1]}.${e[2]}`,`${e[1]}.${e[3]}`,`${e[2]}.${e[0]}`,`${e[2]}.${e[1]}`,`${e[2]}.${e[3]}`,`${e[3]}.${e[0]}`,`${e[3]}.${e[1]}`,`${e[3]}.${e[2]}`,`${e[0]}.${e[1]}.${e[2]}`,`${e[0]}.${e[1]}.${e[3]}`,`${e[0]}.${e[2]}.${e[1]}`,`${e[0]}.${e[2]}.${e[3]}`,`${e[0]}.${e[3]}.${e[1]}`,`${e[0]}.${e[3]}.${e[2]}`,`${e[1]}.${e[0]}.${e[2]}`,`${e[1]}.${e[0]}.${e[3]}`,`${e[1]}.${e[2]}.${e[0]}`,`${e[1]}.${e[2]}.${e[3]}`,`${e[1]}.${e[3]}.${e[0]}`,`${e[1]}.${e[3]}.${e[2]}`,`${e[2]}.${e[0]}.${e[1]}`,`${e[2]}.${e[0]}.${e[3]}`,`${e[2]}.${e[1]}.${e[0]}`,`${e[2]}.${e[1]}.${e[3]}`,`${e[2]}.${e[3]}.${e[0]}`,`${e[2]}.${e[3]}.${e[1]}`,`${e[3]}.${e[0]}.${e[1]}`,`${e[3]}.${e[0]}.${e[2]}`,`${e[3]}.${e[1]}.${e[0]}`,`${e[3]}.${e[1]}.${e[2]}`,`${e[3]}.${e[2]}.${e[0]}`,`${e[3]}.${e[2]}.${e[1]}`,`${e[0]}.${e[1]}.${e[2]}.${e[3]}`,`${e[0]}.${e[1]}.${e[3]}.${e[2]}`,`${e[0]}.${e[2]}.${e[1]}.${e[3]}`,`${e[0]}.${e[2]}.${e[3]}.${e[1]}`,`${e[0]}.${e[3]}.${e[1]}.${e[2]}`,`${e[0]}.${e[3]}.${e[2]}.${e[1]}`,`${e[1]}.${e[0]}.${e[2]}.${e[3]}`,`${e[1]}.${e[0]}.${e[3]}.${e[2]}`,`${e[1]}.${e[2]}.${e[0]}.${e[3]}`,`${e[1]}.${e[2]}.${e[3]}.${e[0]}`,`${e[1]}.${e[3]}.${e[0]}.${e[2]}`,`${e[1]}.${e[3]}.${e[2]}.${e[0]}`,`${e[2]}.${e[0]}.${e[1]}.${e[3]}`,`${e[2]}.${e[0]}.${e[3]}.${e[1]}`,`${e[2]}.${e[1]}.${e[0]}.${e[3]}`,`${e[2]}.${e[1]}.${e[3]}.${e[0]}`,`${e[2]}.${e[3]}.${e[0]}.${e[1]}`,`${e[2]}.${e[3]}.${e[1]}.${e[0]}`,`${e[3]}.${e[0]}.${e[1]}.${e[2]}`,`${e[3]}.${e[0]}.${e[2]}.${e[1]}`,`${e[3]}.${e[1]}.${e[0]}.${e[2]}`,`${e[3]}.${e[1]}.${e[2]}.${e[0]}`,`${e[3]}.${e[2]}.${e[0]}.${e[1]}`,`${e[3]}.${e[2]}.${e[1]}.${e[0]}`]}var Xn={};function Zn(e){if(e.length===0||e.length===1)return e;var t=e.join(`.`);return Xn[t]||(Xn[t]=Yn(e)),Xn[t]}function Qn(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;return Zn(e.filter(function(e){return e!==`token`})).reduce(function(e,t){return Jn(Jn({},e),n[t])},t)}function $n(e){return e.join(` `)}function er(e,t){var n=0;return function(r){return n+=1,r.map(function(r,i){return tr({node:r,stylesheet:e,useInlineStyles:t,key:`code-segment-${n}-${i}`})})}}function tr(e){var t=e.node,n=e.stylesheet,r=e.style,i=r===void 0?{}:r,a=e.useInlineStyles,o=e.key,s=t.properties,c=t.type,l=t.tagName,u=t.value;if(c===`text`)return u;if(l){var d=er(n,a),f;if(!a)f=Jn(Jn({},s),{},{className:$n(s.className)});else{var p=Object.keys(n).reduce(function(e,t){return t.split(`.`).forEach(function(t){e.includes(t)||e.push(t)}),e},[]),m=s.className&&s.className.includes(`token`)?[`token`]:[],h=s.className&&m.concat(s.className.filter(function(e){return!p.includes(e)}));f=Jn(Jn({},s),{},{className:$n(h)||void 0,style:Qn(s.className,Object.assign({},s.style,i),n)})}var g=d(t.children);return y.createElement(l,Kn({key:o},f),g)}}var nr=(function(e,t){return e.listLanguages().indexOf(t)!==-1}),rr=[`language`,`children`,`style`,`customStyle`,`codeTagProps`,`useInlineStyles`,`showLineNumbers`,`showInlineLineNumbers`,`startingLineNumber`,`lineNumberContainerStyle`,`lineNumberStyle`,`wrapLines`,`wrapLongLines`,`lineProps`,`renderer`,`PreTag`,`CodeTag`,`code`,`astGenerator`];function ir(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function ar(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];
14t%2?ir(Object(n),!0).forEach(function(t){Gn(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ir(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var or=/\n/g;function sr(e){return e.match(or)}function cr(e){var t=e.lines,n=e.startingLineNumber,r=e.style;return t.map(function(e,t){var i=t+n;return y.createElement(`span`,{key:`line-${t}`,className:`react-syntax-highlighter-line-number`,style:typeof r==`function`?r(i):r},`${i} 15`)})}function lr(e){var t=e.codeString,n=e.codeStyle,r=e.containerStyle,i=r===void 0?{float:`left`,paddingRight:`10px`}:r,a=e.numberStyle,o=a===void 0?{}:a,s=e.startingLineNumber;return y.createElement(`code`,{style:Object.assign({},n,i)},cr({lines:t.replace(/\n$/,``).split(` 16`),style:o,startingLineNumber:s}))}function ur(e){return`${e.toString().length}.25em`}function dr(e,t){return{type:`element`,tagName:`span`,properties:{key:`line-number--${e}`,className:[`comment`,`linenumber`,`react-syntax-highlighter-line-number`],style:t},children:[{type:`text`,value:e}]}}function fr(e,t,n){var r={display:`inline-block`,minWidth:ur(n),paddingRight:`1em`,textAlign:`right`,userSelect:`none`},i=typeof e==`function`?e(t):e;return ar(ar({},r),i)}function pr(e){var t=e.children,n=e.lineNumber,r=e.lineNumberStyle,i=e.largestLineNumber,a=e.showInlineLineNumbers,o=e.lineProps,s=o===void 0?{}:o,c=e.className,l=c===void 0?[]:c,u=e.showLineNumbers,d=e.wrapLongLines,f=e.wrapLines,p=f!==void 0&&f?ar({},typeof s==`function`?s(n):s):{};if(p.className=p.className?[].concat(Vn(p.className.trim().split(/\s+/)),Vn(l)):l,n&&a){var m=fr(r,n,i);t.unshift(dr(n,m))}return d&u&&(p.style=ar({display:`flex`},p.style)),{type:`element`,tagName:`span`,properties:p,children:t}}function mr(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[];e.length===void 0&&(e=[e]);for(var r=0;r<e.length;r++){var i=e[r];if(i.type===`text`)n.push(pr({children:[i],className:Vn(new Set(t))}));else if(i.children){var a=t.concat(i.properties?.className||[]);mr(i.children,a).forEach(function(e){return n.push(e)})}}return n}function hr(e,t,n,r,i,a,o,s,c){var l,u=mr(e.value),d=[],f=-1,p=0;function m(e,a){return pr({children:e,lineNumber:a,lineNumberStyle:s,largestLineNumber:o,showInlineLineNumbers:i,lineProps:n,className:arguments.length>2&&arguments[2]!==void 0?arguments[2]:[],showLineNumbers:r,wrapLongLines:c,wrapLines:t})}function h(e,t){if(r&&t&&i){var n=fr(s,t,o);e.unshift(dr(t,n))}return e}function g(e,n){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[];return t||r.length>0?m(e,n,r):h(e,n)}for(var _=function(){var e=u[p],t=e.children[0].value;if(sr(t)){var n=t.split(` 17`);n.forEach(function(t,i){var o=r&&d.length+a,s={type:`text`,value:`${t} 18`};if(i===0){var c=g(u.slice(f+1,p).concat(pr({children:[s],className:e.properties.className})),o);d.push(c)}else if(i===n.length-1){var l=u[p+1]&&u[p+1].children&&u[p+1].children[0],m={type:`text`,value:`${t}`};if(l){var h=pr({children:[m],className:e.properties.className});u.splice(p+1,0,h)}else{var _=g([m],o,e.properties.className);d.push(_)}}else{var v=g([s],o,e.properties.className);d.push(v)}}),f=p}p++};p<u.length;)_();if(f!==u.length-1){var v=u.slice(f+1,u.length);if(v&&v.length){var y=g(v,r&&d.length+a);d.push(y)}}return t?d:(l=[]).concat.apply(l,d)}function gr(e){var t=e.rows,n=e.stylesheet,r=e.useInlineStyles;return t.map(function(e,t){return tr({node:e,stylesheet:n,useInlineStyles:r,key:`code-segment-${t}`})})}function _r(e){return e&&e.highlightAuto!==void 0}function vr(e){var t=e.astGenerator,n=e.language,r=e.code,i=e.defaultCodeValue;if(_r(t)){var a=nr(t,n);return n===`text`?{value:i,language:`text`}:a?t.highlight(n,r):t.highlightAuto(r)}try{return n&&n!==`text`?{value:t.highlight(r,n)}:{value:i}}catch{return{value:i}}}function yr(e,t){return function(n){var r=n.language,i=n.children,a=n.style,o=a===void 0?t:a,s=n.customStyle,c=s===void 0?{}:s,l=n.codeTagProps,u=l===void 0?{className:r?`language-${r}`:void 0,style:ar(ar({},o[`code[class*="language-"]`]),o[`code[class*="language-${r}"]`])}:l,d=n.useInlineStyles,f=d===void 0||d,p=n.showLineNumbers,m=p!==void 0&&p,h=n.showInlineLineNumbers,g=h===void 0||h,_=n.startingLineNumber,v=_===void 0?1:_,b=n.lineNumberContainerStyle,x=n.lineNumberStyle,S=x===void 0?{}:x,C=n.wrapLines,ee=n.wrapLongLines,w=ee!==void 0&&ee,te=n.lineProps,T=te===void 0?{}:te,ne=n.renderer,re=n.PreTag,ie=re===void 0?`pre`:re,ae=n.CodeTag,oe=ae===void 0?`code`:ae,se=n.code,ce=se===void 0?(Array.isArray(i)?i[0]:i)||``:se,le=n.astGenerator,ue=Fn(n,rr);le||=e;var de=m?y.createElement(lr,{containerStyle:b,codeStyle:u.style||{},numberStyle:S,startingLineNumber:v,codeString:ce}):null,fe=o.hljs||o[`pre[class*="language-"]`]||{backgroundColor:`#fff`},pe=_r(le)?`hljs`:`prismjs`,me=f?Object.assign({},ue,{style:Object.assign({},fe,c)}):Object.assign({},ue,{className:ue.className?`${pe} ${ue.className}`:pe,style:Object.assign({},c)});if(u.style=ar(w?{whiteSpace:`pre-wrap`}:{whiteSpace:`pre`},u.style),!le)return y.createElement(ie,me,de,y.createElement(oe,u,ce));(C===void 0&&ne||w)&&(C=!0),ne||=gr;var he=[{type:`text`,value:ce}],ge=vr({astGenerator:le,language:r,code:ce,defaultCodeValue:he});ge.language===null&&(ge.value=he);var _e=v+(ce.match(/\n/g)?.length??0),ve=hr(ge,C,T,m,g,v,_e,S,w);return y.createElement(ie,me,y.createElement(oe,u,!g&&de,ne({rows:ve,stylesheet:o,useInlineStyles:f})))}}var br=class{constructor(e,t,n){this.normal=t,this.property=e,n&&(this.space=n)}};br.prototype.normal={},br.prototype.property={},br.prototype.space=void 0;function xr(e,t){let n={},r={};for(let t of e)Object.assign(n,t.property),Object.assign(r,t.normal);return new br(n,r,t)}function Sr(e){return e.toLowerCase()}var Cr=class{constructor(e,t){this.attribute=t,this.property=e}};Cr.prototype.attribute=``,Cr.prototype.booleanish=!1,Cr.prototype.boolean=!1,Cr.prototype.commaOrSpaceSeparated=!1,Cr.prototype.commaSeparated=!1,Cr.prototype.defined=!1,Cr.prototype.mustUseProperty=!1,Cr.prototype.number=!1,Cr.prototype.overloadedBoolean=!1,Cr.prototype.property=``,Cr.prototype.spaceSeparated=!1,Cr.prototype.space=void 0;var wr=t({boolean:()=>A,booleanish:()=>Er,commaOrSpaceSeparated:()=>kr,commaSeparated:()=>Or,number:()=>j,overloadedBoolean:()=>Dr,spaceSeparated:()=>M}),Tr=0,A=Ar(),Er=Ar(),Dr=Ar(),j=Ar(),M=Ar(),Or=Ar(),kr=Ar();function Ar(){return 2**++Tr}var jr=Object.keys(wr),Mr=class extends Cr{constructor(e,t,n,r){let i=-1;
vendor: 4,255 bytes, line 18
18if(super(e,t),Nr(this,`space`,r),typeof n==`number`)for(;++i<jr.length;){let e=jr[i];Nr(this,jr[i],(n&wr[e])===wr[e])}}};Mr.prototype.defined=!0;function Nr(e,t,n){n&&(e[t]=n)}function Pr(e){let t={},n={};for(let[r,i]of Object.entries(e.properties)){let a=new Mr(r,e.transform(e.attributes||{},r),i,e.space);e.mustUseProperty&&e.mustUseProperty.includes(r)&&(a.mustUseProperty=!0),t[r]=a,n[Sr(r)]=r,n[Sr(a.attribute)]=r}return new br(t,n,e.space)}var Fr=Pr({properties:{ariaActiveDescendant:null,ariaAtomic:Er,ariaAutoComplete:null,ariaBusy:Er,ariaChecked:Er,ariaColCount:j,ariaColIndex:j,ariaColSpan:j,ariaControls:M,ariaCurrent:null,ariaDescribedBy:M,ariaDetails:null,ariaDisabled:Er,ariaDropEffect:M,ariaErrorMessage:null,ariaExpanded:Er,ariaFlowTo:M,ariaGrabbed:Er,ariaHasPopup:null,ariaHidden:Er,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:M,ariaLevel:j,ariaLive:null,ariaModal:Er,ariaMultiLine:Er,ariaMultiSelectable:Er,ariaOrientation:null,ariaOwns:M,ariaPlaceholder:null,ariaPosInSet:j,ariaPressed:Er,ariaReadOnly:Er,ariaRelevant:null,ariaRequired:Er,ariaRoleDescription:M,ariaRowCount:j,ariaRowIndex:j,ariaRowSpan:j,ariaSelected:Er,ariaSetSize:j,ariaSort:null,ariaValueMax:j,ariaValueMin:j,ariaValueNow:j,ariaValueText:null,role:null},transform(e,t){return t===`role`?t:`aria-`+t.slice(4).toLowerCase()}});function Ir(e,t){return t in e?e[t]:t}function Lr(e,t){return Ir(e,t.toLowerCase())}var Rr=Pr({attributes:{acceptcharset:`accept-charset`,classname:`class`,htmlfor:`for`,httpequiv:`http-equiv`},mustUseProperty:[`checked`,`multiple`,`muted`,`selected`],properties:{abbr:null,accept:Or,acceptCharset:M,accessKey:M,action:null,allow:null,allowFullScreen:A,allowPaymentRequest:A,allowUserMedia:A,alpha:A,alt:null,as:null,async:A,autoCapitalize:null,autoComplete:M,autoFocus:A,autoPlay:A,blocking:M,capture:null,charSet:null,checked:A,cite:null,className:M,closedBy:null,colorSpace:null,cols:j,colSpan:j,command:null,commandFor:null,content:null,contentEditable:Er,controls:A,controlsList:M,coords:j|Or,crossOrigin:null,data:null,dateTime:null,decoding:null,default:A,defer:A,dir:null,dirName:null,disabled:A,download:Dr,draggable:Er,encType:null,enterKeyHint:null,fetchPriority:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:A,formTarget:null,headers:M,height:j,hidden:Dr,high:j,href:null,hrefLang:null,htmlFor:M,httpEquiv:M,id:null,imageSizes:null,imageSrcSet:null,inert:A,inputMode:null,integrity:null,is:null,isMap:A,itemId:null,itemProp:M,itemRef:M,itemScope:A,itemType:M,kind:null,label:null,lang:null,language:null,list:null,loading:null,loop:A,low:j,manifest:null,max:null,maxLength:j,media:null,method:null,min:null,minLength:j,multiple:A,muted:A,name:null,nonce:null,noModule:A,noValidate:A,onAbort:null,onAfterPrint:null,onAuxClick:null,onBeforeMatch:null,onBeforePrint:null,onBeforeToggle:null,onBeforeUnload:null,onBlur:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onContextLost:null,onContextMenu:null,onContextRestored:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnded:null,onError:null,onFocus:null,onFormData:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLanguageChange:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadEnd:null,onLoadStart:null,onMessage:null,onMessageError:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRejectionHandled:null,onReset:null,onResize:null,onScroll:null,onScrollEnd:null,onSecurityPolicyViolation:null,onSeeked:null,onSeeking:null,onSelect:null,onSlotChange:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnhandledRejection:null,onUnload:null,onVolumeChange:null,onWaiting:null,onWheel:null,open:A,optimum:j,pattern:null,ping:M,placeholder:null,playsInl
18ine:A,popover:null,popoverTarget:null,popoverTargetAction:null,poster:null,preload:null,readOnly:A,referrerPolicy:null,rel:M,required:A,reversed:A,rows:j,rowSpan:j,sandbox:M,scope:null,scoped:A,seamless:A,selected:A,shadowRootClonable:A,shadowRootCustomElementRegistry:A,shadowRootDelegatesFocus:A,shadowRootMode:null,shadowRootSerializable:A,shape:null,size:j,sizes:null,slot:null,span:j,spellCheck:Er,src:null,srcDoc:null,srcLang:null,srcSet:null,start:j,step:null,style:null,tabIndex:j,target:null,title:null,translate:null,type:null,typeMustMatch:A,useMap:null,value:Er,width:j,wrap:null,writingSuggestions:null,align:null,aLink:null,archive:M,axis:null,background:null,bgColor:null,border:j,borderColor:null,bottomMargin:j,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:A,declare:A,event:null,face:null,frame:null,frameBorder:null,hSpace:j,leftMargin:j,link:null,longDesc:null,lowSrc:null,marginHeight:j,marginWidth:j,noResize:A,noHref:A,noShade:A,noWrap:A,object:null,profile:null,prompt:null,rev:null,rightMargin:j,rules:null,scheme:null,scrolling:Er,standby:null,summary:null,text:null,topMargin:j,valueType:null,version:null,vAlign:null,vLink:null,vSpace:j,allowTransparency:null,autoCorrect:null,autoSave:null,credentialless:A,disablePictureInPicture:A,disableRemotePlayback:A,exportParts:Or,part:M,prefix:null,property:null,results:j,security:null,unselectable:null},space:`html`,transform:Lr}),zr=Pr({attributes:{accentHeight:`accent-height`,alignmentBaseline:`alignment-baseline`,arabicForm:`arabic-form`,baselineShift:`baseline-shift`,capHeight:`cap-height`,className:`class`,clipPath:`clip-path`,clipRule:`clip-rule`,colorInterpolation:`color-interpolation`,colorInterpolationFilters:`color-interpolation-filters`,colorProfile:`color-profile`,colorRendering:`color-rendering`,crossOrigin:`crossorigin`,dataType:`datatype`,dominantBaseline:`dominant-baseline`,enableBackground:`enable-background`,fillOpacity:`fill-opacity`,fillRule:`fill-rule`,floodColor:`flood-color`,floodOpacity:`flood-opacity`,fontFamily:`font-family`,fontSize:`font-size`,fontSizeAdjust:`font-size-adjust`,fontStretch:`font-stretch`,fontStyle:`font-style`,fontVariant:`font-variant`,fontWeight:`font-weight`,glyphName:`glyph-name`,glyphOrientationHorizontal:`glyph-orientation-horizontal`,glyphOrientationVertical:`glyph-orientation-vertical`,hrefLang:`hreflang`,horizAdvX:`horiz-adv-x`,horizOriginX:`horiz-origin-x`,horizOriginY:`horiz-origin-y`,imageRendering:`image-rendering`,letterSpacing:`letter-spacing`,lightingColor:`lighting-color`,markerEnd:`marker-end`,markerMid:`marker-mid`,markerStart:`marker-start`,maskType:`mask-type`,navDown:`nav-down`,navDownLeft:`nav-down-left`,navDownRight:`nav-down-right`,navLeft:`nav-left`,navNext:`nav-next`,navPrev:`nav-prev`,navRight:`nav-right`,navUp:`nav-up`,navUpLeft:`nav-up-left`,navUpRight:`nav-up-right`,onAbort:`onabort`,onActivate:`onactivate`,onAfterPrint:`onafterprint`,onBeforePrint:`onbeforeprint`,onBegin:`onbegin`,onCancel:`oncancel`,onCanPlay:`oncanplay`,onCanPlayThrough:`oncanplaythrough`,onChange:`onchange`,onClick:`onclick`,onClose:`onclose`,onCopy:`oncopy`,onCueChange:`oncuechange`,onCut:`oncut`,onDblClick:`ondblclick`,onDrag:`ondrag`,onDragEnd:`ondragend`,onDragEnter:`ondragenter`,onDragExit:`ondragexit`,onDragLeave:`ondragleave`,onDragOver:`ondragover`,onDragStart:`ondragstart`,onDrop:`ondrop`,onDurationChange:`ondurationchange`,onEmptied:`onemptied`,onEnd:`onend`,onEnded:`onended`,onError:`onerror`,onFocus:`onfocus`,onFocusIn:`onfocusin`,onFocusOut:`onfocusout`,onHashChange:`onhashchange`,onInput:`oninput`,onInvalid:`oninvalid`,onKeyDown:`onkeydown`,onKeyPress:`onkeypress`,onKeyUp:`onkeyup`,onLoad:`onload`,onLoadedData:`onloadeddata`,onLoadedMetadata:`onloadedmetadata`,onLoadStart:`onloadstart`,onMessage:`onmessage`,onMouseDown:`onmousedown`,onMouseEnter:`onmouseenter`,onMouseLeave:`onmouseleave`,onMouseMove:`onmousemove`,onMouseOut:`onmouseout`,onMouseOver:`onmouseover`,onMouseUp:`onmouseup`,onMouseWheel:`onmousewheel`,onOffline:`onoffline`,onOnline:`ononline`,onPageHide:`onpagehide`,onPageShow:`onpageshow`,onPaste:`onpaste`,onPause:`onpause`,onPlay:`onplay`,onPlaying:`onplaying`,onPopState:`onpopstate`,onProgress:`onprogress`,onRateChange:`onratechange`,onRepeat:`onrepeat`,onReset:`onreset`,onResize:`onresize`,onScroll:`onscroll`,onSeeked:`onseeked`,onSeeking:`onseeking`,onSelect:`onselect`,onShow:`onshow`,onStalled:`onstalled`,onStorage:`onstorage`,onSubmit:`onsubmit`,onSuspend:`onsuspend`,onTimeUpdate:`ontimeupdate`,onToggle:`ontoggle`,onUnload:`onunload`,onVolumeChange:`onvolumechange`,onWaiting:`onwaiting`,onZoom:`onzoom`,overlinePosition:`overline-position`,overlineThickness:`overline-thickness`,paintOrder:`paint-order`,panose1:`panose-1`,pointerEvents:`pointer-events`,referrerPolicy:`referrerpolicy`,renderingIntent:`rendering-intent`,shapeRendering:`shape-rendering`,stopColor:`stop-color`,stopOpacity:`stop-opacity`,strikethroughPosition:`strikethrough-position`,strikethroughThickness:`strikethrough-thickness`,strokeDashArray:`stroke-dasharray`,strokeDashOffset:`stroke-dashoffset`,strokeLineCap:`stroke-linecap`,strokeLineJoin:`stroke-linejoin`,strokeMiterLimit:`stroke-miterlimit`,strokeOpacity:`stroke-opacity`,strokeWidth:`stroke-width`,tabIndex:`tabindex`,textAnchor:`text-anchor`,textDecoration:`text-decoration`,textRendering:`text-rendering`,transformOrigin:`transform-origin`,typeOf:`typeof`,underlinePosition:`underline-position`,underlineThickness:`underline-thickness`,unicodeBidi:`unicode
18-bidi`,unicodeRange:`unicode-range`,unitsPerEm:`units-per-em`,vAlphabetic:`v-alphabetic`,vHanging:`v-hanging`,vIdeographic:`v-ideographic`,vMathematical:`v-mathematical`,vectorEffect:`vector-effect`,vertAdvY:`vert-adv-y`,vertOriginX:`vert-origin-x`,vertOriginY:`vert-origin-y`,wordSpacing:`word-spacing`,writingMode:`writing-mode`,xHeight:`x-height`,playbackOrder:`playbackorder`,timelineBegin:`timelinebegin`},properties:{about:kr,accentHeight:j,accumulate:null,additive:null,alignmentBaseline:null,alphabetic:j,amplitude:j,arabicForm:null,ascent:j,attributeName:null,attributeType:null,azimuth:j,bandwidth:null,baselineShift:null,baseFrequency:null,baseProfile:null,bbox:null,begin:null,bias:j,by:null,calcMode:null,capHeight:j,className:M,clip:null,clipPath:null,clipPathUnits:null,clipRule:null,color:null,colorInterpolation:null,colorInterpolationFilters:null,colorProfile:null,colorRendering:null,content:null,contentScriptType:null,contentStyleType:null,crossOrigin:null,cursor:null,cx:null,cy:null,d:null,dataType:null,defaultAction:null,descent:j,diffuseConstant:j,direction:null,display:null,dur:null,divisor:j,dominantBaseline:null,download:A,dx:null,dy:null,edgeMode:null,editable:null,elevation:j,enableBackground:null,end:null,event:null,exponent:j,externalResourcesRequired:null,fill:null,fillOpacity:j,fillRule:null,filter:null,filterRes:null,filterUnits:null,floodColor:null,floodOpacity:null,focusable:null,focusHighlight:null,fontFamily:null,fontSize:null,fontSizeAdjust:null,fontStretch:null,fontStyle:null,fontVariant:null,fontWeight:null,format:null,fr:null,from:null,fx:null,fy:null,g1:Or,g2:Or,glyphName:Or,glyphOrientationHorizontal:null,glyphOrientationVertical:null,glyphRef:null,gradientTransform:null,gradientUnits:null,handler:null,hanging:j,hatchContentUnits:null,hatchUnits:null,height:null,href:null,hrefLang:null,horizAdvX:j,horizOriginX:j,horizOriginY:j,id:null,ideographic:j,imageRendering:null,initialVisibility:null,in:null,in2:null,intercept:j,k:j,k1:j,k2:j,k3:j,k4:j,kernelMatrix:kr,kernelUnitLength:null,keyPoints:null,keySplines:null,keyTimes:null,kerning:null,lang:null,lengthAdjust:null,letterSpacing:null,lightingColor:null,limitingConeAngle:j,local:null,markerEnd:null,markerMid:null,markerStart:null,markerHeight:null,markerUnits:null,markerWidth:null,mask:null,maskContentUnits:null,maskType:null,maskUnits:null,mathematical:null,max:null,media:null,mediaCharacterEncoding:null,mediaContentEncodings:null,mediaSize:j,mediaTime:null,method:null,min:null,mode:null,name:null,navDown:null,navDownLeft:null,navDownRight:null,navLeft:null,navNext:null,navPrev:null,navRight:null,navUp:null,navUpLeft:null,navUpRight:null,numOctaves:null,observer:null,offset:null,onAbort:null,onActivate:null,onAfterPrint:null,onBeforePrint:null,onBegin:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnd:null,onEnded:null,onError:null,onFocus:null,onFocusIn:null,onFocusOut:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadStart:null,onMessage:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onMouseWheel:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRepeat:null,onReset:null,onResize:null,onScroll:null,onSeeked:null,onSeeking:null,onSelect:null,onShow:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnload:null,onVolumeChange:null,onWaiting:null,onZoom:null,opacity:null,operator:null,order:null,orient:null,orientation:null,origin:null,overflow:null,overlay:null,overlinePosition:j,overlineThickness:j,paintOrder:null,panose1:null,path:null,pathLength:j,patternContentUnits:null,patternTransform:null,patternUnits:null,phase:null,ping:M,pitch:null,playbackOrder:null,pointerEvents:null,points:null,pointsAtX:j,pointsAtY:j,pointsAtZ:j,preserveAlpha:null,preserveAspectRatio:null,primitiveUnits:null,propagate:null,property:kr,r:null,radius:null,referrerPolicy:null,refX:null,refY:null,rel:kr,rev:kr,renderingIntent:null,repeatCount:null,repeatDur:null,requiredExtensions:kr,requiredFeatures:kr,requiredFonts:kr,requiredFormats:kr,resource:null,restart:null,result:null,rotate:null,rx:null,ry:null,
vendor: 2,500 bytes, line 18
18scale:null,seed:null,shapeRendering:null,side:null,slope:null,snapshotTime:null,specularConstant:j,specularExponent:j,spreadMethod:null,spacing:null,startOffset:null,stdDeviation:null,stemh:null,stemv:null,stitchTiles:null,stopColor:null,stopOpacity:null,strikethroughPosition:j,strikethroughThickness:j,string:null,stroke:null,strokeDashArray:kr,strokeDashOffset:null,strokeLineCap:null,strokeLineJoin:null,strokeMiterLimit:j,strokeOpacity:j,strokeWidth:null,style:null,surfaceScale:j,syncBehavior:null,syncBehaviorDefault:null,syncMaster:null,syncTolerance:null,syncToleranceDefault:null,systemLanguage:kr,tabIndex:j,tableValues:null,target:null,targetX:j,targetY:j,textAnchor:null,textDecoration:null,textRendering:null,textLength:null,timelineBegin:null,title:null,transformBehavior:null,type:null,typeOf:kr,to:null,transform:null,transformOrigin:null,u1:null,u2:null,underlinePosition:j,underlineThickness:j,unicode:null,unicodeBidi:null,unicodeRange:null,unitsPerEm:j,values:null,vAlphabetic:j,vMathematical:j,vectorEffect:null,vHanging:j,vIdeographic:j,version:null,vertAdvY:j,vertOriginX:j,vertOriginY:j,viewBox:null,viewTarget:null,visibility:null,width:null,widths:null,wordSpacing:null,writingMode:null,x:null,x1:null,x2:null,xChannelSelector:null,xHeight:j,y:null,y1:null,y2:null,yChannelSelector:null,z:null,zoomAndPan:null},space:`svg`,transform:Ir}),Br=Pr({properties:{xLinkActuate:null,xLinkArcRole:null,xLinkHref:null,xLinkRole:null,xLinkShow:null,xLinkTitle:null,xLinkType:null},space:`xlink`,transform(e,t){return`xlink:`+t.slice(5).toLowerCase()}}),Vr=Pr({attributes:{xmlnsxlink:`xmlns:xlink`},properties:{xmlnsXLink:null,xmlns:null},space:`xmlns`,transform:Lr}),Hr=Pr({properties:{xmlBase:null,xmlLang:null,xmlSpace:null},space:`xml`,transform(e,t){return`xml:`+t.slice(3).toLowerCase()}}),Ur=/[A-Z]/g,Wr=/-[a-z]/g,Gr=/^data[-\w.:]+$/i;function Kr(e,t){let n=Sr(t),r=t,i=Cr;if(n in e.normal)return e.property[e.normal[n]];if(n.length>4&&n.slice(0,4)===`data`&&Gr.test(t)){if(t.charAt(4)===`-`){let e=t.slice(5).replace(Wr,Jr);r=`data`+e.charAt(0).toUpperCase()+e.slice(1)}else{let e=t.slice(4);if(!Wr.test(e)){let n=e.replace(Ur,qr);n.charAt(0)!==`-`&&(n=`-`+n),t=`data`+n}}i=Mr}return new i(r,t)}function qr(e){return`-`+e.toLowerCase()}function Jr(e){return e.charAt(1).toUpperCase()}var Yr=xr([Fr,Rr,Br,Vr,Hr],`html`),Xr=xr([Fr,zr,Br,Vr,Hr],`svg`);function Zr(e){let t=[],n=String(e||``),r=n.indexOf(`,`),i=0,a=!1;for(;!a;){r===-1&&(r=n.length,a=!0);let e=n.slice(i,r).trim();
vendor: 4,416 bytes, line 18
18(e||!a)&&t.push(e),i=r+1,r=n.indexOf(`,`,i)}return t}function Qr(e,t){let n=t||{};return(e[e.length-1]===``?[...e,``]:e).join((n.padRight?` `:``)+`,`+(n.padLeft===!1?``:` `)).trim()}var $r=/[#.]/g;function ei(e,t){let n=e||``,r={},i=0,a,o;for(;i<n.length;){$r.lastIndex=i;let e=$r.exec(n),t=n.slice(i,e?e.index:n.length);t&&(a?a===`#`?r.id=t:Array.isArray(r.className)?r.className.push(t):r.className=[t]:o=t,i+=t.length),e&&(a=e[0],i++)}return{type:`element`,tagName:o||t||`div`,properties:r,children:[]}}function ti(e){let t=String(e||``).trim();return t?t.split(/[ \t\n\r\f]+/g):[]}function ni(e){return e.join(` `).trim()}function ri(e,t,n){let r=n?li(n):void 0;function i(n,i,...a){let o;if(n==null){o={type:`root`,children:[]};let e=i;a.unshift(e)}else{o=ei(n,t);let s=o.tagName.toLowerCase(),c=r?r.get(s):void 0;if(o.tagName=c||s,ii(i))a.unshift(i);else for(let[t,n]of Object.entries(i))ai(e,o.properties,t,n)}for(let e of a)oi(o.children,e);return o.type===`element`&&o.tagName===`template`&&(o.content={type:`root`,children:o.children},o.children=[]),o}return i}function ii(e){if(typeof e!=`object`||!e||Array.isArray(e))return!0;if(typeof e.type!=`string`)return!1;let t=e,n=Object.keys(e);for(let e of n){let n=t[e];if(n&&typeof n==`object`){if(!Array.isArray(n))return!0;let e=n;for(let t of e)if(typeof t!=`number`&&typeof t!=`string`)return!0}}return!!(`children`in e&&Array.isArray(e.children))}function ai(e,t,n,r){let i=Kr(e,n),a;if(r!=null){if(typeof r==`number`){if(Number.isNaN(r))return;a=r}else a=typeof r==`boolean`?r:typeof r==`string`?i.spaceSeparated?ti(r):i.commaSeparated?Zr(r):i.commaOrSpaceSeparated?ti(Zr(r).join(` `)):si(i,i.property,r):Array.isArray(r)?[...r]:i.property===`style`?ci(r):String(r);if(Array.isArray(a)){let e=[];for(let t of a)e.push(si(i,i.property,t));a=e}i.property===`className`&&Array.isArray(t.className)&&(a=t.className.concat(a)),t[i.property]=a}}function oi(e,t){if(t!=null){if(typeof t==`number`||typeof t==`string`)e.push({type:`text`,value:String(t)});else if(Array.isArray(t))for(let n of t)oi(e,n);else if(typeof t==`object`&&`type`in t)t.type===`root`?oi(e,t.children):e.push(t);else throw Error("Expected node, nodes, or string, got `"+t+"`")}}function si(e,t,n){if(typeof n==`string`){if(e.number&&n&&!Number.isNaN(Number(n)))return Number(n);if((e.boolean||e.overloadedBoolean)&&(n===``||Sr(n)===Sr(t)))return!0}return n}function ci(e){let t=[];for(let[n,r]of Object.entries(e))t.push([n,r].join(`: `));return t.join(`; `)}function li(e){let t=new Map;for(let n of e)t.set(n.toLowerCase(),n);return t}var ui=`altGlyph.altGlyphDef.altGlyphItem.animateColor.animateMotion.animateTransform.clipPath.feBlend.feColorMatrix.feComponentTransfer.feComposite.feConvolveMatrix.feDiffuseLighting.feDisplacementMap.feDistantLight.feDropShadow.feFlood.feFuncA.feFuncB.feFuncG.feFuncR.feGaussianBlur.feImage.feMerge.feMergeNode.feMorphology.feOffset.fePointLight.feSpecularLighting.feSpotLight.feTile.feTurbulence.foreignObject.glyphRef.linearGradient.radialGradient.solidColor.textArea.textPath`.split(`.`),di=ri(Yr,`div`);ri(Xr,`g`,ui);var fi=`AElig.AMP.Aacute.Acirc.Agrave.Aring.Atilde.Auml.COPY.Ccedil.ETH.Eacute.Ecirc.Egrave.Euml.GT.Iacute.Icirc.Igrave.Iuml.LT.Ntilde.Oacute.Ocirc.Ograve.Oslash.Otilde.Ouml.QUOT.REG.THORN.Uacute.Ucirc.Ugrave.Uuml.Yacute.aacute.acirc.acute.aelig.agrave.amp.aring.atilde.auml.brvbar.ccedil.cedil.cent.copy.curren.deg.divide.eacute.ecirc.egrave.eth.euml.frac12.frac14.frac34.gt.iacute.icirc.iexcl.igrave.iquest.iuml.laquo.lt.macr.micro.middot.nbsp.not.ntilde.oacute.ocirc.ograve.ordf.ordm.oslash.otilde.ouml.para.plusmn.pound.quot.raquo.reg.sect.shy.sup1.sup2.sup3.szlig.thorn.times.uacute.ucirc.ugrave.uml.uuml.yacute.yen.yuml`.split(`.`),pi={0:`�`,128:`â¬`,130:`â`,131:`Æ`,132:`â`,133:`â¦`,134:`â `,135:`â¡`,136:`Ë`,137:`â°`,138:`Å `,139:`â¹`,140:`Å`,142:`Ž`,145:`â`,146:`â`,147:`â`,148:`â`,149:`â¢`,150:`â`,151:`â`,152:`Ë`,153:`â¢`,154:`Å¡`,155:`âº`,156:`Å`,158:`ž`,159:`Ÿ`};function mi(e){let t=typeof e==`string`?e.charCodeAt(0):e;return t>=48&&t<=57}function hi(e){let t=typeof e==`string`?e.charCodeAt(0):e;return t>=97&&t<=102||t>=65&&t<=70||t>=48&&t<=57}function gi(e){let t=typeof e==`string`?e.charCodeAt(0):e;return t>=97&&t<=122||t>=65&&t<=90}function _i(e){return gi(e)||mi(e)}var vi=document.createElement(`i`);function yi(e){let t=`&`+e+`;`;vi.innerHTML=t;let n=vi.textContent;
18return n.charCodeAt(n.length-1)===59&&e!==`semi`?!1:n!==t&&n}var bi=[``,`Named character references must be terminated by a semicolon`,`Numeric character references must be terminated by a semicolon`,`Named character references cannot be empty`,`Numeric character references cannot be empty`,`Named character references must be known`,`Numeric character references cannot be disallowed`,`Numeric character references cannot be outside the permissible Unicode range`];function xi(e,t){let n=t||{},r=typeof n.additional==`string`?n.additional.charCodeAt(0):n.additional,i=[],a=0,o=-1,s=``,c,l;n.position&&(`start`in n.position||`indent`in n.position?(l=n.position.indent,c=n.position.start):c=n.position);let u=(c?c.line:0)||1,d=(c?c.column:0)||1,f=m(),p;for(a--;++a<=e.length;)if(p===10&&(d=(l?l[o]:0)||1),p=e.charCodeAt(a),p===38){let t=e.charCodeAt(a+1);if(t===9||t===10||t===12||t===32||t===38||t===60||Number.isNaN(t)||r&&t===r){s+=String.fromCharCode(p),d++;continue}let o=a+1,c=o,l=o,u;if(t===35){l=++c;let t=e.charCodeAt(l);t===88||t===120?(u=`hexadecimal`,l=++c):u=`decimal`}else u=`named`;let _=``,v=``,y=``,b=u===`named`?_i:u===`decimal`?mi:hi;for(l--;++l<=e.length;){let t=e.charCodeAt(l);if(!b(t))break;y+=String.fromCharCode(t),u===`named`&&fi.includes(y)&&(_=y,v=yi(y))}let x=e.charCodeAt(l)===59;if(x){l++;let e=u===`named`&&yi(y);e&&(_=y,v=e)}let S=1+l-o,C=``;if(x||n.nonTerminated!==!1){if(!y)u!==`named`&&h(4,S);else if(u===`named`){if(x&&!v)h(5,1);else if(_!==y&&(l=c+_.length,S=1+l-c,x=!1),!x){let t=_?1:3;if(n.attribute){let n=e.charCodeAt(l);n===61?(h(t,S),v=``):_i(n)?v=``:h(t,S)}else h(t,S)}C=v}else{x||h(2,S);let e=Number.parseInt(y,u===`hexadecimal`?16:10);if(Si(e))h(7,S),C=`�`;else if(e in pi)h(6,S),C=pi[e];else{let t=``;Ci(e)&&h(6,S),e>65535&&(e-=65536,t+=String.fromCharCode(e>>>10|55296),e=56320|e&1023),C=t+String.fromCharCode(e)}}}if(C){g(),f=m(),a=l-1,d+=l-o+1,i.push(C);let t=m();t.offset++,n.reference&&n.reference.call(n.referenceContext||void 0,C,{start:f,end:t},e.slice(o-1,l)),f=t}else y=e.slice(o-1,l),s+=y,d+=y.length,a=l-1}else p===10&&(u++,o++,d=0),Number.isNaN(p)?g():(s+=String.fromCharCode(p),d++);return i.join(``);function m(){return{line:u,column:d,offset:a+((c?c.offset:0)||0)}}function h(e,t){let r;n.warning&&(r=m(),r.column+=t,r.offset+=t,n.warning.call(n.warningContext||void 0,bi[e],r,e))}function g(){s&&=(i.push(s),n.text&&n.text.call(n.textContext||void 0,s,{start:f,end:m()}),``)}}function Si(e){return e>=55296&&e<=57343||e>1114111}function Ci(e){return e>=1&&e<=8||e===11||e>=13&&e<=31||e>=127&&e<=159||e>=64976&&e<=65007||(e&65535)==65535||(e&65535)==65534}var wi=0,Ti={},Ei={util:{type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++wi}),e.__id},clone:function e(t,n){n||={};var r,i;switch(Ei.util.type(t)){case`Object`:if(i=Ei.util.objId(t),n[i])return n[i];for(var a in r={},n[i]=r,t)t.hasOwnProperty(a)&&(r[a]=e(t[a],n));return r;case`Array`:return i=Ei.util.objId(t),n[i]?n[i]:(r=[],n[i]=r,t.forEach(function(t,i){r[i]=e(t,n)}),r);default:return t}}},languages:{plain:Ti,plaintext:Ti,text:Ti,txt:Ti,extend:function(e,t){var n=Ei.util.clone(Ei.languages[e]);for(var r in t)n[r]=t[r];return n},insertBefore:function(e,t,n,r){r||=Ei.languages;var i=r[e],a={};for(var o in i)if(i.hasOwnProperty(o)){if(o==t)for(var s in n)n.hasOwnProperty(s)&&(a[s]=n[s]);n.hasOwnProperty(o)||(a[o]=i[o])}var c=r[e];return r[e]=a,Ei.languages.DFS(Ei.languages,function(t,n){n===c&&t!=e&&(this[t]=a)}),a},DFS:function e(t,n,r,i){i||={};var a=Ei.util.objId;for(var o in t)if(t.hasOwnProperty(o)){n.call(t,o,t[o],r||o);var s=t[o],c=Ei.util.type(s);c===`Object`&&!i[a(s)]?(i[a(s)]=!0,e(s,n,null,i)):c===`Array`&&!i[a(s)]&&(i[a(s)]=!0,e(s,n,o,i))}}},plugins:{},highlight:function(e,t,n){var r={code:e,grammar:t,language:n};if(Ei.hooks.run(`before-tokenize`,r),!r.grammar)throw Error(`The language "`+r.language+`" has no grammar.`);return r.tokens=Ei.tokenize(r.code,r.grammar),Ei.hooks.run(`after-tokenize`,r),Di.stringify(Ei.util.encode(r.tokens),r.language)},tokenize:function(e,t){var n=t.rest;if(n){for(var r in n)t[r]=n[r];delete t.rest}var i=new Ai;return ji(i,i.head,e),ki(e,i,t,i.head,0),Ni(i)},hooks:{all:{},add:function(e,t){var n=Ei.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=Ei.hooks.all[e];if(n&&n.length)for(var r=0,i;i=n[r++];)i(t)}},Token:Di};function Di(e,t,n,r){this.type=e,this.content=t,this.alias=n,this.length=(r||``).length|0}function Oi(e,t,n,r){e.lastIndex=t;var i=e.exec(n);if(i&&r&&i[1]){var a=i[1].length;i.index+=a,i[0]=i[0].slice(a)}return i}function ki(e,t,n,r,i,a){for(var o in n)if(n.hasOwnProperty(o)&&n[o]){var s=n[o];s=Array.isArray(s)?s:[s];for(var c=0;c<s.length;++c){if(a&&a.cause==o+`,`+c)return;var l=s[c],u=l.inside,d=!!l.lookbehind,f=!!l.greedy,p=l.alias;if(f&&!l.pattern.global){var m=l.pattern.toString().match(/[imsuy]*$/)[0];l.pattern=RegExp(l.pattern.source,m+`g`)}for(var h=l.pattern||l,g=r.next,_=i;g!==t.tail&&!(a&&_>=a.reach);_+=g.value.length,g=g.next){var v=g.value;if(t.length>e.length)return;if(!(v instanceof Di)){var y=1,b;if(f){if(b=Oi(h,_,e,d),!b||b.index>=e.length)break;var x=b.index,S=b.index+b[0].length,C=_;for(C+=g.value.length;x>=C;)g=g.next,C+=g.value.length;if(C-=g.value.length,_=C,g.value instanceof Di)continue;for(var ee=g;ee!==t.tail&&(C<S||typeof ee.value==`string`);ee=ee.next)y++,C+=ee.value.length;y--,v=e.slice(_,C),b.index-=_}else if(b=Oi(h,0,v,d),!b)continue;var x=b.index,w=b[0],te=v.slice(0,x),T=v.slice(x+w.length),ne=_+v.length;a&&ne>a.reach&&(a.reach=ne);var re=g.prev;te&&(re=ji(t,re,te),_+=te.length),Mi(t,re,y);var ie=new Di(o,u?Ei.tokenize(w,u):w,p,w);if(g=ji(t,re,ie),T&&ji(t,g,T),y>1){var ae={cause:o+`,`+c,reach:ne};ki(e,t,n,g.prev,_,ae),a&&ae.reach>a.reach&&(a.reach=ae.reach)}}}}}}function Ai(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function ji(e,t,n){var r=t.next,i={value:n,prev:t,next:r};return t.next=i,r.prev=i,e.length++,i}function Mi(e,t,n){for(var r=t.next,i=0;i<n&&r!==e.tail;i++)r=r.next;t.next=r,r.prev=t,e.length-=i}function Ni(e){for(var t=[],n=e.head.next;n!==e.tail;)t.push(n.value),n=n.next;return t}var Pi=Ei;function Fi(){}Fi.prototype=Pi;var Ii=new Fi;Ii.highlight=Li,Ii.register=Ri,Ii.alias=zi,Ii.registered=Bi,Ii.listLanguages=Vi,Ii.util.encode=Ui,Ii.Token.stringify=Hi;function Li(e,t){if(typeof e!=`string`)throw TypeError("Expected `string` for `value`, got `"+e+"`");let n,r;if(t&&typeof t==`object`)n=t;else{if(r=t,typeof r!=`string`)throw TypeError("Expected `string` for `name`, got `"+r+"`");if(Object.hasOwn(Ii.languages,r))n=Ii.languages[r];else throw Error("Unknown language: `"+r+"` is not registered")}return{type:`root`,children:Pi.highlight.call(Ii,e,n,r)}}
18function Ri(e){if(typeof e!=`function`||!e.displayName)throw Error("Expected `function` for `syntax`, got `"+e+"`");Object.hasOwn(Ii.languages,e.displayName)||e(Ii)}function zi(e,t){let n=Ii.languages,r={};typeof e==`string`?t&&(r[e]=t):r=e;let i;for(i in r)if(Object.hasOwn(r,i)){let e=r[i],t=typeof e==`string`?[e]:e,a=-1;for(;++a<t.length;)n[t[a]]=n[i]}}function Bi(e){if(typeof e!=`string`)throw TypeError("Expected `string` for `aliasOrLanguage`, got `"+e+"`");return Object.hasOwn(Ii.languages,e)}function Vi(){let e=Ii.languages,t=[],n;for(n in e)Object.hasOwn(e,n)&&typeof e[n]==`object`&&t.push(n);return t}function Hi(e,t){if(typeof e==`string`)return{type:`text`,value:e};if(Array.isArray(e)){let n=[],r=-1;for(;++r<e.length;)e[r]!==null&&e[r]!==void 0&&e[r]!==``&&n.push(Hi(e[r],t));return n}let n={attributes:{},classes:[`token`,e.type],content:Hi(e.content,t),language:t,tag:`span`,type:e.type};return e.alias&&n.classes.push(...typeof e.alias==`string`?[e.alias]:e.alias),Ii.hooks.run(`wrap`,n),di(n.tag+`.`+n.classes.join(`.`),Wi(n.attributes),n.content)}function Ui(e){return e}function Wi(e){let t;for(t in e)Object.hasOwn(e,t)&&(e[t]=xi(e[t]));return e}var Gi=yr(Ii,{});Gi.registerLanguage=function(e,t){return Ii.register(t)},Gi.alias=function(e,t){return Ii.alias(e,t)},Ki.displayName=`markup`,Ki.aliases=[`atom`,`html`,`mathml`,`rss`,`ssml`,`svg`,`xml`];function Ki(e){e.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:`attr-equals`},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:`named-entity`},/&#x?[\da-f]{1,8};/i]},e.languages.markup.tag.inside[`attr-value`].inside.entity=e.languages.markup.entity,e.languages.markup.doctype.inside[`internal-subset`].inside=e.languages.markup,e.hooks.add(`wrap`,function(e){e.type===`entity`&&(e.attributes.title=e.content.value.replace(/&/,`&`))}),Object.defineProperty(e.languages.markup.tag,"addInlined",{value:function(t,n){var r={};r[`language-`+n]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:e.languages[n]},r.cdata=/^<!\[CDATA\[|\]\]>$/i;var i={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:r}};i[`language-`+n]={pattern:/[\s\S]+/,inside:e.languages[n]};var a={};a[t]={pattern:RegExp(`(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[\\s\\S])*?(?=<\\/__>)`.replace(/__/g,function(){return t}),`i`),lookbehind:!0,greedy:!0,inside:i},e.languages.insertBefore(`markup`,`cdata`,a)}}),Object.defineProperty(e.languages.markup.tag,"addAttribute",{value:function(t,n){e.languages.markup.tag.inside[`special-attr`].push({pattern:RegExp(`(^|["'\\s])(?:`+t+`)\\s*=\\s*(?:"[^"]*"|'[^']*'|[^\\s'">=]+(?=[\\s>]))`,`i`),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[n,`language-`+n],inside:e.languages[n]},punctuation:[{pattern:/^=/,alias:`attr-equals`},/"|'/]}}}})}}),e.languages.html=e.languages.markup,e.languages.mathml=e.languages.markup,e.languages.svg=e.languages.markup,e.languages.xml=e.languages.extend(`markup`,{}),e.languages.ssml=e.languages.xml,e.languages.atom=e.languages.xml,e.languages.rss=e.languages.xml}qi.displayName=`clike`,qi.aliases=[];function qi(e){e.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}
vendor: 4,286 bytes, line 18
18],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/}}Ji.displayName=`javascript`,Ji.aliases=[`js`];function Ji(e){e.register(qi),e.languages.javascript=e.languages.extend(`clike`,{"class-name":[e.languages.clike[`class-name`],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(`(^|[^\\w$])(?:NaN|Infinity|0[bB][01]+(?:_[01]+)*n?|0[oO][0-7]+(?:_[0-7]+)*n?|0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?|\\d+(?:_\\d+)*n|(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?)(?![\\w$])`),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),e.languages.javascript[`class-name`][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,e.languages.insertBefore(`javascript`,`keyword`,{regex:{pattern:RegExp(`((?:^|[^$\\w\\xA0-\\uFFFF."'\\])\\s]|\\b(?:return|yield))\\s*)\\/(?:(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}|(?:\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}v[dgimyus]{0,7})(?=(?:\\s|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*(?:$|[\\r\\n,.;:})\\]]|\\/\\/))`),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:`language-regex`,inside:e.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:`function`},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:e.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:e.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:e.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:e.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),e.languages.insertBefore(`javascript`,`string`,{hashbang:{pattern:/^#!.*/,greedy:!0,alias:`comment`},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:`string`},interpolation:{pattern:/((?:^|[^\\])(?:\\{2}
18)*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:`punctuation`},rest:e.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:`property`}}),e.languages.insertBefore(`javascript`,`operator`,{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:`property`}}),e.languages.markup&&(e.languages.markup.tag.addInlined(`script`,`javascript`),e.languages.markup.tag.addAttribute(`on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)`,`javascript`)),e.languages.js=e.languages.javascript}Yi.displayName=`bash`,Yi.aliases=[`sh`,`shell`];function Yi(e){(function(e){var t=`\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_
18CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b`,n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:`punctuation`,inside:null},r={bash:n,environment:{pattern:RegExp(`\\$`+t),alias:`constant`},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp(`(\\{)`+t),lookbehind:!0,alias:`constant`}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:`important`},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:`function`},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:`function`}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:`variable`,lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/,inside:{environment:{pattern:RegExp(`(^|[\\s;|&]|[<>]\\()`+t),lookbehind:!0,alias:`constant`}},alias:`variable`,lookbehind:!0},parameter:{pattern:/(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/,alias:`variable`,lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp(`\\$?`+t),alias:`constant`},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:`class-name`},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:`important`},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>
vendor: 9,230 bytes, lines 18-20
18&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:`important`}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var i=[`comment`,`function-name`,`for-or-select`,`assign-left`,`parameter`,`string`,`environment`,`function`,`keyword`,`builtin`,`boolean`,`file-descriptor`,`operator`,`punctuation`,`number`],a=r.variable[1].inside,o=0;o<i.length;o++)a[i[o]]=e.languages.bash[i[o]];e.languages.sh=e.languages.bash,e.languages.shell=e.languages.bash})(e)}Xi.displayName=`yaml`,Xi.aliases=[`yml`];function Xi(e){(function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r=`(?:`+n.source+`(?:[ ]+`+t.source+`)?|`+t.source+`(?:[ ]+`+n.source+`)?)`,i=`(?:[^\\s\\x00-\\x08\\x0e-\\x1f!"#%&'*,\\-:>?@[\\]\`{|}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]|[?:-]<PLAIN>)(?:[ \\t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*`.replace(/<PLAIN>/g,function(){return`[^\\s\\x00-\\x08\\x0e-\\x1f,[\\]{}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]`}),a=`"(?:[^"\\\\\\r\\n]|\\\\.)*"|'(?:[^'\\\\\\r\\n]|\\\\.)*'`;function o(e,t){t=(t||``).replace(/m/g,``)+`m`;var n=`([:\\-,[{]\\s*(?:\\s<<prop>>[ \\t]+)?)(?:<<value>>)(?=[ \\t]*(?:$|,|\\]|\\}|(?:[\\r\\n]\\s*)?#))`.replace(/<<prop>>/g,function(){return r}).replace(/<<value>>/g,function(){return e});return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(`([\\-:]\\s*(?:\\s<<prop>>[ \\t]+)?[|>])[ \\t]*(?:((?:\\r?\\n|\\r)[ \\t]+)\\S[^\\r\\n]*(?:\\2[^\\r\\n]+)*)`.replace(/<<prop>>/g,function(){return r})),lookbehind:!0,alias:`string`},comment:/#.*/,key:{pattern:RegExp(`((?:^|[:\\-,[{\\r\\n?])[ \\t]*(?:<<prop>>[ \\t]+)?)<<key>>(?=\\s*:\\s)`.replace(/<<prop>>/g,function(){return r}).replace(/<<key>>/g,function(){return`(?:`+i+`|`+a+`)`})),lookbehind:!0,greedy:!0,alias:`atrule`},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:`important`},datetime:{pattern:o(`\\d{4}-\\d\\d?-\\d\\d?(?:[tT]|[ \\t]+)\\d\\d?:\\d{2}:\\d{2}(?:\\.\\d*)?(?:[ \\t]*(?:Z|[-+]\\d\\d?(?::\\d{2})?))?|\\d{4}-\\d{2}-\\d{2}|\\d\\d?:\\d{2}(?::\\d{2}(?:\\.\\d*)?)?`),lookbehind:!0,alias:`number`},boolean:{pattern:o(`false|true`,`i`),lookbehind:!0,alias:`important`},null:{pattern:o(`null|~`,`i`),lookbehind:!0,alias:`important`},string:{pattern:o(a),lookbehind:!0,greedy:!0},number:{pattern:o(`[+-]?(?:0x[\\da-f]+|0o[0-7]+|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?|\\.inf|\\.nan)`,`i`),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml})(e)}Zi.displayName=`diff`,Zi.aliases=[];function Zi(e){(function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":`-`,"deleted-arrow":`<`,"inserted-sign":`+`,"inserted-arrow":`>`,unchanged:` `,diff:`!`};Object.keys(t).forEach(function(n){var r=t[n],i=[];/^\w+$/.test(n)||i.push(/\w+/.exec(n)[0]),n===`diff`&&i.push(`bold`),e.languages.diff[n]={pattern:RegExp(`^(?:[`+r+`].*(?:\r 19?| 20|(?![\\s\\S])))+`,`m`),alias:i,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}}),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})})(e)}Qi.displayName=`markup-templating`,Qi.aliases=[];function Qi(e){e.register(Ki),(function(e){function t(e,t){return`___`+e.toUpperCase()+t+`___`}Object.defineProperties(e.languages[`markup-templating`]={},{buildPlaceholders:{value:function(n,r,i,a){if(n.language===r){var o=n.tokenStack=[];n.code=n.code.replace(i,function(e){if(typeof a==`function`&&!a(e))return e;for(var i=o.length,s;n.code.indexOf(s=t(r,i))!==-1;)++i;return o[i]=e,s}),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language!==r||!n.tokenStack)return;n.grammar=e.languages[r];var i=0,a=Object.keys(n.tokenStack);function o(s){for(var c=0;c<s.length&&!(i>=a.length);c++){var l=s[c];if(typeof l==`string`||l.content&&typeof l.content==`string`){var u=a[i],d=n.tokenStack[u],f=typeof l==`string`?l:l.content,p=t(r,u),m=f.indexOf(p);if(m>-1){++i;var h=f.substring(0,m),g=new e.Token(r,e.tokenize(d,n.grammar),`language-`+r,d),_=f.substring(m+p.length),v=[];h&&v.push.apply(v,o([h])),v.push(g),_&&v.push.apply(v,o([_])),typeof l==`string`?s.splice.apply(s,[c,1].concat(v)):l.content=v}}else l.content&&o(l.content)}return s}o(n.tokens)}}})})(e)}$i.displayName=`gettext`,$i.aliases=[`po`];function $i(e){e.languages.gettext={comment:[{pattern:/# .*/,greedy:!0,alias:`translator-comment`},{pattern:/#\..*/,greedy:!0,alias:`extracted-comment`},{pattern:/#:.*/,greedy:!0,alias:`reference-comment`},{pattern:/#,.*/,greedy:!0,alias:`flag-comment`},{pattern:/#\|.*/,greedy:!0,alias:`previously-untranslated-comment`},{pattern:/#.*/,greedy:!0}],string:{pattern:/(^|[^\\])"(?:[^"\\]|\\.)*"/,lookbehind:!0,greedy:!0},keyword:/^msg(?:ctxt|id|id_plural|str)\b/m,number:/\b\d+\b/,punctuation:/[\[\]]/},e.languages.po=e.languages.gettext}ea.displayName=`json`,ea.aliases=[`webmanifest`];function ea(e){e.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:`keyword`}},e.languages.webmanifest=e.languages.json}ta.displayName=`php`,ta.aliases=[];function ta(e){e.register(Qi),(function(e){var t=/\/\*[\s\S]*?\*\/|\/\/.*|#(?!\[).*/,n=[{pattern:/\b(?:false|true)\b/i,alias:`boolean`},{pattern:/(::\s*)\b[a-z_]\w*\b(?!\s*\()/i,greedy:!0,lookbehind:!0},{pattern:/(\b(?:case|const)\s+)\b[a-z_]\w*(?=\s*[;=])/i,greedy:!0,lookbehind:!0},/\b(?:null)\b/i,/\b[A-Z_][A-Z0-9_]*\b(?!\s*\()/],r=/\b0b[01]+(?:_[01]+)*\b|\b0o[0-7]+(?:_[0-7]+)*\b|\b0x[\da-f]+(?:_[\da-f]+)*\b|(?:\b\d+(?:_\d+)*\.?(?:\d+(?:_\d+)*)?|\B\.\d+)(?:e[+-]?\d+)?/i,i=/<?=>|\?\?=?|\.{3}|\??->|[!=]=?=?|::|\*\*=?|--|\+\+|&&|\|\||<<|>>|[?~]|[/^|%*&<>.+-]=?/,a=/[{}\[\](),:;]/;e.languages.php={delimiter:{pattern:/\?>$|^<\?(?:php(?=\s)|=)?/i,alias:`important`},comment:t,variable:/\$+(?:\w+\b|(?=\{))/,package:{pattern:/(namespace\s+|use\s+(?:function\s+)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,lookbehind:!0,inside:{punctuation:/\\/}},"class-name-definition":{pattern:/(\b(?:class|enum|interface|trait)\s+)\b[a-z_]\w*(?!\\)\b/i,lookbehind:!0,alias:`class-name`},"function-definition":{pattern:/(\bfunction\s+)[a-z_]\w*(?=\s*\()/i,lookbehind:!0,alias:`function`},keyword:[{pattern:/(\(\s*)\b(?:array|bool|boolean|float|int|integer|object|string)\b(?=\s*\))/i,alias:`type-casting`,greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|object|self|static|string)\b(?=\s*\$)/i,alias:`type-hint`,greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|never|object|self|static|string|void)\b/i,alias:`return-type`,greedy:!0,lookbehind:!0},{pattern:/\b(?:array(?!\s*\()|bool|float|int|iterable|mixed|object|string|void)\b/i,alias:`type-declaration`,greedy:!0},{pattern:/(\|\s*)(?:false|null)\b|\b(?:false|null)(?=\s*\|)/i,alias:`type-declaration`,greedy:!0,lookbehind:!0},{pattern:/\b(?:parent|self|static)(?=\s*::)/i,alias:`static-context`,greedy:!0},{pattern:/(\byield\s+)from\b/i,lookbehind:!0},/\bclass\b/i,{pattern:/((?:^|[^\s>:]|(?:^|[^-])>|(?:^|[^:]):)\s*)\b(?:abstract|and|array|as|break|callable|case|catch|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|enum|eval|exit|extends|final|finally|fn|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|match|namespace|never|new|or|parent|print|private|protected|public|readonly|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield|__halt_compiler)\b/i,lookbehind:!0}],"argument-name":{pattern:/([(,]\s*)\b[a-z_]\w*(?=\s*:(?!:))/i,lookbehind:!0},"class-name":[{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self|\s+static))\s+|\bcatch\s*\()\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/(\|\s*)\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/\b[a-z_]\w*(?!\\)\b(?=\s*\|)/i,greedy:!0},{pattern:/(\|\s*)(?:\\?\b[a-z_]\w*)+\b/i,alias:`class-name-fully-qualified`,greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(?:\\?\b[a-z_]\w*)+\b(?=\s*\|)/i,alias:`class-name-fully-qualified`,greedy:!0,inside:{punctuation:/\\/}},{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self\b|\s+static\b))\s+|\bcatch\s*\()(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:`class-name-fully-qualified`,greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*\$)/i,alias:`type-declaration`,greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:[`class-name-fully-qualified`,`type-declaration`],greedy:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*::)/i,alias:`static-context`,greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*::)/i,alias:[`class-name-fully-qualified`,`static-context`],greedy:!0,inside:{punctuation:/\\/}}
vendor: 2,613 bytes, line 20
20,{pattern:/([(,?]\s*)[a-z_]\w*(?=\s*\$)/i,alias:`type-hint`,greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:[`class-name-fully-qualified`,`type-hint`],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b[a-z_]\w*(?!\\)\b/i,alias:`return-type`,greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:[`class-name-fully-qualified`,`return-type`],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:n,function:{pattern:/(^|[^\\\w])\\?[a-z_](?:[\w\\]*\w)?(?=\s*\()/i,lookbehind:!0,inside:{punctuation:/\\/}},property:{pattern:/(->\s*)\w+/,lookbehind:!0},number:r,operator:i,punctuation:a};var o={pattern:/\{\$(?:\{(?:\{[^{}]+\}|[^{}]+)\}|[^{}])+\}|(^|[^\\{])\$+(?:\w+(?:\[[^\r\n\[\]]+\]|->\w+)?)/,lookbehind:!0,inside:e.languages.php},s=[{pattern:/<<<'([^']+)'[\r\n](?:.*[\r\n])*?\1;/,alias:`nowdoc-string`,greedy:!0,inside:{delimiter:{pattern:/^<<<'[^']+'|[a-z_]\w*;$/i,alias:`symbol`,inside:{punctuation:/^<<<'?|[';]$/}}}},{pattern:/<<<(?:"([^"]+)"[\r\n](?:.*[\r\n])*?\1;|([a-z_]\w*)[\r\n](?:.*[\r\n])*?\2;)/i,alias:`heredoc-string`,greedy:!0,inside:{delimiter:{pattern:/^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,alias:`symbol`,inside:{punctuation:/^<<<"?|[";]$/}},interpolation:o}},{pattern:/`(?:\\[\s\S]|[^\\`])*`/,alias:`backtick-quoted-string`,greedy:!0},{pattern:/'(?:\\[\s\S]|[^\\'])*'/,alias:`single-quoted-string`,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,alias:`double-quoted-string`,greedy:!0,inside:{interpolation:o}}];e.languages.insertBefore(`php`,`variable`,{string:s,attribute:{pattern:/#\[(?:[^"'\/#]|\/(?![*/])|\/\/.*$|#(?!\[).*$|\/\*(?:[^*]|\*(?!\/))*\*\/|"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*')+\](?=\s*[a-z$#])/im,greedy:!0,inside:{"attribute-content":{pattern:/^(#\[)[\s\S]+(?=\]$)/,lookbehind:!0,inside:{comment:t,string:s,"attribute-class-name":[{pattern:/([^:]|^)\b[a-z_]\w*(?!\\)\b/i,alias:`class-name`,greedy:!0,lookbehind:!0},{pattern:/([^:]|^)(?:\\?\b[a-z_]\w*)+/i,alias:[`class-name`,`class-name-fully-qualified`],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:n,number:r,operator:i,punctuation:a}},delimiter:{pattern:/^#\[|\]$/,alias:`punctuation`}}}}),e.hooks.add(`before-tokenize`,function(t){/<\?/.test(t.code)&&e.languages[`markup-templating`].buildPlaceholders(t,`php`,/<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#(?!\[))(?:[^?\n\r]|\?(?!>))*(?=$|\?>|[\r\n])|#\[|\/\*(?:[^*]|\*(?!\/))*(?:\*\/|$))*?(?:\?>|$)/g)}),e.hooks.add(`after-tokenize`,function(t){e.languages[`markup-templating`].tokenizePlaceholders(t,`php`)})})(e)}
vendor: 5,578 bytes, line 20
20na.displayName=`typescript`,na.aliases=[`ts`];function na(e){e.register(Ji),(function(e){e.languages.typescript=e.languages.extend(`javascript`,{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript[`literal-property`];var t=e.languages.extend(`typescript`,{});delete t[`class-name`],e.languages.typescript[`class-name`].inside=t,e.languages.insertBefore(`typescript`,`function`,{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:`operator`},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:`class-name`,inside:t}}}}),e.languages.ts=e.languages.typescript})(e)}ra.displayName=`json5`,ra.aliases=[];function ra(e){e.register(ea),(function(e){var t=/("|')(?:\\(?:\r\n?|\n|.)|(?!\1)[^\\\r\n])*\1/;e.languages.json5=e.languages.extend(`json`,{property:[{pattern:RegExp(t.source+`(?=\\s*:)`),greedy:!0},{pattern:/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/,alias:`unquoted`}],string:{pattern:t,greedy:!0},number:/[+-]?\b(?:NaN|Infinity|0x[a-fA-F\d]+)\b|[+-]?(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[eE][+-]?\d+\b)?/})})(e)}ia.displayName=`pug`,ia.aliases=[];function ia(e){e.register(Ji),e.register(Ki),(function(e){e.languages.pug={comment:{pattern:/(^([\t ]*))\/\/.*(?:(?:\r?\n|\r)\2[\t ].+)*/m,lookbehind:!0},"multiline-script":{pattern:/(^([\t ]*)script\b.*\.[\t ]*)(?:(?:\r?\n|\r(?!\n))(?:\2[\t ].+|\s*?(?=\r?\n|\r)))+/m,lookbehind:!0,inside:e.languages.javascript},filter:{pattern:/(^([\t ]*)):.+(?:(?:\r?\n|\r(?!\n))(?:\2[\t ].+|\s*?(?=\r?\n|\r)))+/m,lookbehind:!0,inside:{"filter-name":{pattern:/^:[\w-]+/,alias:`variable`},text:/\S[\s\S]*/}},"multiline-plain-text":{pattern:/(^([\t ]*)[\w\-#.]+\.[\t ]*)(?:(?:\r?\n|\r(?!\n))(?:\2[\t ].+|\s*?(?=\r?\n|\r)))+/m,lookbehind:!0},markup:{pattern:/(^[\t ]*)<.+/m,lookbehind:!0,inside:e.languages.markup},doctype:{pattern:/((?:^|\n)[\t ]*)doctype(?: .+)?/,lookbehind:!0},"flow-control":{pattern:/(^[\t ]*)(?:case|default|each|else|if|unless|when|while)\b(?: .+)?/m,lookbehind:!0,inside:{each:{pattern:/^each .+? in\b/,inside:{keyword:/\b(?:each|in)\b/,punctuation:/,/}},branch:{pattern:/^(?:case|default|else|if|unless|when|while)\b/,alias:`keyword`},rest:e.languages.javascript}},keyword:{pattern:/(^[\t ]*)(?:append|block|extends|include|prepend)\b.+/m,lookbehind:!0},mixin:[{pattern:/(^[\t ]*)mixin .+/m,lookbehind:!0,inside:{keyword:/^mixin/,function:/\w+(?=\s*\(|\s*$)/,punctuation:/[(),.]/}},{pattern:/(^[\t ]*)\+.+/m,lookbehind:!0,inside:{name:{pattern:/^\+\w+/,alias:`function`},rest:e.languages.javascript}}],script:{pattern:/(^[\t ]*script(?:(?:&[^(]+)?\([^)]+\))*[\t ]).+/m,lookbehind:!0,inside:e.languages.javascript},"plain-text":{pattern:/(^[\t ]*(?!-)[\w\-#.]*[\w\-](?:(?:&[^(]+)?\([^)]+\))*\/?[\t ]).+/m,lookbehind:!0},tag:{pattern:/(^[\t ]*)(?!-)[\w\-#.]*[\w\-](?:(?:&[^(]+)?\([^)]+\))*\/?:?/m,lookbehind:!0,inside:{attributes:[{pattern:/&[^(]+\([^)]+\)/,inside:e.languages.javascript},{pattern:/\([^)]+\)/,inside:{"attr-value":{pattern:/(=\s*(?!\s))(?:\{[^}]*\}|[^,)\r\n]+)/,lookbehind:!0,inside:e.languages.javascript},"attr-name":/[\w-]+(?=\s*!?=|\s*[,)])/,punctuation:/[!=(),]+/}}],punctuation:/:/,"attr-id":/#[\w\-]+/,"attr-class":/\.[\w\-]+/}},code:[{pattern:/(^[\t ]*(?:-|!?=)).+/m,lookbehind:!0,inside:e.languages.javascript}],punctuation:/[.\-!=|]+/};for(var t=`(^([\\t ]*)):<filter_name>(?:(?:\\r?\\n|\\r(?!\\n))(?:\\2[\\t ].+|\\s*?(?=\\r?\\n|\\r)))+`,n=[{filter:`atpl`,language:`twig`},{filter:`coffee`,language:`coffeescript`},`ejs`,`handlebars`,`less`,`livescript`,`markdown`,{filter:`sass`,language:`scss`},`stylus`],r={},i=0,a=n.length;i<a;i++){var o=n[i];o=typeof o==`string`?{filter:o,language:o}:o,e.languages[o.language]&&(r[`filter-`+o.filter]={pattern:RegExp(t.replace(`<filter_name>`,function(){return o.filter}),`m`),lookbehind:!0,inside:{"filter-name":{pattern:/^:[\w-]+/,alias:`variable`},text:{pattern:/\S[\s\S]*/,alias:[o.language,`language-`+o.language],inside:e.languages[o.language]}}})}e.languages.insertBefore(`pug`,`filter`,r)})(e)}aa.displayName=`jsx`,aa.aliases=[];function aa(e){e.register(Ji),e.register(Ki),(function(e){var t=e.util.clone(e.languages.javascript),n=`(?:\\s|\\/\\/.*(?!.)|\\/\\*(?:[^*]|\\*(?!\\/))\\*\\/)`,r=`(?:\\{(?:\\{(?:\\{[^{}]*\\}|[^{}])*\\}|[^{}])*\\})`,i=`(?:\\{<S>*\\.{3}(?:[^{}]|<BRACES>)*\\})`;function a(e,t){return e=e.replace(/<S>/g,function(){return n}).replace(/<BRACES>/g,function(){return r}).replace(/<SPREAD>/g,function(){return i}),RegExp(e,t)}i=a(i).source,e.languages.jsx=e.languages.extend(`markup`,t),e.languages.jsx.tag.pattern=a(`<\\/?(?:[\\w.:-]+(?:<S>+(?:[\\w.:$-]+(?:=(?:"(?:\\\\[\\s\\S]|[^\\\\"])*"|'(?:\\\\[\\s\\S]|[^\\\\'])*'|[^\\s{'"/>=]+|<BRACES>))?|<SPREAD>))*<S>*\\/?)?>`),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside[`attr-value`].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])
20*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside[`class-name`]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore(`inside`,`attr-name`,{spread:{pattern:a(`<SPREAD>`),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore(`inside`,`special-attr`,{script:{pattern:a(`=<BRACES>`),alias:`language-javascript`,inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:`punctuation`},rest:e.languages.jsx}}},e.languages.jsx.tag);var o=function(e){return e?typeof e==`string`?e:typeof e.content==`string`?e.content:e.content.map(o).join(``):``},s=function(t){for(var n=[],r=0;r<t.length;r++){var i=t[r],a=!1;if(typeof i!=`string`&&(i.type===`tag`&&i.content[0]&&i.content[0].type===`tag`?i.content[0].content[0].content===`</`?n.length>0&&n[n.length-1].tagName===o(i.content[0].content[1])&&n.pop():i.content[i.content.length-1].content===`/>`||n.push({tagName:o(i.content[0].content[1]),openedBraces:0}):n.length>0&&i.type===`punctuation`&&i.content===`{`?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&i.type===`punctuation`&&i.content===`}`?n[n.length-1].openedBraces--:a=!0),(a||typeof i==`string`)&&n.length>0&&n[n.length-1].openedBraces===0){var c=o(i);r<t.length-1&&(typeof t[r+1]==`string`||t[r+1].type===`plain-text`)&&(c+=o(t[r+1]),t.splice(r+1,1)),r>0&&(typeof t[r-1]==`string`||t[r-1].type===`plain-text`)&&(c=o(t[r-1])+c,t.splice(r-1,1),r--),t[r]=new e.Token(`plain-text`,c,null,c)}i.content&&typeof i.content!=`string`&&s(i.content)}};e.hooks.add(`after-tokenize`,function(e){(e.language===`jsx`||e.language===`tsx`)&&s(e.tokens)})})(e)}oa.displayName=`tsx`,oa.aliases=[];function oa(e){e.register(aa),e.register(na),(function(e){var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend(`jsx`,t),delete e.languages.tsx.parameter,delete e.languages.tsx[`literal-property`];var n=e.languages.tsx.tag;n.pattern=RegExp(`(^|[^\\w$]|(?=<\\/))(?:`+n.pattern.source+`)`,n.pattern.flags),n.lookbehind=!0})(e)}sa.displayName=`swift`,sa.aliases=[];function sa(e){e.languages.swift={comment:{pattern:/(^|[^\\:])(?:\/\/.*|\/\*(?:[^/*]|\/(?!\*)|\*(?!\/)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\*\/)/,lookbehind:!0,greedy:!0},"string-literal":[{pattern:RegExp(`(^|[^"#])(?:"(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|\\r\\n|[^(])|[^\\\\\\r\\n"])*"|"""(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|[^(])|[^\\\\"]|"(?!""))*""")(?!["#])`),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\\($/,alias:`punctuation`},punctuation:/\\(?=[\r\n])/,string:/[\s\S]+/}},{pattern:RegExp(`(^|[^"#])(#+)(?:"(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|\\r\\n|[^#])|[^\\\\\\r\\n])*?"|"""(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|[^#])|[^\\\\])*?""")\\2`),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\#+\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\#+\($/,alias:`punctuation`},string:/[\s\S]+/}}],directive:{pattern:RegExp(`#(?:(?:elseif|if)\\b(?:[ ]*(?:![ \\t]*)?(?:\\b\\w+\\b(?:[ \\t]*\\((?:[^()]|\\([^()]*\\))*\\))?|\\((?:[^()]|\\([^()]*\\))*\\))(?:[ \\t]*(?:&&|\\|\\|))?)+|(?:else|endif)\\b)`),alias:`property`,inside:{"directive-name":/^#\w+/,boolean:/\b(?:false|true)\b/,number:/\b\d+(?:\.\d+)*\b/,operator:/!|&&|\|\||[<>]=?/,punctuation:/[(),]/}},literal:{pattern:/#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\b/,alias:`constant`},"other-directive":{pattern:/#\w+\b/,alias:`property`},attribute:{pattern:/@\w+/,alias:`atrule`},"function-definition":{pattern:/(\bfunc\s+)\w+/,lookbehind:!0,alias:`function`},label:{pattern:/\b(break|continue)\s+\w+|\b[a-zA-Z_]\w*(?=\s*:\s*(?:for|repeat|while)\b)/,lookbehind:!0,alias:`important`},keyword:/\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|isolated|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\b/,boolean:/\b(?:false|true)\b/,nil:{pattern:/\bnil\b/,alias:`constant`},"short-argument":/\$\d+\b/,omit:{pattern:/\b_\b/,alias:`keyword`},number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,"class-name":/\b[A-Z](?:[A-Z_\d]*[a-z]\w*)?\b/,function:/\b[a-z_]\w*(?=\s*\()/i,constant:/\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,operator:/[-+*/%=!<>&|^~?]+|\.[.\-+*/%=!<>&|^~?]+/,punctuation:/[{}[\]();,.:\\]/},e.languages.swift[`string-literal`].forEach(function(t){t.inside.interpolation.inside=e.languages.swift})}var ca={'pre[class*="language-"]':{color:`#d4d4d4`,fontSize:`13px`,textShadow:`none`,fontFamily:`Menlo, Monaco, Consolas, "Andale Mono", "Ubuntu Mono", "Courier New", monospace`,direction:`ltr`,textAlign:`left`,whiteSpace:`pre`,wordSpacing:`normal`,wordBreak:`
20normal`,lineHeight:`1.5`,MozTabSize:`4`,OTabSize:`4`,tabSize:`4`,WebkitHyphens:`none`,MozHyphens:`none`,msHyphens:`none`,hyphens:`none`,padding:`1em`,margin:`.5em 0`,overflow:`auto`,background:`#1e1e1e`},'code[class*="language-"]':{color:`#d4d4d4`,fontSize:`13px`,textShadow:`none`,fontFamily:`Menlo, Monaco, Consolas, "Andale Mono", "Ubuntu Mono", "Courier New", monospace`,direction:`ltr`,textAlign:`left`,whiteSpace:`pre`,wordSpacing:`normal`,wordBreak:`normal`,lineHeight:`1.5`,MozTabSize:`4`,OTabSize:`4`,tabSize:`4`,WebkitHyphens:`none`,MozHyphens:`none`,msHyphens:`none`,hyphens:`none`},'pre[class*="language-"]::selection':{textShadow:`none`,background:`#264F78`},'code[class*="language-"]::selection':{textShadow:`none`,background:`#264F78`},'pre[class*="language-"] *::selection':{textShadow:`none`,background:`#264F78`},'code[class*="language-"] *::selection':{textShadow:`none`,background:`#264F78`},':not(pre) > code[class*="language-"]':{padding:`.1em .3em`,borderRadius:`.3em`,color:`#db4c69`,background:`#1e1e1e`},".namespace":{Opacity:`.7`},"doctype.doctype-tag":{color:`#569CD6`},"doctype.name":{color:`#9cdcfe`},comment:{color:`#6a9955`},prolog:{color:`#6a9955`},punctuation:{color:`#d4d4d4`},".language-html .language-css .token.punctuation":{color:`#d4d4d4`},".language-html .language-javascript .token.punctuation":{color:`#d4d4d4`},property:{color:`#9cdcfe`},tag:{color:`#569cd6`},boolean:{color:`#569cd6`},number:{color:`#b5cea8`},constant:{color:`#9cdcfe`},symbol:{color:`#b5cea8`},inserted:{color:`#b5cea8`},unit:{color:`#b5cea8`},selector:{color:`#d7ba7d`},"attr-name":{color:`#9cdcfe`},string:{color:`#ce9178`},char:{color:`#ce9178`},builtin:{color:`#ce9178`},deleted:{color:`#ce9178`},".language-css .token.string.url":{textDecoration:`underline`},operator:{color:`#d4d4d4`},entity:{color:`#569cd6`},"operator.arrow":{color:`#569CD6`},atrule:{color:`#ce9178`},"atrule.rule":{color:`#c586c0`},"atrule.url":{color:`#9cdcfe`},"atrule.url.function":{color:`#dcdcaa`},"atrule.url.punctuation":{color:`#d4d4d4`},keyword:{color:`#569CD6`},"keyword.module":{color:`#c586c0`},"keyword.control-flow":{color:`#c586c0`},function:{color:`#dcdcaa`},"function.maybe-class-name":{color:`#dcdcaa`},regex:{color:`#d16969`},important:{color:`#569cd6`},italic:{fontStyle:`italic`},"class-name":{color:`#4ec9b0`},"maybe-class-name":{color:`#4ec9b0`},console:{color:`#9cdcfe`},parameter:{color:`#9cdcfe`},interpolation:{color:`#9cdcfe`},"punctuation.interpolation-punctuation":{color:`#569cd6`},variable:{color:`#9cdcfe`},"imports.maybe-class-name":{color:`#9cdcfe`},"exports.maybe-class-name":{color:`#9cdcfe`},escape:{color:`#d7ba7d`},"tag.punctuation":{color:`#808080`},cdata:{color:`#808080`},"attr-value":{color:`#ce9178`},"attr-value.punctuation":{color:`#ce9178`},"attr-value.punctuation.attr-equals":{color:`#d4d4d4`},namespace:{color:`#4ec9b0`},'pre[class*="language-javascript"]':{color:`#9cdcfe`},'code[class*="language-javascript"]':{color:`#9cdcfe`},'pre[class*="language-jsx"]':{color:`#9cdcfe`},'code[class*="language-jsx"]':{color:`#9cdcfe`},'pre[class*="language-typescript"]':{color:`#9cdcfe`},'code[class*="language-typescript"]':{color:`#9cdcfe`},'pre[class*="language-tsx"]':{color:`#9cdcfe`},'code[class*="language-tsx"]':{color:`#9cdcfe`},'pre[class*="language-css"]':{color:`#ce9178`},'code[class*="language-css"]':{color:`#ce9178`},'pre[class*="language-html"]':{color:`#d4d4d4`},'code[class*="language-html"]':{color:`#d4d4d4`},".language-regex .token.anchor":{color:`#dcdcaa`},".language-html .token.punctuation":{color:`#808080`},'pre[class*="language-"] > code[class*="language-"]':{position:`relative`,zIndex:`1`},".line-highlight.line-highlight":{background:`#f7ebc6`,boxShadow:`inset 5px 0 0 #f7d87c`,zIndex:`0`}},la=Ki,ua=Ji,da=aa,N=na,fa=oa,pa=ea,ma=ra,ha=Yi,ga=Xi,_a=Zi,va=ia,ya=ta,ba=sa,xa=$i,P=s();Object.entries({markup:la,javascript:ua,jsx:da,typescript:N,tsx:fa,json:pa,json5:ma,bash:ha,yaml:ga,diff:_a,pug:va,php:ya,swift:ba,gettext:xa}).forEach(([e,t])=>Gi.registerLanguage(e,t));function Sa({code:e=``,children:t,filename:n,showCopy:r=!0,lang:i=`javascript`}){let[a,o]=(0,y.useState)(!1);t&&typeof t!=`string`&&t.props&&(t=t.props.children),typeof t==`string`&&(t=t.trim()),typeof t==`string`&&!e&&(e=t);let s=async e=>{try{await navigator.clipboard.writeText(e),o(!0),setTimeout(()=>
20o(!1),2e3)}catch(e){console.error(`Failed to copy code:`,e)}};return(0,P.jsxs)(`div`,{className:`code-block`,children:[!!n&&(0,P.jsx)(`div`,{className:`code-header-info`,children:n}),r&&(0,P.jsx)(`button`,{type:`button`,className:`code-copy-button`,onClick:t=>{t.stopPropagation(),s(e)},title:`Copy code`,children:a?`Copied!`:`Copy`}),(0,P.jsx)(Gi,{language:i,style:ca,children:e})]})}var Ca=class extends y.Component{constructor(e){super(e),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}render(){return this.state.hasError?(0,P.jsxs)(`div`,{className:`max-w-3xl mx-auto px-4 py-10`,children:[(0,P.jsx)(`h1`,{children:`Something went wrong`}),(0,P.jsx)(`p`,{className:`text-base-content/70`,children:`An unexpected error occurred.`}),(0,P.jsx)(`div`,{className:`mt-6`,children:(0,P.jsx)(`a`,{className:`brand-btn btn-md no-underline`,href:`/`,children:`Back to home`})})]}):this.props.children}},wa=e(a(((e,t)=>{(function(){var e={}.hasOwnProperty;function n(){for(var e=``,t=0;t<arguments.length;t++){var n=arguments[t];n&&(e=i(e,r(n)))}return e}function r(t){if(typeof t==`string`||typeof t==`number`)return t;if(typeof t!=`object`)return``;if(Array.isArray(t))return n.apply(null,t);if(t.toString!==Object.prototype.toString&&!t.toString.toString().includes(`[native code]`))return t.toString();var r=``;for(var a in t)e.call(t,a)&&t[a]&&(r=i(r,a));return r}function i(e,t){return t?e?e+` `+t:e+t:e}t!==void 0&&t.exports?(n.default=n,t.exports=n):typeof define==`function`&&typeof define.amd==`object`&&define.amd?define(`classnames`,[],function(){return n}):window.classNames=n})()}))(),1);function Ta({name:e,style:t,fontSize:n=`24px`,title:r,onClick:i}){let a=(0,wa.default)({"material-icons":!0,clickable:!!i});return(0,P.jsx)(`i`,{className:a,style:{...t,fontSize:n},title:r,onClick:i,children:e})}function Ea({href:e,children:t,className:n,activeClassName:r,inactiveClassName:i,...a}){let{urlPathname:o}=ee(),s=e===`/`?o===e:o.startsWith(e),c=[n,s?r:i,s&&!r?`is-active`:void 0].filter(Boolean).join(` `);return(0,P.jsx)(`a`,{href:e,className:c||void 0,...a,children:t})}function Da({src:e,alt:t,className:n,width:r,height:i}){let[a,o]=(0,y.useState)(!1),s=(0,y.useRef)(null),c=(0,y.useRef)(null),l=()=>o(!0),u=()=>{o(!1),s.current?.focus()},d=e=>{e.target===e.currentTarget&&u()},f=e=>{e.key===`Escape`&&u()};return(0,y.useEffect)(()=>(a?(document.addEventListener(`keydown`,f),document.body.style.overflow=`hidden`,document.body.style.paddingRight=`15px`,c.current?.focus()):(document.removeEventListener(`keydown`,f),document.body.style.overflow=``,document.body.style.paddingRight=``),()=>{document.removeEventListener(`keydown`,f),document.body.style.overflow=``,document.body.style.paddingRight=``}),[a]),(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(`img`,{ref:s,src:e,alt:t,width:r,height:i,className:`${n} screenshot-clickable`,onClick:l,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),l())},tabIndex:0,role:`button`,"aria-label":`View larger: ${t||`screenshot`}`,title:`Click to view larger`}),a&&typeof document<`u`&&(0,yn.createPortal)((0,P.jsx)(`div`,{className:`image-modal-overlay`,onClick:d,role:`dialog`,"aria-modal":`true`,"aria-label":`Screenshot preview`,children:(0,P.jsxs)(`div`,{className:`image-modal-container`,children:[(0,P.jsx)(`button`,{ref:c,className:`form-button image-modal-close`,onClick:u,"aria-label":`Close modal`,children:`â`}),(0,P.jsx)(`img`,{src:e,alt:t,className:`image-modal-image`}),!!t&&(0,P.jsx)(`div`,{className:`image-modal-caption`,children:t})]})}),document.body)]})}var Oa=t({acceptCategory:()=>Qo,acceptService:()=>es,acceptedCategory:()=>$o,acceptedService:()=>ts,eraseCookies:()=>rs,getConfig:()=>ms,getCookie:()=>ps,getUserPreferences:()=>us,hide:()=>as,hidePreferences:()=>ss,loadScript:()=>ds,reset:()=>_s,run:()=>gs,setCookieData:()=>fs,setLanguage:()=>ls,show:()=>is,showPreferences:()=>os,validConsent:()=>hs,validCookie:()=>ns}),ka=`opt-in`,Aa=`opt-out`,ja=`show--consent`,Ma=`show--preferences`,Na=`disable--interaction`,Pa=`data-category`,F=`div`,Fa=`button`,I=`aria-hidden`,Ia=`btn-group`,La=`click`,Ra=`data-role`,za=`consentModal`,Ba=`preferencesModal`,Va=class{constructor(){this.t={mode:ka,revision:0,autoShow:!0,lazyHtmlGeneration:!0,autoClearCookies:!0,manageScriptTags:!0,hideFromBots:!0,cookie
vendor: 14,079 bytes, line 20
20:{name:`cc_cookie`,expiresAfterDays:182,domain:``,path:`/`,secure:!0,sameSite:`Lax`}},this.o={i:{},l:``,_:{},u:{},p:{},m:[],v:!1,h:null,C:null,S:null,M:``,D:!0,T:!1,k:!1,A:!1,N:!1,H:[],V:!1,I:!0,L:[],j:!1,F:``,P:!1,O:[],R:[],B:[],$:[],G:!1,J:!1,U:!1,q:[],K:[],W:[],X:{},Y:{},Z:{},ee:{},te:{},oe:[]},this.ne={ae:{},se:{}},this.ce={},this.re={ie:`cc:onFirstConsent`,le:`cc:onConsent`,de:`cc:onChange`,fe:`cc:onModalShow`,_e:`cc:onModalHide`,ue:`cc:onModalReady`}}},L=new Va,Ha=(e,t)=>e.indexOf(t),R=(e,t)=>Ha(e,t)!==-1,Ua=e=>Array.isArray(e),Wa=e=>typeof e==`string`,Ga=e=>!!e&&typeof e==`object`&&!Ua(e),Ka=e=>typeof e==`function`,qa=e=>Object.keys(e),Ja=e=>Array.from(new Set(e)),Ya=()=>document.activeElement,Xa=e=>e.preventDefault(),Za=(e,t)=>e.querySelectorAll(t),Qa=e=>e.dispatchEvent(new Event(`change`)),z=e=>{let t=document.createElement(e);return e===Fa&&(t.type=e),t},B=(e,t,n)=>e.setAttribute(t,n),$a=(e,t,n)=>{e.removeAttribute(n?`data-`+t:t)},eo=(e,t,n)=>e.getAttribute(n?`data-`+t:t),V=(e,t)=>e.appendChild(t),H=(e,t)=>e.classList.add(t),to=(e,t)=>H(e,`cm__`+t),U=(e,t)=>H(e,`pm__`+t),no=(e,t)=>e.classList.remove(t),ro=e=>{if(typeof e!=`object`)return e;if(e instanceof Date)return new Date(e.getTime());let t=Array.isArray(e)?[]:{};for(let n in e){let r=e[n];t[n]=ro(r)}return t},io=()=>{let e={},{O:t,X:n,Y:r}=L.o;for(let i of t)e[i]=co(r[i],qa(n[i]));return e},ao=(e,t)=>dispatchEvent(new CustomEvent(e,{detail:t})),oo=(e,t,n,r)=>{e.addEventListener(t,n),r&&L.o.m.push({pe:e,ge:t,me:n})},so=()=>{let e=L.t.cookie.expiresAfterDays;return Ka(e)?e(L.o.F):e},co=(e,t)=>{let n=e||[],r=t||[];return n.filter((e=>!R(r,e))).concat(r.filter((e=>!R(n,e))))},lo=e=>{L.o.R=Ja(e),L.o.F=(()=>{let e=`custom`,{R:t,O:n,B:r}=L.o,i=t.length;return i===n.length?e=`all`:i===r.length&&(e=`necessary`),e})()},uo=(e,t,n,r)=>{let i=`accept-`,{show:a,showPreferences:o,hide:s,hidePreferences:c,acceptCategory:l}=t,u=e||document,d=e=>Za(u,`[data-cc="${e}"]`),f=(e,t)=>{Xa(e),l(t),c(),s()},p=d(`show-preferencesModal`),m=d(`show-consentModal`),h=d(i+`all`),g=d(i+`necessary`),_=d(i+`custom`),v=L.t.lazyHtmlGeneration;for(let e of p)B(e,`aria-haspopup`,`dialog`),oo(e,La,(e=>{Xa(e),o()})),v&&(oo(e,`mouseenter`,(e=>{Xa(e),L.o.N||n(t,r)}),!0),oo(e,`focus`,(()=>{L.o.N||n(t,r)})));for(let e of m)B(e,`aria-haspopup`,`dialog`),oo(e,La,(e=>{Xa(e),a(!0)}),!0);for(let e of h)oo(e,La,(e=>{f(e,`all`)}),!0);for(let e of _)oo(e,La,(e=>{f(e)}),!0);for(let e of g)oo(e,La,(e=>{f(e,[])}),!0)},fo=(e,t)=>{e&&(t&&(e.tabIndex=-1),e.focus(),t&&e.removeAttribute(`tabindex`))},po=(e,t)=>{let n=r=>{r.target.removeEventListener(`transitionend`,n),r.propertyName===`opacity`&&getComputedStyle(e).opacity===`1`&&fo((e=>e===1?L.ne.be:L.ne.ve)(t))};oo(e,`transitionend`,n)},mo,ho=e=>{clearTimeout(mo),e?H(L.ne.ye,Na):mo=setTimeout((()=>{no(L.ne.ye,Na)}),500)},go=[`M 19.5 4.5 L 4.5 19.5 M 4.5 4.501 L 19.5 19.5`,`M 3.572 13.406 L 8.281 18.115 L 20.428 5.885`,`M 21.999 6.94 L 11.639 17.18 L 2.001 6.82 `],_o=(e=0,t=1.5)=>`<svg viewBox="0 0 24 24" stroke-width="${t}"><path d="${go[e]}"/></svg>`,vo=e=>{let t=L.ne,n=L.o;(e=>{let r=e===t.he;oo(n.i.disablePageInteraction?t.ye:r?t.Ce:t.ye,`keydown`,(t=>{if(t.key!==`Tab`||!(r?n.k&&!n.A:n.A))return;let i=Ya(),a=r?n.q:n.K;a.length!==0&&(t.shiftKey?i!==a[0]&&e.contains(i)||(Xa(t),fo(a[1])):i!==a[1]&&e.contains(i)||(Xa(t),fo(a[0])))}),!0)})(e)},yo=[`[href]`,Fa,`input`,`details`,`[tabindex]`].map((e=>e+`:not([tabindex="-1"])`)).join(`,`),bo=e=>{let{o:t,ne:n}=L,r=(e,t)=>{let n=Za(e,yo);t[0]=n[0],t[1]=n[n.length-1]};e===1&&t.T&&r(n.he,t.q),e===2&&t.N&&r(n.we,t.K)},xo=(e,t,n)=>{let{de:r,le:i,ie:a,_e:o,ue:s,fe:c}=L.ce,l=L.re;if(t){let r={modalName:t};return e===l.fe?Ka(c)&&c(r):e===l._e?Ka(o)&&o(r):(r.modal=n,Ka(s)&&s(r)),ao(e,r)}let u={cookie:L.o.p};e===l.ie?Ka(a)&&a(ro(u)):e===l.le?Ka(i)&&i(ro(u)):(u.changedCategories=L.o.L,u.changedServices=L.o.ee,Ka(r)&&r(ro(u))),ao(e,ro(u))},So=(e,t)=>{try{return e()}catch(e){return!t&&console.warn(`CookieConsent:`,e),!1}},Co=e=>{let{Y:t,ee:n,O:r,X:i,oe:a,p:o,L:s}=L.o;for(let e of r){let r=n[e]||t[e]||[];for(let n of r){let r=i[e][n];if(!r)continue;let{onAccept:a,onReject:o}=r;!r.Se&&R(t[e],n)?(r.Se=!0,Ka(a)&&a()):r.Se&&!R(t[e],n)&&(r.Se=!1,Ka(o)&&o())}}if(!L.t.manageScriptTags)return;let c=a,l=e||o.categories||[],u=(e,r)=>{if(r>=e.length)return;let i=a[r];if(i.xe)return u(e,r+1);let o=i.Me,c=i.De,d=i.Te,f=R(l,c),p=!!d&&R(t[c],d);if(!d&&!i.ke&&f||!d&&i.ke&&!f&&R(s,c)||d&&!i.ke&&p||d&&i.ke&&!p&&R(n[c]||[],d)){i.xe=!0;let t=eo(o,`type`,!0);$a(o,`type`,!!t),$a(o,Pa);let n=eo(o,`src`,!0);n&&$a(o,`src`,!0);let a=z(`script`);a.textContent=o.innerHTML;for(let{nodeName:e}of o.attributes)B(a,e,o[e]||eo(o,e));t&&(a.type=t),n?a.src=n:n=o.src;let s=!!n&&(!t||[`text/javascript`,`module`].includes(t));if(s&&(a.onload=a.onerror=()=>{u(e,++r)}),o.replaceWith(a),s)return}u(e,++r)};u(c,0)},wo=`bottom`,To=`left`,Eo=`center`,Do=`right`,Oo=`inline`,ko=`wide`,Ao=`pm--`,jo=[`middle`,`top`,wo],Mo=[To,Eo,Do],No={box:{Ee:[ko,Oo],Ae:jo,Ne:Mo,He:wo,Ve:Do},cloud:{Ee:[Oo],Ae:jo,Ne:Mo,He:wo,Ve:Eo},bar:{Ee:[Oo],Ae:jo.slice(1),Ne:[],He:wo,Ve:``}},Po={box:{Ee:[],Ae:[],Ne:[],He:``,Ve:``},bar:{Ee:[ko],Ae:[],Ne:[To,Do],He:``,Ve:To}},Fo=e=>{let t=L.o.i.guiOptions,n=t&&t.consentModal,r=t&&t.preferencesModal;e===0&&Io(L.ne.he,No,n,`cm--`,`box`,`cm`),e===1&&Io(L.ne.we,Po,r,Ao,`box`,`pm`)},Io=(e,t,n,r,i,a)=>{e.className=a;let o=n&&n.layout,s=n&&n.position,c=n&&n.flipButtons,l=!n||!1!==n.equalWeightButtons,u=o&&o.split(` `)||[],d=u[0],f=u[1],p=d in t?d:i,m=t[p],h=R(m.Ee,f)&&f,g=s&&s.split(` `)||[],_=g[0],v=r===Ao?g[0]:g[1],y=R(m.Ae,_)?_:m.He,b=R(m.Ne,v)?v:m.Ve,x=t=>{t&&H(e,r+t)};x(p),x(h),x(y),x(b),c&&x(`flip`);let S=a+`__btn--secondary`;if(a===`cm`){let{Ie:e,Le:t}=L.ne;e&&(l?no(e,S):H(e,S)),t&&(l?no(t,S):H(t,S))}else{let{je:e}=L.ne;e&&(l?no(e,S):H(e,S))}},Lo=(e,t)=>{let n=L.o,r=L.ne,{hide:i,hidePreferences:a,acceptCategory:o}=e,s=e=>{o(e),a(),i()},c=n.u&&n.u.preferencesModal;if(!c)return;let l=c.title,u=c.closeIconLabel,d=c.acceptAllBtn,f=c.acceptNecessaryBtn,p=c.savePreferencesBtn,m=c.sections||[],h=d||f||p;if(r.Fe)r.Pe=z(F),U(r.Pe,`body`);else{r.Fe=z(F),H(r.Fe,`pm-wrapper`);let e=z(`div`);H(e,`pm-overlay`),V(r.Fe,e),oo(e,La,a),r.we=z(F),H(r.we,`pm`),B(r.we,`role`,`dialog`),B(r.we,I,!0),B(r.we,`aria-modal`,!0),B(r.we,`aria-labelledby`,`pm__title`),oo(r.ye,`keydown`,(e=>{e.keyCode===27&&a()}),!0),r.Oe=z(F),U(r.Oe,`header`),r.Re=z(`h2`),U(r.Re,`title`),r.Re.id=`pm__title`,r.Be=z(Fa),U(r.Be,`close-btn`),B(r.Be,`aria-label`,c.closeIconLabel||``),oo(r.Be,La,a),r.$e=z(`span`),r.$e.innerHTML=_o(),V(r.Be,r.$e),r.Ge=z(F),U(r.Ge,`body`),r.Je=z(F),U(r.Je,`footer`),H(z(F),`btns`);var g=z(F),_=z(F);U(g,Ia),U(_,Ia),V(r.Je,g),V(r.Je,_),V(r.Oe,r.Re),V(r.Oe,r.Be),r.ve=z(F),B(r.ve,`tabIndex`,-1),V(r.we,r.ve),V(r.we,r.Oe),V(r.we,r.Ge),h&&V(r.we,r.Je),V(r.Fe,r.we)}let v;l&&(r.Re.innerHTML=l,u&&B(r.Be,`aria-label`,u)),m.forEach(((e,t)=>{let i=e.title,a=e.description,o=e.linkedCategory,s=o&&n.P[o],l=e.cookieTable,u=l&&l.body,d=l&&l.caption,f=u&&u.length>0,p=!!s,m=p&&n.X[o],h=Ga(m)&&qa(m)||[],g=p&&(!!a||!!f||qa(m).length>0);var _=z(F);if(U(_,`section`),g||a){var y=z(F);U(y,`section-desc-wrapper`)}let b=h.length;if(g&&b>0){let e=z(F);U(e,`section-services`);for(let t of h){let n=m[t],r=n&&n.label||t,i=z(F),a=z(F),c=z(F),l=z(F);U(i,`service`),U(l,`service-title`),U(a,`service-header`),U(c,`service-icon`);let u=Ro(r,t,s,!0,o);l.innerHTML=r,V(a,c),V(a,l),V(i,a),V(i,u),V(e,i)}V(y,e)}if(i){var x=z(F),S=z(p?Fa:F);if(U(x,`section-title-wrapper`),U(S,`section-title`),S.innerHTML=i,V(x,S),p){let e=z(`span`);e.innerHTML=_o(2,3.5),U(e,`section-arrow`),V(x,e),_.className+=`--toggle`;let t=Ro(i,o,s),n=c.serviceCounterLabel;if(b>0&&Wa(n)){let e=z(`span`);U(e,`badge`),U(e,`service-counter`),B(e,I,!0),B(e,`data-servicecounter`,b),n&&(n=n.split(`|`),n=n.length>1&&b>1?n[1]:n[0],B(e,`data-counterlabel`,n)),e.innerHTML=b+(n?` `+n:``),V(S,e)}if(g){U(_,`section--expandable`);var C=o+`-desc`;B(S,`aria-expanded`,!1),B(S,`aria-controls`,C)}V(x,t)}else B(S,`role`,`heading`),B(S,`aria-level`,`3`);V(_,x)}if(a){var ee=z(`p`);U(ee,`section-desc`),ee.innerHTML=a,V(y,ee)}if(g&&(B(y,I,`true`),y.id=C,((e,t,n)=>{oo(S,La,(()=>{t.classList.contains(`is-expanded`)?(no(t,`is-expanded`),B(n,`aria-expanded`,`false`),B(e,I,`true`)):(H(t,`is-expanded`),B(n,`aria-expanded`,`true`),B(e,I,`false`))}))})(y,_,S),f)){let e=z(`table`),n=z(`thead`),i=z(`tbody`);if(d){let t=z(`caption`);U(t,`table-caption`),t.innerHTML=d,e.appendChild(t)}U(e,`section-table`),U(n,`table-head`),U(i,`table-body`);let a=l.headers,o=qa(a),s=r.Ue.createDocumentFragment(),c=z(`tr`);for(let e of o){let n=a[e],r=z(`th`);r.id=`cc__row-`+n+t,B(r,`scope`,`col`),U(r,`table-th`),r.innerHTML=n,V(s,r)}V(c,s),V(n,c);let f=r.Ue.createDocumentFragment();for(let e of u){let n=z(`tr`);U(n,`table-tr`);for(let r of o){let i=a[r],o=e[r],s=z(`td`),c=z(F);U(s,`table-td`),B(s,`data-column`,i),B(s,`headers`,`cc__row-`+i+t),c.insertAdjacentHTML(`beforeend`,o),V(s,c),V(n,s)}V(f,n)}V(i,f),V(e,n),V(e,i),V(y,e)}(g||a)&&V(_,y);let w=r.Pe||r.Ge;p?(v||(v=z(F),U(v,`section-toggles`)),v.appendChild(_)):v=null,V(w,v||_)})),d&&(r.ze||(r.ze=z(Fa),U(r.ze,`btn`),B(r.ze,Ra,`all`),V(g,r.ze),oo(r.ze,La,(()=>s(`all`)))),r.ze.innerHTML=d),f&&(r.je||(r.je=z(Fa),U(r.je,`btn`),B(r.je,Ra,`necessary`),V(g,r.je),oo(r.je,La,(()=>s([])))),r.je.innerHTML=f),p&&(r.qe||(r.qe=z(Fa),U(r.qe,`btn`),U(r.qe,`btn--secondary`),B(r.qe,Ra,`save`),V(_,r.qe),oo(r.qe,La,(()=>s()))),r.qe.innerHTML=p),r.Pe&&(r.we.replaceChild(r.Pe,r.Ge),r.Ge=r.Pe),Fo(1),n.N||(n.N=!0,xo(L.re.ue,Ba,r.we),t(e),V(r.Ce,r.Fe),vo(r.we),setTimeout((()=>H(r.Fe,`cc--anim`)),100)),bo(2)};function Ro(e,t,n,r,i){let a=L.o,o=L.ne,s=z(`label`),c=z(`input`),l=z(`span`),u=z(`span`),d=z(`span`),f=z(`span`),p=z(`span`);if(f.innerHTML=_o(1,3),p.innerHTML=_o(0,3),c.type=`checkbox`,H(s,`section__toggle-wrapper`),H(c,`section__toggle`),H(f,`toggle__icon-on`),H(p,`toggle__icon-off`),H(l,`toggle__icon`),H(u,`toggle__icon-circle`),H(d,`toggle__label`),B(l,I,`true`),r?(H(s,`toggle-service`),B(c,Pa,i),o.se[i][t]=c):o.ae[t]=c,r?(e=>{oo(c,`change`,(()=>{let t=o.se[e],n=o.ae[e];a.Z[e]=[];for(let n in t){let r=t[n];r.checked&&a.Z[e].push(r.value)}n.checked=a.Z[e].length>0}))})(i):(e=>{oo(c,La,(()=>{let t=o.se[e],n=c.checked;a.Z[e]=[];for(let r in t)t[r].checked=n,n&&a.Z[e].push(r)}))})(t),c.value=t,d.textContent=e.replace(/<.*>.*<\/.*>/gm,``),V(u,p),V(u,f),V(l,u),a.D)(n.readOnly||n.enabled)&&(c.checked=!0);else if(r){let e=a.Y[i];c.checked=n.readOnly||R(e,t)}else R(a.R,t)&&(c.checked=!0);return n.readOnly&&(c.disabled=!0),V(s,c),V(s,l),V(s,d),s}var zo=()=>{let e=z(`span`);return L.ne.Ke||(L.ne.Ke=e),e},W=(e,t)=>{let n=L.o,r=L.ne,{hide:i,showPreferences:a,acceptCategory:o}=e,s=n.u&&n.u.consentModal;if(!s)return;let c=s.acceptAllBtn,l=s.acceptNecessaryBtn,u=s.showPreferencesBtn,d=s.closeIconLabel,f=s.footer,p=s.label,m=s.title,h=e=>{i(),o(e)};if(!r.Qe){r.Qe=z(F),r.he=z(F),r.We=z(F),r.Xe=z(F),r.Ye=z(F),H(r.Qe,`cm-wrapper`),H(r.he,`cm`),to(r.We,`body`),to(r.Xe,`texts`),to(r.Ye,`btns`),B(r.he,`role`,`dialog`),B(r.he,`aria-modal`,`true`),B(r.he,I,`false`),B(r.he,`aria-describedby`,`cm__desc`),p?B(r.he,`aria-label`,p):m&&B(r.he,`aria-labelledby`,`cm__title`);let e=n.i.guiOptions,t=e&&e.consentModal,i=(t&&t.layout||`box`).split(` `)[0]===`box`;m&&d&&i&&(r.Le||(r.Le=z(Fa),r.Le.innerHTML=_o(),to(r.Le,`btn`),to(r.Le,`btn--close`),oo(r.Le,La,(()=>{h([])})),V(r.We,r.Le)),B(r.Le,`aria-label`,d)),V(r.We,r.Xe),(c||l||u)&&V(r.We,r.Ye),r.be=z(F),B(r.be,`tabIndex`,-1),V(r.he,r.be),V(r.he,r.We),V(r.Qe,r.he)}m&&(r.Ze||(r.Ze=z(`h2`),r.Ze.className=r.Ze.id=`cm__title`,V(r.Xe,r.Ze)),r.Ze.innerHTML=m);let g=s.description;if(g&&(n.V&&(g=g.replace(`{{revisionMessage}}`,n.I?``:s.revisionMessage||``)),r.et||(r.et=z(`p`),r.et.className=r.et.id=`cm__desc`,V(r.Xe,r.et)),r.et.innerHTML=g),c&&(r.tt||(r.tt=z(Fa),V(r.tt,zo()),to(r.tt,`btn`),B(r.tt,Ra,`all`),oo(r.tt,La,(()=>{h(`all`)}))),r.tt.firstElementChild.innerHTML=c),l&&(r.Ie||(r.Ie=z(Fa),V(r.Ie,zo()),to(r.Ie,`btn`),B(r.Ie,Ra,`necessary`),oo(r.Ie,La,(()=>{h([])}))),r.Ie.firstElementChild.innerHTML=l),u&&(r.ot||(r.ot=z(Fa),V(r.ot,zo()),to(r.ot,`btn`),to(r.ot,`btn--secondary`),B(r.ot,Ra,`show`),oo(r.ot,`mouseenter`,(()=>{n.N||Lo(e,t)})),oo(r.ot,La,a)),r.ot.firstElementChild.innerHTML=u),r.nt||(r.nt=z(F),to(r.nt,Ia),c&&V(r.nt,r.tt),l&&V(r.nt,r.Ie),(c||l)&&V(r.We,r.nt),V(r.Ye,r.nt)),r.ot&&!r.st&&(r.st=z(F),r.Ie&&r.tt?(to(r.st,Ia),V(r.st,r.ot),V(r.Ye,r.st)):(V(r.nt,r.ot),to(r.nt,Ia+`--uneven`))),f){if(!r.ct){let e=z(F),t=z(F);r.ct=z(F),to(e,`footer`),to(t,`links`),to(r.ct,`link-group`),V(t,r.ct),V(e,t),V(r.he,e)}r.ct.innerHTML=f}Fo(0),n.T||(n.T=!0,xo(L.re.ue,za,r.he),t(e),V(r.Ce,r.Qe),vo(r.he),setTimeout((()=>H(r.Qe,`cc--anim`)),100)),bo(1),uo(r.We,e,Lo,t)},G=e=>{if(!Wa(e))return null;if(e in L.o._)return e;let t=e.slice(0,2);return t in L.o._?t:null},Bo=()=>L.o.l||L.o.i.language.default,Vo=e=>{e&&(L.o.l=e)},Ho=async e=>{let t=L.o,n=G(e)?e:Bo(),r=t._[n];if(Wa(r)?r=await(async e=>{try{return await(await fetch(e)).json()}catch(e){return console.error(e),!1}})(r):Ka(r)&&(r=await r()),!r)throw`Could not load translation for the '${n}' language`;return t.u=r,Vo(n),!0},Uo=()=>{let e=L.o.i.language.rtl,t=L.ne.Ce;e&&t&&(Ua(e)||(e=[e]),R(e,L.o.l)?H(t,`cc--rtl`):no(t,`cc--rtl`))},Wo=()=>{let e=L.ne;if(e.Ce)return;e.Ce=z(F),e.Ce.id=`cc-main`,e.Ce.setAttribute(`data-nosnippet`,``),Uo();let t=L.o.i.root;t&&Wa(t)&&(t=document.querySelector(t)),(t||e.Ue.body).appendChild(e.Ce)},Go=e=>So((()=>localStorage.removeItem(e))),Ko=(e,t)=>{if(t instanceof RegExp)return e.filter((e=>t.test(e)));{let n=Ha(e,t);return n>-1?[e[n]]:[]}},qo=e=>{let{hostname:t,protocol:n}=location,{name:r,path:i,domain:a,sameSite:o,useLocalStorage:s,secure:c}=L.t.cookie,l=e?(()=>{let e=L.o.S,t=e?new Date-e:0;return 864e5*so()-t})():864e5*so(),u=new Date;u.setTime(u.getTime()+l),L.o.p.expirationTime=u.getTime();let d=JSON.stringify(L.o.p),f=r+`=`+encodeURIComponent(d)+(l===0?``:`; expires=`+u.toUTCString())+`; Path=`+i+`; SameSite=`+o;R(t,`.`)&&(f+=`; Domain=`+a),c&&n===`https:`&&(f+=`; Secure`),s?((e,t)=>
20{So((()=>localStorage.setItem(e,t)))})(r,d):document.cookie=f,L.o.p},Jo=(e,t,n)=>{if(e.length===0)return;let r=n||L.t.cookie.domain,i=t||L.t.cookie.path,a=r.slice(0,4)===`www.`,o=a&&r.substring(4),s=(e,t)=>{t&&t.slice(0,1)!==`.`&&(t=`.`+t),document.cookie=e+`=; path=`+i+(t?`; domain=`+t:``)+`; expires=Thu, 01 Jan 1970 00:00:01 GMT;`};for(let t of e)s(t,n),n||s(t,r),a&&s(t,o)},Yo=e=>{let t=e||L.t.cookie.name,n=L.t.cookie.useLocalStorage;return((e,t)=>{let n;return n=So((()=>JSON.parse(t?e:decodeURIComponent(e))),!0)||{},n})(n?(r=t,So((()=>localStorage.getItem(r)))||``):Xo(t,!0),n);var r},Xo=(e,t)=>{let n=document.cookie.match(`(^|;)\\s*`+e+`\\s*=\\s*([^;]+)`);return n?t?n.pop():e:``},Zo=e=>{let t=document.cookie.split(/;\s*/),n=[];for(let r of t){let t=r.split(`=`)[0];e?So((()=>{e.test(t)&&n.push(t)})):n.push(t)}return n},Qo=(e,t=[])=>{((e,t)=>{let{O:n,R:r,B:i,N:a,Z:o,$:s,X:c}=L.o,l=[];if(e){Ua(e)?l.push(...e):Wa(e)&&(l=e===`all`?n:[e]);for(let e of n)o[e]=R(l,e)?qa(c[e]):[]}else l=[...r,...s],a&&(l=(()=>{let e=L.ne.ae;if(!e)return[];let t=[];for(let n in e)e[n].checked&&t.push(n);return t})());l=l.filter((e=>!R(n,e)||!R(t,e))),l.push(...i),lo(l)})(e,t),(()=>{let e=L.o,{Z:t,B:n,Y:r,X:i,O:a}=e,o=a;e.te=ro(r);for(let a of o){let o=i[a],s=qa(o),c=t[a]&&t[a].length>0,l=R(n,a);if(s.length!==0){if(r[a]=[],l)r[a].push(...s);else if(c){let e=t[a];r[a].push(...e)}else r[a]=e.Z[a];r[a]=Ja(r[a])}}})(),(()=>{let e=L.o;e.L=L.t.mode===Aa&&e.D?co(e.$,e.R):co(e.R,e.p.categories);let t=e.L.length>0,n=!1;for(let t of e.O)e.ee[t]=co(e.Y[t],e.te[t]),e.ee[t].length>0&&(n=!0);let r=L.ne.ae;for(let t in r)r[t].checked=R(e.R,t);for(let t of e.O){let n=L.ne.se[t],r=e.Y[t];for(let e in n)n[e].checked=R(r,e)}e.C||=new Date,e.M||=`10000000-1000-4000-8000-100000000000`.replace(/[018]/g,(e=>(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16))),e.p={categories:ro(e.R),revision:L.t.revision,data:e.h,consentTimestamp:e.C.toISOString(),consentId:e.M,services:ro(e.Y),languageCode:L.o.l},e.S&&(e.p.lastConsentTimestamp=e.S.toISOString());let i=!1,a=t||n;(e.D||a)&&(e.D&&(e.D=!1,i=!0),e.S=e.S?new Date:e.C,e.p.lastConsentTimestamp=e.S.toISOString(),qo(),L.t.autoClearCookies&&(i||a)&&(e=>{let t=L.o,n=Zo(),r=(e=>{let t=L.o;return(e?t.O:t.L).filter((e=>{let n=t.P[e];return!!n&&!n.readOnly&&!!n.autoClear}))})(e);for(let e in t.ee)for(let r of t.ee[e]){let i=t.X[e][r].cookies;if(!R(t.Y[e],r)&&i)for(let e of i)Jo(Ko(n,e.name),e.path,e.domain)}for(let i of r){let r=t.P[i].autoClear,a=r&&r.cookies||[],o=R(t.L,i),s=!R(t.R,i),c=o&&s;if(e?s:c){r.reloadPage&&c&&(t.j=!0);for(let e of a)Jo(Ko(n,e.name),e.path,e.domain)}}})(i),Co()),i&&(xo(L.re.ie),xo(L.re.le),L.t.mode===ka)||(a&&xo(L.re.de),e.j&&(e.j=!1,location.reload()))})()},$o=e=>R(L.o.D?[]:L.o.R,e),es=(e,t)=>{let{O:n,X:r}=L.o;if(!(e&&t&&Wa(t)&&R(n,t)&&qa(r[t]).length!==0))return!1;((e,t)=>{let n=L.o,{X:r,Z:i,N:a}=n,o=L.ne.se[t]||{},s=L.ne.ae[t]||{},c=qa(r[t]);if(i[t]=[],Wa(e)){if(e===`all`){if(i[t].push(...c),a)for(let e in o)o[e].checked=!0,Qa(o[e])}else if(R(c,e)&&i[t].push(e),a)for(let t in o)o[t].checked=e===t,Qa(o[t])}else if(Ua(e))for(let n of c){let r=R(e,n);r&&i[t].push(n),a&&(o[n].checked=r,Qa(o[n]))}let l=i[t].length===0;n.R=l?n.R.filter((e=>e!==t)):Ja([...n.R,t]),a&&(s.checked=!l,Qa(s))})(e,t),Qo()},ts=(e,t)=>R(L.o.D?[]:L.o.Y[t]||[],e),ns=e=>Xo(e,!0)!==``,rs=(e,t,n)=>{let r=[],i=e=>{if(Wa(e)){let t=Xo(e);t!==``&&r.push(t)}else r.push(...Zo(e))};if(Ua(e))for(let t of e)i(t);else i(e);Jo(r,t,n)},is=e=>{let{ne:t,o:n}=L;if(!n.k){if(!n.T){if(!e)return;W(cs,Wo)}n.k=!0,n.J=Ya(),n.v&&ho(!0),po(t.he,1),H(t.ye,ja),B(t.he,I,`false`),setTimeout((()=>{fo(L.ne.be)}),100),xo(L.re.fe,za)}},as=()=>{let{ne:e,o:t,re:n}=L;t.k&&(t.k=!1,t.v&&ho(),fo(e.Ke,!0),no(e.ye,ja),B(e.he,I,`true`),fo(t.J),t.J=null,xo(n._e,za))},os=()=>{let e=L.o;e.A||(e.N||Lo(cs,Wo),e.A=!0,e.k?e.U=Ya():e.J=Ya(),po(L.ne.we,2),H(L.ne.ye,Ma),B(L.ne.we,I,`false`),setTimeout((()=>{fo(L.ne.ve)}),100),xo(L.re.fe,Ba))},ss=()=>{let e=L.o;e.A&&(e.A=!1,(()=>{let e=hs(),t=L.o.P,n=L.ne.ae,r=L.ne.se,i=e=>R(L.o.$,e);for(let a in n){let o=!!t[a].readOnly;n[a].checked=o||(e?$o(a):i(a));for(let t in r[a])r[a][t].checked=o||(e?ts(t,a):i(a))}})(),fo(L.ne.$e,!0),no(L.ne.ye,Ma),B(L.ne.we,I,`true`),e.k?(fo(e.U),e.U=null):(fo(e.J),e.J=null),xo(L.re._e,Ba))},cs={show:is,hide:as,showPreferences:os,hidePreferences:ss,acceptCategory:Qo},ls=async(e,t)=>{if(!G(e))return!1;let n=L.o;return!(e===Bo()&&!0!==t||!await Ho(e)||(Vo(e),n.T&&W(cs,Wo),n.N&&Lo(cs,Wo),Uo(),0))},us=()=>{let{F:e,Y:t}=L.o,{accepted:n,rejected:r}=(()=>{let{D:e,R:t,O:n}=L.o;return{accepted:t,rejected:e?[]:n.filter((e=>!R(t,e)))}})();return ro({acceptType:e,acceptedCategories:n,rejectedCategories:r,acceptedServices:t,rejectedServices:io()})},ds=(e,t)=>{let n=document.querySelector(`script[src="`+e+`"]`);return new Promise((r=>{if(n)return r(!0);if(n=z(`script`),Ga(t))for(let e in t)B(n,e,t[e]);n.onload=()=>r(!0),n.onerror=()=>{n.remove(),r(!1)},n.src=e,V(document.head,n)}))},fs=e=>{let t,n=e.value,r=e.mode,i=!1,a=L.o;if(r===`update`){a.h=t=ps(`data`);let e=typeof t==typeof n;if(e&&typeof t==`object`){!t&&(t={});for(let e in n)t[e]!==n[e]&&(t[e]=n[e],i=!0)}else!e&&t||t===n||(t=n,i=!0)}else t=n,i=!0;return i&&(a.h=t,a.p.data=t,qo(!0)),i},ps=(e,t)=>{let n=Yo(t);return e?n[e]:n},ms=e=>{let t=L.t,n=L.o.i;return e?t[e]||n[e]:{...t,...n,cookie:{...t.cookie}}},hs=()=>!L.o.D,gs=async e=>{let{o:t,t:n,re:r}=L,i=window;if(!i._ccRun){if(i._ccRun=!0,(e=>{let{ne:t,t:n,o:r}=L,i=n,a=r,{cookie:o}=i,s=L.ce,c=e.cookie,l=e.categories,u=qa(l)||[],d=navigator,f=document;t.Ue=f,t.ye=f.documentElement,o.domain=location.hostname,a.i=e,a.P=l,a.O=u,a._=e.language.translations,a.v=!!e.disablePageInteraction,s.ie=e.onFirstConsent,s.le=e.onConsent,s.de=e.onChange,s._e=e.onModalHide,s.fe=e.onModalShow,s.ue=e.onModalReady;let{mode:p,autoShow:m,lazyHtmlGeneration:h,autoClearCookies:g,revision:_,manageScriptTags:v,hideFromBots:y}=e;p===Aa&&(i.mode=p),typeof g==`boolean`&&(i.autoClearCookies=g),typeof v==`boolean`&&(i.manageScriptTags=v),typeof _==`number`&&_>=0&&(i.revision=_,a.V=!0),typeof m==`boolean`&&(i.autoShow=m),typeof h==`boolean`&&(i.lazyHtmlGeneration=h),!1===y&&(i.hideFromBots=!1),!0===i.hideFromBots&&d&&(a.G=d.userAgent&&/bot|crawl|spider|slurp|teoma/i.test(d.userAgent)||d.webdriver),Ga(c)&&(i.cookie={...o,...c}),i.autoClearCookies,a.V,i.manageScriptTags,(e=>{let{P:t,X:n,Y:r,Z:i,B:a}=L.o;for(let o of e){let e=t[o],s=e.services||{},c=Ga(s)&&qa(s)||[];n[o]={},r[o]=[],i[o]=[],e.readOnly&&(a.push(o),r[o]=c),L.ne.se[o]={};for(let e of c){let t=s[e];t.Se=!1,n[o][e]=t}}})(u),(()=>{if(!L.t.manageScriptTags)return;let e=L.o,t=Za(document,`script[`+Pa+`]`);for(let n of t){let t=eo(n,Pa),r=n.dataset.service||``,i=!1;if(t&&t.charAt(0)===`!`&&(t=t.slice(1),i=!0),r.charAt(0)===`!`&&(r=r.slice(1),i=!0),R(e.O,t)&&(e.oe.push({Me:n,xe:!1,ke:i,De:t,Te:r}),r)){let n=e.X[t];n[r]||(n[r]={Se:!1})}}})(),Vo((()=>{let e=L.o.i.language.autoDetect;if(e){let t=G({browser:navigator.language,document:document.documentElement.lang}[e]);if(t)return t}return Bo()})())})(e),t.G)return;(()=>{let e=L.o,t=L.t,n=Yo(),{categories:r,services:i,consentId:a,consentTimestamp:o,lastConsentTimestamp:s,data:c,revision:l}=n,u=Ua(r);e.p=n,e.M=a;let d=!!a&&Wa(a);e.C=o,e.C&&=new Date(o),e.S=s,e.S&&=new Date(s),e.h=c===void 0?null:c,e.V&&d&&l!==t.revision&&(e.I=!1),e.D=!(d&&e.I&&e.C&&e.S&&u),t.cookie.useLocalStorage&&!e.D&&(e.D=new Date().getTime()>(n.expirationTime||0),e.D&&Go(t.cookie.name)),e.D,(()=>{let e=L.o;for(let t of e.O){let n=e.P[t];if(n.readOnly||n.enabled){e.$.push(t);let n=e.X[t]||{};for(let r in n)e.Z[t].push(r),e.i.mode===Aa&&e.Y[t].push(r)}}})(),e.D?t.mode===Aa&&(e.R=[...e.$]):(e.Y={...e.Y,...i},e.Z={...e.Y},lo([...e.B,...r]))})();let o=hs();if(!await Ho())return!1;if(uo(null,a=cs,Lo,Wo),L.o.D&&W(a,Wo),L.t.lazyHtmlGeneration||Lo(a,Wo),n.autoShow&&!o&&is(!0),o)return Co(),xo(r.le);n.mode===Aa&&Co(t.$)}var a},_s=e=>{let{Ce:t,ye:n}
20=L.ne,{name:r,path:i,domain:a,useLocalStorage:o}=L.t.cookie;e&&(o?Go(r):rs(r,i,a));for(let{pe:e,ge:t,me:n}of L.o.m)e.removeEventListener(t,n);t&&t.remove(),n&&n.classList.remove(Na,Ma,ja);let s=new Va;for(let e in L)L[e]=s[e];window._ccRun=!1},vs=Oa;function ys(){if(window.gtmScriptLoaded)return;let e=window.location.hostname===`localhost`||window.location.hostname===`127.0.0.1`||window.location.hostname===`0.0.0.0`,t=`G-X50E21BGKG`;if(e){console.log(`ðª [DEV] Google Analytics would be loaded here (skipped on localhost)`),console.log(`ðª [DEV] GA ID: ${t}`),console.log(`ðª [DEV] Analytics consent granted`),window.gtmScriptLoaded=!0;return}let n=document.createElement(`script`);n.src=`https://www.googletagmanager.com/gtag/js?id=${t}`,n.async=!0,n.onload=()=>{window.gtag(`consent`,`update`,{analytics_storage:`granted`}),window.gtag(`js`,new Date),window.gtag(`config`,t,{anonymize_ip:!0,send_page_view:!1}),window.gtag(`event`,`page_view`,{page_title:document.title,page_location:window.location.href,page_path:window.location.pathname}),window.gtmScriptLoaded=!0},document.head.appendChild(n)}function bs(){let[e,t]=(0,y.useState)(null);return(0,y.useEffect)(()=>{if(typeof window<`u`){if(window.__cookieConsentInitialized){setTimeout(()=>t(vs),0);return}window.__cookieConsentInitialized=!0,vs.run({cookie:{name:`cc_cookie_locize`},guiOptions:{consentModal:{layout:`box inline`,position:`bottom`,equalWeightButtons:!1,flipButtons:!0},preferencesModal:{layout:`box`,position:`right`,equalWeightButtons:!1,flipButtons:!0}},onConsent:()=>t({...vs}),onChange:()=>t({...vs}),categories:{necessary:{readOnly:!0,enabled:!0},analytics:{autoClear:{cookies:[{name:/^(_ga|_gid|im_)/}]},services:{youtube:{label:`Youtube Embed`,onAccept:()=>{},onReject:()=>{}},ga:{label:`Google Analytics`,onAccept:ys,onReject:()=>{window.gtag!==void 0&&window.gtag(`consent`,`default`,{ad_user_data:`denied`,ad_personalization:`denied`,ad_storage:`denied`,analytics_storage:`denied`,wait_for_update:500})},cookies:[{name:/^(_ga|_gid)/}]}}}},language:{default:`en`,autoDetect:!1,translations:{en:{consentModal:{title:`Hello ð! We value your privacy.`,description:`This website uses cookies to ensure you get the best experience.`,acceptAllBtn:`Accept all`,acceptNecessaryBtn:`Reject all`,showPreferencesBtn:`Manage preferences`,footer:`<a href="/privacy">Privacy Policy</a><a href="/terms">Terms</a>`},preferencesModal:{title:`Customize Consent Preferences`,acceptAllBtn:`Accept all`,acceptNecessaryBtn:`Reject all`,savePreferencesBtn:`Save preferences`,closeIconLabel:`Close`,serviceCounterLabel:`Service|Services`,sections:[{description:`We use cookies to support navigation and functionality...`},{title:`Strictly Necessary Cookies <span class="pm__badge">Always Enabled</span>`,description:`Required for core features.`,linkedCategory:`necessary`},{title:`Analytics Cookies`,description:`Used to understand how visitors interact.`,linkedCategory:`analytics`},{title:`More Information`,description:`Questions? <a class="cc__link" href="mailto:[email protected]">Email us</a>.`}]}}}}}).then(()=>{t(vs)}).catch(e=>{console.error(`CookieConsent init error:`,e),t(null)})}},[]),e}function xs({videoId:e,title:t=`YouTube Video`,className:n=``,width:r=`100%`,height:i=`400`,autoplay:a=!1,modest:o=!0,rel:s=!1,onExternalClick:c=null,description:l=`This video is hosted on YouTube`,aspectRatio:u=null,poster:d=null,posterPlayAt:f=[`50%`,`50%`]}){let p=bs(),m=p&&p.acceptedService(`youtube`,`analytics`),h=!!(p&&p.showPreferences),g=()=>`https://www.youtube-nocookie.com/embed/${e}?${new URLSearchParams({modestbranding:o?`1`:`0`,rel:s?`1`:`0`,autoplay:a?`1`:`0`}).toString()}`,_=()=>`https://youtu.be/${e}`,v=()=>{be(e),c&&c(e)};if(m)return(0,P.jsx)(`div`,{className:`youtube-embed-wrapper ${n}`,style:u?{aspectRatio:u}:void 0,children:(0,P.jsx)(`iframe`,{width:r,height:u?`100%`:i,style:u?{display:`block`}:void 0,src:g(),title:t,frameBorder:`0`,allow:`accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share`,allowFullScreen:!0,className:`youtube-embed-iframe`})});let y=(0,P.jsxs)(`div`,{className:`mt-4 flex flex-col sm:flex-row gap-3`,children:[(0,P.jsxs)(Ea,{href:_(),target:`_blank`,rel:`noopener noreferrer`,className:`brand-btn btn-sm no-underline`,onClick:v,children:[(0,P.jsx)(`span`,{children:`Watch on YouTube`}
20),(0,P.jsx)(`span`,{className:`ml-2`,"aria-hidden":!0,children:(0,P.jsx)(Ta,{name:`play_circle`})})]}),(0,P.jsx)(`button`,{type:`button`,onClick:()=>p&&p.showPreferences(),disabled:!h,className:[`brand-btn-outline btn-sm`,h?void 0:`opacity-50 pointer-events-none`].filter(Boolean).join(` `),children:`Update cookie preferences`})]});return d?(0,P.jsxs)(`div`,{className:[`brand-card overflow-hidden border border-base-200/70 bg-base-100`,n].filter(Boolean).join(` `),children:[(0,P.jsxs)(`a`,{href:_(),target:`_blank`,rel:`noopener noreferrer`,onClick:v,className:`relative block group`,"aria-label":`${t} (opens YouTube)`,children:[(0,P.jsx)(`img`,{src:d,alt:t,loading:`lazy`,className:`block w-full h-auto`,style:u?{aspectRatio:u,objectFit:`cover`}:void 0}),(0,P.jsx)(`span`,{className:`absolute -translate-x-1/2 -translate-y-1/2`,style:{left:f[0],top:f[1]},"aria-hidden":!0,children:(0,P.jsx)(`span`,{className:`inline-flex h-16 w-16 items-center justify-center rounded-full bg-black/55 text-white transition group-hover:bg-black/70`,children:(0,P.jsx)(Ta,{name:`play_arrow`,fontSize:`40px`})})})]}),(0,P.jsxs)(`div`,{className:`p-5 sm:p-6`,children:[(0,P.jsxs)(`div`,{className:`text-sm text-base-content/70 leading-relaxed`,children:[l,`. Accept YouTube cookies to watch it here.`]}),y]})]}):(0,P.jsx)(`div`,{className:[`brand-card border border-base-200/70 bg-base-100`,n].filter(Boolean).join(` `),children:(0,P.jsx)(`div`,{className:`p-5 sm:p-6`,children:(0,P.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-4 sm:items-start`,children:[(0,P.jsx)(`div`,{className:`shrink-0 inline-flex h-16 w-16 items-center justify-center rounded-2xl border border-base-200 bg-base-200/30`,children:(0,P.jsx)(Ta,{name:`smart_display`,fontSize:`40px`,style:{opacity:.75}})}),(0,P.jsxs)(`div`,{className:`min-w-0`,children:[(0,P.jsx)(`div`,{className:`text-xl font-semibold tracking-tight text-base-content`,children:t}),(0,P.jsxs)(`div`,{className:`mt-1 text-sm text-base-content/70 leading-relaxed`,children:[l,`. Accept YouTube cookies to watch it here.`]}),y]})]})})})}function Ss(){let e=typeof globalThis<`u`?globalThis.crypto:void 0;if(e?.getRandomValues){let t=new Uint32Array(1);return e.getRandomValues(t),t[0]}return Math.floor(Math.random()*4294967295)}function Cs(e){let t=e>>>0||1;return e=>!e||e<=1?0:(t=t*1664525+1013904223>>>0,t%e)}function ws(e,t){let n=Array.isArray(e)?e.slice():[],r=Cs(t);for(let e=n.length-1;e>0;e--){let t=r(e+1),i=n[e];n[e]=n[t],n[t]=i}return n}function Ts({logos:e,title:t=`Trusted by 1000+ teams worldwide`,maxVisible:n=24}){let[r,i]=(0,y.useState)(0),[a,o]=(0,y.useState)(!1);(0,y.useEffect)(()=>{let e=globalThis.setTimeout(()=>o(!0),0),t=globalThis.setTimeout(()=>i(Ss()),180),n=globalThis.setTimeout(()=>o(!1),360);return()=>{globalThis.clearTimeout(e),globalThis.clearTimeout(t),globalThis.clearTimeout(n)}},[]);let s=(0,y.useMemo)(()=>{let t=ws(e,r);return t.length>n?t.slice(0,n):t},[e,r,n]);if(!s||s.length===0)return null;let c=s.concat(s);return(0,P.jsx)(`section`,{children:(0,P.jsx)(`div`,{className:`max-w-[90rem] mx-auto px-4 pb-8`,children:(0,P.jsxs)(`div`,{className:`rounded-2xl border border-base-200 bg-base-100 px-6 py-5`,children:[(0,P.jsx)(`div`,{className:`flex items-center justify-between gap-4 flex-wrap`,children:(0,P.jsx)(`div`,{className:`text-sm text-base-content/60`,children:t})}),(0,P.jsx)(`div`,{className:[`logo-marquee mt-4 transition-opacity duration-300 ease-out motion-reduce:transition-none`,a?`opacity-0`:`opacity-100`].join(` `),"aria-label":`Customer logos`,children:(0,P.jsx)(`div`,{className:`logo-marquee__track`,children:c.map((e,t)=>(0,P.jsx)(`div`,{className:`shrink-0`,children:(0,P.jsx)(`img`,{src:e.src,alt:e.alt||`Customer`,className:`h-7 w-auto opacity-80 hover:opacity-100 transition-opacity`,loading:`lazy`})},`${e.src}-${t}`))})})]})})})}function Es(e){try{return new URL(e).host}catch{return e}}function Ds({cardId:e,t,variant:n=`customers`}){let r=t||{},i=r.logo?`/img/customers/${r.logo}`:``;if(n===`marketing`){let t=r.company||r.id||`Customer logo`,n=[...r.intro?[r.intro]:[],...Array.isArray(r.paragraphs)&&r.paragraphs.length>
200?r.paragraphs:Array.isArray(r.bullets)?r.bullets:[]].filter(Boolean),a=[r.author,r.role].filter(Boolean).join(`, `),o=r.companyUrl||`#`;return(0,P.jsxs)(`div`,{className:`brand-card p-6 flex flex-col`,id:e,children:[(0,P.jsx)(`div`,{className:`h-12 flex items-center`,children:i&&(0,P.jsx)(`img`,{src:i,alt:t,className:`max-h-12 w-auto`,loading:`lazy`})}),(0,P.jsx)(`div`,{className:`mt-5 text-base-content/80 text-lg leading-relaxed flex-1 space-y-4`,children:n.map(e=>(0,P.jsx)(`p`,{className:`m-0`,children:e},e))}),(0,P.jsxs)(`div`,{className:`mt-6 text-sm text-base-content/60`,children:[(0,P.jsx)(`div`,{className:`h-px w-full bg-base-200 mb-4`}),a&&(0,P.jsx)(`div`,{children:a}),r.company&&(0,P.jsx)(`a`,{className:`mt-1 inline-block link link-hover`,href:o,target:`_blank`,rel:`noreferrer`,children:r.company})]})]})}return(0,P.jsxs)(`article`,{className:`rounded-2xl border border-base-200 bg-base-100 p-6`,id:r.id,children:[(0,P.jsx)(`div`,{className:`flex items-center justify-between gap-4`,children:(0,P.jsxs)(`div`,{className:`flex items-center gap-3 min-w-0`,children:[i&&(0,P.jsx)(`img`,{src:i,alt:r.company,className:`h-10 w-auto max-w-[8rem] object-contain`,loading:`lazy`,onError:e=>{e.currentTarget.style.display=`none`}}),(0,P.jsxs)(`div`,{className:`min-w-0`,children:[(0,P.jsx)(`div`,{className:`font-semibold truncate`,children:r.company}),r.companyUrl&&(0,P.jsx)(`a`,{className:`text-sm brand-link`,href:r.companyUrl,rel:`noopener noreferrer`,target:`_blank`,children:Es(r.companyUrl)})]})]})}),(0,P.jsxs)(`div`,{className:`mt-5 space-y-3 text-base-content/80`,children:[r.intro&&(0,P.jsx)(`div`,{className:`font-medium text-base-content/80`,children:r.intro}),r.paragraphs?.map(e=>(0,P.jsx)(`p`,{className:`leading-relaxed`,children:e},e)),!!r.bullets?.length&&(0,P.jsx)(`ul`,{className:`mt-2 list-disc pl-5 space-y-2`,children:r.bullets.map(e=>(0,P.jsx)(`li`,{className:`leading-relaxed`,children:e},e))}),!!r.links?.length&&(0,P.jsx)(`div`,{className:`pt-1 space-y-2`,children:r.links.map(e=>{let t=typeof e==`string`?e:e?.href;if(!t)return null;let n=typeof e==`string`?Es(t):e?.label||Es(t);return(0,P.jsx)(`p`,{className:`leading-relaxed`,children:(0,P.jsx)(`a`,{className:`brand-link`,href:t,target:`_blank`,rel:`noopener noreferrer`,children:n})},t)})})]}),(0,P.jsxs)(`div`,{className:`mt-6 pt-5 border-t border-base-200`,children:[(0,P.jsx)(`div`,{className:`text-sm font-semibold`,children:r.author}),r.role&&(0,P.jsx)(`div`,{className:`text-sm text-base-content/70`,children:r.role})]})]})}function Os(e){return typeof e==`string`&&e.trim()===``}function ks(e){let t=y.Children.toArray(e).filter(e=>!Os(e));return t.length>0&&t.every(e=>typeof e==`string`||typeof e==`number`)}function As(e){let t=y.Children.toArray(e).filter(e=>!Os(e));for(let e of t)if((0,y.isValidElement)(e)&&(e.type===`img`||As(e.props?.children)))return!0;return!1}function js(){return(0,y.useMemo)(()=>{let e=({href:e=``,children:t,className:n,...r})=>{let i=/^https?:\/\//.test(e),a=n;return i?(0,P.jsx)(`a`,{href:e,target:`_blank`,rel:`noopener noreferrer`,className:a,...r,children:t}):(0,P.jsx)(`a`,{href:e,className:a,...r,children:t})};return{a:e,p:({children:t,className:n,...r})=>{let i=y.Children.toArray(t).filter(e=>!Os(e));if(i.length===1&&(0,y.isValidElement)(i[0])&&typeof i[0].props?.href==`string`&&!i[0].props.href.startsWith(`#`)&&ks(i[0].props?.children)&&!As(i[0].props?.children)){let{href:t,children:n,className:r,...a}=i[0].props;return(0,P.jsx)(`div`,{className:`not-prose my-3`,children:(0,P.jsx)(e,{href:t,className:[`btn btn-outline no-underline`,r].filter(Boolean).join(` `),...a,children:n})})}return As(t)?(0,P.jsx)(`div`,{className:n,...r,children:t}):(0,P.jsx)(`p`,{className:n,...r,children:t})},li:({children:t,className:n,...r})=>{let i=y.Children.toArray(t).filter(e=>!Os(e));if(i.length===1&&(0,y.isValidElement)(i[0])&&typeof i[0].props?.href==`string`&&!i[0].props.href.startsWith(`#`)&&ks(i[0].props?.children)&&!As(i[0].props?.children)){let{href:t,children:a,className:o,...s}=i[0].props;
20return(0,P.jsx)(`li`,{className:[`list-none my-2`,n].filter(Boolean).join(` `),...r,children:(0,P.jsx)(`div`,{className:`not-prose`,children:(0,P.jsx)(e,{href:t,className:[`btn btn-outline no-underline`,o].filter(Boolean).join(` `),...s,children:a})})})}return(0,P.jsx)(`li`,{className:n,...r,children:t})},pre:({children:e,...t})=>{let n=``,r=`javascript`;return e?.props?(n=e.props.children||``,r=(e.props.className||``).replace(`language-`,``)||`javascript`):typeof e==`string`?n=e:Array.isArray(e)&&(n=e.map(e=>typeof e==`string`?e:e?.props?.children||``).join(``)),typeof n==`string`&&(n=n.trim()),n&&n.length>0?(0,P.jsx)(Sa,{code:n,lang:r,showCopy:!0}):(0,P.jsx)(`pre`,{...t,children:e})},code:({children:e,className:t,...n})=>{if(!t||!t.startsWith(`language-`))return(0,P.jsx)(`code`,{...n,children:e});let r=t.replace(`language-`,``)||`javascript`,i=typeof e==`string`?e.trim():e;return(0,P.jsx)(Sa,{code:i,lang:r,showCopy:!0})},img:({src:e,alt:t,title:n,...r})=>e?.includes(`/screenshots/`)||e?.includes(`screenshot`)||e?.includes(`screen`)||e?.includes(`view`)||e?.includes(`page`)||t?.toLowerCase().includes(`screenshot`)||t?.toLowerCase().includes(`screen`)||t?.toLowerCase().includes(`view`)||t?.toLowerCase().includes(`page`)||t?.toLowerCase().includes(`image`)||n?.toLowerCase().includes(`click to view`)||r.className?.includes(`screenshot`)?(0,P.jsxs)(`div`,{className:`mdx-image-container`,children:[(0,P.jsx)(Da,{src:e,alt:t||n,width:r.width,height:r.height,className:`step-screenshot mdx-screenshot`}),(t||n)&&(0,P.jsx)(`div`,{className:`image-caption`,children:t||n})]}):(0,P.jsx)(`img`,{src:e,alt:t,title:n,loading:`lazy`,...r}),YouTubeEmbed:xs,table:({children:e,...t})=>(0,P.jsx)(`div`,{className:`overflow-x-auto`,children:(0,P.jsx)(`table`,{...t,children:e})})}},[])}var Ms=!1;function Ns(){(0,y.useEffect)(()=>{Ms||(Ms=!0,D())},[])}var Ps=`{ 21 "meta": { 22 "title": "EU AI Act Artikel 50: Readiness-Check für KI-übersetzte Inhalte", 23 "description": "Kostenlose Selbsteinschätzung: Sind Ihre KI- und maschinell übersetzten Inhalte bereit für die Transparenzpflichten von Artikel 50 des EU AI Act (ab 2. August 2026)? Drei Fragen, ein verständliches Ergebnis." 24 }, 25 "hero": { 26 "badge": "EU AI Act · Artikel 50", 27 "h1Prefix": "Ist Ihr KI-übersetzter Inhalt bereit für ", 28 "h1Accent": "Artikel 50", 29 "h1Suffix": "?", 30 "intro": "Ab dem 2. August 2026 gelten die Transparenzpflichten von Artikel 50 des EU AI Act für KI-generierte Inhalte. Artikel 50(4) nimmt KI-generierten Text aus, der einer menschlichen Ãberprüfung mit redaktioneller Verantwortung unterzogen wurde. Beantworten Sie drei Fragen, um zu sehen, wo Ihre Lokalisierung steht.", 31 "disclaimerHtml": "Orientierung, keine Rechtsberatung. Lesen Sie den <a href=\\"{{backgroundHref}}\\">Hintergrund</a> und den <a href=\\"{{workflowHref}}\\">Workflow-Leitfaden</a>." 32 }, 33 "questions": { 34 "usesAi": "Verwenden Sie KI oder maschinelle Ãbersetzung für nutzerseitige Strings?", 35 "humanReview": "Gibt es einen menschlichen Ãberprüfungsschritt, bevor KI- oder maschinell übersetzte Inhalte veröffentlicht werden?", 36 "record": "Führen Sie einen Nachweis darüber, wer jede KI- oder maschinelle Ãbersetzung wann und mit welcher Konfidenz überprüft hat?" 37 }, 38 "choices": { 39 "yes": "Ja", 40 "no": "Nein" 41 }, 42 "missingHeading": "Was fehlt", 43 "missing": { 44 "review": "Ein menschlicher Ãberprüfungsschritt, bevor KI- oder maschinell übersetzte Inhalte veröffentlicht werden, also die redaktionelle Verantwortung, die Artikel 50(4) erwartet.", 45 "record": "Ein belastbarer Nachweis darüber, wer was wann und mit welcher KI-Konfidenz überprüft hat und den Sie auf Anfrage vorlegen können." 46 }, 47 "verdict": { 48 "notApplicable": { 49 "title": "Die KI-Inhaltsregeln von Artikel 50 gelten wahrscheinlich nicht für Ihre Ãbersetzungen", 50 "body": "Sie verwenden keine KI oder maschinelle Ãbersetzung für nutzerseitige Strings, daher gelten die Transparenzpflichten von Artikel 50 für KI-generierten Text wahrscheinlich nicht dafür. Sollten Sie KI oder maschinelle Ãbersetzung einführen, lohnt sich eine erneute Prüfung." 51 }, 52 "incomplete": { 53 "title": "Noch ein paar Antworten nötig", 54 "body": "Beantworten Sie die verbleibenden Fragen für eine vollständige Einschätzung." 55 }, 56 "strong": { 57 "title": "Starke Position", 58 "body": "Sie nutzen KI oder maschinelle Ãbersetzung, aber eine menschliche Ãberprüfung mit aufgezeichnetem Provenance-Nachweis ist genau der Mechanismus, den Artikel 50(4) beschreibt. Stellen Sie sicher, dass Ãberprüfung und Nachweis alle Ihre KI- oder maschinell übersetzten Strings abdecken." 59 }, 60 "gap": { 61 "title": "Wahrscheinliche Lücke", 62 "body": "Nutzerseitige Inhalte, die per KI oder maschineller Ãbersetzung erstellt und ohne menschliche Ãberprüfung veröffentlicht werden, qualifizieren sich möglicherweise nicht für die Ausnahme nach Artikel 50(4). Fügen Sie vor der Veröffentlichung einen menschlichen Ãberprüfungsschritt hinzu und führen Sie einen Nachweis darüber." 63 }, 64 "almost": { 65 "title": "Fast geschafft", 66 "body": "Sie überprüfen KI- oder maschinell übersetzte Inhalte, können dies aber ohne belastbaren Nachweis nicht belegen. Artikel 50(4) stützt sich auf menschliche Ãberprüfung und nachweisbare redaktionelle Verantwortung. Ergänzen Sie einen Provenance- bzw. Audit-Nachweis." 67 } 68 }, 69 "cta": { 70 "heading": "Ein Review-Workflow mit Provenance-Nachweis ist der Ausnahme-Mechanismus", 71 "body": "Der menschliche Review-Workflow von Locize zeichnet auf, wer jede KI- oder maschinelle Ãbersetzung wann und mit welcher KI-Konfidenz überprüft hat, und exp
71ortiert einen prüfbaren Provenance-Nachweis. Das ist genau die menschliche Ãberprüfung und redaktionelle Verantwortung, die Artikel 50(4) beschreibt.", 72 "start": "Kostenlos starten", 73 "how": "So funktioniert's" 74 }, 75 "faqItems": [ 76 { 77 "q": "Gilt Artikel 50 des EU AI Act für maschinell übersetzte Inhalte?", 78 "a": "Artikel 50 legt Transparenzpflichten für KI-generierten Text fest. Die finalen Leitlinien der Kommission (20. Juli 2026) nehmen treue KI-Ãbersetzungen von der maschinenlesbaren Kennzeichnungspflicht des Artikels 50(2) aus. Die sichtbare Offenlegungspflicht des Artikels 50(4) kann für KI-übersetzten Text, der die Ãffentlichkeit über Angelegenheiten von öffentlichem Interesse informiert, weiterhin greifen; sie entfällt für Text, der einer menschlichen Ãberprüfung mit redaktioneller Verantwortung unterzogen wurde â das eigene Beispiel der Leitlinien für diese Ausnahme ist eine menschlich geprüfte KI-Ãbersetzung." 79 }, 80 { 81 "q": "Wie mache ich KI-übersetzte Inhalte Artikel-50(4)-konform?", 82 "a": "Fügen Sie vor der Veröffentlichung von KI- oder maschinell übersetzten Inhalten einen menschlichen Ãberprüfungsschritt ein und führen Sie einen Nachweis darüber, wer was wann und mit welcher Konfidenz überprüft hat und den Sie auf Anfrage vorlegen können." 83 }, 84 { 85 "q": "Ab wann gelten die Transparenzpflichten von Artikel 50?", 86 "a": "Die Transparenzpflichten von Artikel 50 des EU AI Act gelten ab dem 2. August 2026." 87 } 88 ] 89} 90`,Fs=`{ 91 "meta": { 92 "title": "KI-Lokalisierungsplattform: Locize AI oder BYOK (OpenAI, Gemini)", 93 "description": "Locize ist die Infrastruktur für KI-gestützte Ãbersetzung: BYOK (OpenAI und jeder OpenAI-kompatible Endpoint, Gemini, Mistral, DeepL), MCP-Server für KI-Assistenten, Glossar/Styleguide-bewusste KI, Review-Workflow." 94 }, 95 "primaryCtaDefault": "Kostenlos registrieren", 96 "hero": { 97 "badge": "Kein weiterer KI-Agent: Ihre KI, Ihre Keys, Ihre Kontrolle", 98 "h1Prefix": "Die Infrastruktur, die Ihr ", 99 "h1Accent": "KI-Ãbersetzungs-Workflow braucht.", 100 "p1Html": "Jedes andere TMS rebrandet sich dieses Jahr als âKI-Agentâ. Locize bleibt eine <b>Plattform, die Sie kontrollieren</b>: bringen Sie Ihre eigenen LLM-Keys (OpenAI, Gemini, Mistral, DeepL) oder richten Sie Locize auf Ihren eigenen OpenAI-kompatiblen Endpoint, behalten Sie Ihre Daten im Account Ihres Anbieters und lassen Sie Menschen reviewen, was die KI übersetzt. Gebaut für Engineers, nicht für agentische Produkt-Launches.", 101 "primaryCta": "Kostenlos registrieren", 102 "aiLabel": "KI:", 103 "mtLabel": "MT:", 104 "aiProviders": ["Locize AI", "OpenAI", "Gemini", "Mistral", "..."], 105 "mtProviders": ["Locize MT", "DeepL", "Google", "..."], 106 "byokTitle": "Bring Your Own Key", 107 "byokDesc": "Sie kontrollieren Anbieter und Nutzung.", 108 "locizeAiTitle": "Oder Locize AI nutzen", 109 "locizeAiDesc": "Token-basiert, nach Verbrauch abgerechnet.", 110 "whyTmsPromptHtml": "Sie fragen sich, warum Sie ein TMS brauchen, wenn KI bereits übersetzen kann? <span class=\\"font-medium underline underline-offset-2 group-hover:no-underline\\">Lesen Sie das â</span>", 111 "imageAlt": "Locize-KI-Interface", 112 "efficiencyLabel": "Effizienzgewinn", 113 "efficiencyValue": "Bis zu 90 %", 114 "efficiencyCaption": "Schnellere Erstentwurf-Generierung", 115 "marqueeTitle": "Globale Unternehmen, die unsere KI-Funktionen nutzen" 116 }, 117 "mcp": { 118 "titlePrefix": "KI-Assistent-Lokalisierung: ", 119 "titleAccent": "Locize MCP", 120 "subtitle": "Der Locize-MCP-Server bringt KI-Assistent-Lokalisierung in Ihre IDE: verbinden Sie Claude, Cursor, VS Code und jeden anderen MCP-Client mit Ihren Ãbersetzungs-Projekten. Lesen, aktualisieren und veröffentlichen Sie Ãbersetzungen und geben Sie Ihrem Agenten Glossar, Styleguide und Translation Memory als Kontext, ohne Ihre Entwicklungsumgebung zu verlassen.", 121 "ctaLabel": "MCP-Setup-Guide", 122 "agentsCta": "Agent-Konventionen â", 123 "examples": [ 124 "Finde alle fehlenden deutschen Ãbersetzungen im Checkout-Namespace", 125 "Ãbersetze die Checkout-Strings mit Glossar, Styleguide & Memory", 126 "Prüfe die neuen englischen Strings dieses PRs gegen das Projekt-Glossar", 127 "Veröffentliche die neueste Version und warte bis fertig", 128 "Füge Japanisch zu allen Versionen meines Projekts hinzu", 129 "Erstelle einen Branch für feature-v2 und merge ihn anschliessend zurück", 130 "Zeig mir, welche Schlüssel sich diese Woche im Englischen geändert haben", 131 "Melde diese neuen Schlüssel aus meiner Codebase an Locize" 132 ], 133 "tools": [ 134 { "title": "28 Tools", "desc": "Ãbersetzungen lesen, Glossar, Styleguide & Translation Memory nutzen, Versionen veröffentlichen, Branches verwalten â der volle Workflow samt Kontext in der IDE." }, 135 { "title": "OAuth- oder PAT-Auth", "descHtml": "Verbinden Sie sich via OAuth aus Claude Desktop / Cursor oder nutzen Sie einen <a class=\\"link\\" href=\\"{{patHref}}\\">Personal Access Token</a>." }, 136 { "title": "Funktioniert mit jedem MCP-Client", "desc": "Claude Desktop, Claude Code, Cursor, VS Code und jeder Client, der das MCP-Protokoll unterstützt." } 137 ] 138 }, 139 "workflow": { 140 "titlePrefix": "Der vollständige ", 141 "titleAccent": "KI-Ãbersetzungs-Workflow", 142 "subtitle": "Von Code zu Live-Ãbersetzungen, vollständig automatisiert. Keine Dateien zu committen, kein Deploy auszulösen.", 143 "steps": [ 144 { "title": "Code schreiben", "desc": "Entwickler schreiben Code mit t('key') in i18next, oder ein KI-Coding-Agent scaffoldet das Setup." },
145 { "title": "Schlüssel automatisch erkannt", "desc": "saveMissing sendet neue Schlüssel automatisch an Locize. KI-Agenten können report_missing_keys via MCP aufrufen." }, 146 { "title": "KI übersetzt automatisch", "desc": "Locize übersetzt mit Ihrem konfigurierten Anbieter, unter Berücksichtigung Ihres Styleguides, Glossars und Translation Memory als Kontext." }, 147 { "title": "Optional: menschliches Review", "desc": "Ãbersetzer reviewen und verfeinern im CAT-Editor. Ãberspringen Sie diesen Schritt, wenn die KI-Qualität ausreicht." }, 148 { "title": "Live per CDN", "desc": "Ãbersetzungen werden per CDN veröffentlicht, live in Ihrer App ohne Redeployment. Keine Dateien zu committen, kein Deploy auszulösen." }, 149 { "title": "KI verwaltet den Loop", "desc": "Ihr KI-Coding-Agent prüft die Abdeckung, löst Veröffentlichungen aus und verwaltet den gesamten Workflow über den MCP-Server." } 150 ], 151 "localizeCta": "Lokalisiere mit einem Befehl â", 152 "ciActionCta": "Kostenlose CI-Ãbersetzung â", 153 "setupCta": "Setup-Guide â", 154 "tutorialCta": "saveMissing + KI-Tutorial â", 155 "mcpCta": "MCP-Server-Docs â", 156 "aiActCta": "EU AI Act & maschinelle Ãbersetzung â" 157 }, 158 "privacy": { 159 "heading": "Ihre Daten. Ihre Modelle.", 160 "intro": "Anders als andere Plattformen, die Sie in ihre proprietären (und oft mit Aufschlag versehenen) KI-Services einsperren, gibt Ihnen Locize die Wahl.", 161 "byokTitle": "Bring Your Own Key (BYOK)", 162 "byokDesc": "Behalten Sie Ihren bestehenden Vertrag mit OpenAI, oder lassen Sie die Inferenz über einen OpenAI-kompatiblen Endpoint auf Ihrer eigenen Infrastruktur laufen. Keine Aufschläge durch Mittelsmänner.", 163 "sovereigntyTitle": "Datensouveränität", 164 "sovereigntyDesc": "Ãbersetzungen werden mit den Datenschutz-Einstellungen Ihres Anbieters verarbeitet. Ihre Daten werden nicht zum Trainieren unserer Modelle verwendet. Mit einem selbst gehosteten Endpoint und abgeschalteten integrierten Diensten verlässt der Text Ihre Infrastruktur nie." 165 }, 166 "providers": { 167 "titlePrefix": "Verschiedene Ãbersetzungs-Anbieter, ", 168 "titleAccent": "ein Workflow", 169 "subtitle": "Kombinieren Sie KI- und Maschinenübersetzungs-Anbieter im selben Projekt. Bringen Sie Ihren eigenen API-Key für volle Kontrolle, oder nutzen Sie die eingebauten Locize-Services.", 170 "aiLabel": "KI-Anbieter", 171 "mtLabel": "Maschinenübersetzungs-Anbieter", 172 "ai": [ 173 { "name": "Locize AI", "desc": "Eingebauter KI-Ãbersetzungs-Service, kein externer API-Key nötig. Abrechnung pro KI-Token bei allen kostenpflichtigen Tarifen." }, 174 { "name": "OpenAI", "desc": "OpenAI-Modelle über Ihren eigenen API-Key, oder jeder OpenAI-kompatible Endpoint (selbst gehostetes vLLM, LiteLLM, OpenRouter) über eigene Base-URL und eigenen Modellnamen." }, 175 { "name": "Google Gemini", "desc": "Gemini Pro- und Flash-Modelle für hochwertige KI-Ãbersetzung." }, 176 { "name": "Mistral AI", "desc": "In Europa gehostete Modelle für Teams mit Anforderungen an Datenresidenz." }, 177 { "name": "Lara (von translated)", "desc": "KI-Engine als MT verwendet." } 178 ], 179 "mt": [ 180 { "name": "Locize MT", "desc": "Eingebauter Maschinenübersetzungs-Service, kein externer API-Key nötig." }, 181 { "name": "Google Translate", "desc": "Kostenloser und limitierter Tier von Google Translate, kein API-Key erforderlich." }, 182 { "name": "DeepL", "desc": "Bekannt für natürlich klingende europäische Sprachübersetzungen." }, 183 { "name": "MyMemory", "desc": "Community-getriebenes Translation Memory mit kostenlosem API-Zugriff." } 184 ], 185 "tmTitle": "+ Translation Memory", 186 "tmDesc": "Fuzzy-Matching über alle Ihre bisherigen Ãbersetzungen. Arbeitet zusammen mit KI für Konsistenz.", 187 "styleTitle": "+ Styleguide-bewusste KI", 188 "styleDesc": "Definieren Sie Ton, Formalität und Terminologie-Regeln pro Sprachpaar â sie werden automatisch in jeden KI- und MT-Prompt eingespeist, damit Ãbersetzungen zu Ihrer Markenstimme passen.", 189 "qeTitle": "+ Quality Estimation", 190 "qeDesc": "Jede KI-Ãbersetzung erhält einen KI-bewerteten Konfidenzwert, sichtbar im Editor. Ãbersetzungen mit niedriger Konfidenz können automatisch in de
190n Review-Workflow geleitet werden." 191 }, 192 "whatIs": { 193 "titlePrefix": "Was ist ", 194 "titleAccent": "KI-Lokalisierung?", 195 "p1": "KI-Lokalisierung ist die Praxis, Inhalte an den kulturellen und sprachlichen Kontext Ihrer Zielgruppe anzupassen. Sie geht über direkte Ãbersetzung hinaus und zielt darauf ab, Bedeutung, Absicht, Tonfall und UI-Passform zu bewahren.", 196 "p2": "In Locize ist KI in Ihren bestehenden Ãbersetzungs-Workflow integriert, damit Teams schneller Entwürfe generieren und sie anschliessend mit Vertrauen reviewen und verfeinern können." 197 }, 198 "howItWorks": { 199 "titlePrefix": "Best Practices und ", 200 "titleAccent": "wie es funktioniert", 201 "subtitle": "Ein praktischer, schrittweiser Workflow, den Sie auf Websites, Apps, Spiele und Produkt-UI anwenden können.", 202 "stepLabel": "Schritt", 203 "works": [ 204 { 205 "title": "Bringen Sie Ihren eigenen API-Key", 206 "imageAlt": "API-Key Ihres KI-Anbieters in Locize hinzufügen", 207 "p1": "Fügen Sie Ihren OpenAI-, Gemini-, Mistral- oder anderen Anbieter-Key hinzu, damit Sie Datenhoheit behalten und das bevorzugte Modell wählen können. Für einen OpenAI-kompatiblen Endpoint geben Sie zusätzlich dessen Base-URL und den Modellnamen an.", 208 "altCardLabel": "Alternative", 209 "altCardTitle": "Nutzen Sie den eingebauten Locize-AI-Service", 210 "altCardDescHtml": "Möchten Sie keinen externen Key verwalten? Nutzen Sie stattdessen den integrierten <strong>Locize-AI-Service</strong>. Die Nutzung verbraucht <strong>KI-Tokens</strong>, die nach tatsächlichem Verbrauch abgerechnet werden." 211 }, 212 { 213 "title": "Wählen Sie Ihr bevorzugtes Modell", 214 "imageAlt": "KI-Modell für Ãbersetzungen auswählen", 215 "p1": "Wählen Sie das Modell, das zu Ihren Qualitäts-, Latenz- und Budget-Anforderungen passt. Bei UI-Lokalisierung sind die Ergebnisse oft nahe an publish-ready, mit Review." 216 }, 217 { 218 "title": "Kontext: Metadaten machen KI nützlich", 219 "imageAlt": "Ãbersetzungs-Kontext in Locize hinzufügen", 220 "p1Html": "KI ist nur so gut wie die Informationen, die sie erhält. Locize speist Ihr Projekt-<strong>Glossar</strong> und <strong>Schlüssel-Beschreibungen</strong> automatisch in den Prompt ein, damit die KI weiss, dass âDriveâ ein Substantiv (Speicher) und kein Verb (Fahren) ist." 221 }, 222 { 223 "title": "Glossar und Translation Memory nutzen", 224 "imageAlt": "Glossar und Translation Memory für mehr Konsistenz verwenden", 225 "p1Html": "Halten Sie Terminologie konsistent, indem Sie weiterhin die <a class=\\"link\\" href=\\"{{glossaryHref}}\\">Glossar</a>- und Translation-Memory-Funktionen von Locize nutzen." 226 }, 227 { 228 "title": "Wie Maschinenübersetzung einsetzen", 229 "imageAlt": "KI-Ãbersetzung per Bulk-Aktion ausführen", 230 "p1Html": "Ãbersetzen Sie einzelne Segmente, führen Sie <a class=\\"link\\" href=\\"{{bulkHref}}\\">Bulk-Aktionen</a> aus oder automatisieren Sie via <a class=\\"link\\" href=\\"{{autoHref}}\\">automatischem Ãbersetzungs-Workflow</a>." 231 }, 232 { 233 "title": "Ãbersetzungen mit KI-Vorschlägen verfeinern", 234 "imageAlt": "Ãbersetzungen mit KI-Vorschlägen verfeinern", 235 "p1": "Umformulieren, kürzen oder Varianten erzeugen, die zu UI-Beschränkungen und Tonfall passen â anschliessend von Ãbersetzern reviewen und finalisieren lassen." 236 } 237 ] 238 }, 239 "whyChoose": { 240 "titlePrefix": "Warum ", 241 "titleAccent": "KI-Lokalisierung wählen?", 242 "items": [ 243 { "title": "Schnellere Time-to-Market", "desc": "Erzeugen Sie hochwertige Erstentwürfe schnell, damit Teams in mehr Sprachen ausliefern können, mit weniger Verzögerung." }, 244 { "title": "Verbesserte Genauigkeit und Konsistenz", "desc": "Kontext, Glossar und Translation Memory helfen, Tonfall und Terminologie über Ihr gesamtes Produkt zu bewahren." }, 245 { "title": "Kosteneffiziente Erstübersetzungen", "desc": "KI kann anfängliche Ãbersetzungsarbeit beschleunigen und manuellen Aufwand reduzieren â mit Review dort, wo es zählt." } 246 ], 247 "imageAlt": "KI-Modell-Auswahl in Locize", 248 "imageCaption": "Wählen Sie das Modell und den Workflow, der zu Ihren Qualitäts- und Governance-Anforderungen passt." 249 }, 250 "useCases": { 251 "titlePrefix": "KI-gestützte Lokalisierung für ", 252 "titleAccent": "alle Anwendungsfälle", 253 "subtitle": "Halten Sie mit schneller Produkt-Iteration Schritt, ohne Lokalisierung zum Release-Blocker zu machen.", 254 "cards": [ 255 { "title": "Website-Lokalisierung", "text": "Verwalten Sie mehrsprachige Websites und veröffentlichen Sie Updates kontinuierlich.", "href": "/blog/website-localization", "cta": "Website-Lokalisierungs-Guide ansehen â" }, 256 { "title": "Mobile-App-Lokalisierung", "text": "Beschleunigen Sie Ãbersetzungs-Zyklen und halten Sie Releases in Bewegung.", "href": "/blog/what-is-mobile-app-localization", "cta": "Mobile-App-Guide ansehen â" }, 257 { "title": "Videospiel-Lokalisierung", "text": "Passen Sie UI-Texte und Inhalte für globale Spieler mit konsistenter Terminologie an.", "href": "/blog/what-is-video-game-localization", "cta": "Spiele-Lokalisierungs-Guide ansehen â" }, 258 { "title": "Plattform-Lokalisierung", "text": "Skalieren Sie Lokalisierung
258über komplexe Produkte und Teams hinweg.", "href": "/blog/what-is-software-localization", "cta": "Plattform-Guide ansehen â" }, 259 { "title": "Website-Builder", "text": "Fügen Sie CMS- und Site-Buildern Lokalisierungs-Workflows ohne Reibung hinzu.", "href": "/blog/website-internationalization-best-practices", "cta": "Best Practices ansehen â" }, 260 { "title": "Beliebige Integration", "text": "Nutzen Sie API, CLI und Automatisierungs-Hooks, um in Ihren Stack zu passen.", "href": "/docs/integration/api/", "cta": "Die API erkunden â" } 261 ] 262 }, 263 "faq": { 264 "titlePrefix": "Häufig gestellte ", 265 "titleAccent": "Fragen", 266 "subtitle": "Schnelle Antworten zu KI-Lokalisierung in Locize.", 267 "docsCta": "Zur Dokumentation", 268 "items": [ 269 { "q": "Wie sorgt KI-Lokalisierung für Genauigkeit und Kontext in Ãbersetzungen?", "aHtml": "<p class=\\"m-0\\">KI nutzt Kontext und Anweisungen, um natürlicher klingende Ãbersetzungen zu erzeugen. In Locize können Sie Projekt- und Schlüssel-Kontext hinzufügen, damit Ergebnisse zu Ihrer UI und Markenstimme passen.</p>" }, 270 { "q": "Können die KI-Tools von Locize verschiedene Software-Typen verarbeiten?", "aHtml": "<p class=\\"m-0\\">Ja. Derselbe Workflow gilt für Websites, mobile Apps, Spiele und Plattform-UIs â solange Ihre Strings in Locize sind.</p>" }, 271 { "q": "Wie einfach lässt sich KI-Lokalisierung in meinen Workflow integrieren?", "aHtml": "<p class=\\"m-0\\">Sie können KI über die UI, Bulk-Aktionen oder Automatisierungs-Workflows nutzen. Integrationen wie API und CLI helfen, Ãbersetzungen mit Ihrer Codebase synchron zu halten.</p>" }, 272 { "q": "Kann ich KI nutzen, ohne meinen eigenen API-Key bereitzustellen?", "aHtml": "<p class=\\"m-0\\">Ja. Sie können den eingebauten Locize-AI-Service nutzen, der KI-Tokens verbraucht, die transparent nach Verbrauch abgerechnet werden.</p>" }, 273 { "q": "Wenn KI meine Strings übersetzen kann, warum brauche ich überhaupt ein TMS?", "aHtml": "<p class=\\"m-0\\">KI übersetzt Strings. Ein TMS verwaltet sie über Zeit: erkennen welche Schlüssel fehlen, Terminologie über hunderte Schlüssel konsistent halten, Nicht-Entwicklern erlauben Fixes ohne Deployment einzuspielen und einen Audit-Trail jeder Ãnderung führen. Die beiden lösen unterschiedliche Probleme â deshalb baut Locize KI in den Workflow ein, statt ihn zu ersetzen. <a class=\\"link\\" href=\\"{{whyNotAiHref}}\\">Längere Antwort hier â</a></p>" } 274 ] 275 }, 276 "finalCta": { 277 "title": "Hören Sie auf zu warten. Beginnen Sie zu lokalisieren.", 278 "subtitle": "Erstellen Sie ein neues Projekt und übersetzen Sie Ihre Anwendung mit einem Workflow, dem Ihr Team vertrauen kann.", 279 "primaryCta": "Kostenlos registrieren", 280 "pricingLabel": "Preise ansehen" 281 } 282} 283`,Is=`{ 284 "skipToContent": "Zum Inhalt springen", 285 "nav": { 286 "primaryAria": "Hauptnavigation", 287 "howItWorks": "So funktioniert's", 288 "forYourTeam": "Für Ihr Team", 289 "pricing": "Preise", 290 "customers": "Kunden", 291 "services": "Services", 292 "ai": "KI", 293 "docs": "Docs", 294 "blog": "Blog" 295 }, 296 "cta": { 297 "login": "Anmelden", 298 "register": "Registrieren", 299 "registerForFree": "Kostenlos registrieren" 300 }, 301 "languageSwitcher": { 302 "label": "Sprache", 303 "en": "English", 304 "de": "Deutsch", 305 "it": "Italiano", 306 "fr": "Français" 307 }, 308 "blog": { 309 "title": "Blog", 310 "subtitle": "Produkt-Updates, Guides und Kundenstories.", 311 "searchLabel": "Suche", 312 "searchPlaceholder": "Beiträge durchsuchen â¦", 313 "allCategories": "ALLE", 314 "noResults": "Keine Treffer.", 315 "postNotFound": "Beitrag nicht gefunden", 316 "backToBlog": "Zurück zum Blog", 317 "cta": { 318 "heading": "Ãbersetzungen noch von Hand verwalten?", 319 "body": "Locize ist das Translation-Management-Backend vom i18next-Team: CDN-Auslieferung, KI-Ãbersetzung, In-Context-Editing, keine Redeploys.", 320 "button": "14 Tage kostenlos testen" 321 }, 322 "pagination": { 323 "previous": "â Vorherige", 324 "next": "Nächste â" 325 } 326 }, 327 "footer": { 328 "columns": { 329 "product": "Produkt", 330 "solutions": "Lösungen", 331 "company": "Unternehmen", 332 "importantLinks": "Wichtige Links", 333 "registration": "Registrierung" 334 }, 335 "links": { 336 "pricing": "Preise",
337 "howItWorks": "So funktioniert's", 338 "services": "Services", 339 "ai": "KI", 340 "whyNotJustUseAi": "Warum nicht einfach KI?", 341 "continuousLocalization": "Kontinuierliche Lokalisierung", 342 "fileFormats": "Dateiformate", 343 "docs": "Docs", 344 "i18next": "i18next", 345 "i18nLibrary": "i18n-Bibliothek", 346 "javascriptLocalization": "JavaScript-Lokalisierung", 347 "websiteLocalizationServices": "Website-Lokalisierung", 348 "softwareLocalizationService": "Software-Lokalisierung", 349 "euAccessibilityAct": "EU Accessibility Act", 350 "forYourTeam": "Für Ihr Team", 351 "multiTenant": "Multi-Tenant", 352 "blog": "Blog", 353 "caseStudies": "Fallstudien", 354 "security": "Sicherheit", 355 "ourPhilosophy": "Unsere Philosophie", 356 "compareCompetitors": "Wettbewerbsvergleich", 357 "swissMadeTms": "Swiss-made TMS", 358 "terms": "AGB", 359 "privacyPolicy": "Datenschutz", 360 "dpa": "AVV", 361 "ccpa": "CCPA", 362 "support": "Support" 363 }, 364 "i18nLibraryLine": "<0>i18next</0> oder eine andere <1>i18n-Bibliothek</1>", 365 "aiLine": "<0>KI</0> â <1>Warum nicht einfach KI?</1>", 366 "copyright": "© {{year}} inweso GmbH. Alle Rechte vorbehalten.", 367 "social": { 368 "emailTitle": "E-Mail", 369 "emailAria": "E-Mail an [email protected]", 370 "xTitle": "X", 371 "xAria": "Locize auf X", 372 "facebookTitle": "Facebook", 373 "facebookAria": "Locize auf Facebook", 374 "youtubeTitle": "YouTube", 375 "youtubeAria": "Locize auf YouTube", 376 "instagramTitle": "Instagram", 377 "instagramAria": "Locize auf Instagram" 378 } 379 } 380} 381`,Ls=`{ 382 "meta": { 383 "title": "Kunden - Locize", 384 "description": "Erfahren Sie von über 100 Teams â darunter ABB, Schweizerisches Rotes Kreuz und ZKB â wie Locize ihren Lokalisierungs-Workflow optimiert hat. Fallstudien und Erfahrungsberichte." 385 }, 386 "marqueeTitle": "Vertrauen von führenden Produkt-Unternehmen", 387 "hero": { 388 "heading": "Kunden-Erfolgsstories", 389 "subtitle": "Hören Sie, was unsere Kunden zu sagen haben." 390 }, 391 "partnerStories": { 392 "headingPrefix": "Partner-", 393 "headingAccent": "Stories", 394 "subtitle": "Praxis-Lokalisierungs-Stories aus der Community.", 395 "readStory": "Story lesen", 396 "items": [ 397 { 398 "title": "Die Bedeutung mehrsprachiger Kommunikation an Schulen: ein globales Publikum erreichen", 399 "text": "Sehen Sie, wie Locize Bildungseinrichtungen ermöglicht, ihre mehrsprachigen Inhalte mühelos zu kuratieren und zu aktualisieren â um sich einem weltweiten Publikum optimal zu präsentieren." 400 }, 401 { 402 "title": "Lokalisierung bei Immersive Communities", 403 "text": "Wie Immersive Communities Locize zur Verwaltung der Lokalisierung nutzt.", 404 "extraLinkText": "Lesen Sie auch die ganze Story, wie Mario dieses soziale Netzwerk in 4 Jahren als Solo-Entwickler aufgebaut hat." 405 }, 406 { 407 "title": "Lokalisierung bei Networkme", 408 "text": "Wie Networkme mindestens 20 % produktiver wurde?\\n\\nSehen Sie, wie Networkme seine Copywriter befähigt, in dem Tempo zu arbeiten, das sie erwarten." 409 }, 410 { 411 "title": "Wie wir die in Next.js geschriebene Avocode-Website mit dem i18next-Paket übersetzt haben", 412 "text": "Wie übersetzt man eine Website, die sich ständig ändert?" 413 }, 414 { 415 "title": "ReactIntl + Namespaces + Locize", 416 "text": "Wie ReactIntl zusammen mit Locize Ihnen bei Internationalisierungs- und Lokalisierungsaufgaben in Ihrem Projekt hilft." 417 }, 418 { 419 "title": "Lokalisierung als Service mit Locize", 420 "text": "Sie verwalten Lokalisierungen in Word? Excel? JSON? XML? Notepad? Glauben Sie es oder nicht â wir haben alles ausprobiert." 421 } 422 ] 423 }, 424 "testimonials": { 425 "headingPrefix": "Kunden-", 426 "headingAccent": "stimmen", 427 "subtitle": "Hören Sie, was unsere Kunden zu sagen haben!", 428 "tryLocize": "Locize testen" 429 } 430} 431`,Rs=`{ 432 "meta": { 433 "title": "EU Accessibility Act und Lokalisierung: mehrsprachige Compliance für digitale Produkte", 434 "description": "Der EU Accessibility Act (Richtlinie 2019/882) wird seit 28. Juni 2025 durchgesetzt. Locize übernimmt die mehrsprachige Seite: CDN-Updates, Review-Workflow, Audit-Log, Glossar, KI-Ãbersetzung mit Review." 435 }, 436 "hero": { 437 "badge": "Durchsetzung seit 28. Juni 2025", 438 "h1Prefix": "EU Accessibility Act: ", 439 "h1Accent": "mehrsprachige Compliance für digitale Produkte", 440 "p1Html": "<b>Der EU Accessibility Act</b> (Richtlinie (EU) 2019/882) fordert, dass auf dem EU-Markt platzierte digitale Produkte und Services für Menschen mit Behinderungen zugänglich sein müssen. Die Durchsetzung begann am <b>28. Juni 2025</b>. Die meisten SaaS-, E-Commerce-, Banking-, Telefonie-, Transport- und audiovisuellen Mediendienste-Unternehmen, die EU-Nutzer bedienen, fallen darunter.", 441 "p2": "Der EAA selbst fokussiert auf Barrierefreiheit, greift aber mit EU-Sprachregeln ineinander. Grenzüberschreitende digitale Produkte müssen Inhalte typischerweise in den Amtssprachen der bedienten EU-Märkte ausliefern und schnell aktualisieren, wenn Compliance-Probleme gemeldet werden.", 442 "p3Html": "<b>Locize übernimmt die mehrsprachige Seite</b>: CDN-ausgelieferte Ãbersetzungen (kein Redeployment für Compliance-Korrekturen), Review-Workflow für Legal-Freigabe, Pro-Schlüssel-Audit-Log für Compliance-Audits, Glossar und Styleguide für Terminologie-Konsistenz, KI-Ãbersetzung mit menschlichem Review für schnelle Abdeckung zusätzlicher EU-Sprachen.", 443 "ctaTrial": "Kostenlose Testversion starten", 444 "ctaChecklist": "Compliance-Checkliste ansehen", 445 "swissBadge": "Swiss-made TMS · EU-nahe Daten-Residenz", 446 "gdprBadge": "DSGVO-konform", 447 "imageAlt": "Locize Review-Workflow â Legal- und Accessibility-Freigabe für übersetzte Inhalte", 448 "imageCaption": "Der Locize Review-Workflow: Legal- oder Accessibility-Prüfer können jede Ãbersetzung vor dem Live-Gang genehmigen." 449 }, 450 "whatIs": { 451 "heading": "Was sich am 28. Juni 2025 geändert hat", 452 "subtitle": "Die Richtlinie (EU) 2019/882 ist nach einer 6-jährigen Ãbergangsfrist in Kraft getreten. Strafen sind nun aktiv.", 453 "coversTitle": "Was der EAA abdeckt", 454 "coversItems": [ 455 "E-Commerce-Websites und -Apps", 456 "Banking und Finanzdienstleistungen (Verbraucher)", 457 "Telefonie: Stimme + Smartphone-Hersteller",
458 "E-Reader, E-Books und audiovisuelle Mediendienste", 459 "Transport: Fahrgastinfo, Ticketautomaten", 460 "Computer, Smartphones und Ticketing-Systeme", 461 "Selbstbedienungs-Terminals (Geldautomaten, Ticket-Verkauf)" 462 ], 463 "whoMustTitle": "Wer einhalten muss", 464 "whoMustP1Html": "Jedes Unternehmen (in oder ausserhalb der EU), das erfasste Produkte oder Services auf dem EU-Markt platziert. Die Mikrounternehmen-Befreiung (weniger als 10 Mitarbeiter UND unter 2 Mio. ⬠Jahresumsatz) gilt nur für die <b>Service</b>-Anforderungen, nicht für Produktanforderungen.", 465 "whoMustP2": "Die meisten SaaS-, E-Commerce-, FinTech- und Digital-Media-Unternehmen, die EU-Nutzer bedienen, fallen darunter. Nationale Aufsichten (Frankreichs ARCOM, Deutschlands BFIT-Bund, Italiens AgID, etc.) haben begonnen, Bescheide auszustellen.", 466 "penaltiesTitle": "Strafen (mitgliedsstaatlich definiert)", 467 "penaltiesP1": "Jeder EU-Mitgliedsstaat definiert seine eigene Durchsetzung. Strafen umfassen typischerweise: umsatzproportionale Bussgelder, Marktrücknahme nicht konformer Produkte und verpflichtende Sanierungspläne. Reputationsrisiko ist signifikant; Durchsetzungs-Bescheide sind typischerweise öffentlich." 468 }, 469 "language": { 470 "heading": "Wo mehrsprachige Inhalte in die EAA-Compliance passen", 471 "subtitle": "Der EAA fokussiert auf Barrierefreiheit (Alt-Text, Untertitel, Tastatur-Navigation, Screen-Reader-Kompatibilität), existiert aber nicht in Isolation.", 472 "whyTitle": "Warum Mehrsprachigkeit hier zählt", 473 "whyP1Html": "Barrierefreiheit setzt <b>Inhalt-in-der-Nutzersprache</b> voraus. Ein Screen Reader kann englische Copy nicht für einen polnischen Nutzer zugänglich machen; Untertitel in einer Fremdsprache sind keine Barrierefreiheit.", 474 "whyP2": "Mehrere überlappende EU-Regeln verlangen bereits lokal-sprachigen Inhalt:", 475 "whyBulletsHtml": [ 476 "<b>Verbraucherrechte-Richtlinie (2011/83/EU)</b>: Verbraucherinfo in der Mitgliedsstaat-Sprache", 477 "<b>Web Accessibility Directive (2016/2102)</b>: öffentliche Stellen, paralleler Geltungsbereich", 478 "Nationale Umsetzungen: Frankreichs Toubon-Gesetz, Belgiens Regional-Regeln, Italiens Stanca-Gesetz" 479 ], 480 "practiceTitle": "Was das in der Praxis bedeutet", 481 "practiceP1Html": "Wenn Sie grenzüberschreitend in der EU operieren, müssen Sie Ihr Produkt typischerweise in den Amtssprachen der bedienten Märkte ausliefern, plus Alt-Text, Untertitel und Barrierefreiheitserklärungen <b>in denselben Sprachen</b>.", 482 "practiceP2": "Wird ein Compliance-Problem identifiziert (durch einen Regulator, eine Kundenbeschwerde oder ein internes Audit), müssen Fixes schnell ausgeliefert werden. Da wird Translation-by-Redeployment schmerzhaft: ein Tippfehler in einer Barrierefreiheitserklärung sollte kein Release erfordern." 483 }, 484 "checklist": { 485 "heading": "Mehrsprachigkeits-Compliance-Checkliste", 486 "subtitle": "Praktische Fragen zur mehrsprachigen Seite Ihres EAA-Programms.", 487 "itemsHtml": [ 488 "<b>Welche EU-Märkte bedienen Sie?</b> Erfassen Sie die Amtssprachen jedes Marktes. Als Untergrenze reicht Englisch allein selten für Verbraucher-Services.", 489 "<b>Ist Ihre Barrierefreiheitserklärung in jeder Marktsprache verfügbar?</b> Die Erklärung selbst ist unter mehreren EU-Regeln erforderlich und muss in der Sprache des Nutzers vorliegen.", 490 "<b>Können Sie eine Ãbersetzungs-Korrektur ohne Deployment ausliefern?</b> Wenn ein Regulator ein Ãbersetzungsproblem flaggt, sollten Sie es in Minuten beheben können, nicht in einem Release-Zyklus.", 491 "<b>Haben Sie einen dokumentierten Review-Workflow für Ãbersetzungen?</b> Prüfer werden fragen, wer die lokalisierte Copy genehmigt hat und wann. Pro-Schlüssel-Audit-Log ist die Standardantwort.", 492 "<b>Sind Alt-Text, Untertitel, Fehlermeldungen und Formular-Labels übersetzt?</b> Diese werden leicht übersehen, wenn man Marketing-Seiten lokalisiert, aber nicht das Produkt-Chrome.", 493 "<b>Ist Terminologie über alle Sprachen konsistent?</b> âAkzeptierenâ / âZustimmenâ / âWeiterâ-Inkonsistenzen können den Barrierefreiheits-Flow für Screen-Reader-Nutzer brechen, die zwischen Seiten wechseln. Ein Projekt-Glossar ist der sauberste Weg, das durchzusetzen.", 494 "<b>Können Sie schnell eine Sprache hinzufügen, wenn ein neuer Markt Priorität wird?</b> Manuelle Ãbersetzungs-Programme dauern typischerweise Wochen; KI-Ãbersetzung mit menschlichem Review kann Tage sein." 495 ], 496 "footnote": "Das ist eine Mehrsprachigkeits-Checkliste. Barrierefreiheit selbst erfordert auch WCAG 2.2 AA-Konformität, EN 301 549-Konformität und produktspezifische Anforderungen; konsultieren Sie einen Accessibility-Spezialisten für das volle Bild." 497 }, 498 "mapping": { 499 "heading": "Wie Locize zu EAA-getriebenen Mehrsprachigkeits-Anforderungen passt", 500 "subtitle": "Jede Locize-Funktion bindet direkt an eine Mehrsprachigkeits-Compl
500iance-Anforderung an.", 501 "headers": ["Compliance-Anforderung", "Locize-Funktion"], 502 "rows": [ 503 ["Ãbersetzungs-Korrektur in Minuten ausliefern", "<a class=\\"brand-link\\" href=\\"{{cdnHref}}\\">CDN-ausgelieferte Ãbersetzungen</a>: Ãnderungen gehen ohne Redeployment live"], 504 ["Legal- / Accessibility-Freigabe für übersetzte Copy", "<a class=\\"brand-link\\" href=\\"{{reviewHref}}\\">Review-Workflow</a>: Akzeptieren/Ablehnen mit Diff-Visualisierung, Prüfer pro Sprache"], 505 ["Audit-Trail wer was wann geändert hat", "<a class=\\"brand-link\\" href=\\"{{historyHref}}\\">Pro-Schlüssel-Verlauf</a> + Audit-Log in höheren Plänen"], 506 ["Konsistente Terminologie über alle Sprachen", "<a class=\\"brand-link\\" href=\\"{{glossaryHref}}\\">Projekt-Glossar</a> + <a class=\\"brand-link\\" href=\\"{{styleguideHref}}\\">Styleguide</a> in KI-Prompts eingespeist"], 507 ["Schnell eine neue EU-Sprache hinzufügen", "<a class=\\"brand-link\\" href=\\"{{autoTransHref}}\\">Automatische Ãbersetzung</a> mit BYOK (OpenAI, Gemini, Mistral, DeepL) + menschliches Review"], 508 ["Multi-Tenant-Overrides (regionale Marken, White-Label)", "<a class=\\"brand-link\\" href=\\"{{multiTenantHref}}\\">Multi-Tenant</a>: Override-Ebene pro Tenant über einer gemeinsamen Basis"], 509 ["EU/CH-Daten-Residenz für Ãbersetzungsdaten", "Betrieben von einem <a class=\\"brand-link\\" href=\\"{{swissHref}}\\">Schweizer Unternehmen</a> mit Ãbersetzungsdaten in AWS Irland; siehe unsere <a class=\\"brand-link\\" href=\\"{{securityHref}}\\">Security-Seite</a>"] 510 ] 511 }, 512 "customers": { 513 "heading": "Teams, die bereits mehrsprachige EU-Produkte mit Locize ausliefern", 514 "moreCta": "Mehr Kunden-Stories" 515 }, 516 "faqSection": { 517 "heading": "Häufige Fragen", 518 "subtitle": "Fehlt Ihre Frage? E-Mail an [email protected]" 519 }, 520 "faqItems": [ 521 { "q": "Was ist der EU Accessibility Act?", "a": "Der EU Accessibility Act (EAA, Richtlinie (EU) 2019/882) ist eine EU-Richtlinie aus dem Jahr 2019, die fordert, dass auf dem EU-Markt platzierte digitale Produkte und Services für Menschen mit Behinderungen zugänglich sein müssen. Die Durchsetzung begann am 28. Juni 2025. Erfasste Produkte sind u. a. E-Commerce, Banking, Transport, Telefonie, E-Reader, audiovisuelle Mediendienste, Computer, Smartphones und Ticketing-Systeme. Nichteinhaltung führt zu mitgliedsstaatlich definierten Strafen, typischerweise Bussgeldern." }, 522 { "q": "Verlangt der EU Accessibility Act mehrsprachige Inhalte?", "a": "Der EAA selbst fokussiert auf Barrierefreiheit (Alt-Text, Untertitel, Tastatur-Navigation etc.), nicht auf Sprache. Aber er greift mit anderen EU-Regeln ineinander: die Web-Accessibility-Richtlinie für öffentliche Stellen, die EU-Verbraucherrechte-Richtlinie, die Verbraucherinformationen in der Sprache des Mitgliedsstaats verlangt, und nationale Umsetzungen, die oft sprachliche Pflichten ergänzen. In der Praxis benötigen SaaS- oder E-Commerce-Unternehmen mit mehreren EU-Märkten mehrsprachige Inhalte zusätzlich zu den strengen Accessibility-Anforderungen." }, 523 { "q": "Wer muss den EU Accessibility Act einhalten?", "a": "Jedes Unternehmen (mit Sitz in oder ausserhalb der EU), das erfasste Produkte oder Services auf dem EU-Markt platziert. Mikrounternehmen, die Services bereitstellen (weniger als 10 Mitarbeiter UND unter 2 Mio. ⬠Jahresumsatz), sind von den Service-Anforderungen befreit, aber nicht von den Produkt-Anforderungen. Die meisten SaaS-, E-Commerce-, FinTech- und Digital-Media-Unternehmen, die EU-Nutzer bedienen, fallen darunter." }, 524 { "q": "Wie unterstützt Locize EU-Accessibility-Act-Compliance?", "a": "Locize deckt die mehrsprachige Seite ab: CDN-ausgelieferte Ãbersetzungen, damit Compliance-Korrekturen ohne Redeployment live gehen, Review-Workflow für die Freigabe durch Legal / Accessibility-Experten, Pro-Schlüssel-Audit-Log für Compliance-Audits, Glossar und Styleguide für Terminologie-Konsistenz und KI-Ãbersetzung mit menschlichem Review für schnelle Abdeckung zusätzlicher EU-Sprachen." }, 525 { "q": "Welche Sprachen muss ich für EU-Accessibility-Compl
525iance abdecken?", "a": "Es gibt 24 offizielle EU-Sprachen. Die genaue Anforderung hängt davon ab, welche Märkte Sie bedienen und welche nationalen Sprachgesetze gelten. Als Untergrenze visieren die meisten grenzüberschreitenden SaaS-Anbieter die Sprachen der Märkte an, in die sie aktiv verkaufen â typischerweise eine Teilmenge aus: Deutsch, Französisch, Spanisch, Italienisch, Niederländisch, Polnisch, Portugiesisch, Schwedisch und Englisch als Fallback. Nationale Behörden (z. B. Frankreich, Belgien, das Quebec-geprägte Wallonien) setzen lokale Sprachanforderungen streng durch." }, 526 { "q": "Was passiert, wenn mein Produkt nicht konform ist?", "a": "Mitgliedsstaaten definieren ihre eigene Durchsetzung. Strafen umfassen typischerweise Bussgelder (proportional zum Unternehmensumsatz), Marktrücknahme nicht konformer Produkte und Reputationsschaden. Nationale Behörden haben Ende 2025 begonnen, Bescheide auszustellen. Für Service-Anbieter (vs. Produkthersteller) gibt es in einigen Szenarien zusätzliche Schonzeit bis 2030, aber die Kern-Durchsetzung begann am 28. Juni 2025." } 527 ], 528 "related": { 529 "linksHtml": "Verwandt: <a class=\\"brand-link\\" href=\\"{{websiteHref}}\\">Website-Lokalisierung</a> · <a class=\\"brand-link\\" href=\\"{{softwareHref}}\\">Software-Lokalisierung</a> · <a class=\\"brand-link\\" href=\\"{{swissHref}}\\">Swiss-made TMS</a> · <a class=\\"brand-link\\" href=\\"{{jsHref}}\\">JavaScript-Lokalisierung</a> · <a class=\\"brand-link\\" href=\\"{{securityHref}}\\">Sicherheit & Daten-Residenz</a>", 530 "footnote": "Diese Seite beschreibt die Mehrsprachigkeits-Seite der EAA-Compliance. Barrierefreiheit selbst (Alt-Text, Untertitel, Tastatur-Navigation, WCAG/EN 301 549-Konformität) erfordert spezialisiertes Tooling und Audits; konsultieren Sie einen Accessibility-Experten für ein vollständiges Compliance-Programm." 531 }, 532 "finalCta": { 533 "title": "Liefern Sie mehrsprachige EU-Produkte ohne Redeployments aus.", 534 "subtitle": "14 Tage kostenlos. Keine Kreditkarte erforderlich.", 535 "primaryLabel": "Kostenlos registrieren" 536 } 537} 538`,zs=`{ 539 "meta": { 540 "title": "Für Ihr Team - Locize", 541 "description": "Locize für Entwickler, Manager und Ãbersetzer: Tools, die jede Rolle wirklich nutzen will." 542 }, 543 "hero": { 544 "h1": "Die Ãbersetzungs-Plattform, die Ihr ganzes Team tatsächlich nutzen kann", 545 "subtitle": "Für Entwickler, Manager und Ãbersetzer.", 546 "roles": [ 547 { "role": "Entwickler", "target": "developers", "desc": "Automatisieren Sie Ihren i18n-Workflow und bleiben Sie in der IDE." }, 548 { "role": "Manager", "target": "managers", "desc": "ROI verfolgen, Budgets verwalten und mit Zuversicht ausliefern." }, 549 { "role": "Ãbersetzer", "target": "translators", "desc": "Kontextreiche Tools und KI-unterstützte Workflows." } 550 ], 551 "viewFeatures": "Funktionen ansehen â", 552 "intro": "Nutzen Sie die Power von Locize für jede Teamrolle. Es optimiert die Zusammenarbeit zwischen Entwicklungs- und Ãbersetzungsteams.", 553 "subIntroHtml": "Als Tech-Team-Leader / Engineering Manager haben Sie eine Sorge weniger.<br />Es macht Engineering-Teams schneller, effizienter und spart insgesamt Geld. <a href=\\"https://youtu.be/lCuHSZvSiVg\\" target=\\"_blank\\" rel=\\"noreferrer\\">Sehen Sie sich an</a>, was Locize Ihnen bieten kann.<br /><a href=\\"{{trialHref}}\\" target=\\"_blank\\" rel=\\"noreferrer\\">Starten Sie die kostenlose Testversion</a>, richten Sie Ihr Locize-Projekt ein, vergleichen Sie es mit Ihrem bestehenden Prozess und validieren Sie es mit Ihren Teammitgliedern." 554 }, 555 "managers": { 556 "title": "Für Projekt- und Ãbersetzungs-Manager", 557 "subtitle": "Verantwortlichkeit, Transparenz und Speed-to-Market.", 558 "items": [ 559 { "title": "Globale Transparenz", "imageAlt": "Locize-Dashboard", "p1": "Verschaffen Sie sich vollständige Transparenz über Ihren globalen Footprint. Vom High-Level-Dashboard bis zu einzelnen Dateien haben Sie die Echtzeit-Daten, die Sie brauchen, um mit Zuversicht auszuliefern und internationale Deadlines ohne Rätselraten zu treffen." }, 560 { "title": "Datengetriebene Strategie", "imageAlt": "Locize-Statistiken", "p1": "Machen Sie aus Lokalisierung â statt eines Kostenfaktors â einen Wachstumsmotor. Beobachten Sie Wortzahlen, Ãbersetzungs-Velocity und Entwickler-Aktivität, um Ihr Budget zu optimieren und den ROI bei der Expansion in neue Märkte zu verfolgen." }, 561 { "title": "Vollständige Audit-Logs & Verantwortlichkeit", "imageAlt": "Locize-Verlauf", "p1": "Pflegen Sie für jeden String eine klare Nachweiskette. Unsere detaillierten Verlaufs-Logs sorgen für Verantwortlichkeit und machen es einfach, Ãnderungen rückgängig zu machen â für ruhige Nerven in regulierten Branchen oder grossen Team-Umgebungen." }, 562 { "title": "Ãbersetzungen bestellen", "imageAlt": "Locize-Bestellung", "p1": "Während Sie Ihre Ãbersetzungen von Freelancern oder internen Mitarbeitern direkt in Locize anfertigen lassen können, haben Sie auch die Möglichkeit, Ãbersetzungen direkt aus Locize heraus zu bestellen.", "p2": "Aktuell können Sie direkt bei TextMaster oder BLEND bestellen." }, 563 { "title": "Halten Sie Ihr Team auf dem Laufenden", "imageAlt": "Locize-Benachrichtigung", "p1": "Halten Sie Ihr Team auf dem Laufenden, indem Sie unsere Slack-Benachrichtigungs-Integration aktivieren.", "p2": "Werden Sie benachrichtigt, wenn etw
563as Erwähnenswertes in Ihrem Lokalisierungs-Projekt passiert." } 564 ] 565 }, 566 "translators": { 567 "title": "Für Ãbersetzer", 568 "subtitle": "Effizienter arbeiten mit Locize.", 569 "items": [ 570 { "title": "Smart Translation Memory", "imageAlt": "Translation Memory", "p1": "Alle Vorteile eines Translation Memorys. Bereits erstellte Ãbersetzungen wiederverwenden. Verwendete Terminologie nachschlagen.", "p2": "Nehmen Sie Ihr Translation Memory mit, indem Sie es für SDL Trados oder andere Lokalisierungs-Tools exportieren." }, 571 { "title": "In-Context-Editing", "imageAlt": "In-Context-Editor", "p1": "Ãbersetzen Sie direkt in Ihrer Website / Anwendung. Jede Ãbersetzung ist nur einen Klick entfernt.", "p2": "Aus dem eigenen Kontext heraus zu übersetzen ist der beste Weg, den Kontext Ihrer Ãbersetzung zu verstehen." }, 572 { "title": "Konfigurierbarer Review-Workflow mit Genehmigung pro Sprache", "imageAlt": "Review-Workflow", "p1": "Sie können den Review-Workflow für bestimmte Sprachen aktivieren.", "p2": "So startet bei jeder Ãnderung einer Ãbersetzung ein Review-Workflow. Der tatsächliche Wert wird erst geändert, wenn jemand einen der Ãbersetzungs-Vorschläge akzeptiert." }, 573 { "titleHtml": "Maschinelle oder <a href=\\"{{aiHref}}\\">generative KI</a>-Ãbersetzungen", "imageAlt": "Maschinenübersetzung", "p1": "KI-Ãbersetzungen sind für viele Anwendungsfälle produktionsreif: interne Tools, technische Dokumentation und entwicklerorientierte Inhalte. Für markenkritische Inhalte bietet Locize den Review-Workflow zur Perfektionierung.", "p2": "Nutzen Sie maschinelle oder generative KI-Ãbersetzungen für Erstentwürfe und lassen Sie Ãbersetzer dort reviewen und verfeinern, wo es zählt." } 574 ] 575 }, 576 "developers": { 577 "title": "Für Entwickler", 578 "subtitle": "Weniger Zeit für Lokalisierung bedeutet mehr Zeit zum Coden.", 579 "items": [ 580 { "title": "Vollständige REST-API mit 60+ Endpoints", "imageAlt": "Locize-API", "p1": "Bauen Sie jede Integration gegen unsere API.", "p2": "Fügen Sie neue Ãbersetzungen hinzu, erstellen Sie neue Versionen und veröffentlichen Sie sie mit einem einfachen API-Aufruf auf unserem CDN." }, 581 { "title": "CLI-Tool", "imageAlt": "Locize-Commandline", "p1": "Integrieren Sie unser CLI-Tool in Ihren Build-Prozess.", "p2": "Laden Sie Ãbersetzungs-Dateien in jedem von Locize bereitgestellten Format über Ihre Commandline herunter.", "p3": "Synchronisieren Sie Ihre Ãbersetzungen mit Locize, ohne Ihren Code ändern zu müssen." }, 582 { "title": "Neue Segmente direkt aus dem Code", "imageAlt": "Locize-Code", "p1": "Segmente müssen nicht mehr manuell hinzugefügt werden. Verlassen Sie nie wieder Ihren Editor, um Ãbersetzungen hinzuzufügen.", "p2": "Wenn Sie z. B. i18next zur Internationalisierung in Ihrem Code instrumentieren, werden neue Segmente automatisch zu Ihrem Locize-Projekt hinzugefügt." }, 583 { "title": "Parallele Entwicklung & Ãbersetzung", "imageAlt": "Locize-Versionierung", "p1": "Lassen Sie sich von Ãbersetzungen nicht mehr im Release-Zyklus blockieren. Versionierung erlaubt Ihren Entwicklern, v2.0-Code auszuliefern, während Ãbersetzer parallel v1.1-Content finalisieren.", "p2": "Keine Merge-Konflikte mehr in JSON-Dateien. Stattdessen ein reibungsloser, unabhängiger Workflow für jede Rolle.", "p3Html": "Bauen Sie ein Multi-Tenant-Produkt? <a class=\\"text-white/90 underline\\" href=\\"{{multiTenantHref}}\\">Pro-Kunde-Ãbersetzungs-Overrides</a> lassen jeden Ihrer Kunden Sprache anpassen, ohne Ihr Setup zu forken." } 584 ] 585 }, 586 "security": { 587 "title": "Enterprise-Sicherheit & Zugriffskontrolle", 588 "subtitle": "Die Kontrollen, die Ihr Security-Team verlangt.", 589 "items": [ 590 { "title": "SAML SSO", "desc": "Enterprise-Single-Sign-On über Ihren Identity Provider. Verfügbar ab Professional." }, 591 { "title": "Projektweite MFA-Pflicht", "desc": "Erzwingen Sie Multi-Faktor-Authentifizierung für alle Nutzer eines Projekts, durchgesetzt auf Projekt-Ebene." }, 592 { "title": "WebAuthn (passwortlos)", "desc": "Hardware-Key- und biometrisches Login für phishing-resistente Authentifizierung." }, 593 { "title": "Rollenbasierte Zugriffskontrolle", "desc": "Berechtigungen pro Version, pro Sprache und pro Namespace. Nutzer sehen nur, was sie brauchen." }, 594 { "title": "Berechtigungs-Vererbung", "desc": "Rollen fliessen von Eltern- zu Kind-Projekten in Multi-Tenant-Setups. Konsistente Zugriffskontrolle über alle Tenants hinweg." }, 595 { "title": "DSGVO-konforme Verarbeitung", "desc": "Daten werden DSGVO-konform verarbeitet. Schweizer Unternehmen mit transparentem Umgang mit Daten." } 596 ],
597 "cta": "Sicherheits-Details â" 598 }, 599 "support": { 600 "heading": "Bereit, Ihr Team auszurichten â oder brauchen Sie Hilfe beim Einstieg?", 601 "subtitle": "Lassen Sie Ihre Fragen zur Locize-Integration von einem Teammitglied beantworten.", 602 "cta": "Kontaktieren Sie uns!" 603 } 604} 605`,Bs=`{ 606 "meta": { 607 "title": "Locize â Lokalisierungs- und Ãbersetzungsmanagement-Plattform", 608 "description": "Locize verbindet Entwicklung und Ãbersetzung. Kontinuierliche Lokalisierung für Entwickler, Ãbersetzer und Produktteams. Entwickelt von den Machern von i18next." 609 }, 610 "marqueeTitle": "Vertrauen von Teams weltweit", 611 "hero": { 612 "badge": "Eine Plattform, um Ihr gesamtes Produkt zu lokalisieren", 613 "rotatingHeadlines": [ 614 "Ãbersetzungen ausliefern,\\nohne Ihre App\\nneu zu deployen", 615 "Das native Ãbersetzungs-\\nBackend für i18next", 616 "Ihre KI-Ãbersetzungen,\\ngeprüft und konsistent,\\nlive ohne Deployment.", 617 "Kontinuierliche Lokalisierung\\nfür Entwickler\\nund Ãbersetzer" 618 ], 619 "subtitle": "Locize ist eine Lokalisierungsplattform, die Ihren Code und Ihre i18n-Einrichtung mit Ãbersetzern verbindet und Ãbersetzungs-Updates kontinuierlich ausliefert â ohne Releases zu blockieren.", 620 "builtByPrefix": "Entwickelt von den Machern von ", 621 "builtByLink": "i18next", 622 "builtByDot": ".", 623 "worksWithPrefix": "Funktioniert mit ", 624 "worksWithLink": "jeder i18n-Bibliothek", 625 "worksWithSuffix": " und jedem Workflow.", 626 "swissNoticeHtml": "ð¨ð Bereitgestellt von einem <a class=\\"brand-link\\" href=\\"{{swissHref}}\\">Schweizer Unternehmen</a>.", 627 "bullets": [ 628 "Automatisieren Sie Ihren Workflow und bringen Sie globale Produkte schneller auf den Markt.", 629 "Entwickler bleiben in Code/CI; Ãbersetzer arbeiten in einer dedizierten Oberfläche.", 630 "Review-Workflows und Versionen: Transparenz für Engineering-Leads, Produkt und Lokalisierung.", 631 "Auslieferung per CDN/API â Ãbersetzungs-Updates erfordern kein vollständiges Redeployment." 632 ], 633 "primaryCta": "Kostenlos registrieren", 634 "secondaryCta": "So funktioniert's", 635 "docsLink": "Docs", 636 "demoLink": "Demo ansehen", 637 "servicesLink": "Services", 638 "trialBadge": "14 Tage testen · alle Funktionen · keine Kreditkarte", 639 "planBadgeHtml": "Danach <a class=\\"link\\" href=\\"{{pricingHref}}#plan=fixed\\">Free</a> (für immer) oder einen kostenpflichtigen Tarif wählen", 640 "imageAlt": "Locize: Brücke zwischen Lokalisierung und Entwicklung", 641 "bridgeCaption": "Schliessen Sie die Lücke zwischen Entwicklern, Product Managern und Ãbersetzern.", 642 "roleCards": [ 643 { "id": "developers", "title": "Für Entwickler", "desc": "CLI, API und native i18next-Integration. Kein manuelles JSON-Datei-Management." }, 644 { "id": "managers", "title": "Für Manager", "desc": "Verbrauchsbasierte Kostenkontrolle, Review-Workflows und Projekt-Health-Metriken." }, 645 { "id": "translators", "title": "Für Ãbersetzer", "desc": "KI-gestütztes CAT-Tool, In-Context-Editor und Glossar-Verwaltung." } 646 ] 647 }, 648 "whatIsLocize": { 649 "title": "Was Locize ist", 650 "titleSmall": "(in einer Minute)", 651 "intro": "Locize verbindet Engineering und Lokalisierung: Schlüssel fliessen aus Ihrer Codebase, Ãbersetzer arbeiten in einer UI, und Ihre App erhält Updates kontinuierlich.", 652 "steps": [ 653 { "label": "Sync", "title": "Von Code zu Locize", "desc": "Senden Sie neue Schlüssel und Source-Strings per CLI/CI oder verbinden Sie sich direkt aus Ihrer i18n-Einrichtung." }, 654 { "label": "Ãbersetzen / Review", "title": "UI + Workflow", "desc": "Ãbersetzer und Reviewer arbeiten in einer dedizierten Oberfläche mit Rollen, Review-Schritten und Qualitätsprüfungen." }, 655 { "label": "Deliver", "title": "Runtime-Updates", "desc": "Ãbersetzungen werden per CDN/API ausgeliefert â Updates müssen nicht auf ein vollständiges Redeployment warten." } 656 ], 657 "typicalFlowTitle": "Typischer Ablauf", 658 "typicalFlowSubtitle": "Von fehlenden Schlüsseln zur Auslieferung zur Laufzeit", 659 "flowSteps": ["App instrumentieren", "fehlende Schlüssel automatisch senden", "Ãbersetzungs-Workflow", "App holt Updates"], 660 "flowWorkflowSubsteps": ["Auto-Ãbersetzung (KI/MT)", "Review & Korrektur", "Auto-Veröffentlichung"], 661 "roleCards": [ 662 { "title": "Für Entwickler", "desc": "Einmal integrieren, Sync in CI automatisieren und Schluss mit manuellem Datei-Jonglieren." }, 663 { "title": "Für Engineering-Leads", "desc": "Reduzieren Sie Release-Risiken durch Transparenz, Rollen und versionierte Auslieferung." }, 664 { "title": "Für Lokalisierungsteams", "desc": "Ãbersetzen Sie in einer UI mit Review-Schritten, QA-Prüfungen und Kontext." } 665 ] 666 }, 667 "socialProof": { 668 "title": "Passt in Ihren Stack", 669 "subtitle": "Halten Sie Schlüssel und Releases in Code/CI. Lassen Sie Ãbersetzer und Reviewer in einer dedizierten UI arbeiten. Liefern Sie Updates per CDN/API aus, wenn Sie bereit sind.", 670 "badges": ["i18next", "CI/CD", "Review-Workflow", "CDN/API-Auslieferung", "KI/MT-Vorübersetzung"], 671 "builtByLabel": "Entwickelt von den Machern von", 672 "worksWithAny": "Funktioniert mit jeder i18n-Bibliothek und jedem Workflow.", 673 "integrationHubTitle": "Integriert sich in Ihren bestehenden Workflow", 674 "integrationHubIntroHtml": "Egal ob Sie i18next, <a class=\\"brand-link\\" href=\\"{{i18nLibsHref}}\\">andere i18n-Bibliotheken</a>, Web-Frameworks, Mobile-SDKs oder einfache API-Aufrufe nutzen â Locize ist die Single Source of Truth für Ihre Ãbersetzungen.", 675 "integrations": [ 676 { "name": "i18next" }, 677 { "name": "React" }, 678 { "name": "Vue" }, 679 { "name": "Angular" }, 680 { "name": "Next.js" }, 681 { "name": "Node.js" }, 682 { "name": "CLI / CI-CD" }, 683 { "name": "API" }, 684 { "name": "Figma-Plugin" }, 685 { "name": "Mobile (iOS/Android)" }, 686 { "name": "Verschiedene Dateiformate", "href": "/file-formats" }, 687 { "name": "PHP / Python / Java / .NET" } 688 ], 689 "quickLinks": [ 690 { "label": "i18next", "href": "/i18next", "kind": "outline" }, 691 { "label": "Docs", "href": "/docs", "kind": "ghost" }, 692 { "label": "So funktioniert's", "href": "/how-it-works", "kind": "ghost" }, 693 { "label": "KI-gestützte Ãbersetzung", "href": "/ai", "kind": "ghost" }, 694 { "label": "KI-Assistent via MCP verbinden", "href": "/docs/integration/mcp", "kind": "ghost" } 695 ] 696 }, 697 "developerQuickstart": {
698 "title": "Schnelle praktische Evaluation", 699 "titleSmall": "(mit einem i18next-Beispiel)", 700 "intro": "Möchten Sie den Integrationspfad schnell überprüfen? Hier ist eine praktische Setup-Skizze und der kürzeste Weg zu einem funktionierenden Projekt.", 701 "quickstartLabel": "Quickstart", 702 "quickstartTitle": "Verbinden Sie Ihre App & liefern Sie Ãbersetzungen kontinuierlich aus", 703 "stepsHtml": [ 704 "Melden Sie sich für eine 14-tägige Testversion mit allen Funktionen an â keine Kreditkarte nötig. Während oder nach der Testphase wählen Sie den <a class=\\"brand-link\\" href=\\"{{pricingHref}}#plan=fixed\\">Free-Plan</a> (für immer) oder einen kostenpflichtigen Tarif, um Ihr Projekt zu behalten.", 705 "Verbinden Sie Ihre i18n-Einrichtung (i18next ist die häufigste)", 706 "Synchronisieren Sie Ressourcen per CLI/CI oder liefern Sie per CDN aus", 707 "Lassen Sie Ãbersetzer in der UI oder im In-Context-Editor arbeiten" 708 ], 709 "primaryCta": "Kostenloses Projekt erstellen", 710 "secondaryCta": "Docs öffnen", 711 "shortcutsLabel": "Shortcuts", 712 "shortcutLinks": [ 713 { "label": "i18next-Integration", "href": "/i18next" }, 714 { "label": "JavaScript-Lokalisierungs-Guide", "href": "/javascript-localization" }, 715 { "label": "Services", "href": "/services" }, 716 { "label": "Preise", "href": "/pricing" } 717 ], 718 "codeLabel": "Code", 719 "codeTitle": "Typische i18next-Einrichtung (Backend)", 720 "codeIntro": "Verwenden Sie Locize als Ihr i18next-Backend und halten Sie Ãbersetzungen synchron, ohne Dateien manuell zu verwalten.", 721 "codeFilename": "i18next (Beispiel)", 722 "alreadyHaveTitle": "Haben Sie bereits ein i18next-Projekt?", 723 "alreadyHaveIntro": "Führen Sie dies im Repo-Root aus, keine Konfiguration nötig.", 724 "fullPathLink": "Den vollständigen Migrationspfad ansehen â", 725 "demoVideoTitle": "Locize-Demo: Workflow für kontinuierliche Lokalisierung" 726 }, 727 "whyChoose": { 728 "prefix": "Warum unsere Kunden sich für", 729 "brand": "Locize entschieden haben", 730 "intro": "Eine Lokalisierungsplattform, die Produkt, Engineering und Ãbersetzer verbindet, ohne Release-Reibung zu erzeugen.", 731 "benefitsLabel": "Vorteile", 732 "bullets": [ 733 "Fehlende Schlüssel automatisch aus i18next synchronisieren â kein manueller Export nötig", 734 "CLI und GitHub Actions für CI/CD-Pipelines", 735 "Pauschalpreis pro Monat â keine Ãberraschungen pro Nutzer oder Wort", 736 "Integrationen & CI/CD-Kompatibilität", 737 "Review-Workflow mit rollenbasiertem Zugriff und Audit-Trail", 738 "Echtzeit-Updates per CDN" 739 ], 740 "experienceLabel": "Kundenerfahrung", 741 "experienceTitle": "Zeit sparen und Ihren Ãbersetzungsprozess verschlanken", 742 "whyLinkLabel": "Warum Locize", 743 "quote": "Wir haben manuelle Schritte reduziert und Lokalisierung zu einem verlässlichen Teil unserer Delivery-Pipeline gemacht. Updates gehen kontinuierlich raus, ohne Releases zu blockieren.", 744 "attributionName": "Engineering-Team, Locize-Kunde", 745 "attributionContextHtml": "<a class=\\"brand-link\\" href=\\"{{continuousHref}}\\">Kontinuierliche Lokalisierung</a> als Workflow", 746 "badges": ["CI", "CDN", "QA"] 747 }, 748 "featureGrid": { 749 "title": "Alles, was Sie brauchen, um Lokalisierung wie Engineering zu betreiben", 750 "subtitle": "Ein moderner Ãbersetzungsmanagement-Workflow, der in CI/CD passt und Teams ausgerichtet hält.", 751 "items": [ 752 { "title": "Ãbersetzungsschlüssel synchron halten", "body": "Fehlende Schlüssel erkennen, neue Segmente automatisch übertragen und Source-Strings über Releases hinweg konsistent halten." }, 753 { "title": "Ãbersetzungen ohne Redeploys ausliefern", "body": "Jedes andere TMS gibt Ihnen eine Datei. Locize gibt Ihnen eine URL. Veröffentlichen Sie Updates über das Locize-CDN â Ihre Apps holen die neuesten Inhalte sofort, ohne Build, ohne Deploy." }, 754 { "title": "Für Produktteams gemacht", "body": "Geben Sie Ãbersetzern und Reviewern eine dedizierte UI, während Entwickler in ihrem bestehenden Workflow weiterarbeiten." }, 755 { "title": "150+ Sprachen, 50 Versionen und Tenant-Overrides â alles aus einem Projekt", "body": "Unterstützen Sie mehrere Umgebungen, Versionen und Sprachen mit einem Prozess, der mit Ihrem Produkt wächst." }, 756 { "title": "Klare Qualitätsprüfungen", "body": "Ãnderungen reviewen, Vollständigkeit validieren und Regressionen mit strukturierten Workflows reduzieren." }, 757 { "title": "Verschiedene Dateiformate", "bodyHtml": "XLIFF, Gettext, Android-Strings, RESX, Fluent und mehr importieren. In jedes Format exportieren, das Ihr Stack benötigt. <a class=\\"link\\" href=\\"{{fileFormatsHref}}\\">Alle Formate ansehen â</a>" }, 758 { "title": "Pro-Kunde-Ãbersetzungs-Overrides", "bodyHtml": "SaaS-Teams können jedem Kunden eine eigene Ãbersetzungsebene geben, ohne separate Projekte zu verwalten. <a class=\\"link\\" href=\\"{{multiTenantHref}}\\">Mehr über Multi-Tenant â</a>" },
759 { "title": "Locize aus Ihrem KI-Assistenten verwenden", "bodyHtml": "Kein weiterer gebrandeter KI-Agent: eine Plattform, die Sie kontrollieren, mit Ihren eigenen LLM-Keys. Verbinden Sie Claude, Cursor oder VS Code via <a class=\\"link\\" href=\\"{{mcpHref}}\\">Locize MCP-Server</a> mit Ihren Ãbersetzungen und verwalten Sie sie, ohne Ihre Entwicklungsumgebung zu verlassen." }, 760 { "title": "In unter 10 Minuten loslegen", "body": "Klein anfangen: ein Projekt, ein paar Namespaces und ein wiederholbarer Prozess, den Sie später standardisieren können." } 761 ] 762 }, 763 "aiPositioning": { 764 "title": "KI übersetzt. Locize sorgt dafür, dass es stimmt.", 765 "intro": "KI-Tools sind exzellent darin, Ãbersetzungen zu generieren. Was ihnen entgeht, ist alles drumherum: die 15 Keys, die Sie im letzten Sprint hinzugefügt haben, dass âdriveâ in Ihrer App Speicher bedeutet, der Ton, den ein Reviewer schon dreimal korrigiert hat. Locize legt sich um Ihre KI, mit Locize AI oder Ihren eigenen LLM-Schlüsseln: Es prüft, reviewt und versioniert, was die KI produziert, und liefert das Ergebnis ohne Deployment aus.", 766 "ctaLabel": "Warum nicht einfach KI?" 767 }, 768 "testimonials": { 769 "title": "Verlassen Sie sich nicht nur auf unser Wort", 770 "subtitle": "Teams nutzen Locize, um Ãbersetzungsarbeit aus dem kritischen Pfad zu nehmen.", 771 "moreCta": "Weitere Kundenstories" 772 }, 773 "faq": { 774 "title": "Häufig gestellte Fragen", 775 "subtitle": "Schnelle Antworten zur Evaluierung von Locize.", 776 "docsCta": "Zur Dokumentation", 777 "comparePromptHtml": "Suchen Sie einen Vergleich? <a href=\\"{{compareHref}}\\">Wie Locize im Vergleich zu Alternativen abschneidet â</a>", 778 "items": [ 779 { "q": "Wofür wird Locize verwendet?", "aHtml": "<p class=\\"m-0\\">Locize hilft Teams, Ãbersetzungen zu verwalten und sie kontinuierlich auszuliefern. Entwickler integrieren es in ihre i18n-Einrichtung, während Ãbersetzer und Reviewer in einer dedizierten UI arbeiten.</p>" }, 780 { "q": "Kann ich Locize mit i18next integrieren?", "aHtml": "<p class=\\"m-0\\">Ja. Locize wird häufig zusammen mit i18next-Workflows verwendet â einschliesslich Automatisierung für fehlende Schlüssel und Ressourcen-Synchronisation.</p>" }, 781 { "q": "Muss ich für Ãbersetzungs-Updates neu deployen?", "aHtml": "<p class=\\"m-0\\">In der Regel nein. Ãbersetzungen können per Locize-CDN ausgeliefert werden, sodass Apps die neuesten Versionen ohne vollständiges Redeployment abrufen können.</p>" }, 782 { "q": "Wo soll ich anfangen?", "aHtml": "<p class=\\"m-0\\">Starten Sie mit der Einführung in der Dokumentation und verbinden Sie Locize mit Ihrer i18n-Einrichtung. Anschliessend können Sie bestehende Schlüssel übertragen oder fehlende Schlüssel automatisch erkennen und synchronisieren lassen.</p>" } 783 ] 784 }, 785 "finalCta": { 786 "title": "Heute mit der Lokalisierung beginnen", 787 "subtitle": "Projekt erstellen, i18n-Einrichtung verbinden und Ãbersetzungen kontinuierlich veröffentlichen.", 788 "trialBadge": "Kostenlose Testversion: keine Kreditkarte erforderlich", 789 "planBadgeHtml": "<a class=\\"link mr-1\\" href=\\"{{pricingHref}}#plan=fixed\\">Free-Plan</a>verfügbar", 790 "demoQuestionHtml": "Suchen Sie ein Demo-Gespräch? <a class=\\"no-underline text-white/70 hover:text-white/100\\" href=\\"{{whyNoSalesHref}}\\">Warum wir Code lieber haben als Calls.</a>", 791 "primaryCta": "Kostenlos registrieren", 792 "secondaryCta": "Docs lesen" 793 } 794} 795`,Vs=`{ 796 "meta": { 797 "title": "So funktioniert's - Locize", 798 "description": "Von dateibasierten Workflows bis zu vollständig automatisierter kontinuierlicher Lokalisierung â sehen Sie, wie Locize sich in Ihren Stack integriert." 799 }, 800 "hero": { 801 "heading": "So funktioniert's", 802 "subtitleHtml": "Nutzen Sie Locize so, wie es zu Ihrem Team passt: von klassischen Datei-Workflows bis zu vollständig automatisierter kontinuierlicher Lokalisierung. Sehen Sie es angewendet auf <a class=\\"brand-link\\" href=\\"{{websiteHref}}\\">Website-Lokalisierung</a>, <a class=\\"brand-link\\" href=\\"{{softwareHref}}\\">Software-Lokalisierung</a> und den <a class=\\"brand-link\\" href=\\"{{jsHref}}\\">JavaScript-Stack</a>." 803 }, 804 "fileBased": { 805 "title": "Dateibasierte Verwaltung", 806 "subtitle": "Für Teams, die manuelle Kontrolle über ihre Ãbersetzungs-Assets bevorzugen.", 807 "imageAlt": "Locize-Editor", 808 "featureTitle": "Klassischer Import / Export", 809 "p1": "Arbeiten Sie mit den Formaten, die Sie kennen. Laden Sie Ihre JSON-, XLIFF- oder Gettext-Dateien hoch, verwalten Sie sie in unserem hochproduktiven Editor und exp
809ortieren Sie sie zurück in Ihr Repository.", 810 "p2Html": "<strong>Der Vorteil:</strong> Vollständige manuelle Kontrolle mit der Power des Smart Translation Memory von Locize und <a href=\\"{{aiHref}}\\">KI-unterstützten Vorschlägen</a>.", 811 "p3Html": "Erfahren Sie mehr über die <a href=\\"{{formatsHref}}\\" target=\\"_blank\\" rel=\\"noreferrer\\">unterstützten Formate</a>." 812 }, 813 "automated": { 814 "title": "Automatisierte Pipelines", 815 "subtitle": "Synchronisieren Sie Ihre Lokalisierung mit Ihrem CI/CD- oder Git-Workflow.", 816 "imageAlt": "Locize-CLI", 817 "featureTitle": "CLI, API und GitHub Actions", 818 "p1Html": "Entfernen Sie den âmenschlichen Mittelsmannâ. Nutzen Sie unsere <a href=\\"{{apiHref}}\\" target=\\"_blank\\" rel=\\"noreferrer\\">API</a>, <a href=\\"https://github.com/locize/locize-cli#synchronize-locize-with-your-repository-or-any-other-local-directory\\" target=\\"_blank\\" rel=\\"noreferrer\\">das CLI-Sync-Tool</a>, die <a href=\\"https://github.com/locize/download\\" target=\\"_blank\\" rel=\\"noreferrer\\">Download-Action</a> oder die <a href=\\"https://github.com/locize/sync\\" target=\\"_blank\\" rel=\\"noreferrer\\">Sync-Action</a>, um Ãbersetzungen synchron zu halten und die neuesten Dateien bei jedem Build herunterzuladen.", 819 "p2Html": "<strong>Der Vorteil:</strong> Ihre Codebase und Ãbersetzungen sind immer synchron, ohne dass ein Entwickler je wieder manuell eine Datei herunterladen muss." 820 }, 821 "continuous": { 822 "title": "Kontinuierliche Lokalisierung", 823 "subtitle": "Der âHands-offâ-Ansatz für maximale Geschwindigkeit.", 824 "imageAlt": "Locize InContext", 825 "featureTitle": "Live-Sync per CDN", 826 "p1": "Das Zero-Deployment-Setup: Ãbersetzungen gehen per CDN live, ohne Code-Ãnderungen. Ihre App verbindet sich direkt mit dem Locize-CDN.", 827 "bulletsHtml": [ 828 "<strong>Auto-Discovery:</strong> Neuer Text in Ihrem Code wird automatisch zu Locize hinzugefügt.", 829 "<strong>Sofortige Veröffentlichung:</strong> Ãbersetzer speichern eine Ãnderung, und sie ist sofort live in Ihrer App.", 830 "<strong>Zero Deployments:</strong> Copy aktualisieren, Tippfehler korrigieren oder Sprachen hinzufügen, ohne eine einzige Zeile Code zu ändern.", 831 "<strong>Usage-Tracking:</strong> <a href=\\"{{unusedHref}}\\">Erkennen Sie ungenutzte Schlüssel</a> und hören Sie auf, Ãbersetzungen zu pflegen, die niemand sieht." 832 ], 833 "outroHtml": "Sehen Sie die volle Power in diesem <a href=\\"https://youtu.be/osScyaGMVqo\\" target=\\"_blank\\" rel=\\"noreferrer\\">Video-Beispiel</a> für React.js. Erfahren Sie unten mehr über die Integrationsoptionen mit <a href=\\"{{i18nextHref}}\\">i18next</a> oder anderen i18n-Frameworks." 834 }, 835 "branches": { 836 "title": "Ãbersetzungs-CI/CD", 837 "subtitle": "Ãbersetzungs-Branches funktionieren wie Code-Branches.", 838 "imageAlt": "Locize-Branching", 839 "featureTitle": "Branches, die Ihren Dev-Workflow spiegeln", 840 "p1": "Erstellen Sie einen Ãbersetzungs-Branch, wenn Sie einen Feature-Branch öffnen. Ãbersetzen Sie neue Strings isoliert. Mergen Sie Ãbersetzungen, wenn das Feature ausgeliefert wird. Ihre Ãbersetzer und Ihre Codebase bleiben synchron, ohne Ãberraschungen beim Release.", 841 "p2": "Testen Sie Ãbersetzungen in Staging, ohne die Produktion zu beeinflussen. Wenn das Feature bereit ist, mergen Sie den Ãbersetzungs-Branch genauso wie Sie Code mergen. Designed für Teams, die GitFlow, Feature-Branches oder einen anderen Workflow nutzen, bei dem Ãbersetzungen isoliert bleiben müssen, bis ein Release bereit ist.", 842 "linkHtml": "<a href=\\"{{branchesDocsHref}}\\">Mehr über Branches vs. Versionen erfahren â</a>" 843 }, 844 "integrationFor": { 845 "title": "Für jeden gibt es eine passende Integration", 846 "subtitle": "Integrationen für jeden Stack: i18next, locizify, CLI/API und dateibasierte Workflows." 847 }, 848 "integrations": { 849 "locizify": { 850 "tagline": "Lokalisieren Sie jede Website, keine Code-Ãnderungen nötig.", 851 "whereLabel": "Wo einsetzbar:", 852 "bulletsHtml": [ 853 "Ein Script-Tag hinzufügen und Ihre Seite ist übersetzbar", 854 "Kein Entwickler nötig, geeignet für Content-Teams und Marketer", 855 "Plurale, Interpolation und URL-basiertes Namespace-Routing eingebaut", 856 "Aufgebaut auf einer Virtual-DOM-Implementierung über <a href=\\"{{i18nextHref}}\\">i18next</a>", 857 "Funktioniert mit WordPress, Shopify und anderen Site-Buildern", 858 "In-Context-Editing inklusive: übersetzen Sie direkt auf Ihrer Live-Seite" 859 ], 860 "cta": "Locizify einrichten" 861 }, 862 "i18next": { 863 "tagline": "Bestes Ãbersetzungsmanagement für i18next.", 864 "imageAlt": "i18next-Frameworks", 865 "whereLabel": "Wo einsetzbar:", 866 "bulletsHtml": [ 867 "Geeignet für alle UI-Frameworks: React, Angular, Vue, jQuery, Next.js und mehr", 868 "Minimale Programmierkenntnisse erforderlich", 869 "Flexible Ãbersetzungsoptionen wie Plurale, Interpolation, Kontext, â¦", 870 "Basiert auf dem Open-Source-i18n-Framework <a href=\\"{{i18nextHref}}\\">i18next</a>", 871 "Einsetzbar in Web, Mobile, Desktop und Server" 872 ], 873 "cta": "Mit i18next integrieren" 874 }, 875 "other": { 876 "title": "Weitere Optionen", 877 "tagline": "Dateibasierte Lösung.", 878 "whereLabel": "Wo einsetzbar:", 879 "bulletsHtml": [ 880 "Verwendung mit Frameworks wie react-intl, vue-i18n, svelte-i18n und mehr", 881 "Wir stellen ein Script bereit, das das Laden von Ãbersetzungen in Ihren JavaScript-Client vereinfacht", 882 "Optimal für Lösungen basierend auf Formaten wie XLIFF, MO, PO, Android XML, â¦", 883 "Mit unserer <a href=\\"{{apiHref}}\\" target=\\"_blank\\" rel=\\"noreferrer\\">API</a>, <a href=\\"https://github.com/locize/locize-cli\\" target=\\"_blank\\" rel=\\"noreferrer\\">CLI</a> oder <a href=\\"{{ghActionHref}}\\">GitHub Actions</a> können Sie alles bauen, was Ihnen einfällt" 884 ], 885 "cta": "Dateiformat-Optionen ansehen" 886 } 887 }, 888 "loop": { 889 "title": "Der Loop der kontinuierlichen Lokalisierung", 890 "subtitle": "Locize macht Lokalisierung zu einem Hintergrundprozess, der Ihr Team nie blockiert.", 891 "steps": [ 892 { "title": "Extrahieren", "desc": "Ihr Code (i18next) erkennt neuen Text und sendet ihn automatisch an Locize." }, 893 { "title": "Ãbersetzen", "desc": "Ãbersetzer oder KI verfeinern den Inhalt in unserem kontextreichen Editor." }, 894 { "title": "Reviewen", "desc": "Manager genehmigen Ãnderungen über eingebaute Review-Workflows." }, 895 { "title": "Ausliefern", "desc": "Aktualisierte Strings werden per CDN ausgeliefert, sofort live für Ihre Nutzer." } 896 ] 897 }, 898 "support": { 899 "heading": "Brauchen Sie Hilfe beim Einstieg?", 900 "subtitle": "Lassen Sie Ihre Fragen zur Locize-Integration von einem Teammitglied beantworten.", 901 "cta": "Kontaktieren Sie uns!" 902 } 903} 904`,Hs=`{ 905 "meta": { 906 "title": "Multi-Tenant-Lokalisierung: Pro-Kunde-Ãbersetzungs-Overrides | Locize", 907 "description": "Geben Sie jedem Kunden eine eigene Ãbersetzungs-Ebene mit Locizes Parent/Child-Projektmodell. Keine Duplikation, Overrides auf Namespace-Ebene, isolierter Zugriff." 908 }, 909 "intro": { 910 "heading": "Multi-Tenant-Lokalisierung", 911 "subtitle": "Geben Sie jedem Ihrer Kunden eine eigene Ãbersetzungs-Ebene â ohne separate Projekte zu verwalten oder Inhalte zu duplizieren." 912 }, 913 "problem": { 914 "heading": "Das Problem",
915 "p1": "Sie haben ein mehrsprachiges SaaS-Produkt, und jeder Ihrer Kunden wünscht eigene Sprachanpassungen: gebrandete Terminologie, regionale Formulierungen oder komplett andere Ãbersetzungen für bestimmte Strings.", 916 "p2": "Ohne Multi-Tenant-Support enden Sie damit, komplette Projekte zu duplizieren, eigene Override-Logik zu schreiben oder Namespaces und Locale-Codes zu missbrauchen, um pro-Kunde-Inhalte zu simulieren. Keiner dieser Ansätze skaliert.", 917 "workaroundsLabel": "Häufige Workarounds, die nicht skalieren", 918 "workarounds": [ 919 "Das gesamte Projekt pro Kunde duplizieren", 920 "Zusätzliche Namespaces wie âcustomer1_commonâ verwenden", 921 "Eigene Locale-Codes wie âen-x-customer1â", 922 "Manuelle Merge-Skripte zwischen Projekten" 923 ] 924 }, 925 "solution": { 926 "heading": "So löst Locize das", 927 "subtitle": "Ein Parent-Projekt hält Ihre Basis-Ãbersetzungen. Jedes Tenant-Projekt erbt alles und überschreibt nur, was es braucht.", 928 "steps": [ 929 { "title": "Parent-Projekt", "desc": "Ihr Haupt-Projekt enthält die Basis-Ãbersetzungen für alle Sprachen. Das ist die Single Source of Truth." }, 930 { "title": "Tenant-Projekte", "desc": "Jeder Kunde erhält ein Child-Projekt, das alle Ãbersetzungen vom Parent erbt. Nur überschriebene Strings werden separat gespeichert." }, 931 { "title": "CDN-Auslieferung", "desc": "Jeder Tenant hat seinen eigenen CDN-Endpoint. Die Runtime merged Parent- und Tenant-Ãbersetzungen automatisch." } 932 ], 933 "imageAlt": "Neues Tenant-Projekt in Locize anlegen", 934 "cta": "Kostenlos testen" 935 }, 936 "capabilities": { 937 "heading": "Schlüsselfunktionen", 938 "subtitle": "Alles, was Sie brauchen, um Pro-Kunde-Ãbersetzungen skalierbar zu verwalten.", 939 "items": [ 940 { "title": "Parent/Child-Vererbung", "desc": "Tenant-Projekte erben alle Ãbersetzungen vom Parent. Neue Schlüssel im Parent erscheinen automatisch in jedem Tenant." }, 941 { "title": "Override auf Namespace-Ebene", "desc": "Tenants überschreiben einzelne Strings, der Rest fällt zum Parent durch. Nur überschriebene Werte zählen zur Tenant-Nutzung." }, 942 { "title": "Sprach-Sync-Optionen", "desc": "Pro Tenant wählen: Sprachen automatisch mit dem Parent-Projekt synchronisieren, oder jeden Tenant seine eigene Sprach-Liste verwalten lassen." }, 943 { "title": "Isolierte Zugriffskontrolle", "desc": "Tenant-Nutzer sehen nur ihr eigenes Projekt. Kunden können nicht auf die Daten anderer Kunden oder das Parent-Projekt zugreifen." }, 944 { "title": "Flexible Abrechnung", "desc": "Ãbernehmen Sie die Kosten selbst oder lassen Sie jeden Kunden für seine eigene Tenant-Nutzung zahlen. Pricing basiert nur auf überschriebenen Werten." }, 945 { "title": "Berechtigungs-Vererbung", "desc": "Rollen und Berechtigungen fliessen von Parent- zu Child-Projekten. Erzwingen Sie MFA und Zugriffsbeschränkungen konsistent über alle Tenants." } 946 ] 947 }, 948 "audience": { 949 "heading": "Für wen es gemacht ist", 950 "items": [ 951 { "title": "SaaS-Unternehmen", "desc": "Lassen Sie jeden Enterprise-Kunden Produkt-Sprache anpassen, ohne Ihr Ãbersetzungs-Setup zu forken." }, 952 { "title": "White-Label-Produktbauer", "desc": "Liefern Sie ein vollständig gebrandetes Spracherlebnis pro Kunde mit minimalem operativem Aufwand." }, 953 { "title": "Agenturen mit mehreren Kunden", "desc": "Pflegen Sie eine gemeinsame Basis-Ãbersetzung und lassen Sie jedes Kundenprojekt nach Bedarf erben und überschreiben." }, 954 { "title": "Franchise- und Multi-Brand-Unternehmen", "desc": "Jede Marke oder Region erhält eine eigene Ãbersetzungs-Ebene über einer gemeinsamen Konzern-Basis." } 955 ] 956 }, 957 "finalCta": { 958 "heading": "Bereit für Multi-Tenant-Lokalisierung?", 959 "subtitle": "Lesen Sie die vollständige Multi-Tenant-Dokumentation oder starten Sie einen kostenlosen Trial.", 960 "trial": "Kostenlose Testversion starten", 961 "docs": "Multi-Tenant-Docs" 962 } 963} 964`,Us=`{ 965 "meta": { 966 "title": "Services | Locize", 967 "description": "Zusätzliche Services von Locize: Translation Memory, Review-Workflow, automatische Ãbersetzung, SSO, Figma-Plugin und integrierte Ãbersetzungspartner." 968 }, 969 "learnMore": "Mehr erfahren", 970 "hero": { 971 "h1Prefix": "Zusätzliche Lokalisierungs- und Ãbersetzungsdienste von ", 972 "h1Accent": "Locize", 973 "subtitle": "Erweitern Sie Ihr Locize-Erlebnis mit diesen zusätzlichen Diensten.", 974 "imageAlt": "Services", 975 "registerCta": "Kostenlos registrieren" 976 }, 977 "additional": {
978 "heading": "Zusätzliche Services", 979 "subtitle": "Erweitern Sie Ihr Locize-Erlebnis mit diesen zusätzlichen Diensten.", 980 "cards": [ 981 { "title": "Smart Translation Memory", "subtitle": "Das intelligente Translation Memory.", "href": "/docs/translation-memory", "p1": "Das Smart Translation Memory schlägt Ihnen bereits übersetzte Segmente vor und hilft, Zeit zu sparen und Ãbersetzungen konsistent zu halten." }, 982 { "title": "Review-Workflow", "subtitle": "Starten Sie einen Review-Workflow bei Ãnderungen.", "href": "/docs/review-workflow", "p1": "Aktivieren Sie den Review-Workflow für bestimmte Sprachen. Bei jeder Ãnderung startet ein Review â der Wert bleibt unverändert, bis ein Vorschlag akzeptiert wird." }, 983 { "title": "Automatische Ãbersetzung", "subtitle": "Ãbersetzungsarbeit smart automatisieren.", "href": "/docs/automatic-translation", "p1": "Ãbersetzen Sie neue Inhalte automatisch in alle Zielsprachen mit Ihrem bevorzugten Anbieter (z. B. Google Translate, DeepL oder generativen KI-Providern).", "p2": "Mit dem Automatik-Workflow und saveMissing ist auch ein fokussiertes Entwickler-Erlebnis möglich." }, 984 { "title": "Verlauf", "subtitle": "Verfolgen Sie alle Ãnderungen Ihrer Ãbersetzungen.", "href": "/docs/history", "p1": "Mit dem Verlauf können Sie die letzten Ãnderungen an Ãbersetzungen nachverfolgen und jederzeit belegen, wann ein Inhalt verändert wurde." }, 985 { "title": "SAML Single Sign-On (SSO)", "subtitle": "Zugriff über Ihren Identity Provider.", "href": "/docs/user-management#saml-single-sign-on-sso", "p1": "Geben Sie Ihren Nutzern Zugriff auf Locize über einen Identity Provider Ihrer Wahl." }, 986 { "title": "Figma-Plugin", "subtitle": "Ãbersetzung und Produktdesign verbinden.", "href": "/docs/integration/figma-plugin", "p1": "Validieren Sie Designs mit übersetzten Inhalten, reduzieren Sie Feedback-Loops und senden Sie fehlende Ãbersetzungen an Locize." }, 987 { "title": "Multi-Tenant", "subtitle": "Pro-Kunde-Ãbersetzungen oder kundenspezifische Overrides.", "href": "/docs/multi-tenant", "p1": "Wenn Sie angepasste Software für Ihre Kunden anbieten, ermöglichen Sie Ãbersetzungen pro Tenant und erlauben Sie Overrides bei Bedarf." }, 988 { "title": "Branches", "subtitle": "Sicher an Ãbersetzungen über Versionen hinweg arbeiten.", "href": "/docs/general-questions/should-i-use-versions-or-branches", "p1": "Branches helfen, an Ãbersetzungsarbeit zu kollaborieren, ohne den Produktionsstand zu riskieren.", "p2Html": "Nutzen Sie <a href=\\"/docs/guides/working-with-translators#use-branched-projects-branches\\" rel=\\"noreferrer\\">Branched-Projekte</a>, wenn Sie mit Ãbersetzern arbeiten." }, 989 { "title": "Erkennung ungenutzter Schlüssel", "subtitle": "Ãbersetzungen finden und entfernen, die niemand sieht.", "href": "/docs/guides/find-unused-translations", "p1Html": "Verfolgen Sie, welche Ãbersetzungs-Schlüssel tatsächlich in Ihrer Anwendung verwendet werden, mit dem <code>locize-lastused</code>-Plugin. Filtern Sie nach ânicht verwendet seitâ, um veraltete Schlüssel zu finden, und räumen Sie dann mit Zuversicht auf.", "p2": "Hören Sie auf, für Ãbersetzungen zu zahlen, die nicht mehr in Ihrer Codebase sind." }, 990 { "title": "Prüfungen & Issues", "subtitle": "Ãbersetzungsprobleme automatisch erkennen.", "href": "/docs/checks-issues", "p1": "Automatische Konsistenz-Prüfungen: Translation Memory, Glossar-Durchsetzung, i18n-Syntax-Validierung, Quell-Veraltung, Maximalzeichen-Limits und mehr.", "p2": "Führen Sie Prüfungen pro Segment oder gebündelt aus, ignorieren Sie False Positives und konfigurieren Sie, welche Prüfungen für Ihr Projekt zählen." }, 991 { "title": "Weitere Services â¦", "subtitle": "Slack, Microsoft Teams, Glossar und mehr.", "href": "/docs/integration/slack", "p1": "Integrationen wie Slack und Microsoft Teams halten Sie über wichtige Ereignisse informiert. Glossar-Support hilft, Terminologie durchzusetzen.", "p2": "Es gibt noch viel mehr, und wir bauen kontinuierlich weitere Services aus." } 992 ], 993 "exploreCta": "Sehen Sie, wie es funktioniert" 994 }, 995 "partners": { 996 "headingPrefix": "Integrierte ", 997 "headingAccent": "Ãbersetzungspartner", 998 "subtitle": "Bestellen Sie Ãbersetzungen direkt bei unseren Partnern.", 999 "howItWorksHtml": "Locize ermittelt, welche Segmente Arbeit brauchen, sendet sie an den Partner und importiert die Ergebnisse automatisch. <a href=\\"/docs/ordering\\">So funktioniert das Bestellen</a>.", 1000 "cards": [ 1001 { "logoAlt": "Supertext", "subtitle": "Preise hängen von Ihrem Vertrag ab", "bullets": ["Ihre All-in-One-Lösung für qual
1001itativ hochwertige Lokalisierung im grossen Massstab", "Von 0 % bis 100 % Automatisierung: kombiniert Sprach-KI und menschliche Experten auf einer Plattform", "Bietet sowohl KI-Ãbersetzungslösungen als auch Expertenservices für Web-Inhalte und Produkt-Lokalisierung"] }, 1002 { "logoAlt": "TextMaster", "subtitle": "0,066 â 0,132 USD pro Wort", "bullets": ["Ihr professioneller SaaS-Ãbersetzungsservice", "Ideal für einfache Web-Inhalte, grosse Kataloge oder komplexe Dokumente", "Bietet allgemeine Ãbersetzung plus Fachbereiche wie Finanzen, Technik und Recht"] }, 1003 { "logoAlt": "BLEND", "subtitle": "0,079 â 0,139 USD pro Wort", "bullets": ["End-to-End-Lokalisierungslösungen für mehrere Märkte", "Globale Community von Ãbersetzern und Sprachspezialisten", "Self-Service-Ãbersetzungsplattform für persönliche und geschäftliche Projekte"] }, 1004 { "logoAlt": "Translated", "subtitle": "Preise hängen von Ihrem Vertrag ab", "bullets": ["Professionelle Ãbersetzungs- und Lokalisierungsdienste", "Kombiniert menschliche Expertise mit fortschrittlichen KI-Tools", "Unterstützt eine breite Palette von Branchen wie Recht, Marketing und Technik"] } 1005 ] 1006 }, 1007 "alternatively": { 1008 "heading": "Alternativ können Sie:", 1009 "bulletsHtml": [ 1010 "<a href=\\"/docs/guides/working-with-translators#send-files\\" target=\\"_blank\\" rel=\\"noreferrer\\">
1010Dateien exportieren und senden</a> an Ihre Ãbersetzer", 1011 "<a href=\\"/docs/guides/working-with-translators#invite-them-to-your-project\\" target=\\"_blank\\" rel=\\"noreferrer\\">Sie einladen</a> zu Ihrem Projekt", 1012 "Ein neues <a href=\\"/docs/guides/working-with-translators#use-branched-projects-branches\\" target=\\"_blank\\" rel=\\"noreferrer\\">Branched-Projekt</a> auf Locize anlegen" 1013 ] 1014 }, 1015 "contact": { 1016 "heading": "Brauchen Sie Hilfe beim Einstieg?", 1017 "subtitle": "Lassen Sie Ihre Fragen zur Locize-Integration von einem Teammitglied beantworten.", 1018 "cta": "Kontaktieren Sie uns!" 1019 }, 1020 "finalCta": { 1021 "heading": "Hören Sie auf zu warten. Beginnen Sie zu lokalisieren.", 1022 "subtitle": "Erstellen Sie ein neues Projekt und übersetzen Sie Ihre Anwendung.", 1023 "register": "Kostenlos registrieren", 1024 "pricing": "Preise ansehen" 1025 } 1026} 1027`,Ws=`{ 1028 "meta": { 1029 "title": "Swiss-made Ãbersetzungsmanagement-System vom i18next-Team | Locize", 1030 "description": "Locize ist das Schweizer Ãbersetzungsmanagement-System, gebaut vom Team hinter i18next. Duale FADP + DSGVO-Compliance, EU-Daten-Residenz, kein US-Akquisitions-Risiko." 1031 }, 1032 "hero": { 1033 "badge": "ð¨ð Swiss-engineered · Swiss-registered · DSGVO + FADP", 1034 "h1Prefix": "Locize, das Swiss-engineered ", 1035 "h1Accent": "Ãbersetzungsmanagement-System", 1036 "p1Html": "<b>Locize ist ein Swiss-made Ãbersetzungsmanagement-System (TMS) für Entwicklerteams.</b> Entwickelt und betrieben von einem Schweizer Unternehmen, dem Team hinter <a class=\\"brand-link\\" href=\\"https://www.i18next.com\\" target=\\"_blank\\" rel=\\"noreferrer\\">i18next</a> â einer der weltweit am meisten genutzten JavaScript-Internationalisierungs-Bibliotheken auf npm. Es ist das einzige Swiss-owned TMS in der entwicklerorientierten Kategorie.", 1037 "p2": "Unterliegt Schweizer Recht (FADP) und EU-Recht (DSGVO): die strengere Regel gewinnt für Ihre Ãbersetzungsdaten. Unabhängig in Schweizer Besitz. Kein US-, EU- oder Private-Equity-Mutterkonzern. Kein Akquisitions-Druck, der das Produkt-Roadmap oder Preismodell ändern könnte.", 1038 "ctaTrial": "Kostenlose Testversion starten", 1039 "ctaWhy": "Warum Swiss wichtig ist", 1040 "badges": ["FADP + DSGVO-konform", "EU-Daten-Residenz (AWS Irland)", "Unabhängiger Schweizer Besitz"], 1041 "tableTitle": "Wie Locize beim Eigentum abschneidet", 1042 "tableHeaders": ["Anbieter", "Land", "Status"], 1043 "tableRows": [ 1044 ["Locize", "ð¨ð Schweiz", "Unabhängig", "highlight"], 1045 ["Lokalise", "ð±ð» Lettland", "VC-finanziert", ""], 1046 ["Phrase", "ð©ðª Deutschland", "PE-Besitz (Carlyle)", ""], 1047 ["Crowdin", "ðªðª Estland / ðºð¦ Ukraine", "Privat gehalten", ""], 1048 ["Transifex", "ðºð¸ USA", "Ãbernommen von XTM (Jan 2025)", ""] 1049 ], 1050 "tableFootnote": "Ãffentliche Eigentums-Informationen Stand Mai 2026. Schweizer Eigentum stellt Locize auf Unternehmens-Ebene ausserhalb des US CLOUD Act." 1051 }, 1052 "whatSwiss": { 1053 "heading": "Was âSwiss-madeâ für Ihr TMS tatsächlich bedeutet", 1054 "subtitle": "Drei konkrete Fakten, kein Marketing-Geschwätz.", 1055 "items": [ 1056 { "title": "Schweizer Unternehmen", "p1": "Locize wird von einem in der Schweiz registrierten Unternehmen betrieben. Unterliegt Schweizer Recht inkl. dem revidierten Datenschutzgesetz (revFADP / DSG), in Kraft seit September 2023.", "p2": "Kein ausländischer Mutterkonzern. Kein Private-Equity-Besitz. Keine Akquisitions-Tretmühle." }, 1057 { "title": "Swiss-engineered", "p1Html": "Locize wird vom selben Team gebaut, das <a class=\\"brand-link\\" href=\\"https://www.i18next.com\\" target=\\"_blank\\" rel=\\"noreferrer\\">i18next</a> entwickelt und pflegt â eine JavaScript-Internationalisierungs-Bibliothek auf npm seit 2011, mit einem v2-Rewrite 2015 und stabilen APIs seither.", "p2": "Dieselbe Engineering-Disziplin, die i18next über ein Jahrzehnt stabil gehalten hat, wird auf die Locize-Plattform und APIs angewendet." }, 1058 { "title": "EU-Daten-Residenz", "p1Html": "Kunden-Ãbersetzungsdaten werden in <b>AWS Irland</b> gehostet, innerhalb der EU und unter DSGVO. Geschäftskorrespondenz läuft über Schweizer Hosting (Hostpoint AG).", "p2Html": "Siehe <a class=\\"brand-link\\" href=\\"{{securityHref}}\\">Sicherheit & Daten-Residenz</a> für die volle Infrastruktur-Aufschlüsselung." } 1059 ] 1060 }, 1061 "whyMatters": { 1062 "heading": "Warum Swiss für TMS-Käufer wichtig ist", 1063 "subtitle": "Die meisten TMS-Vergleiche fokussieren auf Features und Preise. Für regulierte Branchen, öffentliche Organisationen und Teams, die langfristiges Anbieter-Risiko bedenken, ist die Jurisdiktion ein realer Faktor.", 1064 "items": [ 1065 { "title": "Duale regulatorische Abdeckung", "p1Html": "Locize unterliegt sowohl <b>Schweizer FADP</b> (revFADP seit September 2023) als auch <b>EU-DSGVO</b> (über AWS Irland-Daten-Residenz). Bei Abweichungen gilt die strengere Regel. Diese duale Abdeckung ist in unserem AVV eingebaut, siehe <a class=\\"brand-link\\" href=\\"{{dpaHref}}\\">AVV</a>." }, 1066 { "title": "Kein Akquisitions-Risiko", "p1": "Ãbersetzungs-Infrastruktur sollte einen Hype-Zyklus überdauern. Locize ist unabhängig im Besitz: kein VC, kein PE, kein ausländischer Mutterkonzern. Preise und Roadmap unterliegen keinem Akquisiteur-getriebenen Pivot, Repackaging oder Sunset." }, 1067 { "title": "Langfristige API-Stabilität", "p1Html": "Dasselbe Schweizer Team pflegt <a class=\\"brand-link\\" href=\\"https://www.i18next.com\\" target=\\"_blank\\" rel=\\"noreferrer\\">i18next</a> seit dem v2-Rewrite 2015 mit erhaltener Rückwärtskompatibilität. Das Locize-SDK und die API folgen derselben Disziplin: kein quartalsweises Umschreiben Ihres Integrations-Codes." }, 1068 { "title": "Anbieter-Stabilität", "p1": "Schweizer Software-Unternehmen haben eine Erfolgsbilanz im Ãberdauern ihrer VC-finanzierten Konkurrenten. Für etwas so Grundlegendes wie Ihre Ãbersetzungs-Infrastruktur zählt Anbieter-Stabilität mehr als Feature-Parität." } 1069 ] 1070 }, 1071 "i18nextStory": { 1072 "heading": "Auf Schweizer Open Source aufgebaut: die i18next-Verbindung", 1073 "subtitle": "Locize ist nicht nur ein TMS, das zufällig i18next unterstützt. Es ist die Managed-Plattform des Schweizer Teams, das die Bibliothek erschaffen hat.", 1074 "items": [ 1075 { "title": "i18next: das Open-Source-Fundament", "p1Html": "<a class=\\"brand-link\\" href=\\"https://www.i18next.com\\" target=\\"_blank\\" rel=\\"noreferrer\\">i18next</a> startete 2011 auf npm und wuchs zu einer der meistgenutzten JavaScript-Internationalisierungs-Bibliotheken â für Web, Node.js und ein tiefes Ãkosystem an Framework-Integrationen (React, Vue, Angular, Svelte, Next.js u.a.).", "p2Html": "Seit dem v2-Rewrite 2015 hält die Bibliothek stabile APIs und Rückwärtskompatibilität â eine seltene Disziplin im JavaScript-Ãkosystem. Siehe die <a class=\\"brand-link\\" href=\\"https://www.i18next.com/misc/the-history-of-i18next\\" target=\\"_blank\\" rel=\\"noreferrer\\">Geschichte von i18next</a>." }, 1076 { "title": "Locize: die natürliche Managed-Erweiterung", "p1": "2016 gegründet, wurde Locize vom i18next-Team als Managed-Ãbersetzungs-Plattform gebaut, die die OSS-Bibliothek bewusst nicht enthält: Ãbersetzer-UI, CDN-Auslieferung, KI-Ãbersetzung, Review-Workflow, Audit-Log.", "p2Html": "Das Ergebnis: tiefere i18next-Integration als jedes andere TMS bieten kann, mit derselben Schweizer Engineering-Kultur auf der Plattform-Seite. Siehe das <a class=\\"brand-link\\" href=\\"{{i18nextVsLocizeHref}}\\">i18next vs. Locize</a>-Dokument." } 1077 ] 1078 }, 1079 "customers": { 1080 "heading": "Vertrauen von Schweizer Organisationen", 1081 "subtitle": "Locize betreibt Ãbersetzungen für einige der anspruchsvollsten mehrsprachigen Produkte der Schweiz.", 1082 "moreCta": "Mehr Kunden-Stories" 1083 }, 1084 "compliance": { 1085 "heading": "Compliance & Daten-Residenz im Detail", 1086 "subtitle": "Keine Marketing-Versprechen, wo Ihre Daten leben. Hier die Fakten.", 1087 "headers": ["Punkt", "Standort / Status"], 1088 "rows": [ 1089 ["Unternehmens-Jurisdiktion", "ð¨ð Schweiz â unterliegt revFADP"], 1090 ["Kunden-Ãbersetzungsdaten", "ð®ðª AWS Irland â unterliegt DSGVO"], 1091 ["Geschäftskorrespondenz", "ð¨ð Schweiz â Hostpoint AG"], 1092 ["App-generierte Benachrichtigungen", "Amazon SES auf AWS"], 1093 ["Auftragsverarbeitungsvertrag (AVV)", "<a class=\\"brand-link\\" href=\\"{{dpaHref}}\\">Verfügbar â deckt FADP + DSGVO ab</a>"], 1094 ["Unter-Auftragsverarbeiter", "<a class=\\"brand-link\\" href=\\"{{privacyHref}}\\">In der Datenschutzerklärung gelistet</a>"], 1095 ["Volle Sicherheits- & Infrastruktur-Details", "<a class=\\"brand-link\\" href=\\"{{securityHref}}\\">Sicherheit bei Locize</a>"] 1096 ], 1097 "footnote": "Ãbersetzungsdaten-Residenz in AWS Irland ist eine bewusste Wahl: Sie hält Locize innerhalb des EU-Regulierungs-Perimeters, während die Unternehmensentität Schweizerisch bleibt. Beide Regulierungen gelten; die strengere gewinnt." 1098 }, 1099 "vsAgencies": {
1100 "heading": "Schweizer TMS vs. Schweizer Ãbersetzungs-Agenturen", 1101 "subtitle": "Wenn Leute nach âSwiss-made TMSâ suchen, verwechseln sie oft zwei verschiedene Dinge. Hier die Unterscheidung.", 1102 "agencyTitle": "Schweizer Ãbersetzungs-Agenturen", 1103 "agencyP1": "Unternehmen wie SwissGlobal, Apostroph Group, Comtexto und TTN bieten menschliche Ãbersetzung als Service. Sie senden Quell-Inhalt; sie liefern Ãbersetzungen zurück.", 1104 "agencyP2": "Exzellent für Hochrisiko-Inhalte: Rechtsdokumente, Marketing-Copy, beglaubigte Ãbersetzungen. Weniger geeignet für kontinuierliche Software-Lokalisierung, wo in jedem Sprint neue Strings entstehen.", 1105 "tmsTitle": "Schweizer TMS (Locize)", 1106 "tmsP1": "Locize ist Software: eine Ãbersetzungs-Management-Plattform, die sich über API, CDN und CI/CD in Ihren Entwickler-Workflow integriert. Sie übernimmt die technische Auslieferungs-Ebene, die Agenturen nicht abdecken.", 1107 "tmsP2": "Sie können Locize mit einer beliebigen Ãbersetzungs-Agentur (Schweizerisch oder andere) für die menschliche Ãbersetzungsarbeit kombinieren. Viele unserer Kunden tun genau das." 1108 }, 1109 "faqSection": { 1110 "heading": "Häufige Fragen", 1111 "subtitle": "Fehlt Ihre Frage? E-Mail an [email protected]" 1112 }, 1113 "faqItems": [ 1114 { "q": "Was ist ein Swiss-made TMS?", "a": "Ein Swiss-made Ãbersetzungsmanagement-System (TMS) ist ein TMS, das von einem in der Schweiz registrierten Unternehmen entwickelt und betrieben wird und dem Schweizer Recht (revFADP / DSG seit September 2023) unterliegt. In der entwicklerorientierten TMS-Kategorie ist Locize das einzige in Schweizer Besitz â entwickelt vom Schweizer Team hinter i18next, mit Ãbersetzungsdaten in AWS Irland (EU / DSGVO) und voller FADP+DSGVO-Compliance. Abzugrenzen von Schweizer Ãbersetzungsagenturen (SwissGlobal, Apostroph Group, Comtexto, TTN), die menschliche Ãbersetzung als Service bieten â statt Software für die Verwaltung von Ãbersetzungen im Entwickler-Workflow." }, 1115 { "q": "Ist Locize Swiss-made?", "a": "Ja. Locize wurde 2016 gegründet und wird von einem in der Schweiz registrierten Unternehmen betrieben. Das Team hinter Locize hat auch i18next entwickelt und pflegt es weiterhin â eine der weltweit am meisten genutzten JavaScript-Internationalisierungs-Bibliotheken auf npm (Start 2011). Das Unternehmen ist unabhängig (kein US-, EU- oder Private-Equity-Mutterkonzern) und unterliegt Schweizer Recht inkl. dem revidierten Datenschutzgesetz (DSG / FADP)." }, 1116 { "q": "Welche Vorteile bietet ein Swiss-made TMS?", "a": "Drei konkrete Vorteile: (1) duale regulatorische Abdeckung â Schweizer FADP und EU-DSGVO gelten beide für Ihre Ãbersetzungsdaten, und die strengere Regel gewinnt; (2) Eigentümer-Stabilität â Locize ist in Schweizer Besitz und unabhängig, ohne Akquisitions-Druck, der das Produkt-Roadmap oder Preismodell ändern könnte; (3) langfristige API-Stabilität â dasselbe Schweizer Team pflegt i18next seit dem v2-Rewrite 2015 mit stabilen APIs, und wendet dieselbe Engineering-Disziplin auf Locize an." }, 1117 { "q": "Wo werden meine Locize-Ãbersetzungsdaten gespeichert?", "a": "Kunden-Ãbersetzungsdaten werden auf Amazon Web Services (AWS) in Irland gehostet, innerhalb der EU und unter DSGVO. Geschäftskorrespondenz (z. B. [email protected]) wird in der Schweiz von Hostpoint AG gehostet. App-generierte Benachrichtigungen laufen über Amazon SES. Siehe die Security-Seite für die volle Infrastruktur-Detail." }, 1118 { "q": "Ist Locize FADP- und DSGVO-konform?", "a": "Ja, beides. Weil Locize ein Schweizer Unternehmen mit EU-basierter Daten-Infrastruktur ist, gelten sowohl das Schweizer Datenschutzgesetz (revDSG, in Kraft seit September 2023) als auch die EU-Datenschutz-Grundverordnung. Ein Auftragsverarbeitungsvertrag (AVV), der beide Regulierungen abdeckt, ist verfügbar. Siehe /dpa. Unter-Auftragsverarbeiter sind in unserer Datenschutzerklärung aufgeführt." }, 1119 { "q": "Wie unterscheidet sich Locize von Schweizer Ãbersetzungsagenturen wie SwissGlobal, Apostroph oder TTN?", "a": "Diese sind Ãbersetzungs-Service-Agenturen: sie bieten menschliche Ãbersetzer als Service. Locize ist eine Ãbersetzungs-Management-Plattform: Software für Entwicklerteams, um Ãbersetzungen über API, CDN und CI/CD-Pipelines in Web- und Mobile-Apps zu integrieren. Sie können Locize mit einer beliebigen Ãbersetzungsagentur (Schweizer oder anderer) für die menschliche Ãbersetzungsarbeit kombinieren; die Plattform übernimmt die technische Auslieferungs-Ebene, die Agenturen nicht abdecken." },
1120 { "q": "Schafft ein Schweizer TMS Reibung für US- oder EU-CI/CD-Pipelines?", "a": "Nein. Locize ist API-first und CDN-ausgeliefert mit globaler Edge-Infrastruktur. Die Integration in GitHub Actions, GitLab CI, Vercel, Netlify oder eine andere Build-Pipeline ist identisch, egal in welcher Jurisdiktion Ihre Build-Runner laufen. Der Schweizer Aspekt gilt für die Unternehmensentität und den rechtlichen Rahmen, nicht für die technische Auslieferungs-Oberfläche." }, 1121 { "q": "Warum spielt das Herkunftsland eines TMS-Anbieters überhaupt eine Rolle?", "a": "Für die meisten Käufer spielt es keine Rolle. Aber für regulierte Branchen, öffentliche Organisationen oder Unternehmen, die langfristige Anbieter-Stabilität priorisieren, kann es wichtig sein. Schweizer Anbieter unterliegen Schweizer Neutralität und Eigentums-Offenlegungsregeln, liegen auf Unternehmens-Ebene ausserhalb des US CLOUD Act und haben eine Erfolgsbilanz langlebiger Software-Stabilität (Schweizer Software-Produkte überleben tendenziell ihre VC-finanzierten Konkurrenten). Speziell für Locize ist die Schweizer Engineering-Verbindung zu i18next ein starkes Signal für API-Langlebigkeit: die i18next-Bibliothek pflegt seit über einem Jahrzehnt Rückwärtskompatibilität." } 1122 ], 1123 "related": { 1124 "linksHtml": "Verwandt: <a class=\\"brand-link\\" href=\\"{{securityHref}}\\">Sicherheit & Daten-Residenz</a> · <a class=\\"brand-link\\" href=\\"{{dpaHref}}\\">AVV (FADP + DSGVO)</a> · <a class=\\"brand-link\\" href=\\"{{euAccHref}}\\">EU Accessibility Act Lokalisierung</a> · <a class=\\"brand-link\\" href=\\"{{i18nextVsLocizeHref}}\\">i18next vs. Locize</a> · <a class=\\"brand-link\\" href=\\"{{compareHref}}\\">Locize mit Alternativen vergleichen</a>" 1125 }, 1126 "finalCta": { 1127 "title": "Ein Swiss-engineered TMS, gebaut für Entwicklerteams.", 1128 "subtitle": "14 Tage kostenlos. Keine Kreditkarte erforderlich.", 1129 "primaryLabel": "Kostenlos registrieren" 1130 } 1131} 1132`,Gs=`{ 1133 "meta": { 1134 "title": "Kein Vertrieb. Nur Engineering. - Locize", 1135 "description": "Warum Locize in Engineering und Produkt investiert statt in Vertriebsteams â und wie davon Ihr Entwicklungs-Workflow profitiert." 1136 }, 1137 "hero": { 1138 "title1": "Kein Vertrieb.", 1139 "title2": "Nur Engineering.", 1140 "subtitle": "Locize verwaltet tausende aktive Projekte für eine globale Kundenbasis â von Einzel-Entwicklern bis zu Fortune-500-Unternehmen. Und das alles mit null Vertriebs-Mitarbeitern.", 1141 "cta1": "Kostenlose Testversion starten", 1142 "cta2": "Docs lesen" 1143 }, 1144 "philosophy": { 1145 "heading": "Die Engineering-First-Entscheidung", 1146 "intro": "Die meisten SaaS-Unternehmen geben mehr Geld für den Verkauf ihres Produkts aus als für dessen Entwicklung. Wir sind den umgekehrten Weg gegangen. Indem wir den Overhead einer klassischen Vertriebsabteilung eliminieren, reinvestieren wir jeden Cent in das, was am wichtigsten ist: Ihre Infrastruktur.", 1147 "pillars": [ 1148 { 1149 "title": "Reinvestition in i18next", 1150 "desc": "Wir finanzieren die Entwicklung des i18next-Ãkosystems, damit das beliebteste i18n-Framework offen, schnell und modern bleibt." 1151 }, 1152 { 1153 "title": "TMS- & Workflow-Innovation", 1154 "desc": "Wir verfeinern die Locize-App kontinuierlich und liefern Funktionen wie Branching, MCP-Integration und KI-Ãbersetzung, die Ihr Team smarter arbeiten lassen." 1155 }, 1156 { 1157 "title": "Erstklassiges CDN", 1158 "desc": "Umsatz fliesst direkt in unser globales Edge-Network und sorgt für schnellere Ãbersetzungs-Auslieferung an Ihre Nutzer." 1159 } 1160 ], 1161 "allocation": { 1162 "label": "Aktuelle Ressourcen-Verteilung", 1163 "engineering": "ENGINEERING & PRODUKT", 1164 "sales": "VERTRIEBS-MITARBEITER", 1165 "footnote": "* Wir bauen für Entwickler, nicht für Procurement-Slidedecks." 1166 } 1167 }, 1168 "values": [ 1169 { 1170 "title": "Kein versperrtes Wissen", 1171 "desc": "Sie brauchen keinen âDiscovery Callâ, um unser Produkt zu sehen. Unsere Docs sind öffentlich, unser Pricing transparent, und unser Trial startet sofort." 1172 }, 1173 { 1174 "title": "Support direkt von der Quelle", 1175 "desc": "Reden Sie direkt mit den Engineers, die Locize und i18next bauen. Keine âSuccess Managerâ, die ein Skript ablesen." 1176 }, 1177 { 1178 "title": "Keine Vertriebs-Steuer", 1179 "desc": "Wettbewerbsfähige Preise, weil Sie nicht für Vertriebs-Provisionen, Reisebudgets oder Enterprise-CRMs zahlen." 1180 }, 1181 { 1182 "title": "Keine künstlichen Paywalls", 1183 "desc": "Festpreis-Tarife skalieren mit klaren Limits, die Sie im Voraus sehen, und zusätzliche Kapazität kommt in Blöcken, deren Preis Sie vorher kennen. Keine überraschenden Upgrades, keine Kosten pro Sitzplatz." 1184 } 1185 ], 1186 "finalCta": { 1187 "heading": "Wir wollen Ihnen nichts verkaufen.", 1188 "subtitle": "Wir wollen Ihnen helfen, auszuliefern. Starten Sie heute Ihren Trial oder sehen Sie sich unser Demo-Video an.", 1189 "register": "Kostenlos registrieren", 1190 "watchDemo": "Demo-Video ansehen" 1191 } 1192} 1193`,Ks=`{ 1194 "meta": { 1195 "title": "Warum nicht einfach KI für Ãbersetzung? | Locize",
1196 "description": "Eine ehrliche Einschätzung der KI-Ãbersetzung: wann sie funktioniert, wann nicht und warum ein TMS Probleme löst, die KI nicht lösen kann." 1197 }, 1198 "hero": { 1199 "badge": "Eine ehrliche Antwort", 1200 "title1": "Warum nicht einfach", 1201 "title2": "KI für Ãbersetzung nutzen?", 1202 "p1Html": "Ehrlich? Für kleine Projekte sollten Sie das. KI-Ãbersetzung ist schnell, günstig und zunehmend gut. Wir haben sie <a class=\\"brand-link\\" href=\\"{{aiHref}}\\">direkt in Locize eingebaut</a>, genau aus diesem Grund.", 1203 "p2Html": "Die Frage ist nicht, ob KI Ihre Strings übersetzen kann. Die Frage ist, ob KI sie <strong>verwalten</strong> kann â über ein Team hinweg, über Zeit, ohne Entwickler-Beteiligung für jede Ãnderung." 1204 }, 1205 "distinction": { 1206 "aiTitle": "KI übersetzt Strings", 1207 "aiBody": "Aus einem englischen String macht Claude oder ChatGPT einen französischen â in über 95 Sprachen, mit erhaltenen i18next-Platzhaltern. Schnell, günstig, meist gut. Das ist wirklich gelöst. Nutzen Sie KI dafür; wir tun es auch.", 1208 "tmsTitle": "Ein TMS verwaltet sie", 1209 "tmsBody": "Welche Schlüssel haben sich seit letzter Woche geändert? Welche Sprachen sind unvollständig? Wie deployen Sie eine Copy-Korrektur ohne Deployment? Wer kann Ãbersetzungen bearbeiten, ohne das Repo zu berühren? Das sind System-Probleme. KI löst sie nicht." 1210 }, 1211 "problems": { 1212 "heading": "Wo der DIY-Workflow zerbricht", 1213 "subtitle": "Sechs Probleme, die auftreten, wenn ein echtes Produkt über den initialen Ãbersetzungs-Sprint hinauswächst.", 1214 "aiLabel": "Nur KI", 1215 "locizeLabel": "Locize", 1216 "items": [ 1217 { "title": "Schlüssel-Lifecycle verwalten", "ai": "Ãbersetzt die Strings, die Sie ihr geben. Hat keine Ahnung, ob ein Schlüssel hinzugefügt, geändert oder entfernt wurde.", "locize": "saveMissing erfasst neue Schlüssel während der Entwicklung automatisch. Erkennung ungenutzter Schlüssel markiert veraltete Ãbersetzungen." }, 1218 { "title": "Kontext und Konsistenz", "ai": "âDriveâ kann ein Verb, ein Speicherort oder ein Markenname sein. Ohne Kontext rät die KI.", "locize": "Glossar-Begriffe und Schlüssel-Beschreibungen werden in jeden KI-Prompt eingespeist. âDriveâ bedeutet immer das, was Sie sagen." }, 1219 { "title": "Ãbersetzungs-Fix deployen", "ai": "Skript ausführen â JSON committen â PR öffnen â reviewen â mergen â deployen. Das ist der volle Zyklus für eine Tippfehler-Korrektur.", "locize": "Ãbersetzer bearbeitet im Locize-Editor â veröffentlicht â Ãnderung ist in Sekunden via CDN live. Null Entwickler-Beteiligung." }, 1220 { "title": "Zugriff für Nicht-Entwickler", "ai": "Einem Ãbersetzer oder Product Manager Zugriff auf Ãbersetzungen zu geben, bedeutet Zugriff auf Ihr Repo zu geben.", "locize": "Ãbersetzer haben ihre eigene UI. Sie arbeiten unabhängig, ohne Ihre Codebase oder Deployment-Pipeline anzufassen." }, 1221 { "title": "Audit-Trail und Verlauf", "ai": "Git blame ist Ihr Audit-Log. Viel Spass bei der Suche, wann und warum sich eine bestimmte Ãbersetzung geändert hat.", "locize": "Ãnderungen werden mit Wer und Wann protokolliert." }, 1222 { "title": "Staging vs. Produktion", "ai": "Sie verwalten das selbst, meist über separate JSON-Dateien oder Branches.", "locize": "Branches und Versionen erlauben es, Ãbersetzungen für ein anstehendes Release isoliert zu entwickeln und dann zu mergen â genau wie Ihr Git-Workflow." } 1223 ] 1224 }, 1225 "graduation": { 1226 "heading": "Schon komplett auf KI? So rüsten Sie nach", 1227 "subtitle": "Sie müssen Ihre LLM-Pipeline nicht wegwerfen. Nachrüsten heisst: Die KI bleibt der Ãbersetzer, die Verwaltungsschicht kommt dazu, in vier Schritten.", 1228 "mozillaHtml": "Genau dieser Fehlermodus machte Schlagzeilen, als Mozilla seine Support-Inhalte auf KI-first-Lokalisierung umstellte und die langjährige japanische Freiwilligen-Community geschlossen zurücktrat: Kritisiert wurde nicht, dass KI übersetzt, sondern dass <strong>nichts Terminologie und Stil durchsetzte</strong>. Die Lösung ist Governance, nicht bessere Prompts.", 1229 "steps": [ 1230 { "title": "Behalten Sie Ihre KI, geben Sie ihr Kontext", "body": "Bringen Sie Ihren eigenen OpenAI-, Gemini- oder Mistral-Key mit, oder Ihren eigenen OpenAI-kompatiblen Endpoint (oder nutzen Sie den eingebauten Dienst). Locize speist Ihr Glossar und Ihren
1230Styleguide in jeden Prompt ein, damit die Terminologie nicht mehr driftet." }, 1231 { "title": "Jede KI-Ãbersetzung bewerten", "body": "Quality Estimation bewertet jede KI-Ãbersetzung von 0 bis 1. Sichere Ergebnisse werden direkt gespeichert; unsichere gehen in den menschlichen Review, statt still live zu gehen." }, 1232 { "title": "Reviewen, was zählt, mit Nachweis", "body": "Reviewer arbeiten im Kontext der laufenden App. Accept/Decline-Historie und Provenance-Export zeigen, wer was wann freigegeben hat, mit welchem Qualitätsscore." }, 1233 { "title": "Ãber das CDN ausliefern", "body": "Freigegebene Ãbersetzungen publizieren ohne Redeploy auf ein globales CDN. Ihre CI-Pipeline bleibt; der Copy-Paste-Schritt entfällt." } 1234 ], 1235 "cta": "Governance zur KI-Pipeline hinzufügen", 1236 "blogLink": "Lesen: Wenn KI-Ãbersetzungen kippen", 1237 "actTitle": "Artikel 50 der EU-KI-Verordnung: in Kraft ab dem 2. August 2026", 1238 "actHtml": "Ab dem 2. August 2026 gelten die Transparenzpflichten aus Artikel 50 der EU-KI-Verordnung. Die finalen Leitlinien der Kommission (20. Juli 2026) nehmen treue KI-Ãbersetzungen von der maschinenlesbaren Kennzeichnung aus, aber KI-übersetzter Text, der die Ãffentlichkeit über Angelegenheiten von öffentlichem Interesse informiert, braucht weiterhin eine sichtbare Offenlegung â ausser er hat einen menschlichen Review mit redaktioneller Verantwortung durchlaufen, die Ausnahme, die die Leitlinien mit genau diesem Fall illustrieren. Die Schritte 2 und 3 zeichnen diesen Review auf, und der <strong>Provenance-Export</strong> macht aus der Aufzeichnung einen Nachweis: ein CSV+JSON-Report pro Version, Sprache oder Namespace, der zeigt, wer was wann freigegeben hat, aus welcher Quelle die Ãbersetzung stammt (Mensch, Maschine oder KI) und mit welchem Confidence-Score zum Entscheidungszeitpunkt. <a class=\\"brand-link\\" href=\\"{{actCheckHref}}\\">Machen Sie den Readiness-Check mit drei Fragen</a> oder sehen Sie sich das <a class=\\"brand-link\\" href=\\"{{actDocsHref}}\\">Artikel-50-Workflow-Setup</a> an." 1239 }, 1240 "faq": { 1241 "heading": "Häufige Fragen", 1242 "items": [ 1243 { 1244 "q": "Kann ich nicht einfach mein JSON in ChatGPT werfen?", 1245 "aHtml": "<p>Ja, und für ein Wochenend-Projekt mit 50 Strings ist das genau die richtige Antwort. Hören Sie hier auf zu lesen und liefern Sie aus.</p><p class=\\"mt-2\\">Das Problem tritt auf, wenn Ihr Produkt wächst. KI übersetzt die Strings, die Sie ihr jetzt gerade geben. Sie weiss nicht, dass Sie letzten Sprint 15 neue Schlüssel hinzugefügt haben, dass <code>drive</code> in Ihrer App âCloud-Speicherâ bedeutet und nicht âfahrenâ, oder dass ein Ãbersetzer den Tonfall von <code>welcomeMessage</code> schon dreimal korrigiert hat und die KI ihn immer wieder rückgängig macht.</p>" 1246 }, 1247 { 1248 "q": "Was ist mit einem Skript, das die KI-API automatisch aufruft?", 1249 "aHtml": "<p>Das löst die Ãbersetzung, schafft aber eine Wartungs-Verpflichtung:</p><ul class=\\"list-disc pl-5 mt-2 space-y-1 text-sm\\"><li>Wer führt das Skript aus, wenn ein Entwickler um 21 Uhr einen neuen Schlüssel hinzufügt?</li><li>Woher wissen Sie, welche Schlüssel sich geändert haben und welche ein menschlicher Ãbersetzer bereits freigegeben hat?</li><li>Wie geben Sie einem Nicht-Entwickler eine Möglichkeit, einen Tippfehler zu korrigieren, ohne die Codebase anzufassen?</li><li>Wie veröffentlichen Sie diese Korrektur für Nutzer ohne Deployment â und invalidieren dann den CDN-Cache, damit sie sie auch tatsächlich sehen?</li></ul><p class=\\"mt-2\\">Das Diffen der Locale-Dateien sind die einfachen 5 % â und ja, das geht wirklich in Millisekunden. Die anderen 95 % sind Auslieferung, Review und das Nicht-erneut-Ãbersetzen von dem, was bereits korrekt ist. Ein Skript löst das nicht.</p>" 1250 }, 1251 { 1252 "q": "KI-Ãbersetzungen sehen gut genug aus. Warum für Review zahlen?", 1253 "aHtml": "<p>Sie sind oft gut genug, insbesondere für Standard-UI-Strings. Das Problem ist die Konsistenz über Zeit. Wenn Ihre App weiterentwickelt wird, driftet der Tonfall der K
1253I-übersetzten Strings. âAbbrechenâ in einem Kontext wird âSchliessenâ in einem anderen. Der Markenbegriff für ein Feature wird an drei Stellen unterschiedlich übersetzt.</p><p class=\\"mt-2\\">Das Kontextfenster eines Modells vergisst zwischen Sessions; ein Translation Memory erinnert sich über Jahre. Locize's TM ist persistent, fuzzy-matched und projektübergreifend geteilt â derselbe Satz wird gleich aufgelöst, egal ob der Ãbersetzer, der ihn ursprünglich freigegeben hat, noch hier arbeitet oder nicht. Das Glossar fliesst direkt in den KI-Prompt ein â das ist der Teil, den rohes ChatGPT nicht replizieren kann, ohne dass Sie Ihre Stilregeln bei jedem Aufruf neu einfügen.</p>" 1254 }, 1255 { 1256 "q": "Was, wenn mein Projekt âfertigâ ist und ich keine laufende Lokalisierung brauche?", 1257 "aHtml": "<p>Lokalisierung ist selten wirklich fertig â und das ist die ganze Wette gegen âdie KI hat es einmal übersetzt, wir sind fertigâ. Einen Monat nach âfertigâ fügen Sie einen âPasswort vergessenâ-Link hinzu, aktualisieren Ihre Pricing-Copy, benennen ein Feature um oder erweitern auf eine vierzehnte Sprache. Jeder dieser Schritte startet den Zyklus neu, und die KI hat keine Ahnung, was bereits da war. Locize's <strong>Pause-Funktion</strong> friert ein Projekt mit 80 % Rabatt ein, wenn es wirklich im Maintenance-Modus ist â mit erhaltenem Verlauf und Workflow für die nächste Ãnderungsrunde.</p>" 1258 }, 1259 { 1260 "q": "Die Rechnung geht nicht auf â die KI-API kostet Cents pro Aufruf, und Locize kostet Dollar pro Monat.", 1261 "aHtml": "<p>Sie vergleichen eine Aufgabe mit einem System.</p><p class=\\"mt-2\\">5.000 Wörter durch Claude oder GPT zu jagen kostet etwa so viel wie ein Kaffee â einmal. Wenn das die ganze Arbeit ist, ist die API wirklich günstiger, und das haben wir oben auf der Seite auch gesagt. Meist ist das aber nicht die ganze Arbeit.</p><p class=\\"mt-2\\">Das Abo deckt das, was nach der Ãbersetzung passiert: <strong>Auslieferung</strong> (globales CDN mit Per-Branch- und Per-Tenant-Routing, Cache-Invalidierung), <strong>Iteration</strong> (Ãbersetzer bearbeiten ohne PR, Copy-Korrekturen sind in Sekunden live), <strong>Memory</strong> (fuzzy-matched, projektübergreifend â derselbe Satz wird nicht in jedem Zyklus neu übersetzt und erneut bezahlt) und <strong>Governance</strong> (Review, Audit-Trail, Wer-hat-was-geändert). âIhr verlangt echtes Geld, um eine YAML-Datei zu hostenâ ist eine faire Bauchreaktion auf die Pricing-Seite; das hier ist, was das Geld tatsächlich kauft.</p>" 1262 }, 1263 { 1264 "q": "Ich nutze bereits Cursor / Claude Code. Der Agent schreibt den Code UND übersetzt das JSON. Was bleibt für Locize übrig?", 1265 "aHtml": "<p>Die Datei einmal zu übersetzen. Das ist der einfache Teil.</p><p class=\\"mt-2\\">Danach muss der Agent eine 30-Sprachen-Datei ins Repo committen, neu deployen, wenn das Marketing eine Copy-Ãnderung will, einem Ãbersetzer eine Möglichkeit geben, die italienische Version zu korrigieren, ohne eine PR zu öffnen, und sich merken, welche Schlüssel er letzte Woche schon übersetzt hat, damit er sie beim nächsten Lauf nicht erneut generiert.</p><p class=\\"mt-2\\">Locize bietet einen <a class=\\"brand-link\\" href=\\"/docs/integration/mcp\\">MCP-Server</a> an, damit der Agent die Datei gar nicht erst übersetzt â er meldet die fehlenden Schlüssel, Locize übersetzt sie automatisch mit Ihrem Glossar, Styleguide und Translation Memory im Prompt, und das Ergebnis ist via CDN live, ohne neues Deployment. Der Agent bleibt in der IDE; die Strings ziehen aus dem Repo aus.</p>" 1266 }, 1267 { 1268 "q": "Gilt die EU-KI-Verordnung für meine KI-übersetzte App?", 1269 "aHtml": "<p>Weniger, als die Schlagzeilen vermuten lassen, aber nicht null. Artikel 50 der EU-KI-Verordnung ist ab dem 2. August 2026 in Kraft. Die finalen Leitlinien der Kommission (20. Juli 2026) nehmen treue KI-Ãbersetzungen von der maschinenlesbaren Kennzeichnungspflicht aus, aber KI-übersetzter Text, der veröffentlicht wird, um die Ãffentlichkeit über Angelegenheiten von öffentlichem Interesse zu informieren, braucht weiterhin eine sichtbare Offenlegung â ausser er hat einen menschlichen Review mit redaktioneller Verantwortung durchlaufen. Das eigene Be
1269ispiel der Leitlinien für diese Ausnahme ist eine menschlich geprüfte KI-Ãbersetzung; eine ungeprüfte KI-only-Pipeline kann das nicht belegen, eine Pipeline mit Governance kann es.</p><p class=\\"mt-2\\">Locize's <strong>Provenance-Export</strong> liefert den Nachweis: ein CSV+JSON-Report pro Version, Sprache oder Namespace â wer hat jede Ãbersetzung wann reviewt, freigegeben oder bearbeitet, aus welcher Quelle stammt sie (Mensch, Maschine oder KI), und welcher KI-Confidence-Score galt zum Entscheidungszeitpunkt. Der <a class=\\"brand-link\\" href=\\"/de/ai-act-check\\">Readiness-Check mit drei Fragen</a> sagt Ihnen, ob Ihre Ãbersetzungen betroffen sind; der <a class=\\"brand-link\\" href=\\"/de/docs/eu-ai-act-article-50\\">Artikel-50-Workflow-Guide</a> zeigt das komplette Setup.</p>" 1270 }, 1271 { 1272 "q": "Seid ihr nicht eigentlich nur eine Brücke zwischen Entwicklern, die kein JSON verwalten wollen, und Ãbersetzern, die kein Git lernen wollen?", 1273 "aHtml": "<p>Doch. Das ist das Produkt, nicht die Entschuldigung.</p><p class=\\"mt-2\\">Wenn Ihre Entwickler gerne Locale-Dateien in Git verwalten und Ihre Ãbersetzer fliessend in <code>git pull</code> sind, brauchen Sie keine Brücke. Die meisten Teams haben nur eine Seite davon auf ihrer Seite, nicht beide. Locize ist die Nahtstelle: Entwickler committen Schlüssel, Ãbersetzer bearbeiten in einer Web-UI, Ãnderungen gehen via CDN live â keine Seite muss je in die Werkzeuge der anderen wechseln.</p>" 1274 } 1275 ] 1276 }, 1277 "finalCta": { 1278 "heading": "Nutzen Sie KI zum Ãbersetzen. Nutzen Sie Locize zum Verwalten.", 1279 "subtitle": "Locize hat KI-Ãbersetzung eingebaut (BYOK oder unser eigener Service). Sie erhalten die Geschwindigkeit der KI mit der Workflow-Infrastruktur, die Ihr Team wirklich braucht.", 1280 "register": "Kostenlos starten", 1281 "seeAi": "KI-Funktionen ansehen" 1282 } 1283} 1284`,qs=`{ 1285 "meta": { 1286 "title": "EU AI Act Article 50 readiness check for AI-translated content", 1287 "description": "A free self-assessment: is your AI- and machine-translated content ready for the EU AI Act Article 50 transparency rules (from 2 August 2026)? Three questions, a plain-English verdict." 1288 }, 1289 "hero": { 1290 "badge": "EU AI Act · Article 50", 1291 "h1Prefix": "Is your AI-translated content ", 1292 "h1Accent": "Article 50 ready", 1293 "h1Suffix": "?", 1294 "intro": "From 2 August 2026, the EU AI Act's Article 50 transparency rules apply to AI-generated content. Article 50(4) exempts AI-generated text that has undergone human review with editorial responsibility. Answer three questions to see where your localization stands.", 1295 "disclaimerHtml": "Guidance, not legal advice. Read the <a href=\\"{{backgroundHref}}\\">background</a> and the <a href=\\"{{workflowHref}}\\">workflow guide</a>." 1296 }, 1297 "questions": { 1298 "usesAi": "Do you use AI or machine translation for any user-facing strings?", 1299 "humanReview": "Is there a human review step before AI/MT-translated content is published?", 1300 "record": "Do you keep a record of who reviewed each AI/MT translation, when, and at what confidence?" 1301 }, 1302 "choices": { 1303 "yes": "Yes", 1304 "no": "No" 1305 }, 1306 "missingHeading": "What's missing", 1307 "missing": { 1308 "review": "A human review step before AI/MT-translated content is published, the editorial responsibility Article 50(4) expects.", 1309 "record": "A durable record of who reviewed what, when, and at what AI confidence, that you can produce on demand." 1310 }, 1311 "verdict": { 1312 "notApplicable": { 1313 "title": "Article 50's AI-content rules likely don't apply to your translations", 1314 "body": "You don't use AI or machine translation for user-facing strings, so Article 50's transparency obligations for AI-generated text are unlikely to apply to them. Worth revisiting if you start using AI or MT." 1315 }, 1316 "incomplete": { 1317 "title": "A few more answers needed", 1318 "body": "Answer the remaining questions for a full readiness read." 1319 }, 1320 "strong": { 1321 "title": "Strong position", 1322 "body": "You use AI/MT, but human review with a recorded provenance trail is exactly the mechanism Article 50(4) describes. Make sure the review and the record cover all of your AI/MT-translated strings." 1323 }, 1324 "gap": { 1325 "title": "Likely gap", 1326 "body": "AI/MT-translated, user-facing content published without human review may not qualify for the Article 50(4) exemption. Add a human review step before publish, and keep a record of it." 1327 }, 1328 "almost": { 1329 "title": "Almost there", 1330 "body": "You review AI/MT content, but without a durable record you cannot evidence it. Article 50(4) leans on human review and editorial responsibility you can show. Add a provenance / audit trail." 1331 } 1332 }, 1333 "cta": { 1334 "heading": "A review workflow with a provenance trail is the exemption mechanism",
1335 "body": "Locize's human-review workflow records who reviewed each AI/MT translation, when, and at what AI confidence, and exports an auditor-ready provenance record. That is exactly the human review and editorial responsibility Article 50(4) describes.", 1336 "start": "Start free", 1337 "how": "See how it works" 1338 }, 1339 "faqItems": [ 1340 { 1341 "q": "Does EU AI Act Article 50 apply to machine-translated content?", 1342 "a": "Article 50 sets transparency obligations for AI-generated text. The Commission's final guidelines (July 20, 2026) exempt faithful AI translations from the machine-readable marking duty of Article 50(2). The visible-disclosure duty of Article 50(4) can still apply to AI-translated text that informs the public on matters of public interest, and it falls away for text that has undergone human review with editorial responsibility â the guidelines' own example of that exemption is a human-reviewed AI translation." 1343 }, 1344 { 1345 "q": "How do I make AI-translated content Article 50(4) ready?", 1346 "a": "Put a human review step before AI/MT-translated content is published, and keep a record of who reviewed what, when, and at what confidence, that you can produce on demand." 1347 }, 1348 { 1349 "q": "When do the Article 50 transparency rules apply?", 1350 "a": "The EU AI Act Article 50 transparency obligations apply from 2 August 2026." 1351 } 1352 ] 1353} 1354`,Js=`{ 1355 "meta": { 1356 "title": "AI translation infrastructure for engineers | Locize", 1357 "description": "Locize is the infrastructure for AI-driven translation: BYOK (OpenAI and any OpenAI-compatible endpoint, Gemini, Mistral, DeepL), MCP server for AI assistants, glossary/styleguide-aware AI, review workflow." 1358 }, 1359 "primaryCtaDefault": "Register for free", 1360 "hero": { 1361 "badge": "Not another AI Agent: your AI, your keys, your control", 1362 "h1Prefix": "The infrastructure your ", 1363 "h1Accent": "AI translation workflow needs.", 1364 "p1Html": "Every other TMS is rebranding as an \\"AI Agent\\" this year. Locize stays a <b>platform you control</b>: bring your own LLM keys (OpenAI, Gemini, Mistral, DeepL) or point Locize at your own OpenAI-compatible endpoint, keep your data in your provider's account, and let humans review what AI translates. Built for engineers, not for agentic-product launches.", 1365 "primaryCta": "Register for free", 1366 "aiLabel": "AI:", 1367 "mtLabel": "MT:", 1368 "aiProviders": ["Locize AI", "OpenAI", "Gemini", "Mistral", "..."], 1369 "mtProviders": ["Locize MT", "DeepL", "Google", "..."], 1370 "byokTitle": "Bring your own key", 1371 "byokDesc": "You control provider and usage.", 1372 "locizeAiTitle": "Or use Locize AI", 1373 "locizeAiDesc": "Token-based, credits included in every paid plan.", 1374 "whyTmsPromptHtml": "Wondering why you need a TMS if AI can already translate? <span class=\\"font-medium underline underline-offset-2 group-hover:no-underline\\">Read this â</span>", 1375 "imageAlt": "Locize AI Interface", 1376 "efficiencyLabel": "Efficiency Gain", 1377 "efficiencyValue": "Up to 90%", 1378 "efficiencyCaption": "Faster first-draft generation", 1379 "marqueeTitle": "Global companies using our AI features" 1380 }, 1381 "mcp": { 1382 "titlePrefix": "AI assistant localization: ", 1383 "titleAccent": "Locize MCP", 1384 "subtitle": "The Locize MCP server brings AI-assistant localization into your IDE: connect Claude, Cursor, VS Code, and any other MCP client to your translation projects. Read, update, and publish translations, and give your agent the glossary, style guide, and translation memory as context, without leaving your development environment.", 1385 "ctaLabel": "MCP setup guide", 1386 "agentsCta": "Agent conventions â", 1387 "examples": [ 1388 "Find all missing German translations in the checkout namespace", 1389 "Translate the checkout strings using the glossary, style guide & memory", 1390 "Lint this PR's new English strings against the project glossary", 1391 "Publish the latest version and wait for completion", 1392 "Add Japanese to all versions of my project", 1393 "Create a branch for feature-v2, then merge it back when ready", 1394 "Show me which keys changed in English this week", 1395 "Report these new keys from my codebase to Locize" 1396 ], 1397 "tools": [ 1398 { "title": "28 tools", "desc": "Read translations, reuse the glossary, style guide & translation memory, publish versions, manage branches: the full workflow plus in-IDE context." }, 1399 { "title": "OAuth or PAT auth", "descHtml": "Connect via OAuth from Claude Desktop / Cursor, or use a <a class=\\"link\\" href=\\"{{patHref}}\\">Personal Access Token</a>." }, 1400 { "title": "Works with any MCP client", "desc": "Claude Desktop, Claude Code, Cursor, VS Code, and any client that supports the MCP protocol." } 1401 ] 1402 }, 1403 "workflow": { 1404 "titlePrefix": "The complete AI translation ", 1405 "titleAccent": "workflow", 1406 "subtitle": "From code to live translations, fully automated. No files to commit, no deploy to trigger.", 1407 "steps": [ 1408 { "title": "Write code", "desc": "Developer writes code with t('key') using i18next, or an AI coding agent scaffolds the setup." }, 1409 { "title": "Keys auto-detected", "desc": "saveMissing sends new keys to Locize automatically. AI agents can call report_missing_keys via MCP." }, 1410 { "title": "AI auto-translates", "desc": "Locize translates using your configured provider with your styleguide, glossary, and translation memory as context." }, 1411 { "title": "Optional: human review", "desc": "Translators review and refine in the CAT editor. Skip this
1411step when AI quality is sufficient." }, 1412 { "title": "Live via CDN", "desc": "Translations publish to CDN, live in your app without a redeploy. No files to commit, no deploy to trigger." }, 1413 { "title": "AI manages the loop", "desc": "Your AI coding agent checks coverage, triggers publish, and manages the full workflow via the MCP server." } 1414 ], 1415 "localizeCta": "One-command localize â", 1416 "ciActionCta": "Free CI translation â", 1417 "setupCta": "Setup guide â", 1418 "tutorialCta": "saveMissing + AI tutorial â", 1419 "mcpCta": "MCP server docs â", 1420 "aiActCta": "EU AI Act & machine translation â" 1421 }, 1422 "privacy": { 1423 "heading": "Your Data. Your Models.", 1424 "intro": "Unlike other platforms that lock you into their proprietary (and often marked-up) AI services, Locize gives you the choice.", 1425 "byokTitle": "Bring Your Own Key (BYOK)", 1426 "byokDesc": "Keep your existing agreement with OpenAI, or run inference on your own infrastructure through an OpenAI-compatible endpoint. No middle-man markups.", 1427 "sovereigntyTitle": "Data Sovereignty", 1428 "sovereigntyDesc": "Translations are processed using your provider's privacy settings. Your data isn't used to train our models. With a self-hosted endpoint and the built-in services switched off, the text never leaves your infrastructure." 1429 }, 1430 "providers": { 1431 "titlePrefix": "Various translation providers, ", 1432 "titleAccent": "one workflow", 1433 "subtitle": "Mix AI and machine translation providers in the same project. Bring your own API key for full control, or use the built-in Locize services.", 1434 "aiLabel": "AI Providers", 1435 "mtLabel": "Machine Translation Providers", 1436 "ai": [ 1437 { "name": "Locize AI", "desc": "Built-in AI translation service, no external API key needed. Every paid plan includes an AI-token allowance; extra tokens can be topped up on use." }, 1438 { "name": "OpenAI", "desc": "OpenAI models via your own API key, or any OpenAI-compatible endpoint (self-hosted vLLM, LiteLLM, OpenRouter) via your own base URL and model name." }, 1439 { "name": "Google Gemini", "desc": "Gemini Pro and Flash models for high-quality AI translation." }, 1440 { "name": "Mistral AI", "desc": "European-hosted models for teams with data residency requirements." }, 1441 { "name": "Lara (by translated)", "desc": "AI engine used as MT." } 1442 ], 1443 "mt": [ 1444 { "name": "Locize MT", "desc": "Built-in machine translation service, no external API key needed." }, 1445 { "name": "Google Translate", "desc": "Free and limited tier of Google Translate, no API key required." }, 1446 { "name": "DeepL", "desc": "Known for natural-sounding European language translations." }, 1447 { "name": "MyMemory", "desc": "Community-powered translation memory with free API access." } 1448 ], 1449 "tmTitle": "+ Translation Memory", 1450 "tmDesc": "Fuzzy matching across all your past translations. Works alongside AI to maintain consistency.", 1451 "styleTitle": "+ Styleguide-Aware AI", 1452 "styleDesc": "Define tone, formality, and terminology rules per language pair, injected automatically into every AI and MT prompt so translations match your brand voice.", 1453 "qeTitle": "+ Quality Estimation", 1454 "qeDesc": "Every AI translation gets an AI-judged confidence score, shown in the editor. Low-confidence translations can be routed automatically into the review workflow." 1455 }, 1456 "whatIs": { 1457 "titlePrefix": "What is ", 1458 "titleAccent": "AI localization?", 1459 "p1": "AI localization is the practice of adapting content to the cultural and linguistic context of your audience. It goes beyond direct translation, aiming to preserve meaning, intent, tone, and UI fit.", 1460 "p2": "In Locize, AI is integrated into your existing translation workflow so teams can generate drafts faster, then review and refine with confidence." 1461 }, 1462 "howItWorks": { 1463 "titlePrefix": "Best practices and how ", 1464 "titleAccent": "it works", 1465 "subtitle": "A practical, step-by-step workflow you can apply to websites, apps, games, and product UI.", 1466 "stepLabel": "Step", 1467 "works": [ 1468 { 1469 "title": "Bring your own API key", 1470 "imageAlt": "Add your AI provider API key in Locize", 1471 "p1": "Add your OpenAI, Gemini, Mistral, or other provider key so you keep data ownership and can choose the model you prefer. For an OpenAI-compatible endpoint, add its base URL and model name as well.", 1472 "altCardLabel": "Alternative", 1473 "altCardTitle": "Use the built-in Locize AI service", 1474 "altCardDescHtml": "Prefer not to manage an external key? Use the integrated <strong>Locize AI service</strong> instead. Usage consumes <strong>AI tokens</strong>; every paid plan already includes an allowance, and extra tokens are billed on use." 1475 }, 1476 { 1477 "title": "Select your preferred model", 1478 "imageAlt": "Choose an AI model for translations",
1479 "p1": "Pick the model that fits your quality, latency, and budget needs. For UI localization, results are often close to publish-ready, with review." 1480 }, 1481 { 1482 "title": "Context: Metadata makes AI work", 1483 "imageAlt": "Add translation context in Locize", 1484 "p1Html": "AI is only as good as the info it receives. Locize automatically feeds your project <strong>glossary</strong> and <strong>key-level descriptions</strong> into the prompt, ensuring the AI knows that 'Drive' is a noun (storage) and not a verb (driving)." 1485 }, 1486 { 1487 "title": "Leverage glossary and translation memory", 1488 "imageAlt": "Use glossary and translation memory for better consistency", 1489 "p1Html": "Keep terminology consistent by continuing to use Locize's <a class=\\"link\\" href=\\"{{glossaryHref}}\\">glossary</a> and translation memory features." 1490 }, 1491 { 1492 "title": "Use it like machine translation", 1493 "imageAlt": "Run AI translation via bulk actions", 1494 "p1Html": "Translate single segments, run <a class=\\"link\\" href=\\"{{bulkHref}}\\">bulk actions</a>, or automate via the <a class=\\"link\\" href=\\"{{autoHref}}\\">automatic translation workflow</a>." 1495 }, 1496 { 1497 "title": "Refine translations with AI suggestions", 1498 "imageAlt": "Refine translations with AI suggestions", 1499 "p1": "Rephrase, shorten, or generate variants to match UI constraints and tone, then let translators review and finalize." 1500 } 1501 ] 1502 }, 1503 "whyChoose": { 1504 "titlePrefix": "Why choose ", 1505 "titleAccent": "AI localization?", 1506 "items": [ 1507 { "title": "Faster time-to-market", "desc": "Generate high-quality first drafts quickly so teams can ship in more languages with less delay." }, 1508 { "title": "Improved accuracy and consistency", "desc": "Context, glossary, and translation memory help preserve tone and terminology across your product." }, 1509 { "title": "Cost-effective first translations", "desc": "AI can accelerate initial translation work and reduce manual effort, with review where it matters." } 1510 ], 1511 "imageAlt": "AI model selection in Locize", 1512 "imageCaption": "Choose the model and workflow that fits your quality and governance requirements." 1513 }, 1514 "useCases": { 1515 "titlePrefix": "AI-powered localization for ", 1516 "titleAccent": "all use cases", 1517 "subtitle": "Keep up with fast product iteration without making localization a release blocker.", 1518 "cards": [ 1519 { "title": "Website Localization", "text": "Manage multilingual websites and publish updates continuously.", "href": "/blog/website-localization", "cta": "See website localization guide â" }, 1520 { "title": "Mobile App Localization", "text": "Accelerate translation cycles and keep releases moving.", "href": "/blog/what-is-mobile-app-localization", "cta": "See mobile app guide â" }, 1521 { "title": "Video Game Localization", "text": "Adapt UI text and content for global players with consistent terminology.", "href": "/blog/what-is-video-game-localization", "cta": "See game localization guide â" }, 1522 { "title": "Platform Localization", "text": "Scale localization across complex products and teams.", "href": "/blog/what-is-software-localization", "cta": "See platform guide â" }, 1523 { "title": "Website Builders", "text": "Add localization workflows to CMS and site builders without friction.", "href": "/blog/website-internationalization-best-practices", "cta": "See best practices â" }, 1524 { "title": "Any Integration", "text": "Use API, CLI, and automation hooks to fit your stack.", "href": "/docs/integration/api/", "cta": "Explore the API â" } 1525 ] 1526 }, 1527 "faq": { 1528 "titlePrefix": "Frequently asked ", 1529 "titleAccent": "questions", 1530 "subtitle": "Quick answers about AI localization in Locize.", 1531 "docsCta": "Go to docs", 1532 "items": [ 1533 { "q": "How does AI localization ensure accuracy and context in translations?", "aHtml": "<p class=\\"m-0\\">AI uses context and instructions to produce more natural translations. In Locize you can add project and key-level context so results match your UI and brand voice.</p>" }, 1534 { "q": "Can Locize's AI tools handle different software types?", "aHtml": "<p class=\\"m-0\\">Yes. The same workflow applies to websites, mobile apps, games, and platform UIs, as long as your strings are in Locize.</p>" }, 1535 { "q": "How easy is it to integrate AI localization into my workflow?", "aHtml": "<p class=\\"m-0\\">You can use AI via the UI, bulk actions, or automation workflows. Integrations like API and CLI help you keep translations in sync with your codebase.</p>" }, 1536 { "q": "Can I use AI without providing my own API key?", "aHtml": "<p class=\\"m-0\\">Yes. You can use the built-in Locize AI service which consumes AI tokens. Every paid plan already includes a token allowance (see <a class=\\"link\\" href=\\"{{pricingHref}}\\">pricing</a>); if you need more, extra tokens are simply added to your next invoice.</p>" },
1537 { "q": "If AI can translate my strings, why do I need a TMS at all?", "aHtml": "<p class=\\"m-0\\">AI translates strings. A TMS manages them over time, tracking which keys are missing, keeping terminology consistent across hundreds of keys, letting non-developers push fixes without a deployment, and maintaining an audit trail of every change. The two solve different problems, which is why Locize builds AI into the workflow rather than replacing it. <a class=\\"link\\" href=\\"{{whyNotAiHref}}\\">Longer answer here â</a></p>" } 1538 ] 1539 }, 1540 "finalCta": { 1541 "title": "Stop waiting. Start localizing.", 1542 "subtitle": "Create a new project and translate your application with a workflow your team can trust.", 1543 "primaryCta": "Register for free", 1544 "pricingLabel": "View pricing" 1545 } 1546} 1547`,Ys=`{ 1548 "skipToContent": "Skip to content", 1549 "nav": { 1550 "primaryAria": "Primary", 1551 "howItWorks": "How it works", 1552 "forYourTeam": "For your team", 1553 "pricing": "Pricing", 1554 "customers": "Customers", 1555 "services": "Services", 1556 "ai": "AI", 1557 "docs": "Docs", 1558 "blog": "Blog" 1559 }, 1560 "cta": { 1561 "login": "Login", 1562 "register": "Register", 1563 "registerForFree": "Register for free" 1564 }, 1565 "languageSwitcher": { 1566 "label": "Language", 1567 "en": "English", 1568 "de": "Deutsch", 1569 "it": "Italiano", 1570 "fr": "Français" 1571 }, 1572 "blog": { 1573 "title": "Blog", 1574 "subtitle": "Product updates, guides, and customer stories.", 1575 "searchLabel": "Search", 1576 "searchPlaceholder": "Search posts â¦", 1577 "allCategories": "ALL", 1578 "noResults": "No matches.", 1579 "postNotFound": "Post not found", 1580 "backToBlog": "Back to blog", 1581 "cta": { 1582 "heading": "Tired of managing translations by hand?", 1583 "body": "Locize is the translation management backend by the i18next team: CDN delivery, AI translation, in-context editing, no redeploys.", 1584 "button": "Start your free 14-day trial" 1585 }, 1586 "pagination": { 1587 "previous": "â Previous", 1588 "next": "Next â" 1589 } 1590 }, 1591 "footer": { 1592 "columns": { 1593 "product": "Product", 1594 "solutions": "Solutions", 1595 "company": "Company", 1596 "importantLinks": "Important Links", 1597 "registration": "Registration" 1598 }, 1599 "links": { 1600 "pricing": "Pricing", 1601 "howItWorks": "How it works", 1602 "services": "Services", 1603 "ai": "AI", 1604 "whyNotJustUseAi": "Why not just use AI?", 1605 "continuousLocalization": "Continuous localization", 1606 "fileFormats": "File Formats", 1607 "docs": "Docs", 1608 "i18next": "i18next", 1609 "i18nLibrary": "i18n library", 1610 "javascriptLocalization": "JavaScript localization", 1611 "websiteLocalizationServices": "Website localization services", 1612 "softwareLocalizationService": "Software localization service", 1613 "euAccessibilityAct": "EU Accessibility Act", 1614 "forYourTeam": "For your team", 1615 "multiTenant": "Multi-tenant", 1616 "blog": "Blog", 1617 "caseStudies": "Case studies", 1618 "security": "Security", 1619 "ourPhilosophy": "Our Philosophy", 1620 "compareCompetitors": "Compare Competitors", 1621 "swissMadeTms": "Swiss-made TMS", 1622 "terms": "Terms", 1623 "privacyPolicy": "Privacy policy", 1624 "dpa": "DPA", 1625 "ccpa": "CCPA terms", 1626 "support": "Support" 1627 }, 1628 "i18nLibraryLine": "<0>i18next</0> or any other <1>i18n library</1>", 1629 "aiLine": "<0>AI</0> - <1>Why not just use AI?</1>", 1630 "copyright": "© {{year}} inweso Ltd liab. Co. All Rights Reserved.", 1631 "social": { 1632 "emailTitle": "Email", 1633 "emailAria": "Email [email protected]", 1634 "xTitle": "X", 1635 "xAria": "Locize on X", 1636 "facebookTitle": "Facebook", 1637 "facebookAria": "Locize on Facebook", 1638 "youtubeTitle": "YouTube", 1639 "youtubeAria": "Locize on YouTube", 1640 "instagramTitle": "Instagram", 1641 "instagramAria": "Locize on Instagram" 1642 } 1643 } 1644} 1645`,Xs=`{ 1646 "meta": { 1647 "title": "Customers - Locize", 1648 "description": "Hear from 100+ teams including ABB, Swiss Red Cross, and ZKB on how Locize streamlined their localization workflow. Case studies and testimonials." 1649 }, 1650 "marqueeTitle": "Trusted by top-tier product companies", 1651 "hero": { 1652 "heading": "Customer Success Stories", 1653 "subtitle": "Hear what our customers have to say." 1654 }, 1655 "partnerStories": { 1656 "headingPrefix": "Partner ", 1657 "headingAccent": "Stories", 1658 "subtitle": "Real-world localization stories from the community.", 1659 "readStory": "Read The Story", 1660 "items": [ 1661 { 1662 "title": "The Importance of Multilingual Communication in Sc
1662hools: Attracting a Global Audience", 1663 "text": "Check out how Locize ensures that educational institutions can effortlessly curate and update their multilingual content, presenting themselves optimally to a worldwide audience." 1664 }, 1665 { 1666 "title": "Localization at Immersive Communities", 1667 "text": "How Immersive Communities leveraged Locize to manage localization?", 1668 "extraLinkText": "Read also the full story how Mario built this social network in 4 years as a solo developer." 1669 }, 1670 { 1671 "title": "Localization at Networkme", 1672 "text": "How Networkme became at least 20% more productive?\\n\\nCheck out how Networkme is empowering the copywriters with the autonomy to move at the speed they expect." 1673 }, 1674 { 1675 "title": "How we translated the Avocode website written in Next.js with the i18next package", 1676 "text": "How to translate a website that is always changing?" 1677 }, 1678 { 1679 "title": "ReactIntl + Namespaces + Locize", 1680 "text": "How ReactIntl in combination with Locize helps you with internationalization and localisation related tasks in your project." 1681 }, 1682 { 1683 "title": "Localization as a Service using Locize", 1684 "text": "So you manage Localizations in Word? Excel? JSON? XML? Notepad? Believe it or not, we've tried it all." 1685 } 1686 ] 1687 }, 1688 "testimonials": { 1689 "headingPrefix": "Customer ", 1690 "headingAccent": "Testimonials", 1691 "subtitle": "Hear what our customers have to say!", 1692 "tryLocize": "Try Locize" 1693 } 1694} 1695`,Zs=`{ 1696 "meta": { 1697 "title": "EU Accessibility Act and localization: multilingual compliance for digital products", 1698 "description": "The EU Accessibility Act (Directive 2019/882) enforcement started 28 June 2025. Locize handles the multilingual side: CDN updates, review workflow, audit log, glossary, AI translation with human review." 1699 }, 1700 "hero": { 1701 "badge": "Enforcement started 28 June 2025", 1702 "h1Prefix": "EU Accessibility Act: ", 1703 "h1Accent": "multilingual compliance for digital products", 1704 "p1Html": "<b>The EU Accessibility Act</b> (Directive (EU) 2019/882) requires digital products and services placed on the EU market to be accessible to people with disabilities. Enforcement started <b>28 June 2025</b>. Most SaaS, e-commerce, banking, telephony, transport, and audiovisual media companies serving EU users are in scope.", 1705 "p2": "The EAA itself focuses on accessibility, but it intersects with EU language rules. Cross-border digital products typically need to deliver content in the official languages of the EU markets they serve, and they need to update that content fast when compliance issues are flagged.", 1706 "p3Html": "<b>Locize handles the multilingual side</b>: CDN-delivered translations (no redeploys for compliance fixes), review workflow for legal sign-off, per-key audit log for compliance audits, glossary and style guide for terminology consistency, AI translation with human review for fast coverage of additional EU languages.", 1707 "ctaTrial": "Start your free trial", 1708 "ctaChecklist": "See the compliance checklist", 1709 "swissBadge": "Swiss-made TMS · EU-adjacent data residency", 1710 "gdprBadge": "GDPR-compliant", 1711 "imageAlt": "Locize review workflow â legal and accessibility sign-off on translated content", 1712 "imageCaption": "The Locize review workflow: legal or accessibility reviewers can approve each translation before it goes live." 1713 }, 1714 "whatIs": { 1715 "heading": "What changed on 28 June 2025", 1716 "subtitle": "Directive (EU) 2019/882 came into enforcement after a 6-year transition period. Penalties are now active.", 1717 "coversTitle": "What the EAA covers", 1718 "coversItems": [ 1719 "E-commerce websites and apps", 1720 "Banking and financial services (consumer-facing)", 1721 "Telephony: voice + smartphone manufacturers", 1722 "E-readers, e-books, and audiovisual media services", 1723 "Transport: passenger transport info, ticket machines", 1724 "Computers, smartphones, and ticketing systems", 1725 "Self-service terminals (ATMs, ticket vending)" 1726 ], 1727 "whoMustTitle": "Who must comply", 1728 "whoMustP1Html": "Any business (inside or outside the EU) placing covered products or services on the EU market. The microenterprise exemption (fewer than 10 employees AND under â¬2M annual turnover) only applies to the <b>service</b> requirements, not the product requirements.", 1729 "whoMustP2": "Most SaaS, e-commerce, fintech, and digital media companies serving EU users are in scope. National regulators (France's ARCOM, Germany's BFIT-Bund, Italy's AgID, etc.) have begun issuing compliance notices.", 1730 "penaltiesTitle": "Penalties (member-state defined)", 1731 "penaltiesP1": "Each EU member state defines its own enforcement. Penalties typically include: fines proportional to company turnover, removal of non-compliant products from the EU market, and mandatory remediation plans. Reputational risk is significant; enforcement notices are typically public." 1732 }, 1733 "language": { 1734 "heading": "Where multilingual content fits into EAA compliance", 1735 "subtitle": "The EAA focuses on accessibility (alt text, captions, keyboard navigation, screen-reader compatibility), but it doesn't exist in isolation.", 1736 "whyTitle": "Why multilingual matters here", 1737 "whyP1Html": "Accessibility is <b>content-in-the-user's-language</b> as a precondition. A screen reader cannot make English copy accessible to a Polish user; captions in a foreign language aren't accessibility.", 1738 "whyP2": "Multiple overlapping EU rules already require local-language content:", 1739 "whyBulletsHtml": [ 1740 "<b>Consumer Rights Directive (2011/83/EU)</b>: consumer info in the member-state language", 1741 "<b>Web Accessibility Directive (2016/2102)</b>: public-sector bodies, parallel scope", 1742 "National implementations: France's Toubon Law, Belgium's regional rules, Italy's Stanca Act" 1743 ], 1744 "practiceTitle": "What that means in practice", 1745 "practiceP1Html": "If you operate cross-border in the EU, you typically need to deliver your product in the official languages of the markets you serve, plus alternative text, captions, and accessibility statements <b>in those same languages</b>.", 1746 "practiceP2": "When a compliance issue is identified (by a regulator, a customer complaint, or an internal audit), fixes need to ship fast. That's where translation-by-redeployment becomes painful: a typo in an accessibility statement should not require a release." 1747 }, 1748 "checklist": { 1749 "heading": "Multilingual compliance checklist", 1750 "subtitle": "Practical questions to answer about the multilingual side of your EAA programme.", 1751 "itemsHtml": [ 1752 "<b>Which EU markets do you serve?</b> Map the official languages of each. As a floor, English is rarely sufficient by itself for consumer-facing services.", 1753 "<b>Is your accessibility statement available in each market language?</b> The statement itself is required under multiple EU rules, and must be in the language of the user.", 1754 "<b>Can you ship a translation correction without a deployment?</b> If a regulator flags a translation issue, you should be able to fix it in minutes, not in a release cycle.", 1755 "<b>Do you have a documented review workflow for translations?</b> Auditors will ask who signed off on the localised copy and when. Per-key audit log is the standard answer.", 1756 "<b>Are alt text, captions, error messages, and form labels translated?</b> These are easy to miss when localising marketing pages but not product chrome.", 1757 "<b>Is terminology consistent across all languages?</b> \\"Accept\\" / \\"Agree\\" / \\"Continue\\" inconsistencies can break the accessibility flow for screen-reader users moving across pages. A project glossary is the cleanest way to enforce this.", 1758 "<b>Can you add a language quickly if a new market becomes a priority?</b> Manual translation programmes typically take weeks; AI translation with human review can be days." 1759 ], 1760 "footnote": "This is a multilingual-content checklist. Accessibility itself also requires WCAG 2.2 AA compliance, EN 301 549 conformance, and product-specific requirements; consult an accessibility specialist for the full picture." 1761 }, 1762 "mapping": { 1763 "heading": "How Locize maps to EAA-driven multilingual needs", 1764 "subtitle": "Each Locize feature ties directly back to a multilingual-compliance need.", 1765 "headers": ["Compliance need", "Locize feature"], 1766 "rows": [ 1767 ["Ship a translation correction in minutes", "<a class=\\"brand-link\\" href=\\"{{cdnHref}}\\">CDN-delivered translations</a>: edits go live without a redeploy"], 1768 ["Legal / accessibility sign-off on translated copy", "<a class=\\"brand-link\\" href=\\"{{reviewHref}}\\">Review workflow</a>: accept/decline with diff visualisation, per-language reviewers"], 1769 ["Audit trail of who changed what, when", "<a class=\\"brand-link\\" href=\\"{{historyHref}}\\">Per-key history</a> + audit log on higher plans"], 1770 ["Consistent terminology across all languages", "<a class=\\"brand-link\\" href=\\"{{glossaryHref}}\\">Project glossary</a> + <a class=\\"brand-link\\" href=\\"{{styleguideHref}}\\">style guide</a> injected into AI prompts"], 1771 ["Add a new EU language quickly", "<a class=\\"brand-link\\" href=\\"{{autoTransHref}}\\">Automatic Translation</a> with BYOK (OpenAI, Gemini, Mistral, DeepL) + human review"], 1772 ["Multi-tenant overrides (regional brands, white-label)", "<a class=\\"brand-link\\" href=\\"{{multiTenantHref}}\\">Multi-tenant</a>: per-tenant override layer over a shared base"], 1773 ["EU/CH data residency for translation data", "Operated by a <a class=\\"brand-link\\" href=\\"{{swissHref}}\\">Swiss-registered company</a> with translation data hosted in AWS Ireland; see our <a class=\\"brand-link\\" href=\\"{{securityHref}}\\">security page</a>"] 1774 ] 1775 }, 1776 "customers": { 1777 "heading": "Teams already shipping multilingual EU products with Locize", 1778 "moreCta": "More customer stories" 1779 }, 1780 "faqSection": { 1781 "heading": "Frequently asked questions", 1782 "subtitle": "If your question is missing, email [email protected]" 1783 }, 1784 "faqItems": [ 1785 { "q": "What is the EU Accessibility Act?", "a": "The EU Accessibility Act (EAA, Directive (EU) 2019/882) is a 2019 EU directive requiring digital products and services placed on the EU market to be accessible to people with disabilities. Enforcement began 28 June 2025. Covered products include e-commerce, banking, transport, telephony, e-readers, audiovisual media services, computers, smartphones, and ticketing systems. Non-compliance leads to member-state-defined penalties, typically fines." }, 1786 { "q": "Does the EU Accessibility Act require multilingual content?", "a": "The EAA itself focuses on accessibility (alt text, captions, keyboard navigation, etc.), not language. But it interlocks with other EU rules: the Web Acce
1786ssibility Directive for public-sector bodies, the EU Consumer Rights Directive requiring consumer info in the member-state language, and national implementations that often add linguistic obligations. In practice, SaaS or e-commerce companies serving multiple EU markets need multilingual content alongside strict accessibility requirements." }, 1787 { "q": "Who must comply with the EU Accessibility Act?", "a": "Any business (inside or outside the EU) placing covered products or services on the EU market. Microenterprises providing services (fewer than 10 employees AND under â¬2M annual turnover) are exempt from the service requirements, but not the product requirements. Most SaaS, e-commerce, fintech, and digital-media companies serving EU users fall in scope." }, 1788 { "q": "How does Locize help with EU Accessibility Act compliance?", "a": "Locize covers the multilingual side: CDN-delivered translations so compliance fixes go live without redeployment, review workflow for sign-off by legal / accessibility experts, per-key audit log for compliance audits, glossary and style guide for terminology consistency, and AI translation with human review for fast coverage of additional EU languages." }, 1789 { "q": "Which languages must I cover for EU accessibility compliance?", "a": "There are 24 official EU languages. The exact requirement depends on which markets you serve and which national language laws apply. As a floor, most cross-border SaaS providers target the languages of the markets they actively sell into â typically a subset of: German, French, Spanish, Italian, Dutch, Polish, Portuguese, Swedish, plus English as a fallback. National regulators (e.g. France, Belgium, Quebec-influenced Wallonia) strictly enforce local language requirements." }, 1790 { "q": "What happens if my product is not compliant?", "a": "Member states define their own enforcement. Penalties typically include fines (proportional to company turnover), removal of non-compliant products from the market, and reputational damage. National regulators began issuing notices in late 2025. For service providers (vs. product manufacturers) there is additional grace period until 2030 in some scenarios, but the core enforcement started 28 June 2025." } 1791 ], 1792 "related": { 1793 "linksHtml": "Related: <a class=\\"brand-link\\" href=\\"{{websiteHref}}\\">Website localization services</a> · <a class=\\"brand-link\\" href=\\"{{softwareHref}}\\">Software localization service</a> · <a class=\\"brand-link\\" href=\\"{{swissHref}}\\">Swiss-made TMS</a> · <a class=\\"brand-link\\" href=\\"{{jsHref}}\\">JavaScript localization</a> · <a class=\\"brand-link\\" href=\\"{{securityHref}}\\">Security & data residency</a>", 1794 "footnote": "This page describes the multilingual-content side of EAA compliance. Accessibility itself (alt text, captions, keyboard navigation, WCAG/EN 301 549 conformance) requires specialist tooling and audits; consult an accessibility expert for a full compliance programme." 1795 }, 1796 "finalCta": { 1797 "title": "Ship multilingual EU products without redeploys.", 1798 "subtitle": "Free 14-day trial. No credit card required.", 1799 "primaryLabel": "Register for free" 1800 } 1801} 1802`,Qs=`{ 1803 "meta": { 1804 "title": "For your team - Locize", 1805 "description": "Locize for developers, managers, and translators: tools each role actually wants to use." 1806 }, 1807 "hero": { 1808 "h1": "The translation platform your whole team can actually use", 1809 "subtitle": "For Developers, Managers, and Translators.", 1810 "roles": [ 1811 { "role": "Developers", "target": "developers", "desc": "Automate your i18n workflow and stay in the IDE." }, 1812 { "role": "Managers", "target": "managers", "desc": "Track ROI, manage budgets, and ship with confidence." }, 1813 { "role": "Translators", "target": "translators", "desc": "High-context tools and AI-assisted workflows." } 1814 ], 1815 "viewFeatures": "View Features â", 1816 "intro": "Leverage the power of Locize for every team role. It optimizes the way development and translation teams collaborate.", 1817 "subIntroHtml": "As tech team leader / engineering manager you will have one less thing to worry actively about.<br />It makes engineering teams faster, more efficient and saves money overall. <a href=\\"https://youtu.be/lCuHSZvSiVg\\" target=\\"_blank\\" rel=\\"noreferrer\\">Check out</a> what Locize is able to offer you.<br /><a href=\\"{{trialHref}}\\" target=\\"_blank\\" rel=\\"noreferrer\\">Try the free trial</a>, set up your Locize project, compare it with your existing process and validate it with your team members." 1818 }, 1819 "managers": { 1820 "title": "For Project / Translation Managers", 1821 "subtitle": "Accountability, Visibility, and Speed-to-Market.", 1822 "items": [ 1823 { "title": "Global Visibility", "imageAlt": "Locize dashboard", "p1": "Gain total visibility over your global footprint. From the high-level dashboard down to individual files, you have the real-time data needed to ship with confidence and meet international deadlines without the guesswork." }, 1824 { "title": "Data-Driven Strategy", "imageAlt": "Locize statistics", "p1": "Turn localization from a cost center into a growth engine. Monitor word counts, translation velocity, and developer activity to optimize your budget and track ROI as you scale into new markets." }, 1825 { "title": "Full Audit Logs & Accountability", "imageAlt": "Locize history", "p1": "Maintain a clear paper trail for every string. Our detailed history logs ensure accountability and make it easy to revert changes, giving you peace of mind in regulated industries or large team environments." }, 1826 { "title": "Order translations", "imageAlt": "Locize ordering", "p1": "While you can have your translations done by freelancers or in-house employees using Locize itself you also got the options to directly order translations from inside Locize.", "p2": "Currently you can order directly from TextMaster or BLEND." }, 1827 { "title": "Keep your team up to date", "imageAlt": "Locize notification", "p1": "Keep your team up to date by enabling our notification integration with slack.", "p2": "Get notified when something noteworthy happens to your localization project." } 1828 ] 1829 }, 1830 "translators": { 1831 "title": "For Translators", 1832 "subtitle": "Being more efficient using Locize.", 1833 "items": [ 1834 { "title": "Smart translation memory", "imageAlt": "translation memory", "p1": "All the benefits of a translation memory. Reuse translations already done. Lookup used terminology.", "p2": "Take your translation memory with you exporting it to be used in SDL Trados or other localization tools." }, 1835 { "title": "Incontext Editing", "imageAlt": "incontext editor", "p1": "Translate directly in your Website / Application. Every translation is a click away.", "p2": "Translating from within your context is the best way to understand the context of your translation." }, 1836 { "title": "Configurable review workflow with per-language approval", "imageAlt": "review workflow", "p1": "You can enable the review workflow for specific languages.", "p2": "This way each time someone changes a translation, it will start a review workflow. The actual value will not be changed until someone will accept one of the translation proposals." }, 1837 { "titleHtml": "Machine or <a href=\\"{{aiHref}}\\">generative AI</a> translations", "imageAlt": "machine translation", "p1": "AI translations are production-ready for many use cases like internal tools, technical documentation, and developer-facing content. For brand-critical content, Locize provides the review workflow to perfect them.", "p2": "Use machine or generative AI translations for initial drafts and let translators review and refine where it matters." } 1838 ] 1839 }, 1840 "developers": { 1841 "title": "For Developers", 1842 "subtitle": "Less time needed for localization means more time for coding.", 1843 "items": [ 1844 { "title": "Full REST API with 60+ endpoints", "imageAlt": "Locize api", "p1": "Build any integration against our API.", "p2": "Add new translations, add new versions and publish them to our CDN using a simple API call." }, 1845 { "title": "CLI Tool", "imageAlt": "Locize commandline", "p1": "Integrate our cli tool into your build process.", "p2": "Download translation files in any format provided by Locize using your commandline.", "p3": "Synchronize your translations with Locize without having to change your co
1845de." }, 1846 { "title": "Add new segments from code", "imageAlt": "Locize code", "p1": "No need to add segments manually. Never leave your editor again to add translations.", "p2": "Using e.g. i18next instrumenting your code for internationalization new segments get added to your Locize project automatically." }, 1847 { "title": "Parallel Development & Translation", "imageAlt": "Locize versioning", "p1": "Stop letting translations block your release cycle. Versioning allows your developers to ship v2.0 code while translators finalize v1.1 content in parallel.", "p2": "No more merge conflicts on JSON files. Just a smooth, independent workflow for every role.", "p3Html": "Building a multi-tenant product? <a class=\\"text-white/90 underline\\" href=\\"{{multiTenantHref}}\\">Per-customer translation overrides</a> let each of your customers customize language without forking your setup." } 1848 ] 1849 }, 1850 "security": { 1851 "title": "Enterprise Security & Access Control", 1852 "subtitle": "The controls your security team requires.", 1853 "items": [ 1854 { "title": "SAML SSO", "desc": "Enterprise single sign-on via your identity provider. Available on Professional plans and above." }, 1855 { "title": "Per-project MFA enforcement", "desc": "Require multi-factor authentication for all users on a project, enforced at the project level." }, 1856 { "title": "WebAuthn (passwordless)", "desc": "Hardware key and biometric login support for phishing-resistant authentication." }, 1857 { "title": "Role-based access control", "desc": "Scope permissions per version, per language, and per namespace. Users see only what they need." }, 1858 { "title": "Permission inheritance", "desc": "Roles flow from parent to child projects in multi-tenant setups. Consistent access control across all tenants." }, 1859 { "title": "GDPR-compliant processing", "desc": "Data processed in compliance with GDPR. Swiss company with transparent data handling practices." } 1860 ], 1861 "cta": "Security details â" 1862 }, 1863 "support": { 1864 "heading": "Ready to align your team or you need some help getting started?", 1865 "subtitle": "Get any questions you may have about integrating Locize answered by one of our team members.", 1866 "cta": "Contact us!" 1867 } 1868} 1869`,$s=`{ 1870 "meta": { 1871 "title": "Locize â Localization and Translation Management Platform", 1872 "description": "Locize bridges development and translation. Continuous localization for developers, translators, and product teams. Built by the creators of i18next." 1873 }, 1874 "marqueeTitle": "Trusted by teams worldwide", 1875 "hero": { 1876 "badge": "One platform to localize your whole product", 1877 "rotatingHeadlines": [ 1878 "Ship translations\\nwithout redeploying\\nyour app", 1879 "The native translation\\nbackend for i18next", 1880 "Your AI translations,\\nreviewed and consistent,\\nlive without a deploy.", 1881 "Continuous localization\\nfor developers\\nand translators" 1882 ], 1883 "subtitle": "Locize is a localization platform that connects your code and i18n setup with translators and delivers translation updates continuously, without blocking releases.", 1884 "builtByPrefix": "Built by the creators of ", 1885 "builtByLink": "i18next", 1886 "builtByDot": ".", 1887 "worksWithPrefix": "Works with ", 1888 "worksWithLink": "any i18n library", 1889 "worksWithSuffix": " and workflow.", 1890 "swissNoticeHtml": "ð¨ð Made available to you by a <a class=\\"brand-link\\" href=\\"{{swissHref}}\\">Swiss company</a>.", 1891 "bullets": [ 1892 "Automate your workflow and ship global products faster.", 1893 "Developers keep ownership in code/CI; translators work in a dedicated UI.", 1894 "Review workflows and versions: visibility for engineering managers, product, and localization.", 1895 "Deliver via CDN/API so translation updates don't require a full app redeploy." 1896 ], 1897 "primaryCta": "Register for free", 1898 "secondaryCta": "See how it works", 1899 "docsLink": "Docs", 1900 "demoLink": "Watch demo", 1901 "servicesLink": "Services", 1902 "trialBadge": "14-day trial · full features · no credit card",
1903 "planBadgeHtml": "Then pick <a class=\\"link\\" href=\\"{{pricingHref}}#plan=fixed\\">Free</a> (forever) or any paid plan, your choice", 1904 "imageAlt": "Locize: Bridging localization and development", 1905 "bridgeCaption": "Bridge the gap between developers, product managers, and translators.", 1906 "roleCards": [ 1907 { "id": "developers", "title": "For Developers", "desc": "CLI, API, and native i18next integration. Zero JSON file management." }, 1908 { "id": "managers", "title": "For Managers", "desc": "Usage-based cost control, review workflows, and project health metrics." }, 1909 { "id": "translators", "title": "For Translators", "desc": "AI-assisted CAT tool, In-Context Editor, and glossary management." } 1910 ] 1911 }, 1912 "whatIsLocize": { 1913 "title": "What Locize is", 1914 "titleSmall": "(in one minute)", 1915 "intro": "Locize bridges engineering and localization: keys flow from your codebase, translators work in a UI, and your app receives updates continuously.", 1916 "steps": [ 1917 { "label": "Sync", "title": "From code to Locize", "desc": "Push new keys and source strings via CLI/CI, or connect directly from your i18n setup." }, 1918 { "label": "Translate / Review", "title": "UI + workflow", "desc": "Translators and reviewers work in a dedicated UI with roles, review steps, and quality checks." }, 1919 { "label": "Deliver", "title": "Runtime updates", "desc": "Serve translations via CDN/API so updates don't need to wait for a full redeploy." } 1920 ], 1921 "typicalFlowTitle": "Typical flow", 1922 "typicalFlowSubtitle": "From missing keys to runtime delivery", 1923 "flowSteps": ["instrument app", "auto-send missing keys", "translation workflow", "app fetches updates"], 1924 "flowWorkflowSubsteps": ["auto-translate (AI/MT)", "review & correct", "auto-publish"], 1925 "roleCards": [ 1926 { "title": "For developers", "desc": "Integrate once, automate sync in CI, and stop manual file juggling." }, 1927 { "title": "For engineering leaders", "desc": "Reduce release risk with visibility, roles, and versioned delivery." }, 1928 { "title": "For localization teams", "desc": "Translate in a UI with review steps, QA checks, and context." } 1929 ] 1930 }, 1931 "socialProof": { 1932 "title": "Fits into your stack", 1933 "subtitle": "Keep keys and releases in code/CI. Let translators and reviewers work in a dedicated UI. Deliver updates via CDN/API when you're ready.", 1934 "badges": ["i18next", "CI/CD", "Review workflow", "CDN/API delivery", "AI/MT pre-translation"], 1935 "builtByLabel": "Built by the creators of", 1936 "worksWithAny": "Works with any i18n library and workflow.", 1937 "integrationHubTitle": "Integrates with your existing workflow", 1938 "integrationHubIntroHtml": "Whether you use i18next, <a class=\\"brand-link\\" href=\\"{{i18nLibsHref}}\\">other i18n libraries</a>, web frameworks, mobile SDKs, or simple API calls, Locize is the source of truth for your translations.", 1939 "integrations": [ 1940 { "name": "i18next" }, 1941 { "name": "React" }, 1942 { "name": "Vue" }, 1943 { "name": "Angular" }, 1944 { "name": "Next.js" }, 1945 { "name": "Node.js" }, 1946 { "name": "CLI / CI-CD" }, 1947 { "name": "API" }, 1948 { "name": "Figma Plugin" }, 1949 { "name": "Mobile (iOS/Android)" }, 1950 { "name": "Various File Formats", "href": "/file-formats" }, 1951 { "name": "PHP / Python / Java / .NET" } 1952 ], 1953 "quickLinks": [ 1954 { "label": "i18next", "href": "/i18next", "kind": "outline" }, 1955 { "label": "Docs", "href": "/docs", "kind": "ghost" }, 1956 { "label": "How it works", "href": "/how-it-works", "kind": "ghost" }, 1957 { "label": "AI-powered translation", "href": "/ai", "kind": "ghost" }, 1958 { "label": "Connect your AI assistant via MCP", "href": "/docs/integration/mcp", "kind": "ghost" } 1959 ] 1960 }, 1961 "developerQuickstart": { 1962 "title": "Quick hands-on evaluation", 1963 "titleSmall": "(with an i18next example)", 1964 "intro": "Want to verify the integration path quickly? Here's a practical setup sketch and the shortest route to a working project.", 1965 "quickstartLabel": "Quickstart", 1966 "quickstartTitle": "Connect your app & ship translations continuously", 1967 "stepsHtml": [ 1968 "Sign up for a 14-day full-feature trial, no card required. During or after the trial, pick the <a class=\\"brand-link\\" href=\\"{{pricingHref}}#plan=fixed\\">
1968Free plan</a> (forever) or any paid plan to keep your project.", 1969 "Hook up your i18n setup (i18next is the most common)", 1970 "Sync resources via CLI/CI, or serve via CDN", 1971 "Let translators work in the UI or In-Context editor" 1972 ], 1973 "primaryCta": "Create free project", 1974 "secondaryCta": "Open docs", 1975 "shortcutsLabel": "Shortcuts", 1976 "shortcutLinks": [ 1977 { "label": "i18next integration", "href": "/i18next" }, 1978 { "label": "JavaScript localization guide", "href": "/javascript-localization" }, 1979 { "label": "Services", "href": "/services" }, 1980 { "label": "Pricing", "href": "/pricing" } 1981 ], 1982 "codeLabel": "Code", 1983 "codeTitle": "Typical i18next setup (backend)", 1984 "codeIntro": "Plug in Locize as your i18next backend and keep translations synced without manual file juggling.", 1985 "codeFilename": "i18next (example)", 1986 "alreadyHaveTitle": "Already have an i18next project?", 1987 "alreadyHaveIntro": "Run this in your repo root, no config needed.", 1988 "fullPathLink": "See the full migration path â", 1989 "demoVideoTitle": "Locize demo: continuous localization workflow" 1990 }, 1991 "whyChoose": { 1992 "prefix": "Why did our customers choose", 1993 "brand": "Locize?", 1994 "intro": "A localization platform that connects product, engineering, and translators without adding release friction.", 1995 "benefitsLabel": "Benefits", 1996 "bullets": [ 1997 "Sync missing keys automatically from i18next, no manual export needed", 1998 "CLI and GitHub Actions for CI/CD pipelines", 1999 "Flat monthly pricing, no per-seat or per-word surprises", 2000 "Integrations & CI/CD compatibility", 2001 "Review workflow with role-based access and audit trail", 2002 "Real-time updates via CDN" 2003 ], 2004 "experienceLabel": "Customer experience", 2005 "experienceTitle": "Save time and streamline your translation process", 2006 "whyLinkLabel": "Why Locize", 2007 "quote": "We reduced manual steps and made localization a reliable part of our delivery pipeline. Updates go out continuously, without blocking releases.", 2008 "attributionName": "Engineering team, Locize customer", 2009 "attributionContextHtml": "<a class=\\"brand-link\\" href=\\"{{continuousHref}}\\">Continuous localization</a> workflow", 2010 "badges": ["CI", "CDN", "QA"] 2011 }, 2012 "featureGrid": { 2013 "title": "Everything you need to run localization like engineering", 2014 "subtitle": "A modern translation management workflow that fits into CI/CD and keeps teams aligned.", 2015 "items": [ 2016 { "title": "Keep translation keys in sync", "body": "Detect missing keys, push new segments automatically, and keep source strings consistent across releases." }, 2017 { "title": "Ship translations without redeploys", "body": "Every other TMS gives you a file. Locize gives you a URL. Publish updates through the Locize CDN and your apps fetch the latest content instantly, no build, no deploy." }, 2018 { "title": "Made for product teams", "body": "Give translators and reviewers a dedicated UI while developers keep working in their existing workflow." }, 2019 { "title": "150+ languages, 50 versions, and tenant overrides, all from one project", "body": "Support multiple environments, versions, and languages with a process that grows with your product." }, 2020 { "title": "Clear quality checks", "body": "Review changes, validate completeness, and reduce regressions with structured workflows." }, 2021 { "title": "Various file formats", "bodyHtml": "Import XLIFF, Gettext, Android strings, RESX, Fluent, and more. Export to any format your stack requires. <a class=\\"link\\" href=\\"{{fileFormatsHref}}\\">See all formats â</a>" }, 2022 { "title": "Per-customer translation overrides", "bodyHtml": "SaaS teams can give each customer their own translation layer, without managing separate projects. <a class=\\"link\\" href=\\"{{multiTenantHref}}\\">Learn about multi-tenant â</a>" }, 2023 { "title": "Use Locize from your AI assistant", "bodyHtml": "Not another branded AI Agent: a platform you control, with your own LLM keys. Connect Claude, Cursor, or VS Code to your translations via the <a class=\\"link\\" href=\\"{{mcpHref}}\\">Locize MCP server</a> and manage them without leaving your development environment." }, 2024 { "title": "Onboard in under 10 minutes", "body": "Start small: one project, a few namespaces, and a repeatable process you can standardize later." } 2025 ] 2026 }, 2027 "aiPositioning": { 2028 "title": "AI translates. Locize keeps it right.", 2029 "intro": "AI tools are excellent at generating translations. What they miss is everything around them: the 15 keys you added last sprint, that \\"drive\\" means storage in your app, the tone a reviewer already fixed three times. Locize sits around your AI, with Locize AI or your own
2029LLM keys: it checks, reviews and versions what the AI produces, and ships the result without a deploy.", 2030 "ctaLabel": "Why not just use AI?" 2031 }, 2032 "testimonials": { 2033 "title": "Don't take our word for it", 2034 "subtitle": "Teams use Locize to remove translation work from the critical path.", 2035 "moreCta": "More customer stories" 2036 }, 2037 "faq": { 2038 "title": "Frequently asked questions", 2039 "subtitle": "Quick answers to help you evaluate Locize.", 2040 "docsCta": "Go to docs", 2041 "comparePromptHtml": "Looking for a comparison? <a href=\\"{{compareHref}}\\">See how Locize compares to alternatives â</a>", 2042 "items": [ 2043 { "q": "What is Locize used for?", "aHtml": "<p class=\\"m-0\\">Locize helps teams manage translations and deliver them continuously. Developers integrate it into their i18n setup, while translators and reviewers work in a dedicated UI.</p>" }, 2044 { "q": "Can I integrate Locize with i18next?", "aHtml": "<p class=\\"m-0\\">Yes. Locize is commonly used together with i18next workflows (including automation for missing keys and syncing resources).</p>" }, 2045 { "q": "Do I need to redeploy to publish translation updates?", "aHtml": "<p class=\\"m-0\\">Typically no. Translations can be served via the Locize CDN so applications can fetch the latest versions without a full redeploy.</p>" }, 2046 { "q": "Where should I start?", "aHtml": "<p class=\\"m-0\\">Start with the documentation intro and connect Locize to your i18n setup. You can then push your existing keys or let missing keys be detected and synced.</p>" } 2047 ] 2048 }, 2049 "finalCta": { 2050 "title": "Start localizing today", 2051 "subtitle": "Create a project, connect your i18n setup, and publish translations continuously.", 2052 "trialBadge": "Free trial: no credit card required", 2053 "planBadgeHtml": "<a class=\\"link mr-1\\" href=\\"{{pricingHref}}#plan=fixed\\">Free plan</a>available", 2054 "demoQuestionHtml": "Looking for a demo call? <a class=\\"no-underline text-white/70 hover:text-white/100\\" href=\\"{{whyNoSalesHref}}\\">Read why we prefer code over calls.</a>", 2055 "primaryCta": "Register for free", 2056 "secondaryCta": "Read the docs" 2057 } 2058} 2059`,ec=`{ 2060 "meta": { 2061 "title": "How it works - Locize", 2062 "description": "From file-based workflows to fully automated continuous localization â see how Locize integrates with your stack." 2063 }, 2064 "hero": { 2065 "heading": "How it works", 2066 "subtitleHtml": "Use Locize in a way that matches your team: from classic file workflows to fully automated continuous localization. See it applied to <a class=\\"brand-link\\" href=\\"{{websiteHref}}\\">website localization</a>, <a class=\\"brand-link\\" href=\\"{{softwareHref}}\\">software localization</a>, and the <a class=\\"brand-link\\" href=\\"{{jsHref}}\\">JavaScript stack</a>." 2067 }, 2068 "fileBased": { 2069 "title": "File-Based Management", 2070 "subtitle": "For teams who prefer manual control over their translation assets.", 2071 "imageAlt": "Locize editor", 2072 "featureTitle": "Classic Import / Export", 2073 "p1": "Work with the formats you know. Upload your JSON, XLIFF, or Gettext files, manage them in our high-productivity editor, and export them back to your repository.", 2074 "p2Html": "<strong>The Benefit:</strong> Total manual control with the power of Locize's Smart Translation Memory and <a href=\\"{{aiHref}}\\">AI-assisted suggestions</a>.", 2075 "p3Html": "Learn more about the <a href=\\"{{formatsHref}}\\" target=\\"_blank\\" rel=\\"noreferrer\\">supported formats</a>." 2076 }, 2077 "automated": { 2078 "title": "Automated Pipelines", 2079 "subtitle": "Sync your localization with your CI/CD or Git workflow.", 2080 "imageAlt": "Locize CLI", 2081 "featureTitle": "CLI, API, and GitHub Actions", 2082 "p1Html": "Remove the \\"human middleman.\\" Use our <a href=\\"{{apiHref}}\\" target=\\"_blank\\" rel=\\"noreferrer\\">API</a>, <a href=\\"https://github.com/locize/locize-cli#synchronize-locize-with-your-repository-or-any-other-local-directory\\" target=\\"_blank\\" rel=\\"noreferrer\\">CLI Sync tool</a>, <a href=\\"https://github.com/locize/download\\" target=\\"_blank\\" rel=\\"noreferrer\\">Download Action</a>, or <a href=\\"https://github.com/locize/sync\\" target=\\"_blank\\" rel=\\"noreferrer\\">Sync Action</a> to keep translations in sync and download the latest files every time you build.", 2083 "p2Html": "<strong>The Benefit:</strong> Your codebase and translations are always in sync without a developer ever having to manually download a file again." 2084 }, 2085 "continuous": { 2086 "title": "Continuous Localization", 2087 "subtitle": "The \\"Hands-Off\\" approach for maximum speed.", 2088 "imageAlt": "Locize InContext", 2089 "featureTitle": "Live Sync via CDN", 2090 "p1": "The zero-deployment setup: translations go live via CDN without code changes. Your app connects directly to the Locize CDN.", 2091 "bulletsHtml": [ 2092 "<strong>Auto-Discovery:</strong> New text in your code is automatically added to Locize.", 2093 "<strong>Instant Publishing:</strong> Translators save a change, and it's live in your app instantly.", 2094 "<strong>Zero Deployments:</strong> Update copy, fix typos, or add languages without a single line of code change.", 2095 "<strong>Usage Tracking:</strong> <a href=\\"{{unusedHref}}\\">Detect unused keys</a> and stop maintaining translations nobody sees." 2096 ], 2097 "outroHtml": "See the full power in this <a href=\\"https://youtu.be/osScyaGMVqo\\" target=\\"_blank\\" rel=\\"noreferrer\\">video sample</a> for react.js. Learn more about the integration options using <a href=\\"{{i18nextHref}}\\">i18next</a> or other i18n frameworks below." 2098 }, 2099 "branches": { 2100 "title": "Translation CI/CD", 2101 "subtitle": "Translation branches work like code branches.", 2102 "imageAlt": "Locize branching", 2103 "featureTitle": "Branches that mirror your dev workflow", 2104 "p1": "Create a translation branch when you open a feature branch. Translate new strings in isolation. Merge translations when the feature ships. Your translators and your codebase stay in sync, with no surprises at release time.", 2105 "p2": "Test translations in staging without affecting production. When the feature is ready, merge the translation branch just like you merge code. Designed for teams using GitFlow, feature branches, or any workflow where translations need to be isolated until a release is ready.", 2106 "linkHtml": "<a href=\\"{{branchesDocsHref}}\\">Learn more about branches vs. versions â</a>" 2107 }, 2108 "integrationFor": { 2109 "title": "There is an integration option for everyone", 2110 "subtitle": "Integrations for every stack: i18next, locizify, CLI/API, and file-based workflows." 2111 }, 2112 "integrations": { 2113 "locizify": { 2114 "tagline": "Localize any website, no code changes required.", 2115 "whereLabel": "Where to use:", 2116 "bulletsHtml": [ 2117 "Add one script tag and your site is translatable", 2118 "No developer needed, suitable for content teams and marketers", 2119 "Plurals, interpolation, and URL-based namespace routing built in", 2120 "Built on a virtual-DOM implementation on top of <a href=\\"{{i18nextHref}}\\">i18next</a>", 2121 "Works with WordPress, Shopify, and other site builders", 2122 "In-context editing included: translate directly on your live page" 2123 ], 2124 "cta": "Set up locizify" 2125 }, 2126 "i18next": { 2127 "tagline": "Best translation management for i18next.", 2128 "imageAlt": "i18next frameworks", 2129 "whereLabel": "Where to use:", 2130 "bulletsHtml": [ 2131 "Suitable for all UI Frameworks: React, Angular, Vue, jQuery, Next.js, and more", 2132 "Minimal programming skills required", 2133 "Flexible translations options like plurals, interpolation, context, â¦", 2134 "Based on open source i18n framework <a href=\\"{{i18nextHref}}\\">i18next</a>", 2135 "Usable on web, mobile and desktop and server" 2136 ], 2137 "cta": "Integrate with i18next" 2138 }, 2139 "other": { 2140 "title": "Other options", 2141 "tagline": "File based solution.", 2142 "whereLabel": "Where to use:", 2143 "bulletsHtml": [ 2144 "Using with frameworks like react-intl, vue-i18n, svelte-i18n, and more", 2145 "We provide you with a script to simplify loading translations to your javascript client",
2146 "Optimal for solutions based on formats like xliff, mo, po, android xml, â¦", 2147 "Using our <a href=\\"{{apiHref}}\\" target=\\"_blank\\" rel=\\"noreferrer\\">API</a>, <a href=\\"https://github.com/locize/locize-cli\\" target=\\"_blank\\" rel=\\"noreferrer\\">CLI</a> or <a href=\\"{{ghActionHref}}\\">GitHub Actions</a> you can build anything you could think of" 2148 ], 2149 "cta": "See file format options" 2150 } 2151 }, 2152 "loop": { 2153 "title": "The Continuous Localization Loop", 2154 "subtitle": "Locize turns localization into a background process that never blocks your team.", 2155 "steps": [ 2156 { "title": "Extract", "desc": "Your code (i18next) detects new text and sends it to Locize automatically." }, 2157 { "title": "Translate", "desc": "Translators or AI refine the content in our high-context editor." }, 2158 { "title": "Review", "desc": "Managers approve changes via built-in review workflows." }, 2159 { "title": "Deliver", "desc": "Updated strings are served via CDN, live to your users instantly." } 2160 ] 2161 }, 2162 "support": { 2163 "heading": "Need some help getting started?", 2164 "subtitle": "Get any questions you may have about integrating Locize answered by one of our team members.", 2165 "cta": "Contact us!" 2166 } 2167} 2168`,tc=`{ 2169 "meta": { 2170 "title": "Multi-tenant Localization: Per-Customer Translation Overrides | Locize", 2171 "description": "Give each customer their own translation layer with Locize's parent/child project model. No duplication, namespace-level overrides, isolated access." 2172 }, 2173 "intro": { 2174 "heading": "Multi-tenant Localization", 2175 "subtitle": "Give each of your customers their own translation layer, without managing separate projects or duplicating content." 2176 }, 2177 "problem": { 2178 "heading": "The problem", 2179 "p1": "You have a multilingual SaaS product, and each of your customers wants their own language customizations: branded terminology, region-specific phrasing, or entirely different translations for certain strings.", 2180 "p2": "Without multi-tenant support, you end up duplicating entire projects, writing custom override logic, or abusing namespaces and locale codes to simulate per-customer content. None of these approaches scale.", 2181 "workaroundsLabel": "Common workarounds that break down", 2182 "workarounds": [ 2183 "Duplicating the full project per customer", 2184 "Using extra namespaces like \\"customer1_common\\"", 2185 "Custom locale codes like \\"en-x-customer1\\"", 2186 "Manual merge scripts between projects" 2187 ] 2188 }, 2189 "solution": { 2190 "heading": "How Locize solves it", 2191 "subtitle": "A parent project holds your base translations. Each tenant project inherits everything and overrides only what they need.", 2192 "steps": [ 2193 { "title": "Parent project", "desc": "Your main project contains the base translations for all languages. This is the single source of truth." }, 2194 { "title": "Tenant projects", "desc": "Each customer gets a child project that inherits all translations from the parent. Only overridden strings are stored separately." }, 2195 { "title": "CDN delivery", "desc": "Each tenant has its own CDN endpoint. The runtime merges parent and tenant translations automatically." } 2196 ], 2197 "imageAlt": "Add a new tenant project in Locize", 2198 "cta": "Try it free" 2199 }, 2200 "capabilities": { 2201 "heading": "Key capabilities", 2202 "subtitle": "Everything you need to manage per-customer translations at scale.", 2203 "items": [ 2204 { "title": "Parent/child inheritance", "desc": "Tenant projects inherit all translations from the parent. New keys added to the parent appear in every tenant automatically." }, 2205 { "title": "Namespace-level overrides", "desc": "Tenants override individual strings while the rest fall through to the parent. Only overridden values count toward the tenant's usage." }, 2206 { "title": "Language sync options", "desc": "Choose per tenant: sync languages with the parent project automatically, or let each tenant manage their own language set independently." }, 2207 { "title": "Isolated access control", "desc": "Tenant users see only their own project. Customers cannot access each other's data or the parent project." }, 2208 { "title": "Flexible billing", "desc": "Cover costs yourself or let each customer pay for their own tenant usage. Pricing is based on overridden values only." }, 2209 { "title": "Permission inheritance", "desc": "Roles and permissions flow from parent to child projects. Enforce MFA and access restrictions consistently across all tenants." } 2210 ] 2211 }, 2212 "audience": { 2213 "heading": "Who it's for", 2214 "items": [ 2215 { "title": "SaaS companies", "desc": "Let each enterprise customer customize product language without forking your translation setup." }, 2216 { "title": "White-label product builders", "desc": "Deliver a fully branded language experience per client with minimal operational overhead." }, 2217 { "title": "Agencies managing multiple clients", "desc": "Maintain a shared base translation set and let each client project inherit and override as needed." }, 2218 { "title": "Franchise and multi-brand businesses", "desc": "Each brand or region gets their own translation layer on top of a shared corporate base." } 2219 ] 2220 }, 2221 "finalCta": { 2222 "heading": "Ready to set up multi-tenant localization?", 2223 "subtitle": "Read the full multi-tenant documentation or start a free trial to see it in action.", 2224 "trial": "Start free trial", 2225 "docs": "Multi-tenant docs" 2226 } 2227} 2228`,nc=`{ 2229 "meta": { 2230 "title": "Services | Locize", 2231 "description": "Additional services from Locize: translation memory, review workflow, automatic translation, SSO, Figma plugin, and integrated translation partners." 2232 }, 2233 "learnMore": "Learn more", 2234 "hero": { 2235 "h1Prefix": "Additional localization and translation services provided by ", 2236 "h1Accent": "Locize", 2237 "subtitle": "Extend your Locize experience with those additional services.", 2238 "imageAlt": "Services", 2239 "registerCta": "Register for free" 2240 }, 2241 "additional": { 2242 "heading": "Additional services", 2243 "subtitle": "Extend your Locize experience with those additional services.", 2244 "cards": [ 2245 { "title": "Smart Translation Memory", "subtitle": "The smart translation memory.", "href": "/docs/translation-memory", "p1": "The smart translation memory provides you with suggestions of already translated segments and helps you to save time and keep your translations consistent." }, 2246 { "title": "Review workflow", "subtitle": "Start a review workflow when translations change.", "href": "/docs/review-workflow", "p1": "Enable review workflow for specific languages. Each time someone changes a translation, a review starts and the actual value stays unchanged until one proposal is accepted." }, 2247 { "title": "Automatic translation", "subtitle": "Automate translation work (the smart way)", "href": "/docs/automatic-translation", "p1": "Automatically translate new content into all target languages using your chosen provider (e.g. Google Translate, DeepL, or generative AI providers).", "p2": "There is also a highly focu
2247sed developer experience possible with the automatic translation workflow and save missing keys." }, 2248 { "title": "History", "subtitle": "Track all changes to your translations.", "href": "/docs/history", "p1": "History enables you to track the last changes done to your translations and to prove anytime when a content fragment was changed." }, 2249 { "title": "SAML single sign-on (SSO)", "subtitle": "SAML SSO gives users access via your identity provider.", "href": "/docs/user-management#saml-single-sign-on-sso", "p1": "Give users access to Locize through an identity provider (IdP) of your choice." }, 2250 { "title": "Figma plugin", "subtitle": "Bridging the gap between translation and product design.", "href": "/docs/integration/figma-plugin", "p1": "Validate designs with translated content, reduce feedback loops, and send missing translations to Locize." }, 2251 { "title": "Multi-Tenant", "subtitle": "Per-customer translations or customer specific overrides.", "href": "/docs/multi-tenant", "p1": "If you offer customized software for your customers, anticipate translations per tenant and allow overrides when needed." }, 2252 { "title": "Branches", "subtitle": "Work safely on translations across versions.", "href": "/docs/general-questions/should-i-use-versions-or-branches", "p1": "Branches help you collaborate on translation work without risking your production state.", "p2Html": "Use <a href=\\"/docs/guides/working-with-translators#use-branched-projects-branches\\" rel=\\"noreferrer\\">branched projects</a> when working with translators." }, 2253 { "title": "Unused key detection", "subtitle": "Find and remove translations nobody sees.", "href": "/docs/guides/find-unused-translations", "p1Html": "Track which translation keys are actually used in your application with the <code>locize-lastused</code> plugin. Filter by \\"not used since\\" to find stale keys, then clean up with confidence.", "p2": "Stop paying to maintain translations that are no longer in your codebase." }, 2254 { "title": "Checks & issues", "subtitle": "Catch translation problems automatically.", "href": "/docs/checks-issues", "p1": "Automatic consistency checks: translation memory, glossary enforcement, i18n syntax validation, source staleness detection, max character limits, and more.", "p2": "Run checks per segment or in bulk, ignore false positives, and configure which checks matter for your project." }, 2255 { "title": "More services...", "subtitle": "Slack, Microsoft Teams, glossary, and more.", "href": "/docs/integration/slack", "p1": "Integrations like Slack and Microsoft Teams help you stay informed about noteworthy events. Glossary support helps enforce terminology.", "p2": "There is a lot more than that, and we are continuously offering more services." } 2256 ], 2257 "exploreCta": "Explore how it works" 2258 }, 2259 "partners": { 2260 "headingPrefix": "Integrated ", 2261 "headingAccent": "translation partners", 2262 "subtitle": "Directly order translations from our partners.", 2263 "howItWorksHtml": "Locize works out which segments need work, sends them to the partner and imports the results automatically. <a href=\\"/docs/ordering\\">See how ordering works</a>.", 2264 "cards": [ 2265 { "logoAlt": "Supertext", "subtitle": "pricing depends on your contract", "bullets": ["Your all-in-one solution for quality localisation at scale", "From 0% to 100% automation: combines language AI and human experts on a single platform", "Offers both AI translation solutions and expert services for web content and product localization"] }, 2266 { "logoAlt": "TextMaster", "subtitle": "$0.066 - $0.132 per word", "bullets": ["Your Professional SaaS Translation Service", "Ideal for simple web content, high volume catalogs, or complex documents", "Offers general translation plus specialized domains like financial, technical, and legal"] }, 2267 { "logoAlt": "BLEND", "subtitle": "$0.079 - $0.139 per word", "bullets": ["End-to-end, multi-market localization solutions", "Global community of translators and language specialists", "Self-service translation platform for personal and business projects"] }, 2268 { "logoAlt": "Translated", "subtitle": "pricing depends on your contract", "bullets": ["Professional translation and localization services", "Combines human expertise with advanced AI tools", "Supports a wide range of industries including legal, marketing, and technical"] } 2269 ] 2270 }, 2271 "alternatively": { 2272 "heading": "Alternatively, you can:", 2273 "bulletsHtml": [ 2274 "<a href=\\"/docs/guides/working-with-translators#send-files\\" target=\\"_blank\\" rel=\\"noreferrer\\">Export and send files</a> to your translators", 2275 "<a href=\\"/docs/guides/working-with-translators#invite-them-to-your-project\\" target=\\"_blank\\" rel=\\"noreferrer\\">
2275Invite them</a> to your project", 2276 "Create a new <a href=\\"/docs/guides/working-with-translators#use-branched-projects-branches\\" target=\\"_blank\\" rel=\\"noreferrer\\">branched project</a> on Locize" 2277 ] 2278 }, 2279 "contact": { 2280 "heading": "Need some help getting started?", 2281 "subtitle": "Get any questions you may have about integrating Locize answered by one of our team members.", 2282 "cta": "Contact us!" 2283 }, 2284 "finalCta": { 2285 "heading": "Stop waiting. Start localizing.", 2286 "subtitle": "Start by creating a new project and translate your application.", 2287 "register": "Register for free", 2288 "pricing": "View pricing" 2289 } 2290} 2291`,rc=`{ 2292 "meta": { 2293 "title": "Swiss-made translation management system by the i18next team | Locize", 2294 "description": "Locize is the Swiss-engineered, Swiss-registered translation management system built by the team behind i18next. Dual FADP + GDPR compliance, EU data residency, no US acquisition risk." 2295 }, 2296 "hero": { 2297 "badge": "ð¨ð Swiss-engineered · Swiss-registered · GDPR + FADP", 2298 "h1Prefix": "Locize, the Swiss-engineered ", 2299 "h1Accent": "translation management system", 2300 "p1Html": "<b>Locize is a Swiss-made translation management system (TMS) for developer teams.</b> Built and operated by a Swiss-registered company, the same team behind <a class=\\"brand-link\\" href=\\"https://www.i18next.com\\" target=\\"_blank\\" rel=\\"noreferrer\\">i18next</a>, one of the most widely-used JavaScript internationalization libraries on npm. It is the only Swiss-owned TMS in the developer-focused category.", 2301 "p2": "Subject to Swiss law (FADP) and EU law (GDPR): whichever rule is stricter, that's the one that applies to your translation data. Independently owned. No US, no EU, no private-equity parent. No acquisition pressure that could change the product roadmap or pricing model.", 2302 "ctaTrial": "Start your free trial", 2303 "ctaWhy": "Why Swiss matters", 2304 "badges": ["FADP + GDPR compliant", "EU data residency (AWS Ireland)", "Independent Swiss ownership"], 2305 "tableTitle": "How Locize compares on ownership", 2306 "tableHeaders": ["Vendor", "Country", "Status"], 2307 "tableRows": [ 2308 ["Locize", "ð¨ð Switzerland", "Independent", "highlight"], 2309 ["Lokalise", "ð±ð» Latvia", "VC-backed", ""], 2310 ["Phrase", "ð©ðª Germany", "PE-owned (Carlyle)", ""], 2311 ["Crowdin", "ðªðª Estonia / ðºð¦ Ukraine", "Privately held", ""], 2312 ["Transifex", "ðºð¸ United States", "Acquired by XTM (Jan 2025)", ""] 2313 ], 2314 "tableFootnote": "Public ownership information as of May 2026. Swiss ownership places Locize outside the US CLOUD Act at the corporate level." 2315 }, 2316 "whatSwiss": { 2317 "heading": "What 'Swiss-made' actually means for your TMS", 2318 "subtitle": "Three concrete facts, no marketing fluff.", 2319 "items": [ 2320 { "title": "Swiss-registered company", "p1": "Locize is operated by a Swiss-registered company. Subject to Swiss law including the revised Federal Act on Data Protection (revFADP), in force since September 2023.", "p2": "No foreign parent. No private-equity ownership. No acquisition treadmill." }, 2321 { "title": "Swiss-engineered", "p1Html": "Locize is built by the same team that created and maintains <a class=\\"brand-link\\" href=\\"https://www.i18next.com\\" target=\\"_blank\\" rel=\\"noreferrer\\">i18next</a>, a JavaScript internationalization library on npm since 2011, with a major v2 rewrite in 2015 and stable APIs ever since.", "p2": "The same engineering discipline that has kept i18next stable for over a decade is applied to the Locize platform and APIs." }, 2322 { "title": "EU data residency", "p1Html": "Customer translation data is hosted in <b>AWS Ireland</b>, inside the EU and subject to GDPR. Business correspondence runs through Swiss hosting (Hostpoint AG).", "p2Html": "See <a class=\\"brand-link\\" href=\\"{{securityHref}}\\">security & data residency</a> for the full infrastructure breakdown." } 2323 ] 2324 }, 2325 "whyMatters": { 2326 "heading": "Why Swiss matters for TMS buyers", 2327 "subtitle": "Most TMS comparisons focus on features and price. For regulated industries, public-sector organizations, and team
2327s thinking about long-term vendor risk, jurisdiction is a real factor.", 2328 "items": [ 2329 { "title": "Dual regulatory coverage", "p1Html": "Locize is subject to both <b>Swiss FADP</b> (revFADP since September 2023) and <b>EU GDPR</b> (via the AWS Ireland data residency). When the two rules differ, the stricter applies. That dual coverage is built into our DPA, see <a class=\\"brand-link\\" href=\\"{{dpaHref}}\\">DPA</a>." }, 2330 { "title": "No acquisition risk", "p1": "Translation infrastructure should outlast a hype cycle. Locize is independently owned: no VC, no PE, no foreign parent. Pricing and product roadmap are not subject to acquirer-driven pivots, repackagings, or sunset announcements." }, 2331 { "title": "Long-term API stability", "p1Html": "The same Swiss team has maintained <a class=\\"brand-link\\" href=\\"https://www.i18next.com\\" target=\\"_blank\\" rel=\\"noreferrer\\">i18next</a> since the v2 rewrite in 2015 with backward compatibility intact. The Locize SDK and API follow the same discipline: no quarterly rewrite of your integration code." }, 2332 { "title": "Vendor stability", "p1": "Swiss software companies have a track record of outlasting their VC-funded competitors. For something as foun
2332dational as your translation infrastructure, vendor stability matters more than feature parity." } 2333 ] 2334 }, 2335 "i18nextStory": { 2336 "heading": "Built on Swiss open-source: the i18next connection", 2337 "subtitle": "Locize is not just a TMS that happens to support i18next. It's the managed platform from the same Swiss team that created the library.", 2338 "items": [ 2339 { "title": "i18next: the open-source foundation", "p1Html": "<a class=\\"brand-link\\" href=\\"https://www.i18next.com\\" target=\\"_blank\\" rel=\\"noreferrer\\">i18next</a> launched on npm in 2011 and grew into one of the most widely-used JavaScript internationalization libraries, covering the web, Node.js, and a deep ecosystem of framework integrations (React, Vue, Angular, Svelte, Next.js, and others).", "p2Html": "Since the v2 rewrite in 2015, the library has held to stable APIs and backward compatibility, a rare discipline in the JavaScript ecosystem. See the <a class=\\"brand-link\\" href=\\"https://www.i18next.com/misc/the-history-of-i18next\\" target=\\"_blank\\" rel=\\"noreferrer\\">history of i18next</a>." }, 2340 { "title": "Locize: the natural managed extension", "p1": "Founded in 2016, Locize was built by the i18next team as the managed translation platform that the OSS library deliberately does not include: translator UI, CDN delivery, AI translation, review workflow, audit log.", "p2Html": "The result: deeper i18next integration than any other TMS can offer, with the same Swiss engineering culture applied to the platform side. See the <a class=\\"brand-link\\" href=\\"{{i18nextVsLocizeHref}}\\">i18next vs. Locize</a> doc." } 2341 ] 2342 }, 2343 "customers": { 2344 "heading": "Trusted by Swiss organizations", 2345 "subtitle": "Locize powers translations for some of Switzerland's most demanding multilingual products.", 2346 "moreCta": "More customer stories" 2347 }, 2348 "compliance": { 2349 "heading": "Compliance & data residency, in detail", 2350 "subtitle": "No marketing claims about where your data lives. Here are the facts.", 2351 "headers": ["Item", "Location / Status"], 2352 "rows": [ 2353 ["Company jurisdiction", "ð¨ð Switzerland â subject to revFADP"], 2354 ["Customer translation data", "ð®ðª AWS Ireland â subject to GDPR"], 2355 ["Business correspondence", "ð¨ð Switzerland â Hostpoint AG"], 2356 ["App-generated notifications", "Amazon SES on AWS"], 2357 ["Data Processing Agreement", "<a class=\\"brand-link\\" href=\\"{{dpaHref}}\\">Available â covers FADP + GDPR</a>"], 2358 ["Subprocessors", "<a class=\\"brand-link\\" href=\\"{{privacyHref}}\\">Listed in the privacy policy</a>"],
2359 ["Full security & infrastructure detail", "<a class=\\"brand-link\\" href=\\"{{securityHref}}\\">Security at Locize</a>"] 2360 ], 2361 "footnote": "Translation data residency in AWS Ireland is a deliberate choice: it keeps Locize inside the EU regulatory perimeter while the company entity remains Swiss. Both regulations apply; the stricter wins." 2362 }, 2363 "vsAgencies": { 2364 "heading": "Swiss TMS vs. Swiss translation agencies", 2365 "subtitle": "When people search for 'Swiss-made TMS', they often confuse two different things. Here's the distinction.", 2366 "agencyTitle": "Swiss translation agencies", 2367 "agencyP1": "Companies like SwissGlobal, Apostroph Group, Comtexto, and TTN provide human translation as a service. You send source content; they return translations.", 2368 "agencyP2": "Excellent for high-stakes content: legal documents, marketing copy, certified translations. Less suited for continuous software localization where new strings appear in every sprint.", 2369 "tmsTitle": "Swiss TMS (Locize)", 2370 "tmsP1": "Locize is software: a translation management platform that integrates into your developer workflow via API, CDN, and CI/CD. It handles the technical delivery layer that agencies do not.", 2371 "tmsP2": "You can pair Locize with any translation agency (Swiss or otherwise) for the human-translation work. Many of our customers do exactly that." 2372 }, 2373 "faqSection": { 2374 "heading": "Frequently asked questions", 2375 "subtitle": "If your question is missing, email [email protected]" 2376 }, 2377 "faqItems": [ 2378 { "q": "What is a Swiss-made TMS?", "a": "A Swiss-made translation management system (TMS) is a TMS built and operated by a Swiss-registered company, subject to Swiss law (revFADP / FADP since September 2023). In the developer-focused TMS category, Locize is the only Swiss-owned vendor â built by the Swiss team behind i18next, with translation data hosted in AWS Ireland (EU / GDPR) and full FADP+GDPR compliance. Distinguished from Swiss translation agencies (SwissGlobal, Apostroph Group, Comtexto, TTN) which provide human translation as a service rather than software for managing translations in developer workflows." }, 2379 { "q": "Is Locize Swiss-made?", "a": "Yes. Locize was founded in 2016 and operates from a Swiss-registered company. The team behind Locize also built and maintains i18next, one of the most widely-used JavaScript internationalization libraries on npm (launched 2011). The company is independently owned (no US, EU, or private-equity parent) and subject to Swiss law including the revised Federal Act on Data Protection (FADP / DSG)." }, 2380 { "q": "What are the benefits of a Swiss-made TMS?", "a": "Three concrete benefits: (1) dual regulatory coverage â Swiss FADP and EU GDPR both apply to your translation data, with the stricter rule winning; (2) ownership stability â Locize is Swiss-owned and independent, with no acquisition pressure that could change the product roadmap or pricing model; (3) long-term API stability â the same Swiss team has maintained i18next with stable APIs since the v2 rewrite in 2015, and applies the same engineering discipline to Locize." }, 2381 { "q": "Where is my Locize translation data stored?", "a": "Customer translation data is hosted in Amazon Web Services (AWS) in Ireland, inside the EU and subject to GDPR. Business correspondence (e.g., [email protected]) is hosted in Switzerland by Hostpoint AG. App-generated notifications go through Amazon SES. See the security page for the full infrastructure breakdown." }, 2382 { "q": "Is Locize FADP and GDPR compliant?", "a": "Yes, both. Because Locize is a Swiss company with EU-based data infrastructure, the Swiss Federal Act on Data Protection (revFADP, in force since September 2023) and the EU General Data Protection Regulation both apply. A Data Processing Agreement (DPA) covering both regulations is available. See /dpa. Subprocessors are listed in our privacy policy." }, 2383 { "q": "How is Locize different from Swiss translation agencies like SwissGlobal, Apostroph, or TTN?", "a": "These are translation service agencies: they provide human translators as a service. Locize is a translation management platform: software for developer teams to integrate translations into web and mobile apps via API, CDN, and CI
2383/CD pipelines. You can pair Locize with any translation agency (Swiss or otherwise) for human translation work; the platform handles the technical delivery layer that agencies do not cover." }, 2384 { "q": "Does a Swiss TMS create friction for US or EU CI/CD pipelines?", "a": "No. Locize is API-first and CDN-delivered with global edge infrastructure. Integration with GitHub Actions, GitLab CI, Vercel, Netlify, or any other build pipeline is identical regardless of where your build runners are located. The Swiss aspect applies to the company entity and legal framework, not the technical delivery surface." }, 2385 { "q": "Why does the country of a TMS vendor matter at all?", "a": "For most buyers, it doesn't. But for regulated industries, public-sector organizations, or businesses prioritizing long-term vendor stability, it can be significant. Swiss vendors are subject to Swiss neutrality and ownership disclosure rules, sit outside the US CLOUD Act at the corporate level, and have a track record of long-lived software stability (Swiss software products tend to outlast their VC-funded competitors). For Locize specifically, the Swiss engineering connection to i18next is a strong signal of API longevity: the i18next library has maintained backward compatibility for over a decade." } 2386 ], 2387 "related": { 2388 "linksHtml": "Related: <a class=\\"brand-link\\" href=\\"{{securityHref}}\\">Security & data residency</a> · <a class=\\"brand-link\\" href=\\"{{dpaHref}}\\">DPA (FADP + GDPR)</a> · <a class=\\"brand-link\\" href=\\"{{euAccHref}}\\">EU Accessibility Act localization</a> · <a class=\\"brand-link\\" href=\\"{{i18nextVsLocizeHref}}\\">i18next vs. Locize</a> · <a class=\\"brand-link\\" href=\\"{{compareHref}}\\">Compare Locize to alternatives</a>" 2389 }, 2390 "finalCta": { 2391 "title": "A Swiss-engineered TMS, built for developer teams.", 2392 "subtitle": "Free 14-day trial. No credit card required.", 2393 "primaryLabel": "Register for free" 2394 } 2395} 2396`,ic=`{ 2397 "meta": { 2398 "title": "No sales. Just engineering. - Locize", 2399 "description": "Why Locize invests in engineering and product instead of sales teams â and how that benefits your development workflow." 2400 }, 2401 "hero": { 2402 "title1": "No sales.", 2403 "title2": "Just engineering.",
2404 "subtitle": "Locize runs thousands of active projects for a global customer base â from solo developers to Fortune-500 companies. All with zero salespeople.", 2405 "cta1": "Start free trial", 2406 "cta2": "Read the docs" 2407 }, 2408 "philosophy": { 2409 "heading": "The engineering-first choice", 2410 "intro": "Most SaaS companies spend more money selling their product than building it. We took the opposite path. By eliminating the overhead of a classic sales department, we reinvest every cent in what matters most: your infrastructure.", 2411 "pillars": [ 2412 { 2413 "title": "Reinvesting in i18next", 2414 "desc": "We fund the development of the i18next ecosystem so the most popular i18n framework stays open, fast, and modern." 2415 }, 2416 { 2417 "title": "TMS & workflow innovation", 2418 "desc": "We continuously refine the Locize app, shipping features like branching, MCP integration, and AI translation that let your team work smarter." 2419 }, 2420 { 2421 "title": "Best-in-class CDN", 2422 "desc": "Revenue flows directly into our global edge network and ensures faster translation delivery to your users." 2423 } 2424 ], 2425 "allocation": { 2426 "label": "Current resource allocation", 2427 "engineering": "ENGINEERING & PRODUCT", 2428 "sales": "SALESPEOPLE", 2429 "footnote": "* We build for developers, not for procurement slidedecks." 2430 } 2431 }, 2432 "values": [ 2433 { 2434 "title": "No gatekept knowledge", 2435 "desc": "You don't need a \\"discovery call\\" to see our product. Our docs are public, pricing is transparent, and the trial starts instantly." 2436 }, 2437 { 2438 "title": "Support straight from the source", 2439 "desc": "Talk directly to the engineers who build Locize and i18next. No \\"success managers\\" reading from a script." 2440 }, 2441 { 2442 "title": "No sales tax", 2443 "desc": "Competitive prices because you're not paying for sales commissions, travel budgets, or enterprise CRMs." 2444 }, 2445 { 2446 "title": "No artificial paywalls", 2447 "desc": "Fixed-price tiers scale with clear limits, visible up front, and extra capacity comes in blocks you can see the price of before you take the step. No surprise upgrades, no per-seat charges." 2448 } 2449 ], 2450 "finalCta": { 2451 "heading": "We don't want to sell you anything.", 2452 "subtitle": "We want to help you ship. Start your trial today or watch our demo video.", 2453 "register": "Register for free", 2454 "watchDemo": "Watch the demo" 2455 } 2456} 2457`,ac=`{ 2458 "meta": { 2459 "title": "Why not just use AI for translation? | Locize", 2460 "description": "An honest take on AI translation: when it works, when it doesn't, and why a TMS solves problems AI can't." 2461 }, 2462 "hero": { 2463 "badge": "An honest answer", 2464 "title1": "Why not just", 2465 "title2": "use AI to translate?", 2466 "p1Html": "Honestly? For small projects, you should. AI translation is fast, cheap, and increasingly good. We've <a class=\\"brand-link\\" href=\\"{{aiHref}}\\">built it directly into Locize</a> for exactly that reason.", 2467 "p2Html": "The question is not whether AI can translate your strings. It's whether AI can <strong>manage</strong> them across a team, over time, without developer involvement for every change." 2468 }, 2469 "distinction": { 2470 "aiTitle": "AI translates strings", 2471 "aiBody": "Given a string in English, Claude or ChatGPT produces a string in French â in any of 95+ languages, with i18next placeholders intact. Quickly, cheaply, usually well. This is genuinely solved. Use AI for this; we do.", 2472 "tmsTitle": "A TMS manages them", 2473 "tmsBody": "Which keys changed since last week? Which languages are incomplete? How do you push a copy fix without a deployment? Who can edit translations without touching the repo? These are system problems. AI doesn't solve them." 2474 }, 2475 "problems": { 2476 "heading": "Where the DIY workflow breaks down", 2477 "subtitle": "Six problems that appear when a real product grows past the initial translation sprint.", 2478 "aiLabel": "AI only", 2479 "locizeLabel": "Locize", 2480 "items": [ 2481 { "title": "Key lifecycle management", "ai": "Translates the strings you give it. Has no idea a key was added, changed, or removed.", "locize": "saveMissing automatically captures new keys in development. Unused key detection flags stale translations." }, 2482 { "title": "Context and consistency", "ai": "\\"Drive\\" could be a verb, a storage location, or a brand name. Without context, AI guesses.", "locize": "Glossary terms and ke
2482y-level descriptions are injected into every AI prompt. \\"Drive\\" always means what you say it means." }, 2483 { "title": "Deploying a translation fix", "ai": "Run the script â commit JSON â open PR â review â merge â deploy. That's the full cycle for a typo fix.", "locize": "Translator edits in the Locize editor â publishes â change is live via CDN in seconds. Zero developer involvement." }, 2484 { "title": "Non-developer access", "ai": "Giving a translator or product manager access to translations means giving them access to your repo.", "locize": "Translators have their own UI. They work independently without touching your codebase or deployment pipeline." }, 2485 { "title": "Audit trail and history", "ai": "Git blame is your audit log. Good luck finding when and why a specific translation changed.", "locize": "Changes are logged with who made it and when." }, 2486 { "title": "Staging vs. production", "ai": "You manage this yourself, usually by having separate JSON files or branches.", "locize": "Branches and Versions let you develop translations for an upcoming release in isolation, then merge, exactly like your Git workflow." } 2487 ] 2488 }, 2489 "graduation": { 2490 "heading": "Already all-in on AI? The graduation path", 2491 "subtitle": "You don't have to throw away your LLM pipeline. Graduating means keeping AI as the translator and adding the management layer around it, in four steps.", 2492 "mozillaHtml": "This is the failure mode that made headlines when Mozilla moved its support content to AI-first localization and its long-standing Japanese volunteer community resigned: the criticism was not that AI translated, but that <strong>nothing enforced terminology and style</strong>. The fix is governance, not better prompts.", 2493 "steps": [ 2494 { "title": "Keep your AI, give it context", "body": "Bring your own OpenAI, Gemini or Mistral key, or your own OpenAI-compatible endpoint (or use the built-in service). Locize feeds your glossary and styleguide into every prompt, so terminology stops drifting." }, 2495 { "title": "Score every AI translation", "body": "Quality Estimation rates each AI translation from 0 to 1. Confident results are saved directly; low-confidence ones are routed to human review instead of shipping silently." }, 2496 { "title": "Review what matters, with a trail", "body": "Reviewers work in context on the running app. Accept/decline history and provenance export show who approved what, when, and with which quality score." }, 2497 { "title": "Ship over the CDN", "body": "Approved translations publish to a global CDN without a redeploy. Your CI pipeline stays; the copy-paste step goes." } 2498 ], 2499 "cta": "Add governance to your AI pipeline", 2500 "blogLink": "Read: when AI translations break", 2501 "actTitle": "EU AI Act Article 50: in force as of August 2, 2026", 2502 "actHtml": "As of August 2, 2026, the EU AI Act's Article 50 transparency obligations apply. The Commission's final guidelines (July 20, 2026) exempt faithful AI translations from machine-readable marking, but AI-translated text that informs the public on matters of public interest still needs a visible disclosure â unless it went through human review with editorial responsibility, the exemption the guidelines illustrate with exactly this case. Steps 2 and 3 record that review, and the <strong>provenance export</strong> turns the record into evidence: a CSV + JSON report per version, language or namespace showing who approved what, when, the translation source (human, machine or AI) and the confidence score at decision time. <a class=\\"brand-link\\" href=\\"{{actCheckHref}}\\">Run the three-question readiness check</a> or see the <a class=\\"brand-link\\" href=\\"{{actDocsHref}}\\">Article 50 workflow setup</a>." 2503 }, 2504 "faq": { 2505 "heading": "Common questions", 2506 "items": [ 2507 { 2508 "q": "Can I just dump my JSON into ChatGPT?", 2509 "aHtml": "<p>Yes, and for a weekend project with 50 strings, that's the right answer. Stop reading and go ship.</p><p class=\\"mt-2\\">The problem appears when your product grows. AI translates the strings you give it right now. It doesn't know that you added 15 new keys last sprint, that <code>drive</code> means cloud storage not a verb in your app, or that a translator already fixed the tone of <code>welcomeMessage</code> three times and the AI keeps reverting it.</p>" 2510 }, 2511 { 2512 "q": "What about building a script that calls the AI API automatically?", 2513 "aHtml": "<p>This solves translation but creates a maintenance obligation:</p><ul class=\\"list-disc pl-5 mt-2 space-y-1 text-sm\\"><li>Who runs the script when a developer adds a new key at 9pm?</li><li>
2513How do you know which keys changed and which ones a human translator already approved?</li><li>How do you give a non-developer a way to fix a typo without touching the codebase?</li><li>How do you push that fix to users without a deployment, then invalidate the CDN cache so they actually see it?</li></ul><p class=\\"mt-2\\">Diffing the locale files is the easy 5% â and yes, it really does take milliseconds. The other 95% is delivery, review, and not re-translating what's already correct. A script doesn't solve those.</p>" 2514 }, 2515 { 2516 "q": "AI translations look good enough. Why would I pay for review?", 2517 "aHtml": "<p>They often are good enough, especially for standard UI strings. The problem is consistency over time. As your app evolves, AI-translated strings drift in tone. \\"Cancel\\" in one context becomes \\"Dismiss\\" in another. Your brand's term for a feature gets translated differently in three places.</p><p class=\\"mt-2\\">A model's context window forgets between sessions; a translation memory remembers across years. Locize's TM is persistent, fuzzy-matched, and shared across projects â so the same phrase resolves the same way whether the translator who first approved it still works here or not. The glossary feeds the AI prompt directly, which is the part raw ChatGPT can't replicate without you re-pasting your style rules on every call.</p>" 2518 }, 2519 { 2520 "q": "What if my project is \\"done\\" and I don't need ongoing localization?", 2521 "aHtml": "<p>Localization is rarely actually done â which is the whole bet against \\"AI translated it once, we're set.\\" A month after \\"done\\" you add a \\"Forgot password\\" link, update your pricing page copy, rename a feature, or expand to a fourteenth language. Each restarts the cycle, and the AI has no idea what was already there. Locize's <strong>Pause feature</strong> hibernates a project at 80% discount when it's genuinely in maintenance mode, keeping your history and workflow intact for when the next round of changes lands.</p>" 2522 }, 2523 { 2524 "q": "The math doesn't add up â the AI API costs cents per call, and Locize is dollars per month.", 2525 "aHtml": "<p>You're comparing one task to a system.</p><p class=\\"mt-2\\">Running 5,000 words through Claude or GPT is roughly the price of a coffee â once. If that's the whole job, the API really is cheaper, and we said so at the top of the page. It usually isn't the whole job.</p><p class=\\"mt-2\\">The subscription covers what happens after the translation: <strong>delivery</strong> (global CDN with per-branch and per-tenant routing, cache invalidation), <strong>iteration</strong> (translators editing without a PR, copy fixes live in seconds), <strong>memory</strong> (fuzzy-matched, cross-project â the same phrase isn't re-translated and re-paid every cycle), and <strong>governance</strong> (review, audit trail, who-changed-what). \\"You're charging real money to host a YAML file\\" is a fair gut reaction to the pricing page; this is what the money is actually buying.</p>" 2526 }, 2527 { 2528 "q": "I use Cursor / Claude Code already. The agent writes the code AND translates the JSON. What's left for Locize?", 2529 "aHtml": "<p>Translating the file once. That's the easy part.</p><p class=\\"mt-2\\">Then the agent has to commit a 30-language file to the repo, redeploy when marketing wants a copy change, give a translator a way to fix the Italian without opening a PR, and remember which keys it already translated last week so it doesn't regenerate them on the next run.</p><p class=\\"mt-2\\">Locize publishes an <a class=\\"brand-link\\" href=\\"/docs/integration/mcp\\">MCP server</a> so the agent doesn't translate the file at all â it reports the missing keys, Locize auto-translates them with your glossary, styleguide, and translation memory injected into the prompt, and the result is live on the CDN without a redeploy. The agent stays in the IDE; the strings stop living in the repo.</p>" 2530 }, 2531 { 2532 "q": "Does the EU AI Act apply to my AI-translated app?", 2533 "aHtml": "<p>Less than the headlines suggest, but not zero. Article 50 of the EU AI Act is in force as of August 2, 2026. The Commission's final guidelines (July 20, 2026) exempt faithful AI translations from the machine-readable marking duty, but AI-translated text published to inform the public on matters of public interest still requires a visible disclosure â unless it went through human review with editorial responsibility. The guidelines' own example of that exemption is a human-reviewed AI translation; an unreviewed AI-only pipeline can't demonstrate it, a governed one can.</p><p class=\\"mt-2\\">Locize's <strong>provenance export</strong> produces the evidence: a CSV + JSON report per version, language or namespace with who reviewed, approved or edited each translation and when, the translation source (human, machine or AI), and the AI confidence score at decision time. The <a class=\\"brand-link\\" href=\\"/ai-act-check\\">three-question readiness check</a> tells you whether your translations are in scope; the <a class=\\"brand-link\\" href=\\"/docs/eu-ai-act-article-50\\">
2533Article 50 workflow guide</a> shows the full setup.</p>" 2534 }, 2535 { 2536 "q": "Aren't you really just a bridge between developers who don't want to manage JSON and translators who don't want to learn Git?", 2537 "aHtml": "<p>Yes. That's the product, not the apology.</p><p class=\\"mt-2\\">If your developers enjoy managing locale files in Git and your translators are fluent in <code>git pull</code>, you don't need a bridge. Most teams have one side of that on their side, not both. Locize is the seam: devs commit keys, translators edit in a web UI, changes ship via CDN â neither side ever has to step onto the other's tools.</p>" 2538 } 2539 ] 2540 }, 2541 "finalCta": { 2542 "heading": "Use AI for translation. Use Locize to manage it.", 2543 "subtitle": "Locize has AI translation built in (BYOK or our own service). You get the speed of AI with the workflow infrastructure your team actually needs.", 2544 "register": "Start for free", 2545 "seeAi": "See AI features" 2546 } 2547} 2548`,oc=`{ 2549 "meta": { 2550 "title": "EU AI Act article 50 : check de conformité pour le contenu traduit par IA", 2551 "description": "Auto-évaluation gratuite : votre contenu traduit par IA ou traduction automatique est-il prêt pour les obligations de transparence de l'article 50 de l'EU AI Act (à partir du 2 août 2026) ? Trois questions, un verdict clair." 2552 }, 2553 "hero": { 2554 "badge": "EU AI Act · article 50", 2555 "h1Prefix": "Votre contenu traduit par IA est-il prêt pour l'", 2556 "h1Accent": "article 50", 2557 "h1Suffix": "\xA0?", 2558 "intro": "à partir du 2 août 2026, les obligations de transparence de l'article 50 de l'EU AI Act s'appliquent au contenu généré par IA. L'article 50(4) exempte le texte généré par IA ayant fait l'objet d'une relecture humaine avec responsabilité éditoriale. Répondez à trois questions pour situer votre localisation.", 2559 "disclaimerHtml": "Information, pas un conseil juridique. Lisez le <a href=\\"{{backgroundHref}}\\">contexte</a> et le <a href=\\"{{workflowHref}}\\">guide du workflow</a>." 2560 }, 2561 "questions": { 2562 "usesAi": "Utilisez-vous l'IA ou la traduction automatique pour des chaînes destinées aux utilisateurs ?", 2563 "humanReview": "Existe-t-il une étape de relecture humaine avant la publication du contenu traduit par IA ou traduction automatique ?", 2564 "record": "Conservez-vous une trace de qui a relu chaque traduction par IA ou automatique, quand et avec quel niveau de confiance ?" 2565 }, 2566 "choices": { 2567 "yes": "Oui", 2568 "no": "Non" 2569 }, 2570 "missingHeading": "Ce qui manque", 2571 "missing": { 2572 "review": "Une étape de relecture humaine avant la publication du contenu traduit par IA ou traduction automatique, c'est-à -dire la responsabilité éditoriale qu'attend l'article 50(4).", 2573 "record": "Une trace fiable de qui a relu quoi, quand et avec quel niveau de confiance IA, que vous pouvez produire sur demande." 2574 }, 2575 "verdict": { 2576 "notApplicable": { 2577 "title": "Les règles de l'article 50 sur le contenu IA ne s'appliquent probablement pas à vos traductions", 2578 "body": "Vous n'utilisez pas l'IA ni la traduction automatique pour les chaînes destinées aux utilisateurs : les obligations de transparence de l'article 50 pour le texte généré par IA ne s'y appliquent donc probablement pas. à réexaminer si vous adoptez l'IA ou la traduction automatique." 2579 }, 2580 "incomplete": { 2581 "title": "Encore quelques réponses", 2582 "body": "Répondez aux questions restantes pour une évaluation complète." 2583 }, 2584 "strong": { 2585 "title": "Position solide", 2586 "body": "Vous utilisez l'IA ou la traduction automatique, mais une relecture humaine avec une trace de provenance enregistrée est exactement le mécanisme décrit par l'article 50(4). Assurez-vous que la relecture et la trace couvrent toutes vos chaînes traduites par IA ou traduction automatique." 2587 }, 2588 "gap": { 2589 "title": "Lacune probable", 2590 "body": "Le contenu destiné aux utilisateurs traduit par IA ou traduction automatique et publié sans relecture humaine peut ne pas bénéficier de l'exemption de l'article 50(4). Ajoutez une étape de relecture humaine avant la publication et conservez-en une trace." 2591 }, 2592 "almost": { 2593 "title": "Presque", 2594 "body": "Vous relisez le contenu traduit par IA ou automatique, mais sans trace fiable vous ne pouvez pas le prouver. L'article 50(4) repose sur une relecture humaine et une responsabilité éditoriale démontrables. Ajoutez une trace de provenance ou d'audit." 2595 } 2596 }, 2597 "cta": { 2598 "heading": "Un workflow de relecture avec trace de provenance est le mécanisme d'exemption", 2599 "body": "Le workflow de relecture humaine de Locize enregistre qui a relu chaque traduction par IA ou automatique, quand et avec quel niveau de confiance IA, et exporte une trace de provenance prête pour l'audit. C'est exactement la relecture humaine et la responsabilité éditoriale décrites par l'article 50(4).", 2600 "start": "Commencer gratuitement", 2601 "how": "Voir comment ça marche" 2602 }, 2603 "faqItems": [ 2604 { 2605 "q": "L'article 50 de l'EU AI Act s'applique-t-il au contenu traduit automatiquement ?", 2606 "a": "L'article 50 fixe des obligations de transparence pour le texte généré par IA. Les lignes directrices finales de la Commission (20 juillet 2026) exemptent les traductions IA fidèles de l'obligation de marquage lisible par machine de l'article 50(2). L'obligation de divulgation visible de l'article 50(4) peut encore s'appliquer au texte traduit par IA qui informe le public sur des questions d'intérêt public ; elle tombe pour le texte ayant fait l'objet d'une relecture humaine avec responsabilité éditoriale â l'exemple donné par les lignes directrices elles-mêmes pour cette exemption est une traduction IA relue par un humain." 2607 }, 2608 { 2609 "q": "Comment rendre le contenu traduit par IA conforme à l'article 50(4) ?", 2610 "a": "Ajoutez une étape de relecture humaine avant la publication du contenu traduit par IA ou traduction automatique, et conservez une trace de qui a relu quoi, quand et avec quel niveau de confiance, que vous pouvez produire sur demande." 2611 }, 2612 { 2613 "q": "Quand les règles de transparence de l'article 50 s'appliquent-elles ?", 2614 "a": "Les obligations de transparence de l'article 50 de l'EU AI Act s'appliquent à partir du 2 août 2026." 2615 } 2616 ] 2617} 2618`,sc=`{ 2619 "meta": {
2620 "title": "Infrastructure de traduction par IA pour ingénieurs | Locize", 2621 "description": "Locize est l'infrastructure pour la traduction pilotée par l'IA : BYOK (OpenAI et tout endpoint compatible OpenAI, Gemini, Mistral, DeepL), serveur MCP pour assistants IA, IA consciente du glossaire/style guide, workflow de relecture." 2622 }, 2623 "primaryCtaDefault": "S'inscrire gratuitement", 2624 "hero": { 2625 "badge": "Pas un énième agent IA : votre IA, vos clés, votre contrôle", 2626 "h1Prefix": "L'infrastructure dont votre ", 2627 "h1Accent": "workflow de traduction par IA a besoin.", 2628 "p1Html": "Cette année, tous les autres TMS se rebaptisent « agent IA ». Locize reste une <b>plateforme que vous contrôlez</b> : apportez vos propres clés LLM (OpenAI, Gemini, Mistral, DeepL) ou pointez Locize vers votre propre endpoint compatible OpenAI, gardez vos données dans le compte de votre fournisseur, et laissez les humains relire ce que l'IA traduit. Conçue pour les ingénieurs, pas pour les lancements de produits agentiques.", 2629 "primaryCta": "S'inscrire gratuitement", 2630 "aiLabel": "IA :", 2631 "mtLabel": "MT :", 2632 "aiProviders": ["Locize AI", "OpenAI", "Gemini", "Mistral", "..."], 2633 "mtProviders": ["Locize MT", "DeepL", "Google", "..."], 2634 "byokTitle": "Apportez votre propre clé", 2635 "byokDesc": "Vous contrôlez le fournisseur et l'usage.", 2636 "locizeAiTitle": "Ou utilisez Locize AI", 2637 "locizeAiDesc": "Basé sur les tokens, facturé à l'usage.", 2638 "whyTmsPromptHtml": "Vous vous demandez pourquoi vous avez besoin d'un TMS si l'IA sait déjà traduire ? <span class=\\"font-medium underline underline-offset-2 group-hover:no-underline\\">Lisez ceci â</span>", 2639 "imageAlt": "Interface Locize AI", 2640 "efficiencyLabel": "Gain d'efficacité", 2641 "efficiencyValue": "Jusqu'à 90 %", 2642 "efficiencyCaption": "Génération de premières ébauches plus rapide", 2643 "marqueeTitle": "Des entreprises mondiales utilisent nos fonctionnalités IA" 2644 }, 2645 "mcp": { 2646 "titlePrefix": "Localisation par assistant IA : ", 2647 "titleAccent": "Locize MCP", 2648 "subtitle": "Le serveur MCP de Locize apporte la localisation par assistant IA dans votre IDE : connectez Claude, Cursor, VS Code et tout autre client MCP à vos projets de traduction. Lisez, mettez à jour et publiez vos traductions, et donnez à votre agent le glossaire, le guide de style et la mémoire de traduction comme contexte, sans quitter votre environnement de développement.", 2649 "ctaLabel": "Guide de configuration MCP", 2650 "agentsCta": "Conventions d'agent â", 2651 "examples": [ 2652 "Trouve toutes les traductions allemandes manquantes dans le namespace checkout", 2653 "Traduis les chaînes du checkout avec le glossaire, le guide de style et la mémoire", 2654 "Vérifie les nouvelles chaînes anglaises de cette PR par rapport au glossaire du projet", 2655 "Publie la dernière version et attends la fin", 2656 "Ajoute le japonais à toutes les versions de mon projet", 2657 "Crée une branche pour feature-v2, puis fusionne-la quand elle sera prête", 2658 "Montre-moi quelles clés ont changé en anglais cette semaine", 2659 "Remonte ces nouvelles clés de ma base de code à Locize" 2660 ], 2661 "tools": [ 2662 { "title": "26 outils", "desc": "Lire les traductions, exploiter le glossaire, le guide de style et la mémoire de traduction, publier des versions, gérer les branches : le workflow complet, avec le contexte dans l'IDE." }, 2663 { "title": "Auth OAuth ou PAT", "descHtml": "Connectez-vous via OAuth depuis Claude Desktop / Cursor, ou utilisez un <a class=\\"link\\" href=\\"{{patHref}}\\">Personal Access Token</a>." }, 2664 { "title": "Compatible avec tout client MCP", "desc": "Claude Desktop, Claude Code, Cursor, VS Code et tout client qui prend en charge le protocole MCP." } 2665 ] 2666 }, 2667 "workflow": { 2668 "titlePrefix": "Le workflow de traduction par IA ", 2669 "titleAccent": "complet", 2670 "subtitle": "Du code aux traductions en ligne, entièrement automatisé. Aucun fichier à commiter, aucun déploiement à déclencher.", 2671 "steps": [ 2672 { "title": "Ãcrivez du code", "desc": "Le développeur écrit du code avec t('key') en utilisant i18next, ou un agent IA de coding initialise la configuration." }, 2673 { "title": "Clés détectées automatiquement", "desc": "saveMissing envoie automatiquement les nouvelles clés à Locize. Les agents IA peuvent appeler report_missing_keys via MCP." }, 2674 { "title": "L'IA traduit automatiquement", "desc": "Locize traduit en utilisant le fournisseur que vous avez configuré, avec votre style guide, votre glossaire et votre mémoire de traduction comme contexte." }, 2675 { "title": "Optionnel : relecture humaine", "desc": "Les traducteurs relisent et affinent dans l'éditeur CAT. Sautez cette étape lorsque la qualité de l'IA suffit." }, 2676 { "title": "En ligne via CDN", "desc": "Les traductions sont publiées sur le CDN, en ligne dans votre app sans redéploiement. Aucun fichier à commiter, aucun déploiement à déclencher." }, 2677 { "title": "L'IA gère la boucle", "desc": "Votre agent IA de coding vérifie la couverture, déclenche la publication et pilote l'ensemble du workflow via le serveur MCP." } 2678 ], 2679 "localizeCta": "Localisation en une commande â", 2680 "ciActionCta": "Traduction CI gratuite â", 2681 "setupCta": "Guide de configuration â", 2682 "tutorialCta": "Tutoriel saveMissing + IA â", 2683 "mcpCta": "Docs du serveur MCP â", 2684 "aiActCta": "AI Act européen & traduction automatique â" 2685 }, 2686 "privacy": { 2687 "heading": "Vos données. Vos modèles.", 2688 "intro": "Contrairement à d'autres plateformes qui vous enferment dans leurs services IA propriétaires (souvent avec une marge ajoutée), Locize vous laisse le choix.",
2689 "byokTitle": "Bring Your Own Key (BYOK)", 2690 "byokDesc": "Conservez votre contrat existant avec OpenAI, ou faites tourner l'inférence sur votre propre infrastructure via un endpoint compatible OpenAI. Aucune marge d'intermédiaire.", 2691 "sovereigntyTitle": "Souveraineté des données", 2692 "sovereigntyDesc": "Les traductions sont traitées avec les paramètres de confidentialité de votre fournisseur. Vos données ne sont pas utilisées pour entraîner nos modèles. Avec un endpoint auto-hébergé et les services intégrés désactivés, le texte ne quitte jamais votre infrastructure." 2693 }, 2694 "providers": { 2695 "titlePrefix": "Divers fournisseurs de traduction, ", 2696 "titleAccent": "un seul workflow", 2697 "subtitle": "Combinez des fournisseurs d'IA et de traduction automatique au sein du même projet. Apportez votre propre clé API pour un contrôle total, ou utilisez les services intégrés à Locize.", 2698 "aiLabel": "Fournisseurs d'IA", 2699 "mtLabel": "Fournisseurs de traduction automatique", 2700 "ai": [ 2701 { "name": "Locize AI", "desc": "Service de traduction par IA intégré, sans clé API externe. Facturé au token IA sur tous les plans payants." }, 2702 { "name": "OpenAI", "desc": "Modèles OpenAI via votre propre clé API, ou tout endpoint compatible OpenAI (vLLM auto-hébergé, LiteLLM, OpenRouter) via votre propre URL de base et nom de modèle." }, 2703 { "name": "Google Gemini", "desc": "Modèles Gemini Pro et Flash pour une traduction par IA de haute qualité." }, 2704 { "name": "Mistral AI", "desc": "Modèles hébergés en Europe pour les équipes avec des exigences de résidence des données." }, 2705 { "name": "Lara (by translated)", "desc": "Moteur IA utilisé comme MT." } 2706 ], 2707 "mt": [ 2708 { "name": "Locize MT", "desc": "Service de traduction automatique intégré, sans clé API externe." }, 2709 { "name": "Google Translate", "desc": "Palier gratuit et limité de Google Translate, sans clé API requise." }, 2710 { "name": "DeepL", "desc": "Réputé pour ses traductions au rendu naturel dans les langues européennes." }, 2711 { "name": "MyMemory", "desc": "Mémoire de traduction communautaire avec accès API gratuit." } 2712 ], 2713 "tmTitle": "+ Mémoire de traduction", 2714 "tmDesc": "Correspondance approximative sur l'ensemble de vos traductions passées. Fonctionne avec l'IA pour maintenir la cohérence.", 2715 "styleTitle": "+ IA consciente du style guide", 2716 "styleDesc": "Définissez le ton, la formalité et les règles terminologiques par paire de langues : ils sont injectés automatiquement dans chaque prompt IA et MT, pour que les traductions reflètent la voix de votre marque.", 2717 "qeTitle": "+ Quality Estimation", 2718 "qeDesc": "Chaque traduction IA reçoit un score de confiance évalué par l'IA, affiché dans l'éditeur. Les traductions à faible confiance peuvent être envoyées automatiquement dans le workflow de relecture." 2719 }, 2720 "whatIs": { 2721 "titlePrefix": "Qu'est-ce que la ", 2722 "titleAccent": "localisation par IA ?", 2723 "p1": "La localisation par IA est la pratique consistant à adapter du contenu au contexte culturel et linguistique de votre audience. Elle va au-delà de la traduction directe et vise à préserver le sens, l'intention, le ton et l'adéquation à l'UI.", 2724 "p2": "Dans Locize, l'IA est intégrée à votre workflow de traduction existant, de sorte que les équipes peuvent générer des ébauches plus rapidement, puis relire et affiner en toute confiance." 2725 }, 2726 "howItWorks": { 2727 "titlePrefix": "Bonnes pratiques et ", 2728 "titleAccent": "comment ça marche", 2729 "subtitle": "Un workflow pratique, étape par étape, applicable aux sites web, applications, jeux et UI produit.", 2730 "stepLabel": "Ãtape", 2731 "works": [ 2732 { 2733 "title": "Apportez votre propre clé API", 2734 "imageAlt": "Ajouter la clé API de votre fournisseur d'IA dans Locize", 2735 "p1": "Ajoutez votre clé OpenAI, Gemini, Mistral ou d'un autre fournisseur : vous gardez la propriété des données et choisissez le modèle qui vous convient. Pour un endpoint compatible OpenAI, indiquez en plus son URL de base et le nom du modèle.", 2736 "altCardLabel": "Alternative", 2737 "altCardTitle": "Utilisez le service intégré Locize AI", 2738 "altCardDescHtml": "Vous préférez ne pas gérer de clé externe ? Utilisez plutôt le <strong>service Locize AI</strong> intégré. L'usage consomme des <strong>tokens IA</strong> facturés en fonction de la consommation réelle." 2739 }, 2740 { 2741 "title": "Sélectionnez le modèle de votre choix", 2742 "imageAlt": "Choisir un modèle d'IA pour les traductions", 2743 "p1": "Choisissez le modèle qui correspond à vos besoins de qualité, de latence et de budget. Pour la localisation d'UI, les résultats sont souvent proches du publiable, avec relecture." 2744 }, 2745 { 2746 "title": "Contexte : les métadonnées font fonctionner l'IA", 2747 "imageAlt": "Ajouter le contexte de traduction dans Locize", 2748 "p1Html": "L'IA est aussi bonne que les informations qu'elle reçoit. Locize injecte automatiquement votre <strong>glossaire</strong> de projet et les <strong>descriptions au niveau des clés</strong> dans le prompt, pour que l'IA sache que « Drive » est un nom (stockage) et non un verbe (conduire)." 2749 }, 2750 { 2751 "title": "Tirez parti du glossaire et de la mémoire de traduction", 2752 "imageAlt": "Utiliser le glossaire et la mémoire de traduction pour une meilleure cohérence", 2753 "p1Html": "Gardez la terminologie cohérente en continuant à utiliser les fonctionnalités de <a class=\\"link\\" href=\\"{{glossaryHref}}\\">glossaire</a> et de mémoire de traduction de Locize." 2754 }, 2755 { 2756 "title": "Utilisez-la comme une traduction automatique", 2757 "imageAlt": "Exécuter la traduction par IA via des actions en masse", 2758 "p1Html": "Traduisez des segments isolés, lancez des <a class=\\"link\\" href=\\"{{bulkHref}}\\">actions en masse</a> ou automatisez via le <a class=\\"link\\" href=\\"{{autoHref}}\\">workflow de traduction automatique</a>." 2759 }, 2760 { 2761 "title": "Affinez les traductions avec les suggestions IA", 2762 "imageAlt": "Affiner les traductions avec des suggestions IA", 2763 "p1": "Reformulez, raccourcissez ou générez des variantes pour respecter les contraintes d'UI et le ton, puis laissez les traducteurs relire et finaliser." 2764 } 2765 ] 2766 }, 2767 "whyChoose": { 2768 "titlePrefix": "Pourquoi choisir la ", 2769 "titleAccent": "localisation par IA ?", 2770 "items": [ 2771 { "title": "Time-to-market plus rapide", "desc": "Générez rapidement des premières ébauches de haute qualité pour que les équipes puissent livrer dans plus de langues avec moins de retard." }, 2772 { "title": "Précision et cohérence renforcées", "desc": "Contexte, glossaire et mémoire de traduction aident à préserver le ton et la terminologie sur l'ensemble de votre produit." }, 2773 { "title": "Premières traductions économiques", "desc": "L'IA peut accélérer le travail de traduction initial et réduire l'effort manuel, avec relecture là où ça compte." } 2774 ], 2775 "imageAlt": "Sélection du modèle d'IA dans Locize", 2776 "imageCaption": "Choisissez le modèle et le workflow adaptés à vos exigences de qualité et de gouvernance." 2777 }, 2778 "useCases": { 2779 "titlePrefix": "Localisation par IA pour ", 2780 "titleAccent": "tous les cas d'usage", 2781 "subtitle": "Suivez le rythme rapide de l'itération produit sans faire de la localisation un facteur de blocage des releases.", 2782 "cards": [ 2783 { "title": "Localisation de sites web", "text": "Gérez des sites web multilingues et publiez des mises à jour en continu.", "href": "/blog/website-localization", "cta": "Voir le guide de localisation de sites web â" }, 2784 { "title": "Localisation d'applications mobiles", "text": "Accélérez les cycles de traduction et gardez vos releases en mouvement.", "href": "/blog/what-is-mobile-app-localization", "cta": "Voir le guide mobile â" }, 2785 { "title": "Localisation de jeux vidéo", "text": "Adaptez le texte d'UI et le contenu pour des joueurs internationaux avec une terminologie cohérente.", "href": "/blog/what-is-video-game-localization", "cta": "Voir le guide de localisation de jeux â" }, 2786 { "title": "Localisation de plateforme", "text": "Faites passer la localisation à l'échelle sur des produits et équipes complexes.", "href": "/blog/what-is-software-localization", "cta": "Voir le guide de plateforme â" }, 2787 { "title": "Constructeurs de sites web", "text": "Ajoutez des workflows de localisation aux CMS et constructeurs de sites sans friction.", "href": "/blog/website-internationalization-best-practices", "cta": "Voir les bonnes pratiques â" }, 2788 { "title": "Toute intégration", "text": "Utilisez l'API, le CLI et les hooks d'automatisation pour vous adapter à votre stack.", "href": "/docs/integration/api/", "cta": "Explorer l'API â" } 2789 ] 2790 }, 2791 "faq": { 2792 "titlePrefix": "Questions ", 2793 "titleAccent": "fréquentes", 2794 "subtitle": "Réponses rapides sur la localisation par IA dans Locize.", 2795 "docsCta": "Aller aux docs", 2796 "items": [ 2797 { "q": "Comment la localisation par IA garantit-elle précision et contexte dans les traductions ?", "aHtml": "<p class=\\"m-0\\">L'IA utilise le contexte et des instructions pour produire des traductions plus naturelles. Dans Locize, vous pouvez ajouter du contexte au niveau du projet et de la clé pour que les résultats correspondent à votre UI et à la voix de votre marque.</p>" }, 2798 { "q": "Les outils IA de Locize peuvent-ils gérer différents types de logiciels ?", "aHtml": "<p class=\\"m-0\\">Oui. Le même workflow s'applique aux sites web, applications mobiles, jeux et UI de plateforme, du moment que vos chaînes sont dans Locize.</p>" }, 2799 { "q": "Est-ce facile d'intégrer la localisation par IA à mon workflow ?", "aHtml": "<p class=\\"m-0\\">Vous pouvez utiliser l'IA via l'UI, des actions en masse ou des workflows d'automatisation. Les intégrations comme l'API et le CLI vous aident à garder les traductions synchronisées avec votre base de code.</p>" }, 2800 { "q": "Puis-je utiliser l'IA sans fournir ma propre clé API ?", "aHtml": "<p class=\\"m-0\\">Oui. Vous pouvez utiliser le service intégré Locize AI, qui consomme des tokens IA facturés de façon transparente en fonction de l'usage.</p>" }, 2801 { "q": "Si l'IA peut traduire mes chaînes, pourquoi ai-je besoin d'un TMS ?", "aHtml": "<p class=\\"m-0\\">L'IA traduit les chaînes. Un TMS les gère dans le temps : il suit quelles clés manquent, garde la terminologie cohérente sur des centaines de clés, permet aux non-développeurs de publier des correctifs sans déploiement et tient une piste d'audit pour chaque changement. Les deux résolvent des problèmes différents, c'est pourquoi Locize intègre l'IA au workflow plutôt que de la remplacer. <a class=\\"link\\" href=\\"{{whyNotAiHref}}\\">Réponse plus longue ici â</a></p>" } 2802 ] 2803 }, 2804 "finalCta": { 2805 "title": "Arrêtez d'attendre. Commencez à localiser.", 2806 "subtitle": "Créez un nouveau projet et traduisez votre application avec un workflow auquel votre équipe peut faire confiance.", 2807 "primaryCta": "S'inscrire gratuitement", 2808 "pricingLabel": "Voir les tarifs"
2809 } 2810} 2811`,cc=`{ 2812 "skipToContent": "Aller au contenu", 2813 "nav": { 2814 "primaryAria": "Navigation principale", 2815 "howItWorks": "Comment ça marche", 2816 "forYourTeam": "Pour votre équipe", 2817 "pricing": "Tarifs", 2818 "customers": "Clients", 2819 "services": "Services", 2820 "ai": "IA", 2821 "docs": "Docs", 2822 "blog": "Blog" 2823 }, 2824 "cta": { 2825 "login": "Connexion", 2826 "register": "S'inscrire", 2827 "registerForFree": "S'inscrire gratuitement" 2828 }, 2829 "languageSwitcher": { 2830 "label": "Langue", 2831 "en": "English", 2832 "de": "Deutsch", 2833 "it": "Italiano", 2834 "fr": "Français" 2835 }, 2836 "blog": { 2837 "title": "Blog", 2838 "subtitle": "Nouveautés produit, guides et témoignages clients.", 2839 "searchLabel": "Rechercher", 2840 "searchPlaceholder": "Rechercher des articles â¦", 2841 "allCategories": "TOUS", 2842 "noResults": "Aucun résultat.", 2843 "postNotFound": "Article introuvable", 2844 "backToBlog": "Retour au blog", 2845 "cta": { 2846 "heading": "Fatigué de gérer vos traductions à la main ?", 2847 "body": "Locize est le backend de gestion de traductions créé par l'équipe i18next : diffusion CDN, traduction IA, édition in-context, sans redéploiement.", 2848 "button": "Démarrez votre essai gratuit de 14 jours" 2849 }, 2850 "pagination": { 2851 "previous": "â Précédent", 2852 "next": "Suivant â" 2853 } 2854 }, 2855 "footer": { 2856 "columns": { 2857 "product": "Produit", 2858 "solutions": "Solutions", 2859 "company": "Entreprise", 2860 "importantLinks": "Liens importants", 2861 "registration": "Inscription" 2862 }, 2863 "links": { 2864 "pricing": "Tarifs", 2865 "howItWorks": "Comment ça marche", 2866 "services": "Services", 2867 "ai": "IA", 2868 "whyNotJustUseAi": "Pourquoi ne pas se contenter de l'IA ?", 2869 "continuousLocalization": "Localisation continue", 2870 "fileFormats": "Formats de fichiers", 2871 "docs": "Docs", 2872 "i18next": "i18next", 2873 "i18nLibrary": "bibliothèque i18n", 2874 "javascriptLocalization": "Localisation JavaScript", 2875 "websiteLocalizationServices": "Localisation de sites web", 2876 "softwareLocalizationService": "Localisation logicielle", 2877 "euAccessibilityAct": "EU Accessibility Act", 2878 "forYourTeam": "Pour votre équipe", 2879 "multiTenant": "Multi-tenant", 2880 "blog": "Blog", 2881 "caseStudies": "Ãtudes de cas", 2882 "security": "Sécurité", 2883 "ourPhilosophy": "Notre philosophie", 2884 "compareCompetitors": "Comparer les concurrents", 2885 "swissMadeTms": "TMS Swiss made", 2886 "terms": "Conditions", 2887 "privacyPolicy": "Confidentialité", 2888 "dpa": "DPA", 2889 "ccpa": "CCPA", 2890 "support": "Support" 2891 }, 2892 "i18nLibraryLine": "<0>i18next</0> ou toute autre <1>bibliothèque i18n</1>", 2893 "aiLine": "<0>IA</0> â <1>Pourquoi ne pas se contenter de l'IA ?</1>", 2894 "copyright": "© {{year}} inweso Sà rl. Tous droits réservés.", 2895 "social": { 2896 "emailTitle": "Email", 2897 "emailAria": "Email à [email protected]", 2898 "xTitle": "X", 2899 "xAria": "Locize sur X", 2900 "facebookTitle": "Facebook", 2901 "facebookAria": "Locize sur Facebook", 2902 "youtubeTitle": "YouTube", 2903 "youtubeAria": "Locize sur YouTube", 2904 "instagramTitle": "Instagram", 2905 "instagramAria": "Locize sur Instagram" 2906 } 2907 } 2908} 2909`,lc=`{ 2910 "meta": { 2911 "title": "Clients - Locize", 2912 "description": "Ãcoutez plus de 100 équipes, dont ABB, la Croix-Rouge suisse et la ZKB, raconter comment Locize a rationalisé leur workflow de localisation. Ãtudes de cas et témoignages." 2913 }, 2914 "marqueeTitle": "La confiance de sociétés produit de premier plan", 2915 "hero": { 2916 "heading": "Témoignages de réussite client", 2917 "subtitle": "Ãcoutez ce que nos clients ont à dire." 2918 }, 2919 "partnerStories": { 2920 "headingPrefix": "Histoires de ", 2921 "headingAccent": "partenaires", 2922 "subtitle": "Des histoires de localisation issues du terrain et de la communauté.", 2923 "readStory": "Lire l'histoire", 2924 "items": [ 2925 { 2926 "title": "L'importance d'une communication multilingue dans les écoles : attirer un public mondial", 2927 "text": "Découvrez comment Locize permet aux établissements éducatifs de gérer et mettre à jour sans effort leurs contenus multilingues, pour se présenter au mieux à un public international." 2928 }, 2929 { 2930 "title": "La localisation chez Immersive Communities", 2931 "text": "Comment Immersive Communities a utilisé Locize pour gérer sa localisation ?", 2932 "extraLinkText": "Lisez aussi l'histoire complète de Mario, qui a construit ce réseau social en 4 ans en tant que développeur indépendant." 2933 }, 2934 { 2935 "title": "La localisation chez Networkme", 2936 "text": "Comment Networkme est devenu au moins 20 % plus productif ?\\n\\nDécouvrez comment Networkme donne à ses rédacteurs l'autonomie nécessaire pour avancer au rythme qu'ils attendent." 2937 }, 2938 { 2939 "title": "Comment nous avons traduit le site Avocode, écrit en Next.js, avec le package i18next", 2940 "text": "Comment traduire un site web qui change en permanence ?" 2941 }, 2942 { 2943 "title": "ReactIntl + namespaces + Locize", 2944 "text": "Comment ReactIntl, associé à Locize, vous aide pour les tâches d'internationalisation et de localisation de votre projet." 2945 }, 2946 { 2947 "title": "La localisation en tant que service avec Locize", 2948 "text": "Vous gérez vos localisations dans Word ? Excel ? JSON ? XML ? Notepad ? Croyez-le ou non, nous avons tout essayé." 2949 } 2950 ] 2951 }, 2952 "testimonials": { 2953 "headingPrefix": "Témoignages ", 2954 "headingAccent": "de clients", 2955 "subtitle": "Ãcoutez ce que nos clients ont à dire !", 2956 "tryLocize": "Essayer Locize" 2957 } 2958} 2959`,uc=`{ 2960 "meta": { 2961 "title": "EU Accessibility Act et localisation : conformité multilingue pour les produits numériques", 2962 "description": "L'EU Accessibility Act (directive 2019/882) est entrée en application le 28 juin 2025. Locize prend en charge le volet multilingue : mises à jour CDN, workflow de relecture, journal d'audit, glossaire, traduction par IA avec relecture humaine." 2963 }, 2964 "hero": { 2965 "badge": "Application depuis le 28 juin 2025", 2966 "h1Prefix": "EU Accessibility Act : ", 2967 "h1Accent": "conformité multilingue pour les produits numériques", 2968 "p1Html": "<b>L'EU Accessibility Act</b> (directive (UE) 2019/882) impose que les produits et services numériques mis sur le marché de l'
2968UE soient accessibles aux personnes en situation de handicap. L'application a commencé le <b>28 juin 2025</b>. La plupart des sociétés SaaS, e-commerce, bancaires, de téléphonie, de transport et de médias audiovisuels qui servent des utilisateurs de l'UE sont concernées.", 2969 "p2": "L'EAA elle-même se concentre sur l'accessibilité, mais elle recoupe les règles linguistiques de l'UE. Les produits numériques transfrontaliers doivent typiquement délivrer leur contenu dans les langues officielles des marchés de l'UE qu'ils desservent, et mettre à jour ce contenu rapidement lorsqu'un problème de conformité est signalé.", 2970 "p3Html": "<b>Locize prend en charge le volet multilingue</b> : traductions livrées via CDN (pas de redéploiement pour les correctifs de conformité), workflow de relecture pour validation juridique, journal d'audit par clé pour les audits de conformité, glossaire et style guide pour la cohérence terminologique, traduction par IA avec relecture humaine pour couvrir rapidement davantage de langues de l'UE.", 2971 "ctaTrial": "Lancez votre essai gratuit", 2972 "ctaChecklist": "Voir la checklist de conformité", 2973 "swissBadge": "TMS Swiss-made · résidence des données proche de l'UE", 2974 "gdprBadge": "Conforme RGPD", 2975 "imageAlt": "Workflow de relecture Locize, validation juridique et accessibilité sur le contenu traduit", 2976 "imageCaption": "Le workflow de relecture Locize : les relecteurs juridiques ou accessibilité peuvent approuver chaque traduction avant sa mise en ligne." 2977 }, 2978 "whatIs": { 2979 "heading": "Ce qui a changé le 28 juin 2025", 2980 "subtitle": "La directive (UE) 2019/882 est entrée en application après une période de transition de 6 ans. Les sanctions sont désormais actives.", 2981 "coversTitle": "Ce que couvre l'EAA", 2982 "coversItems": [ 2983 "Sites web et applications de e-commerce", 2984 "Services bancaires et financiers (à destination du consommateur)", 2985 "Téléphonie : voix + fabricants de smartphones", 2986 "Liseuses, livres numériques et services de médias audiovisuels", 2987 "Transport : informations voyageurs, distributeurs de billets", 2988 "Ordinateurs, smartphones et systèmes de billetterie", 2989 "Terminaux en libre-service (DAB, distributeurs de tickets)" 2990 ], 2991 "whoMustTitle": "Qui doit se conformer", 2992 "whoMustP1Html": "Toute entreprise (à l'intérieur ou à l'extérieur de l'UE) qui met sur le marché de l'UE des produits ou services couverts. L'exemption pour les microentreprises (moins de 10 salariés ET moins de 2 M⬠de chiffre d'affaires annuel) ne s'applique qu'aux exigences relatives aux <b>services</b>, pas à celles relatives aux produits.", 2993 "whoMustP2": "La plupart des sociétés SaaS, e-commerce, fintech et de médias numériques servant des utilisateurs de l'UE sont concernées. Les régulateurs nationaux (ARCOM en France, BFIT-Bund en Allemagne, AgID en Italie, etc.) ont commencé à émettre des notifications de conformité.", 2994 "penaltiesTitle": "Sanctions (définies par chaque Ãtat membre)", 2995 "penaltiesP1": "Chaque Ãtat membre de l'UE définit son propre régime d'application. Les sanctions incluent typiquement : des amendes proportionnelles au chiffre d'affaires de l'entreprise, le retrait des produits non conformes du marché de l'UE et des plans de remédiation obligatoires. Le risque réputationnel est significatif ; les notifications de mise en conformité sont généralement publiques." 2996 }, 2997 "language": { 2998 "heading": "Où se situe le contenu multilingue dans la conformité EAA", 2999 "subtitle": "L'EAA se concentre sur l'accessibilité (texte alternatif, sous-titres, navigation clavier, compatibilité lecteurs d'écran), mais elle n'existe pas en vase clos.", 3000 "whyTitle": "Pourquoi le multilingue compte ici", 3001 "whyP1Html": "L'accessibilité repose sur un préalable : <b>du contenu dans la langue de l'utilisateur</b>. Un lecteur d'écran ne peut pas rendre un texte anglais accessible à un utilisateur polonais ; des sous-titres dans une langue étrangère ne sont pas de l'accessibilité.", 3002 "whyP2": "Plusieurs règles de l'UE qui se chevauchent imposent déjà du contenu en langue locale :", 3003 "whyBulletsHtml": [ 3004 "<b>Directive relative aux droits des consommateurs (2011/83/UE)</b> : informations destinées aux consommateurs dans la langue de l'Ãtat membre", 3005 "<b>Directive sur l'accessibilité du web (2016/2102)</b> : organismes du secteur public, périmètre parallèle", 3006 "Implémentations nationales : loi Toubon en France, règles régionales belges, Stanca Act en Italie" 3007 ], 3008 "practiceTitle": "Ce que cela signifie en pratique", 3009 "practiceP1Html": "Si vous opérez de façon transfrontalière dans l'UE, vous devez généralement livrer votre produit dans les langues officielles des marchés que vous desservez, ainsi que les textes alternatifs, les s
3009ous-titres et les déclarations d'accessibilité <b>dans ces mêmes langues</b>.", 3010 "practiceP2": "Lorsqu'un problème de conformité est identifié (par un régulateur, une plainte client ou un audit interne), les correctifs doivent être livrés rapidement. C'est là que la traduction-par-redéploiement devient pénible : une faute de frappe dans une déclaration d'accessibilité ne devrait pas nécessiter une release." 3011 }, 3012 "checklist": { 3013 "heading": "Checklist de conformité multilingue", 3014 "subtitle": "Questions concrètes à se poser sur le volet multilingue de votre programme EAA.", 3015 "itemsHtml": [ 3016 "<b>Quels marchés de l'UE desservez-vous ?</b> Cartographiez les langues officielles de chacun. En base, l'anglais seul est rarement suffisant pour les services destinés aux consommateurs.", 3017 "<b>Votre déclaration d'accessibilité est-elle disponible dans chaque langue de marché ?</b> La déclaration elle-même est exigée par plusieurs règles de l'UE, et doit être dans la langue de l'utilisateur.", 3018 "<b>Pouvez-vous livrer une correction de traduction sans déploiement ?</b> Si un régulateur signale un problème de traduction, vous devriez pouvoir le corriger en quelques minutes, pas dans un cycle de release.", 3019 "<b>Avez-vous un workflow de relecture documenté pour les traductions ?</b> Les auditeurs voudront savoir qui a validé les contenus localisés et quand. Un journal d'audit par clé est la réponse standard.", 3020 "<b>Les textes alternatifs, sous-titres, messages d'erreur et libellés de formulaires sont-ils traduits ?</b> Ce sont des éléments faciles à oublier quand on ne localise que les pages marketing et pas le « chrome » du produit.", 3021 "<b>La terminologie est-elle cohérente d'une langue à l'autre ?</b> Les incohérences entre « Accepter » / « Confirmer » / « Continuer » peuvent casser le parcours d'accessibilité pour les utilisateurs de lecteurs d'écran qui naviguent entre les pages. Un glossaire de projet est la façon la plus propre d'imposer cette cohérence.", 3022 "<b>Pouvez-vous ajouter rapidement une langue si un nouveau marché devient prioritaire ?</b> Les programmes de traduction manuelle prennent typiquement des semaines ; la traduction par IA avec relecture humaine peut se compter en jours." 3023 ], 3024 "footnote": "Il s'agit d'une checklist de contenu multilingue. L'accessibilité en tant que telle exige aussi la conformité WCAG 2.2 AA, la conformité à EN 301 549 et des exigences spécifiques à chaque produit ; consultez un spécialiste de l'accessibilité pour avoir la vision complète." 3025 }, 3026 "mapping": { 3027 "heading": "Comment Locize répond aux besoins multilingues issus de l'EAA", 3028 "subtitle": "Chaque fonctionnalité Locize répond directement à un besoin de conformité multilingue.", 3029 "headers": ["Besoin de conformité", "Fonctionnalité Locize"], 3030 "rows": [ 3031 ["Livrer une correction de traduction en quelques minutes", "<a class=\\"brand-link\\" href=\\"{{cdnHref}}\\">Traductions livrées via CDN</a> : les modifications sont en ligne sans redéploiement"], 3032 ["Validation juridique / accessibilité sur les contenus traduits", "<a class=\\"brand-link\\" href=\\"{{reviewHref}}\\">Workflow de relecture</a> : accepter/refuser avec visualisation des différences, relecteurs par langue"], 3033 ["Piste d'audit indiquant qui a modifié quoi et quand", "<a class=\\"brand-link\\" href=\\"{{historyHref}}\\">Historique par clé</a> + journal d'audit sur les plans supérieurs"], 3034 ["Terminologie cohérente dans toutes les langues", "<a class=\\"brand-link\\" href=\\"{{glossaryHref}}\\">Glossaire de projet</a> + <a class=\\"brand-link\\" href=\\"{{styleguideHref}}\\">style guide</a> injectés dans les prompts IA"], 3035 ["Ajouter rapidement une nouvelle langue de l'UE", "<a class=\\"brand-link\\" href=\\"{{autoTransHref}}\\">Traduction automatique</a> avec BYOK (OpenAI, Gemini, Mistral, DeepL) + relecture humaine"], 3036 ["Surcharges multi-tenant (marques régionales, marque blanche)", "<a class=\\"brand-link\\" href=\\"{{multiTenantHref}}\\">Multi-tenant</a> : couche de surcharge par tenant au-dessus d'une base partagée"], 3037 ["Résidence des données UE/CH pour les données de traduction", "Exploitée par une <a class=\\"brand-link\\" href=\\"{{swissHref}}\\">
3037société enregistrée en Suisse</a>, avec des données de traduction hébergées sur AWS Irlande ; voir notre <a class=\\"brand-link\\" href=\\"{{securityHref}}\\">page sécurité</a>"] 3038 ] 3039 }, 3040 "customers": { 3041 "heading": "Des équipes qui livrent déjà des produits UE multilingues avec Locize", 3042 "moreCta": "Plus de témoignages clients" 3043 }, 3044 "faqSection": { 3045 "heading": "Questions fréquentes", 3046 "subtitle": "Si votre question manque, écrivez à [email protected]" 3047 }, 3048 "faqItems": [ 3049 { "q": "Qu'est-ce que l'EU Accessibility Act ?", "a": "L'EU Accessibility Act (EAA, directive (UE) 2019/882) est une directive européenne de 2019 qui impose que les produits et services numériques mis sur le marché de l'UE soient accessibles aux personnes en situation de handicap. L'application a commencé le 28 juin 2025. Les produits couverts incluent l'e-commerce, les services bancaires, le transport, la téléphonie, les liseuses, les services de médias audiovisuels, les ordinateurs, les smartphones et les systèmes de billetterie. La non-conformité entraîne des sanctions définies par chaque Ãtat membre, typiquement des amendes." }, 3050 { "q": "L'EU Accessibility Act exige-t-elle du contenu multilingue ?", "a": "L'EAA elle-même se concentre sur l'accessibilité (texte alternatif, sous-titres, navigation clavier, etc.), pas sur la langue. Mais elle s'imbrique avec d'autres règles de l'UE : la directive sur l'accessibilité du web pour les organismes du secteur public, la directive européenne sur les droits des consommateurs qui exige des informations consommateur dans la langue de l'Ãtat membre, et des implémentations nationales qui ajoutent souvent des obligations linguistiques. En pratique, les sociétés SaaS ou e-commerce servant plusieurs marchés de l'UE doivent fournir du contenu multilingue en complément d'exigences strictes d'accessibilité." }, 3051 { "q": "Qui doit se conformer à l'EU Accessibility Act ?", "a": "Toute entreprise (à l'intérieur ou à l'extérieur de l'UE) qui met sur le marché de l'UE des produits ou services couverts. Les microentreprises fournissant des services (moins de 10 salariés ET moins de 2 M⬠de chiffre d'affaires annuel) sont exemptées des exigences relatives aux services, mais pas de celles relatives aux produits. La plupart des sociétés SaaS, e-commerce, fintech et de médias numériques servant des utilisateurs de l'UE entrent dans le périmètre." }, 3052 { "q": "Comment Locize aide-t-il à la conformité EU Accessibility Act ?", "a": "Locize couvre le volet multilingue : traductions livrées via CDN pour que les correctifs de conformité soient en ligne sans redéploiement, workflow de relecture pour validation par des experts juridiques / accessibilité, journal d'audit par clé pour les audits de conformité, glossaire et style guide pour la cohérence terminologique, et traduction par IA avec relecture humaine pour couvrir rapidement davantage de langues de l'UE." }, 3053 { "q": "Quelles langues dois-je couvrir pour la conformité à l'accessibilité de l'UE ?", "a": "Il existe 24 langues officielles de l'UE. L'exigence exacte dépend des marchés que vous desservez et des lois linguistiques nationales qui s'appliquent. En base, la plupart des fournisseurs SaaS transfrontaliers visent les langues des marchés sur lesquels ils vendent activement, typiquement un sous-ensemble de : allemand, français, espagnol, italien, néerlandais, polonais, portugais, suédois, plus l'anglais comme repli. Les régulateurs nationaux (par exemple en France, en Belgique, en Wallonie influencée par le Québec) appliquent strictement les exigences linguistiques locales." }, 3054 { "q": "Que se passe-t-il si mon produit n'est pas conforme ?", "a": "Les Ãtats membres définissent leur propre régime d'application. Les sanctions incluent typiquement des amendes (proportionnelles au chiffre d'affaires de l'entreprise), le retrait des produits non conformes du marché et des dommages réputationnels. Les régulateurs nationaux ont commencé à émettre des notifications fin 2025. Pour les prestataires de services (par opposition aux fabricants de produits), il existe une période de grâce supplémentaire jusqu'en 2030 dans certains cas, mais l'application principale a commencé le 28 juin 2025." } 3055 ], 3056 "related": { 3057 "linksHtml": "à lire aussi : <a class=\\"brand-link\\" href=\\"{{websiteHref}}\\">Services de localisation de sites web</a> · <a class=\\"brand-link\\" href=\\"{{softwareHref}}\\">Service de localisation logicielle</a>
3057 · <a class=\\"brand-link\\" href=\\"{{swissHref}}\\">TMS Swiss-made</a> · <a class=\\"brand-link\\" href=\\"{{jsHref}}\\">Localisation JavaScript</a> · <a class=\\"brand-link\\" href=\\"{{securityHref}}\\">Sécurité & résidence des données</a>", 3058 "footnote": "Cette page décrit le volet contenu multilingue de la conformité EAA. L'accessibilité en tant que telle (texte alternatif, sous-titres, navigation clavier, conformité WCAG / EN 301 549) requiert des outils et audits spécialisés ; consultez un expert en accessibilité pour un programme de conformité complet." 3059 }, 3060 "finalCta": { 3061 "title": "Livrez des produits UE multilingues sans redéploiement.", 3062 "subtitle": "Essai gratuit de 14 jours. Sans carte bancaire.", 3063 "primaryLabel": "S'inscrire gratuitement" 3064 } 3065} 3066`,dc=`{ 3067 "meta": { 3068 "title": "Pour votre équipe - Locize", 3069 "description": "Locize pour les développeurs, les managers et les traducteurs : des outils que chaque rôle a vraiment envie d'utiliser." 3070 }, 3071 "hero": { 3072 "h1": "La plateforme de traduction que toute votre équipe peut réellement utiliser", 3073 "subtitle": "Pour les développeurs, les managers et les traducteurs.", 3074 "roles": [ 3075 { "role": "Développeurs", "target": "developers", "desc": "Automatisez votre workflow i18n et restez dans votre IDE." }, 3076 { "role": "Managers", "target": "managers", "desc": "Suivez le ROI, gérez les budgets et livrez en toute confiance." }, 3077 { "role": "Traducteurs", "target": "translators", "desc": "Des out
3077ils à fort contexte et des workflows assistés par IA." } 3078 ], 3079 "viewFeatures": "Voir les fonctionnalités â", 3080 "intro": "Tirez parti de la puissance de Locize pour chaque rôle de votre équipe. Cela optimise la façon dont les équipes de développement et de traduction collaborent.", 3081 "subIntroHtml": "En tant que responsable d'équipe technique / engineering manager, vous aurez une chose de moins à gérer activement.<br />Locize rend les équipes d'ingénierie plus rapides, plus efficaces et fait globalement économiser de l'argent. <a href=\\"https://youtu.be/lCuHSZvSiVg\\" target=\\"_blank\\" rel=\\"noreferrer\\">Découvrez</a> ce que Locize peut vous offrir.<br /><a href=\\"{{trialHref}}\\" target=\\"_blank\\" rel=\\"noreferrer\\">Essayez gratuitement</a>, configurez votre projet Locize, comparez-le à votre processus existant et validez-le avec les membres de votre équipe." 3082 }, 3083 "managers": { 3084 "title": "Pour les chefs de projet / responsables de traduction", 3085 "subtitle": "Responsabilité, visibilité et rapidité de mise sur le marché.", 3086 "items": [ 3087 { "title": "Visibilité globale", "imageAlt": "Tableau de bord Locize", "p1": "Obtenez une visibilité totale sur votre empreinte mondiale. Du tableau de bord à haut niveau jusqu'aux fichiers individuels, vous disposez des données en temps réel nécessaires pour livrer en toute confiance et respecter les délais internationaux sans deviner." }, 3088 { "title": "Stratégie pilotée par les données", "imageAlt": "Statistiques Locize", "p1": "Transformez la localisation d'un centre de coûts en un moteur de croissance. Suivez le nombre de mots, la vélocité de traduction et l'activité des développeurs pour optimiser votre budget et mesurer le ROI à mesure que vous vous étendez sur de nouveaux marchés." }, 3089 { "title": "Journaux d'audit complets & responsabilité", "imageAlt": "Historique Locize", "p1": "Conservez une traçabilité claire pour chaque chaîne. Notre historique détaillé garantit la responsabilité et facilite l'annulation des modifications, vous offrant la tranquillité d'esprit dans des secteurs régulés ou de grandes équipes." }, 3090 { "title": "Commandez des traductions", "imageAlt": "Commande de traductions Locize", "p1": "Si vous pouvez faire réaliser vos traductions par des freelances ou des collaborateurs en interne en utilisant Locize, vous avez aussi la possibilité de commander des traductions directement depuis Locize.", "p2": "Vous pouvez actuellement commander directement auprès de TextMaster ou de BLEND." }, 3091 { "title": "Tenez votre équipe au courant", "imageAlt": "Notifications Locize", "p1": "Tenez votre équipe au courant en activant notre intégration de notifications avec Slack.", "p2": "Recevez une notification dès qu'un événement notable se produit sur votre projet de localisation." } 3092 ] 3093 }, 3094 "translators": { 3095 "title": "Pour les traducteurs", 3096 "subtitle": "Gagner en efficacité grâce à Locize.", 3097 "items": [ 3098 { "title": "Mémoire de traduction intelligente", "imageAlt": "Mémoire de traduction", "p1": "Tous les avantages d'une mémoire de traduction. Réutilisez les traductions déjà faites. Recherchez la terminologie utilisée.", "p2": "Emportez votre mémoire de traduction avec vous en l'exportant pour l'utiliser dans SDL Trados ou d'autres outils de localisation." }, 3099 { "title": "Ãdition in-context", "imageAlt": "Ãditeur in-context", "p1": "Traduisez directement dans votre site web / application. Chaque traduction n'est qu'à un clic.", "p2": "Traduire depuis votre contexte est la meilleure façon de comprendre le contexte de votre traduction." }, 3100 { "title": "Workflow de relecture configurable avec validation par langue", "imageAlt": "Workflow de relecture", "p1": "Vous pouvez activer le workflow de relecture pour des langues spécifiques.", "p2": "Ainsi, chaque fois qu'une personne modifie une traduction, un workflow de relecture est lancé. La valeur effective n'est pas modifiée tant qu'une des propositions de traduction n'est pas acceptée." }, 3101 { "titleHtml": "Traductions par machine ou <a href=\\"{{aiHref}}\\">IA générative</a>", "imageAlt": "Traduction automatique", "p1": "Les traductions par IA sont prêtes pour la production dans de nombreux cas d'usage : outils internes, documentation technique, contenu destiné aux développeurs. Pour les contenus critiques pour la marque, Locize fournit le workflow de relecture pour les peaufiner.", "p2": "Utilisez la traduction automatique ou par IA générative pour les premières ébauches, et laissez les traducteurs relire et affiner là où ça compte." } 3102 ] 3103 }, 3104 "developers": { 3105 "title": "Pour les développeurs", 3106 "subtitle": "Moins de temps consacré à la localisation, c'est plus de temps pour coder.", 3107 "items": [ 3108 { "title": "API REST complète avec plus de 60 endpoints", "imageAlt": "API Locize", "p1": "Construisez n'importe quelle intégration contre notre API.", "p2": "Ajoutez de nouvelles traductions, ajoutez de nouvelles versions et publiez-les sur notre CDN à l'aide d'un simple appel API." }, 3109 { "title": "Outil CLI", "imageAlt": "Ligne de commande Locize", "p1": "Intégrez notre outil CLI dans votre processus de build.", "p2": "Téléchargez les fichiers de traduction dans n'importe quel format fourni par Locize depuis votre ligne de commande.", "p3": "Synchronisez vos traductions avec Locize sans avoir à modifier votre code." }, 3110 { "title": "Ajoutez de nouveaux segments depuis le code", "imageAlt": "Code Locize", "p1": "Plus besoin d'ajouter manuellement des segments. Vous n'avez plus jamais besoin de quitter votre éditeur pour ajouter des traductions.", "p2": "En instrumentant votre code pour l'internationalisation avec, par exemple, i18next, les nouveaux segments sont ajoutés automatiquement à votre projet Locize." }, 3111 { "title": "Développement & traduction en parallèle", "imageAlt": "Versionnement Locize", "p1": "Arrêtez de laisser les traductions bloquer votre cycle de release. Le versionnement permet à vos développeurs de livrer le code de la v2.0 pendant que les traducteurs finalisent le contenu de la v1.1 en parallèle.", "p2": "Plus de conflits de merge sur les fichiers JSON. Juste un workflow fluide et indépendant pour chaque rôle.", "p3Html": "Vous construisez un produit multi-tenant ? Les <a class=\\"text-white/90 underline\\" href=\\"{{multiTenantHref}}\\">surcharges de traduction par client</a> permettent à chacun de vos clients de personnaliser la langue sans forker votre configuration." } 3112 ] 3113 }, 3114 "security": { 3115 "title": "Sécurité entreprise & contrôle d'accès", 3116 "subtitle": "Les contrôles dont votre équipe sécurité a besoin.", 3117 "items": [ 3118 { "title": "SAML SSO", "desc": "Single sign-on entreprise via votre fournisseur d'identité. Disponible sur les plans Professional et au-dessus." }, 3119 { "title": "MFA imposée par projet", "desc": "Exigez l'authentification multifacteur pour tous les utilisateurs d'un projet, imposée au niveau du projet." }, 3120 { "title": "WebAuthn (sans mot de passe)", "desc": "Prise en charge des clés matérielles et de la connexion biométrique pour une authentification résistante au phishing." }, 3121 { "title": "Contrôle d'accès basé sur les rôles", "desc": "Définissez les permissions par version, par langue et par namespace. Chaque utilisateur ne voit que ce dont il a besoin." }, 3122 { "title": "Héritage des permissions", "desc": "Les rôles s'héritent du projet parent vers les projets enfants dans les configurations multi-tenant. Un contrôle d'accès cohérent sur tous les tenants." }, 3123 { "title": "Traitement conforme RGPD", "desc": "Données traitées en conformité avec le RGPD. Société suisse avec des pratiques de gestion des données transparentes." } 3124 ], 3125 "cta": "Détails de sécurité â" 3126 }, 3127 "support": { 3128 "heading": "Prêt à aligner votre équipe ou besoin d'aide pour démarrer ?", 3129 "subtitle": "Faites répondre à vos questions sur l'intégration de Locize par l'un des membres de notre équipe.", 3130 "cta": "Contactez-nous !" 3131 } 3132} 3133`,fc=`{ 3134 "meta": { 3135 "title": "Locize â Plateforme de localisation et de gestion des traductions", 3136 "description": "Locize relie le développement et la traduction. Localisation continue pour les développeurs, les traducteurs et les équipes produit. Conçue par les créateurs d'i18next." 3137 }, 3138 "marqueeTitle": "La confiance d'équipes du monde entier", 3139 "hero": { 3140 "badge": "Une plateforme pour localiser tout votre produit", 3141 "rotatingHeadlines": [ 3142 "Livrez des traductions\\nsans redéployer\\nvotre application", 3143 "Le backend de traduction\\nnatif pour i18next", 3144 "Vos traductions IA,\\nrelues et cohérentes,\\nen ligne sans déploiement.", 3145 "Localisation continue\\npour les développeurs\\net les traducteurs" 3146 ], 3147 "subtitle": "Locize est une plateforme de localisation qui relie votre code et votre configuration i18n aux traducteurs, et qui livre les mises à jour de traduction en continu, sans bloquer vos releases.", 3148 "builtByPrefix": "Conçue par les créateurs d'", 3149 "builtByLink": "i18next", 3150 "builtByDot": ".", 3151 "worksWithPrefix": "Fonctionne avec ", 3152 "worksWithLink": "n'importe quelle bibliothèque i18n", 3153 "worksWithSuffix": " et n'importe quel workflow.", 3154 "swissNoticeHtml": "ð¨ð Mise à votre disposition par une <a class=\\"brand-link\\" href=\\"{{swissHref}}\\">entreprise suisse</a>.", 3155 "bullets": [ 3156 "Automatisez votre workflow et lancez plus rapidement des produits internationaux.", 3157 "Les développeurs gardent la main dans le code/CI ; les traducteurs travaillent dans une UI dédiée.", 3158 "Workflows de relecture et versions : visibilité pour les responsables techniques, le produit et la localisation.", 3159 "Livraison via CDN/API : les mises à jour de traduction ne nécessitent pas un redéploiement complet de l'app." 3160 ], 3161 "primaryCta": "S'inscrire gratuitement", 3162 "secondaryCta": "Voir comment ça marche", 3163 "docsLink": "Docs", 3164 "demoLink": "Voir la démo", 3165 "servicesLink": "Services", 3166 "trialBadge": "Essai 14 jours · fonctionnalités complètes · sans carte bancaire", 3167 "planBadgeHtml": "Puis choisissez <a class=\\"link\\" href=\\"{{pricingHref}}#plan=fixed\\">
3167Free</a> (à vie) ou n'importe quel plan payant, à vous de voir", 3168 "imageAlt": "Locize : le pont entre localisation et développement", 3169 "bridgeCaption": "Comblez le fossé entre développeurs, product managers et traducteurs.", 3170 "roleCards": [ 3171 { "id": "developers", "title": "Pour les développeurs", "desc": "CLI, API et intégration i18next native. Zéro gestion manuelle de fichiers JSON." }, 3172 { "id": "managers", "title": "Pour les managers", "desc": "Maîtrise des coûts basée sur l'usage, workflows de relecture et indicateurs de santé du projet." }, 3173 { "id": "translators", "title": "Pour les traducteurs", "desc": "Outil CAT assisté par IA, éditeur in-context et gestion du glossaire." } 3174 ] 3175 }, 3176 "whatIsLocize": { 3177 "title": "Qu'est-ce que Locize", 3178 "titleSmall": "(en une minute)", 3179 "intro": "Locize relie l'ingénierie et la localisation : les clés circulent depuis votre base de code, les traducteurs travaillent dans une UI, et votre application reçoit des mises à jour en continu.", 3180 "steps": [ 3181 { "label": "Sync", "title": "Du code à Locize", "desc": "Poussez les nouvelles clés et les chaînes source via CLI/CI, ou connectez-vous directement depuis votre configuration i18n." }, 3182 { "label": "Traduire / Relire", "title": "UI + workflow", "desc": "Traducteurs et relecteurs travaillent dans une UI dédiée avec rôles, étapes de relecture et contrôles qualité." }, 3183 { "label": "Livrer", "title": "Mises à jour à l'exécution", "desc": "Diffusez les traductions via CDN/API : les mises à jour n'ont pas besoin d'attendre un redéploiement complet." } 3184 ], 3185 "typicalFlowTitle": "Flux typique", 3186 "typicalFlowSubtitle": "Des clés manquantes à la livraison à l'exécution", 3187 "flowSteps": ["instrumenter l'app", "envoi automatique des clés manquantes", "workflow de traduction", "l'app récupère les mises à jour"], 3188 "flowWorkflowSubsteps": ["traduction auto (IA/MT)", "relecture & correction", "publication automatique"], 3189 "roleCards": [ 3190 { "title": "Pour les développeurs", "desc": "Intégrez une fois, automatisez la synchronisation dans la CI, et finie la jonglerie manuelle de fichiers." }, 3191 { "title": "Pour les responsables d'ingénierie", "desc": "Réduisez le risque de release grâce à la visibilité, aux rôles et à une livraison versionnée." }, 3192 { "title": "Pour les équipes de localisation", "desc": "Traduisez dans une UI avec étapes de relecture, contrôles QA et contexte." } 3193 ] 3194 }, 3195 "socialProof": { 3196 "title": "S'intègre à votre stack", 3197 "subtitle": "Gardez clés et releases dans le code/CI. Laissez traducteurs et relecteurs travailler dans une UI dédiée. Livrez les mises à jour via CDN/API quand vous êtes prêts.", 3198 "badges": ["i18next", "CI/CD", "Workflow de relecture", "Livraison CDN/API", "Pré-traduction IA/MT"], 3199 "builtByLabel": "Conçue par les créateurs d'", 3200 "worksWithAny": "Fonctionne avec n'importe quelle bibliothèque i18n et n'importe quel workflow.", 3201 "integrationHubTitle": "S'intègre à votre workflow existant", 3202 "integrationHubIntroHtml": "Que vous utilisiez i18next, <a class=\\"brand-link\\" href=\\"{{i18nLibsHref}}\\">d'autres bibliothèques i18n</a>, des frameworks web, des SDK mobiles ou de simples appels API, Locize est la source de vérité unique pour vos traductions.", 3203 "integrations": [ 3204 { "name": "i18next" }, 3205 { "name": "React" }, 3206 { "name": "Vue" }, 3207 { "name": "Angular" }, 3208 { "name": "Next.js" }, 3209 { "name": "Node.js" }, 3210 { "name": "CLI / CI-CD" }, 3211 { "name": "API" }, 3212 { "name": "Plugin Figma" }, 3213 { "name": "Mobile (iOS/Android)" }, 3214 { "name": "Divers formats de fichiers", "href": "/file-formats" }, 3215 { "name": "PHP / Python / Java / .NET" } 3216 ], 3217 "quickLinks": [ 3218 { "label": "i18next", "href": "/i18next", "kind": "outline" }, 3219 { "label": "Docs", "href": "/docs", "kind": "ghost" }, 3220 { "label": "Comment ça marche", "href": "/how-it-works", "kind": "ghost" }, 3221 { "label": "Traduction par IA", "href": "/ai", "kind": "ghost" }, 3222 { "label": "Connectez votre assistant IA via MCP", "href": "/docs/integration/mcp", "kind": "ghost" } 3223 ] 3224 }, 3225 "developerQuickstart": { 3226 "title": "Ãvaluation pratique rapide", 3227 "titleSmall": "(avec un exemple i18next)", 3228 "intro": "Vous voulez vérifier rapidement le chemin d'intégration ? Voici une esquisse de configuration pratique et la voie la plus courte vers un projet fonctionnel.", 3229 "quickstartLabel": "Quickstart", 3230 "quickstartTitle": "Connectez votre application et livrez vos traductions en continu", 3231 "stepsHtml": [ 3232 "Inscrivez-vous pour un essai de 14 jours avec toutes les fonctionnalités, sans carte bancaire. Pendant ou après l'essai, choisissez le <a class=\\"brand-link\\" href=\\"{{pricingHref}}#plan=fixed\\">plan Free</a> (à vie) ou n'importe quel plan payant pour conserver votre projet.", 3233 "Branchez votre configuration i18n (i18next est la plus courante)", 3234 "Synchronisez les ressources via CLI/CI, ou diffusez-les via CDN", 3235 "Laissez les traducteurs travailler dans l'UI ou l'éditeur in-context" 3236 ], 3237 "primaryCta": "Créer un projet gratuit", 3238 "secondaryCta": "Ouvrir les docs", 3239 "shortcutsLabel": "Raccourcis", 3240 "shortcutLinks": [ 3241 { "label": "Intégration i18next", "href": "/i18next" }, 3242 { "label": "Guide de localisation JavaScript", "href": "/javascript-localization" }, 3243 { "label": "Services", "href": "/services" }, 3244 { "label": "Tarifs", "href": "/pricing" } 3245 ], 3246 "codeLabel": "Code", 3247 "codeTitle": "Configuration i18next typique (backend)", 3248 "codeIntro": "Branchez Locize comme backend i18next et gardez vos traductions synchronisées sans jongler manuellement avec des fichiers.", 3249 "codeFilename": "i18next (exemple)", 3250 "alreadyHaveTitle": "Vous avez déjà un projet i18next ?", 3251 "alreadyHaveIntro": "Exécutez ceci à la racine de votre dépôt, aucune configuration nécessaire.", 3252 "fullPathLink": "Voir le chemin de migration complet â", 3253 "demoVideoTitle": "Démo Locize : workflow de localisation continue" 3254 }, 3255 "whyChoose": { 3256 "prefix": "Pourquoi nos clients ont choisi", 3257 "brand": "Locize ?", 3258 "intro": "Une plateforme de localisation qui relie produit, ingénierie et traducteurs sans ajouter de frictions au moment du release.", 3259 "benefitsLabel": "Avantages", 3260 "bullets": [ 3261 "Synchronisation automatique des clés manquantes depuis i18next, sans export manuel", 3262 "CLI et GitHub Actions pour vos pipelines CI/CD", 3263 "Tarification mensuelle forfaitaire, sans surprise par utilisateur ou par mot", 3264 "Intégrations & compatibilité CI/CD", 3265 "Workflow de relecture avec accès basé sur les rôles et piste d'audit", 3266 "Mises à jour en temps réel via CDN" 3267 ], 3268 "experienceLabel": "Expérience client", 3269 "experienceTitle": "Gagnez du temps et rationalisez votre processus de traduction", 3270 "whyLinkLabel": "Pourquoi Locize",
3271 "quote": "Nous avons réduit les étapes manuelles et fait de la localisation un maillon fiable de notre pipeline de livraison. Les mises à jour partent en continu, sans bloquer les releases.", 3272 "attributionName": "Ãquipe d'ingénierie, client Locize", 3273 "attributionContextHtml": "Workflow de <a class=\\"brand-link\\" href=\\"{{continuousHref}}\\">localisation continue</a>", 3274 "badges": ["CI", "CDN", "QA"] 3275 }, 3276 "featureGrid": { 3277 "title": "Tout ce qu'il faut pour gérer la localisation comme de l'ingénierie", 3278 "subtitle": "Un workflow de gestion des traductions moderne qui s'intègre à la CI/CD et garde vos équipes alignées.", 3279 "items": [ 3280 { "title": "Gardez vos clés de traduction synchronisées", "body": "Détectez les clés manquantes, poussez automatiquement les nouveaux segments et gardez vos chaînes source cohérentes d'un release à l'autre." }, 3281 { "title": "Livrez les traductions sans redéploiement", "body": "Tous les autres TMS vous donnent un fichier. Locize vous donne une URL. Publiez les mises à jour via le CDN Locize : vos apps récupèrent instantanément le contenu le plus récent, sans build, sans déploiement." }, 3282 { "title": "Pensée pour les équipes produit", "body": "Donnez aux traducteurs et aux relecteurs une UI dédiée, pendant que les développeurs continuent à travailler dans leur workflow existant." }, 3283 { "title": "150+ langues, 50 versions et surcharges par tenant, le tout depuis un seul projet", "body": "Supportez plusieurs environnements, versions et langues avec un processus qui grandit avec votre produit." }, 3284 { "title": "Contrôles qualité clairs", "body": "Relisez les modifications, validez la complétude et réduisez les régressions grâce à des workflows structurés." }, 3285 { "title": "Divers formats de fichiers", "bodyHtml": "Importez XLIFF, Gettext, Android strings, RESX, Fluent et bien d'autres. Exportez dans le format requis par votre stack. <a class=\\"link\\" href=\\"{{fileFormatsHref}}\\">Voir tous les formats â</a>" }, 3286 { "title": "Surcharges de traduction par client", "bodyHtml": "Les équipes SaaS peuvent donner à chaque client sa propre couche de traduction, sans gérer des projets séparés. <a class=\\"link\\" href=\\"{{multiTenantHref}}\\">En savoir plus sur le multi-tenant â</a>" }, 3287 { "title": "Utilisez Locize depuis votre assistant IA", "bodyHtml": "Pas un énième agent IA en marque blanche : une plateforme que vous contrôlez, avec vos propres clés LLM. Connectez Claude, Cursor ou VS Code à vos traductions via le <a class=\\"link\\" href=\\"{{mcpHref}}\\">serveur MCP de Locize</a> et gérez-les sans quitter votre environnement de développement." }, 3288 { "title": "Onboarding en moins de 10 minutes", "body": "Commencez petit : un projet, quelques namespaces et un processus reproductible que vous pourrez standardiser plus tard." } 3289 ] 3290 }, 3291 "aiPositioning": { 3292 "title": "L'IA traduit. Locize s'assure que c'est juste.", 3293 "intro": "Les outils d'IA sont excellents pour générer des traductions. Ce qui leur échappe, c'est tout ce qui les entoure : les 15 clés ajoutées au dernier sprint, le fait que « drive » désigne le stockage dans votre application, le ton qu'un relecteur a déjà corrigé trois fois. Locize entoure votre IA, avec Locize AI ou vos propres clés LLM : il vérifie, relit et versionne ce que l'IA produit, et livre le résultat sans déploiement.", 3294 "ctaLabel": "Pourquoi ne pas se contenter de l'IA ?" 3295 }, 3296 "testimonials": { 3297 "title": "Ne nous croyez pas sur parole", 3298 "subtitle": "Les équipes utilisent Locize pour sortir la traduction du chemin critique.", 3299 "moreCta": "Plus de témoignages clients" 3300 }, 3301 "faq": { 3302 "title": "Questions fréquentes", 3303 "subtitle": "Réponses rapides pour vous aider à évaluer Locize.", 3304 "docsCta": "Aller aux docs", 3305 "comparePromptHtml": "Vous cherchez une comparaison ? <a href=\\"{{compareHref}}\\">Voir comment Locize se compare aux alternatives â</a>", 3306 "items": [ 3307 { "q": "à quoi sert Locize ?", "aHtml": "<p class=\\"m-0\\">Locize aide les équipes à gérer leurs traductions et à les livrer en continu. Les développeurs l'intègrent à leur configuration i18n, pendant que traducteurs et relecteurs travaillent dans une UI dédiée.</p>" }, 3308 { "q": "Puis-je intégrer Locize avec i18next ?", "aHtml": "<p class=\\"m-0\\">Oui. Locize est couramment utilisé avec les workflows i18next (y compris l'automatisation pour les clés manquantes et la synchronisation des ressources).</p>" }, 3309 { "q": "Dois-je redéployer pour publier des mises à jour de traduction ?", "aHtml": "<p class=\\"m-0\\">En général non. Les traductions peuvent être diffusées via le CDN Locize, de sorte que les applications peuvent récupérer les dernières versions sans redéploiement complet.</p>" }, 3310 { "q": "Par où devrais-je commencer ?", "aHtml": "<p class=\\"m-0\\">Commencez par l'introduction de la documentation et connectez Locize à votre configuration i18n. Vous pouvez ensuite pousser vos clés existantes ou laisser les clés manquantes être détectées et synchronisées automatiquement.</p>" } 3311 ] 3312 }, 3313 "finalCta": { 3314 "title": "Commencez à localiser dès aujourd'hui", 3315 "subtitle": "Créez un projet, connectez votre configuration i18n et publiez vos traductions en continu.", 3316 "trialBadge": "Essai gratuit : sans carte bancaire", 3317 "planBadgeHtml": "<a class=\\"link mr-1\\" href=\\"{{pricingHref}}#plan=fixed\\">Plan Free</a>disponible", 3318 "demoQuestionHtml": "Vous cherchez un rendez-vous démo ? <a class=\\"no-underline text-white/70 hover:text-white/100\\" href=\\"{{whyNoSalesHref}}\\">Découvrez pourquoi nous préférons le code aux appels.</a>", 3319 "primaryCta": "S'inscrire gratuitement", 3320 "secondaryCta": "Lire les docs" 3321 } 3322} 3323`,pc=`{ 3324 "meta": { 3325 "title": "Comment ça marche - Locize", 3326 "description": "Des workflows à base de fichiers à la localisation continue entièrement automatisée : voyez comment Locize s'intègre à votre stack." 3327 }, 3328 "hero": { 3329 "heading": "Comment ça marche", 3330 "subtitleHtml": "Utilisez Locize d'une façon qui correspond à votre équipe : des workflows classiques à base de fichiers à la localisation continue entièrement automatisée. Voyez son a
3330pplication à la <a class=\\"brand-link\\" href=\\"{{websiteHref}}\\">localisation de sites web</a>, à la <a class=\\"brand-link\\" href=\\"{{softwareHref}}\\">localisation logicielle</a> et à la <a class=\\"brand-link\\" href=\\"{{jsHref}}\\">stack JavaScript</a>." 3331 }, 3332 "fileBased": { 3333 "title": "Gestion à base de fichiers", 3334 "subtitle": "Pour les équipes qui préfèrent un contrôle manuel sur leurs actifs de traduction.", 3335 "imageAlt": "Ãditeur Locize", 3336 "featureTitle": "Import / export classique", 3337 "p1": "Travaillez avec les formats que vous connaissez. Téléversez vos fichiers JSON, XLIFF ou Gettext, gérez-les dans notre éditeur à haute productivité, et exportez-les vers votre dépôt.", 3338 "p2Html": "<strong>L'avantage :</strong> contrôle manuel total avec la puissance de la mémoire de traduction intelligente de Locize et des <a href=\\"{{aiHref}}\\">suggestions assistées par IA</a>.", 3339 "p3Html": "En savoir plus sur les <a href=\\"{{formatsHref}}\\" target=\\"_blank\\" rel=\\"noreferrer\\">formats pris en charge</a>." 3340 }, 3341 "automated": { 3342 "title": "Pipelines automatisés", 3343 "subtitle": "Synchronisez votre localisation avec votre workflow CI/CD ou Git.", 3344 "imageAlt": "CLI Locize", 3345 "featureTitle": "CLI, API et GitHub Actions", 3346 "p1Html": "Supprimez le « middleman humain ». Utilisez notre <a href=\\"{{apiHref}}\\" target=\\"_blank\\" rel=\\"noreferrer\\">API</a>, notre <a href=\\"https://github.com/locize/locize-cli#synchronize-locize-with-your-repository-or-any-other-local-directory\\" target=\\"_blank\\" rel=\\"noreferrer\\">outil CLI Sync</a>, la <a href=\\"https://github.com/locize/download\\" target=\\"_blank\\" rel=\\"noreferrer\\">Download Action</a> ou la <a href=\\"https://github.com/locize/sync\\" target=\\"_blank\\" rel=\\"noreferrer\\">Sync Action</a> pour garder vos traductions synchronisées et télécharger les derniers fichiers à chaque build.", 3347 "p2Html": "<strong>L'avantage :</strong> votre base de code et vos traductions sont toujours synchronisées, sans qu'un développeur ait à télécharger manuellement le moindre fichier." 3348 }, 3349 "continuous": { 3350 "title": "Localisation continue", 3351 "subtitle": "L'approche « sans intervention » pour une vitesse maximale.", 3352 "imageAlt": "Locize InContext", 3353 "featureTitle": "Synchronisation en direct via CDN", 3354 "p1": "La configuration zéro déploiement : les traductions sont mises en ligne via CDN, sans changement de code. Votre app se connecte directement au CDN Locize.", 3355 "bulletsHtml": [ 3356 "<strong>Auto-découverte :</strong> les nouveaux textes de votre code sont automatiquement ajoutés à Locize.", 3357 "<strong>Publication instantanée :</strong> un traducteur enregistre une modification, et elle est en ligne dans votre app instantanément.", 3358 "<strong>Zéro déploiement :</strong> mettez à jour vos textes, corrigez des fautes de frappe ou ajoutez des langues sans changer une seule ligne de code.", 3359 "<strong>Suivi d'utilisation :</strong> <a href=\\"{{unusedHref}}\\">détectez les clés inutilisées</a> et cessez de maintenir des traductions que personne ne voit." 3360 ], 3361 "outroHtml": "Découvrez toute la puissance dans cet <a href=\\"https://youtu.be/osScyaGMVqo\\" target=\\"_blank\\" rel=\\"noreferrer\\">exemple vidéo</a> pour React.js. En savoir plus sur les options d'intégration avec <a href=\\"{{i18nextHref}}\\">i18next</a> ou d'autres frameworks i18n ci-dessous." 3362 }, 3363 "branches": { 3364 "title": "Traduction CI/CD", 3365 "subtitle": "Les branches de traduction fonctionnent comme les branches de code.", 3366 "imageAlt": "Branches Locize", 3367 "featureTitle": "Des branches qui reflètent votre workflow de dev", 3368 "p1": "Créez une branche de traduction au moment où vous ouvrez une branche de feature. Traduisez les nouvelles chaînes en isolation. Fusionnez les traductions quand la feature est livrée. Vos traducteurs et votre base de code restent synchronisés, sans surprise au moment du release.", 3369 "p2": "Testez les traductions en staging sans impacter la production. Quand la feature est prête, fusionnez la branche de traduction comme vous fusionnez du code. Conçu pour les équipes qui utilisent GitFlow, des feature branches ou tout workflow où les traductions doivent être isolées jusqu'à ce qu'une release soit prête.", 3370 "linkHtml": "<a href=\\"{{branchesDocsHref}}\\">En savoir plus sur les branches vs. versions â</a>" 3371 }, 3372 "integrationFor": { 3373 "title": "Il existe une option d'intégration pour chacun", 3374 "subtitle": "Intégrations pour chaque stack : i18next, locizify, CLI/API et workflows à base de fichiers." 3375 }, 3376 "integrations": { 3377 "locizify": { 3378 "tagline": "Localisez n'importe quel site web, sans modification de code.", 3379 "whereLabel": "Où l'utiliser :", 3380 "bulletsHtml": [ 3381 "Ajoutez une seule balise script et votre site devient traduisible", 3382 "Aucun développeur requis, adapté aux équipes éditoriales et aux marketeurs", 3383 "Pluriels, interpolation et routage de namespaces basé sur l'URL intégrés", 3384 "Construit sur une implémentation de virtual DOM au-dessus d'<a href=\\"{{i18nextHref}}\\">i18next</a>", 3385 "Fonctionne avec WordPress, Shopify et d'autres constructeurs de sites", 3386 "Ãdition in-context incluse : traduisez directement sur votre page en ligne" 3387 ], 3388 "cta": "Configurer locizify" 3389 }, 3390 "i18next": { 3391 "tagline": "La meilleure gestion des traductions pour i18next.", 3392 "imageAlt": "Frameworks i18next", 3393 "whereLabel": "Où l'utiliser :", 3394 "bulletsHtml": [ 3395 "Adapté à tous les frameworks UI : React, Angular, Vue, jQuery, Next.js et d'autres", 3396 "Compétences en programmation minimales requises", 3397 "Options de traduction flexibles : pluriels, interpolation, contexte, â¦", 3398 "Basé sur le framework i18n open source <a href=\\"{{i18nextHref}}\\">i18next</a>", 3399 "Utilisable sur le web, mobile, desktop et serveur" 3400 ], 3401 "cta": "Intégrer avec i18next" 3402 }, 3403 "other": { 3404 "title": "Autres options", 3405 "tagline": "Solution à base de fichiers.", 3406 "whereLabel": "Où l'utiliser :", 3407 "bulletsHtml": [ 3408 "à utiliser avec des frameworks comme react-intl, vue-i18n, svelte-i18n et d'autres", 3409 "Nous vous fournissons un script pour simplifier le chargement des traductions vers votre client JavaScript", 3410 "Optimal pour des solutions basées sur des formats comme xliff, mo, po, android xml, â¦", 3411 "Avec notre <a href=\\"{{apiHref}}\\" target=\\"_blank\\" rel=\\"noreferrer\\">API</a>, notre <a href=\\"https://github.com/locize/locize-cli\\" target=\\"_blank\\" rel=\\"noreferrer\\">CLI</a> ou nos <a href=\\"{{ghActionHref}}\\">GitHub Actions</a>, vous pouvez construire tout ce que vous imaginez" 3412 ], 3413 "cta": "Voir les options de formats de fichiers" 3414 } 3415 }, 3416 "loop": { 3417 "title": "La boucle de localisation continue", 3418 "subtitle": "Locize transforme la localisation en un processus de fond qui ne bloque jamais votre équipe.", 3419 "steps": [
3420 { "title": "Extraire", "desc": "Votre code (i18next) détecte les nouveaux textes et les envoie automatiquement à Locize." }, 3421 { "title": "Traduire", "desc": "Les traducteurs ou l'IA affinent le contenu dans notre éditeur à fort contexte." }, 3422 { "title": "Relire", "desc": "Les managers approuvent les modifications via des workflows de relecture intégrés." }, 3423 { "title": "Livrer", "desc": "Les chaînes mises à jour sont diffusées via CDN, en ligne pour vos utilisateurs instantanément." } 3424 ] 3425 }, 3426 "support": { 3427 "heading": "Besoin d'aide pour démarrer ?", 3428 "subtitle": "Faites répondre à vos questions sur l'intégration de Locize par l'un des membres de notre équipe.", 3429 "cta": "Contactez-nous !" 3430 } 3431} 3432`,mc=`{ 3433 "meta": { 3434 "title": "Localisation multi-tenant : surcharges de traduction par client | Locize", 3435 "description": "Donnez à chaque client sa propre couche de traduction grâce au modèle de projet parent/enfant de Locize. Pas de duplication, surcharges au niveau du namespace, accès isolé." 3436 }, 3437 "intro": { 3438 "heading": "Localisation multi-tenant", 3439 "subtitle": "Donnez à chacun de vos clients sa propre couche de traduction, sans gérer de projets séparés ni dupliquer le contenu." 3440 }, 3441 "problem": { 3442 "heading": "Le problème", 3443 "p1": "Vous avez un produit SaaS multilingue, et chacun de vos clients veut ses propres personnalisations linguistiques : terminologie de marque, formulations spécifiques à une région ou traductions entièrement différentes pour certaines chaînes.", 3444 "p2": "Sans prise en charge multi-tenant, vous finissez par dupliquer des projets entiers, écrire une logique de surcharge sur mesure, ou détourner des namespaces et des codes de langue pour simuler du contenu par client. Aucune de ces approches ne passe à l'échelle.", 3445 "workaroundsLabel": "Solutions de contournement courantes qui finissent par craquer", 3446 "workarounds": [ 3447 "Dupliquer l'intégralité du projet par client", 3448 "Utiliser des namespaces supplémentaires comme « customer1_common »", 3449 "Codes de langue personnalisés du type « en-x-customer1 »", 3450 "Scripts de fusion manuels entre projets" 3451 ] 3452 }, 3453 "solution": { 3454 "heading": "Comment Locize résout le problème", 3455 "subtitle": "Un projet parent contient vos traductions de base. Chaque projet tenant hérite de tout et ne surcharge que ce dont il a besoin.", 3456 "steps": [ 3457 { "title": "Projet parent", "desc": "Votre projet principal contient les traductions de base pour toutes les langues. C'est la source de vérité unique." }, 3458 { "title": "Projets tenants", "desc": "Chaque client obtient un projet enfant qui hérite de toutes les traductions du parent. Seules les chaînes surchargées sont stockées séparément." }, 3459 { "title": "Livraison via CDN", "desc": "Chaque tenant dispose de son propre endpoint CDN. Le runtime fusionne automatiquement les traductions du parent et du tenant." } 3460 ], 3461 "imageAlt": "Ajouter un nouveau projet tenant dans Locize", 3462 "cta": "Essayer gratuitement" 3463 }, 3464 "capabilities": { 3465 "heading": "Capacités clés", 3466 "subtitle": "Tout ce qu'il faut pour gérer des traductions par client à l'échelle.", 3467 "items": [ 3468 { "title": "Héritage parent/enfant", "desc": "Les projets tenants héritent de toutes les traductions du parent. Les nouvelles clés ajoutées au parent apparaissent automatiquement dans chaque tenant." }, 3469 { "title": "Surcharges au niveau du namespace", "desc": "Les tenants surchargent des chaînes individuelles tandis que le reste est repris du parent. Seules les valeurs surchargées comptent dans l'usage du tenant." }, 3470 { "title": "Options de synchronisation des langues", "desc": "Choisissez par tenant : synchroniser automatiquement les langues avec le projet parent, ou laisser chaque tenant gérer indépendamment son propre jeu de langues." }, 3471 { "title": "Contrôle d'accès isolé", "desc": "Les utilisateurs d'un tenant ne voient que leur propre projet. Les clients ne peuvent pas accéder aux données des autres ni au projet parent." }, 3472 { "title": "Facturation flexible", "desc": "Couvrez les coûts vous-même ou laissez chaque client payer pour son propre usage tenant. La tarification se base uniquement sur les valeurs surchargées." }, 3473 { "title": "Héritage des permissions", "desc": "Les rôles et permissions s'héritent des projets parents vers les projets enfants. Imposez la MFA et les restrictions d'accès de manière cohérente sur tous les tenants." } 3474 ] 3475 }, 3476 "audience": { 3477 "heading": "à qui c'est destiné", 3478 "items": [ 3479 { "title": "Sociétés SaaS", "desc": "Permettez à chaque client entreprise de personnaliser la langue de votre produit sans forker votre configuration de traduction." }, 3480 { "title": "Constructeurs de produits en marque blanche", "desc": "Livrez une expérience linguistique entièrement personnalisée par client avec un minimum de surcharge opérationnelle." }, 3481 { "title": "Agences gérant plusieurs clients", "desc": "Maintenez un jeu de traductions de base partagé et laissez chaque projet client en hériter et le surcharger selon ses besoins." }, 3482 { "title": "Franchises et entreprises multi-marques", "desc": "Chaque marque ou région obtient sa propre couche de traduction au-dessus d'une base d'entreprise partagée." } 3483 ] 3484 }, 3485 "finalCta": { 3486 "heading": "Prêt à mettre en place la localisation multi-tenant ?", 3487 "subtitle": "Lisez la documentation complète multi-tenant ou lancez un essai gratuit pour la voir en action.", 3488 "trial": "Lancer l'essai gratuit", 3489 "docs": "Docs multi-tenant" 3490 } 3491} 3492`,hc=`{ 3493 "meta": { 3494 "title": "Services | Locize", 3495 "description": "Services supplémentaires de Locize : mémoire de traduction, workflow de relecture, traduction automatique, SSO, plugin Figma et partenaires de traduction intégrés." 3496 }, 3497 "learnMore": "En savoir plus", 3498 "hero": { 3499 "h1Prefix": "Services supplémentaires de localisation et de traduction proposés par ", 3500 "h1Accent": "Locize", 3501 "subtitle": "Enrichissez votre expérience Locize avec ces services supplémentaires.", 3502 "imageAlt": "Services", 3503 "registerCta": "S'inscrire gratuitement" 3504 }, 3505 "additional": { 3506 "heading": "Services supplémentaires", 3507 "subtitle": "Enrichissez votre expérience Locize avec ces services supplémentaires.", 3508 "cards": [ 3509 { "title": "Mémoire de traduction intelligente", "subtitle": "La mémoire de traduction intelligente.", "href": "/docs/translation-memory", "p1": "La mémoire de traduction intelligente vous propose des suggestions de segments déjà traduits, vous aide à gagner du temps et à maintenir la cohérence de vos traductions." }, 3510 { "title": "Workflow de relecture", "subtitle": "Déclenchez un workflow de relecture lorsque les traductions changent.", "href": "/docs/review-workflow", "p1": "Activez le workflow de relecture pour des langues spécifiques. Chaque fois qu'une personne modifie une traduction, une relecture est déclenchée et la valeur effective reste inchangée tant qu'une proposition n'a pas été acceptée." }, 3511 { "title": "Traduction automatique", "subtitle": "Automatisez le travail de traduction (intelligemment)", "href": "/docs/automatic-translation", "p1": "Traduisez automatiquement le nouveau contenu dans toutes les langues cibles à l'aide du fournisseur de votre choix (par ex. Google Translate, DeepL, ou des fournisseurs d'IA générative).", "p2": "Il existe également une expérience développeur très ciblée avec le workflow de traduction automatique et l'enregistrement des clés manquantes." }, 3512 { "title": "Historique", "subtitle": "Suivez toutes les modifications de vos traductions.", "href": "/docs/history", "p1": "L'historique vous permet de suivre les dernières modifications apportées à vos traductions et de prouver à tout moment quand un fragment de contenu a été modifié." }, 3513 { "title": "SAML single sign-on (SSO)", "subtitle": "SAML SSO donne accès aux utilisateurs via votre fournisseur d'identité.", "href": "/docs/user-management#saml-single-sign-on-sso", "p1": "Donnez accès à Locize à vos utilisateurs via un fournisseur d'identité (IdP) de votre choix." }, 3514 { "title": "Plugin Figma", "subtitle": "Faire le pont entre la traduction et le design produit.", "href": "/docs/integration/figma-plugin", "p1": "Validez les designs avec du contenu traduit, réduisez les boucles de feedback et envoyez les traductions manquantes à Locize." }, 3515 { "title": "Multi-tenant", "subtitle": "Traductions par client ou surcharges spécifiques à un client.", "href": "/docs/multi-tenant", "p1": "Si vous proposez du logiciel personnalisé pour vos clients, anticipez les traductions par tenant et autorisez les surcharges là où c'est nécessaire." }, 3516 { "title": "Branches", "subtitle": "Travaillez sereinement sur les traductions entre versions.", "href": "/docs/general-questions/should-i-use-versions-or-branches", "p1": "Les branches vous aident à collaborer sur le travail de traduction sans mettre en péril votre état de production.", "p2Html": "Utilisez des <a href=\\"/docs/guides/working-with-translators#use-branched-projects-branches\\" rel=\\"noreferrer\\">projets branchés</a> lorsque vous travaillez avec des traducteurs." }, 3517 { "title": "Détection des clés inutilisées", "subtitle": "Trouvez et supprimez les traductions que personne ne voit.", "href": "/docs/guides/find-unused-translations", "p1Html": "Suivez quelles clés de traduction sont réellement utilisées dans votre application grâce au plugin <code>locize-lastused</code>. Filtrez par « non utilisées depuis » pour repérer les clés obsolètes, puis nettoyez-les en toute confiance.", "p2": "Cessez de payer pour maintenir des traductions qui ne sont plus dans votre base de code." }, 3518 { "title": "Checks & issues", "subtitle": "Détectez automatiquement les problèmes de traduction.", "href": "/docs/checks-issues", "p1": "Vérifications de cohérence automatiques : mémoire de traduction, application du glossaire, validation de la syntaxe i18n, détection de l'obsolescence des sources, limites de caractères et bien plus.", "p2": "Lancez les vérifications par segment ou en masse, ignorez les faux positifs et configurez les vérifications qui comptent pour votre projet." }, 3519 { "title": "Plus de services...", "subtitle": "Slack, Microsoft Teams, glossaire et bien plus.", "href": "/docs/integration/slack", "p1": "Des intégrations comme Slack et Microsoft Teams vous aident à rester informé des événements notables. La prise en charge du glossaire aide à imposer la terminologie.", "p2": "Il y a beaucoup plus que cela, et nous proposons en continu de nouveaux services." } 3520 ], 3521 "exploreCta": "Découvrir comment ça marche" 3522 }, 3523 "partners": { 3524 "headingPrefix": "Partenaires de traduction ", 3525 "headingAccent": "intégrés", 3526 "subtitle": "Commandez directement des traductions auprès de nos partenaires.", 3527 "howItWorksHtml": "Locize détermine quels segments nécessitent un travail, les envoie au partenaire et importe les résultats automatiquement. <a href=\\"/docs/ordering\\">Voir comment fonctionnent les commandes</a>.", 3528 "cards": [ 3529 { "logoAlt": "Supertext", "subtitle": "tarification selon votre contrat", "bullets": ["Votre solution tout-en-un pour la localisation de qualité à grande échelle", "De 0 % à 100 % d'automatisation : combine IA linguistique et experts humains sur une seule plateforme", "Propose à la fois des solutions de traduction par IA et des services experts pour le contenu web et la localisation produit"] }, 3530 { "logoAlt": "TextMaster", "subtitle": "0,066 $ - 0,132 $ par mot", "bullets": ["Votre service professionnel de traduction SaaS", "Idéal pour le contenu web simple, les catalogues à fort volume ou les documents complexes", "Propose une traduction généraliste ainsi que des domaines spécialisés comme la finance, la technique et le juridique"] }, 3531 { "logoAlt": "BLEND", "subtitle": "0,079 $ - 0,139 $ par mot", "bullets": ["Solutions de localisation multi-marchés de bout en bout", "Communauté mondiale de traducteurs et spécialistes linguistiques", "Plateforme de traduction en libre-service pour projets personnels et professionnels"] }, 3532 { "logoAlt": "Translated", "subtitle": "tarification selon votre contrat", "bullets": ["Services professionnels de traduction et de localisation", "Combine expertise humaine et outils d'IA avancés", "Couvre un large éventail de secteurs : juridique, marketing, technique"] } 3533 ] 3534 }, 3535 "alternatively": { 3536 "heading": "Vous pouvez aussi :", 3537 "bulletsHtml": [ 3538 "<a href=\\"/docs/guides/working-with-translators#send-files\\" target=\\"_blank\\" rel=\\"noreferrer\\">Exporter et envoyer des fichiers</a> à vos traducteurs", 3539 "<a href=\\"/docs/guides/working-with-translators#invite-them-to-your-project\\" target=\\"_blank\\" rel=\\"noreferrer\\">Les inviter</a> sur votre projet", 3540 "Créer un nouveau <a href=\\"/docs/guides/working-with-translators#use-branched-projects-branches\\" target=\\"_blank\\" rel=\\"noreferrer\\">projet branché</a> sur Locize" 3541 ] 3542 }, 3543 "contact": { 3544 "heading": "Besoin d'aide pour démarrer ?", 3545 "subtitle": "Faites répondre à vos questions sur l'intégration de Locize par l'un des membres de notre équipe.", 3546 "cta": "Contactez-nous !" 3547 }, 3548 "finalCta": { 3549 "heading": "Arrêtez d'attendre. Commencez à localiser.", 3550 "subtitle": "Commencez par créer un nouveau projet et traduisez votre application.", 3551 "register": "S'inscrire gratuitement", 3552 "pricing": "Voir les tarifs"
3553 } 3554} 3555`,gc=`{ 3556 "meta": { 3557 "title": "Système de gestion des traductions Swiss-made conçu par l'équipe i18next | Locize", 3558 "description": "Locize est le système de gestion des traductions d'ingénierie suisse, enregistré en Suisse, conçu par l'équipe à l'origine d'i18next. Double conformité LPD + RGPD, résidence des données en UE, pas de risque d'acquisition US." 3559 }, 3560 "hero": { 3561 "badge": "ð¨ð D'ingénierie suisse · enregistré en Suisse · RGPD + LPD", 3562 "h1Prefix": "Locize, le système de gestion des traductions ", 3563 "h1Accent": "d'ingénierie suisse", 3564 "p1Html": "<b>Locize est un système de gestion des traductions (TMS) Swiss-made pour les équipes de développeurs.</b> Conçu et exploité par une société enregistrée en Suisse, la même équipe qui est derrière <a class=\\"brand-link\\" href=\\"https://www.i18next.com\\" target=\\"_blank\\" rel=\\"noreferrer\\">i18next</a>, l'une des bibliothèques d'internationalisation JavaScript les plus utilisées sur npm. C'est le seul TMS à capital suisse dans la catégorie orientée développeurs.", 3565 "p2": "Soumis au droit suisse (LPD) et au droit de l'UE (RGPD) : c'est la règle la plus stricte qui s'applique à vos données de traduction. Indépendant. Pas de maison mère US, UE ou de fonds private equity. Pas de pression à l'acquisition qui pourrait modifier la roadmap produit ou le modèle de tarification.", 3566 "ctaTrial": "Lancez votre essai gratuit", 3567 "ctaWhy": "Pourquoi la dimension suisse compte", 3568 "badges": ["Conforme LPD + RGPD", "Résidence des données en UE (AWS Irlande)", "Propriété suisse indépendante"], 3569 "tableTitle": "Comparaison de Locize en matière de propriété", 3570 "tableHeaders": ["Ãditeur", "Pays", "Statut"], 3571 "tableRows": [ 3572 ["Locize", "ð¨ð Suisse", "Indépendant", "highlight"], 3573 ["Lokalise", "ð±ð» Lettonie", "Financé par VC", ""], 3574 ["Phrase", "ð©ðª Allemagne", "Détenu par un PE (Carlyle)", ""], 3575 ["Crowdin", "ðªðª Estonie / ðºð¦ Ukraine", "Détenu en privé", ""], 3576 ["Transifex", "ðºð¸ Ãtats-Unis", "Acquis par XTM (jan. 2025)", ""] 3577 ], 3578 "tableFootnote": "Informations publiques sur la propriété en date de mai 2026. La propriété suisse place Locize en dehors du US CLOUD Act au niveau de l'entité corporative." 3579 }, 3580 "whatSwiss": { 3581 "heading": "Ce que « Swiss-made » signifie concrètement pour votre TMS", 3582 "subtitle": "Trois faits concrets, sans baratin marketing.", 3583 "items": [ 3584 { "title": "Société enregistrée en Suisse", "p1": "Locize est exploitée par une société enregistrée en Suisse. Soumise au droit suisse, y compris à la loi fédérale révisée sur la protection des données (nLPD), en vigueur depuis septembre 2023.", "p2": "Pas de maison mère étrangère. Pas de propriété par un fonds private equity. Pas de tapis roulant d'acquisitions." }, 3585 { "title": "Ingénierie suisse", "p1Html": "Locize est conçue par la même équipe qui a créé et maintient <a class=\\"brand-link\\" href=\\"https://www.i18next.com\\" target=\\"_blank\\" rel=\\"noreferrer\\">i18next</a>, une bibliothèque d'internationalisation JavaScript sur npm depuis 2011, avec une réécriture majeure v2 en 2015 et des API stables depuis lors.", "p2": "La même discipline d'ingénierie qui a maintenu i18next stable pendant plus d'une décennie est appliquée à la plateforme et aux API de Locize." }, 3586 { "title": "Résidence des données en UE", "p1Html": "Les données de traduction des clients sont hébergées sur <b>AWS Irlande</b>, à l'intérieur de l'UE et soumises au RGPD. La correspondance professionnelle passe par un hébergement suisse (Hostpoint AG).", "p2Html": "Voir <a class=\\"brand-link\\" href=\\"{{securityHref}}\\">sécurité & résidence des données</a> pour le détail complet de l'infrastructure." } 3587 ] 3588 }, 3589 "whyMatters": { 3590 "heading": "Pourquoi la dimension suisse compte pour les acheteurs de TMS", 3591 "subtitle": "La plupart des comparaisons de TMS portent sur les fonctionnalités et le prix. Pour les secteurs régulés, les organisations du secteur public et les équipes qui réfléchissent au risque éditeur à long terme, la juridiction est un facteur réel.", 3592 "items": [ 3593 { "title": "Double couverture réglementaire", "p1Html": "Locize est soumise à la fois à la <b>LPD suisse</b> (nLPD depuis septembre 2023) et au <b>RGPD européen</b> (via la résidence des données sur AWS Irlande). Quand les deux règles diffèrent, la plus stricte s'applique. Cette double couverture est intégrée à notre DPA, voir <a class=\\"brand-link\\" href=\\"{{dpaHref}}\\">DPA</a>." }, 3594 { "title": "Pas de risque d'acquisition", "p1": "Une infrastru
3594cture de traduction devrait durer plus longtemps qu'un cycle de hype. Locize est détenue de manière indépendante : pas de VC, pas de PE, pas de maison mère étrangère. Le prix et la roadmap produit ne sont pas soumis à des pivots, repackagings ou annonces d'arrêt dictés par un acquéreur." }, 3595 { "title": "Stabilité API à long terme", "p1Html": "La même équipe suisse maintient <a class=\\"brand-link\\" href=\\"https://www.i18next.com\\" target=\\"_blank\\" rel=\\"noreferrer\\">i18next</a> depuis la réécriture v2 de 2015 avec rétrocompatibilité préservée. Le SDK et l'API Locize suivent la même discipline : pas de réécriture trimestrielle de votre code d'intégration." }, 3596 { "title": "Stabilité de l'éditeur", "p1": "Les éditeurs suisses ont un historique de survie supérieur à celui de leurs concurrents financés par VC. Pour quelque chose d'aussi fondamental que votre infrastructure de traduction, la stabilité de l'éditeur compte plus que la parité fonctionnelle." } 3597 ] 3598 }, 3599 "i18nextStory": { 3600 "heading": "Construit sur de l'open source suisse : la connexion i18next", 3601 "subtitle": "Locize n'est pas juste un TMS qui prend en charge i18next. C'est la plateforme managée issue de la même équipe suisse qui a créé la bibliothèque.", 3602 "items": [ 3603 { "title": "i18next : la fondation open source", "p1Html": "<a class=\\"brand-link\\" href=\\"https://www.i18next.com\\" target=\\"_blank\\" rel=\\"noreferrer\\">i18next</a> a été publiée sur npm en 2011 et est devenue l'une des bibliothèques d'internationalisation JavaScript les plus utilisées, couvrant le web, Node.js et un écosystème profond d'intégrations de frameworks (React, Vue, Angular, Svelte, Next.js et d'autres).", "p2Html": "Depuis la réécriture v2 de 2015, la bibliothèque s'en est tenue à des API stables et à la rétrocompatibilité, une discipline rare dans l'écosystème JavaScript. Voir l'<a class=\\"brand-link\\" href=\\"https://www.i18next.com/misc/the-history-of-i18next\\" target=\\"_blank\\" rel=\\"noreferrer\\">histoire d'i18next</a>." }, 3604 { "title": "Locize : l'extension managée naturelle", "p1": "Fondée en 2016, Locize a été conçue par l'équipe i18next comme la plateforme managée de traduction que la bibliothèque OSS exclut volontairement : UI traducteur, livraison CDN, traduction par IA, workflow de relecture, journal d'audit.", "p2Html": "Résultat : une intégration i18next plus profonde que n'importe quel autre TMS ne peut l'offrir, avec la même culture d'ingénierie suisse appliquée au volet plateforme. Voir le doc <a class=\\"brand-link\\" href=\\"{{i18nextVsLocizeHref}}\\">i18next vs. Locize</a>." } 3605 ] 3606 }, 3607 "customers": { 3608 "heading": "La confiance d'organisations suisses", 3609 "subtitle": "Locize alimente les traductions de quelques-uns des produits multilingues les plus exigeants de Suisse.", 3610 "moreCta": "Plus de témoignages clients" 3611 }, 3612 "compliance": { 3613 "heading": "Conformité & résidence des données, en détail", 3614 "subtitle": "Aucune promesse marketing sur l'endroit où vivent vos données. Voici les faits.", 3615 "headers": ["Ãlément", "Emplacement / statut"], 3616 "rows": [ 3617 ["Juridiction de l'entreprise", "ð¨ð Suisse, soumise à la nLPD"], 3618 ["Données de traduction des clients", "ð®ðª AWS Irlande, soumises au RGPD"], 3619 ["Correspondance professionnelle", "ð¨ð Suisse, Hostpoint AG"], 3620 ["Notifications générées par l'app", "Amazon SES sur AWS"], 3621 ["Data Processing Agreement", "<a class=\\"brand-link\\" href=\\"{{dpaHref}}\\">Disponible, couvre LPD + RGPD</a>"], 3622 ["Sous-traitants", "<a class=\\"brand-link\\" href=\\"{{privacyHref}}\\">Listés dans la politique de confidentialité</a>"], 3623 ["Détail complet sécurité & infrastructure", "<a class=\\"brand-link\\" href=\\"{{securityHref}}\\">Sécurité chez Locize</a>"] 3624 ], 3625 "footnote": "La résidence des données de traduction sur AWS Irlande est un choix délibéré : elle place Locize à l'intérieur du périmètre réglementaire de l'UE tandis que l'entité d'entreprise reste suisse. Les deux réglementations s'appliquent ; la plus stricte l'emporte." 3626 }, 3627 "vsAgencies": { 3628 "heading": "TMS suisse vs. agences de traduction suisses", 3629 "subtitle": "Quand on cherche « TMS Swiss-made », on confond souvent deux choses différentes. Voici la distinction.", 3630 "agencyTitle": "Agences de traduction suisses", 3631 "agencyP1": "Des entreprises comme SwissGlobal, Apostroph Group, Comtexto et TTN fournissent de la traduction humaine en tant que service. Vous envoyez le contenu source ; elles renvoient les traductions.", 3632 "agencyP2": "Excellent pour les contenus à fort enjeu : documents juridiques, copies marketing, traductions certifiées. Moins adapté à la localisation logicielle continue, où de nouvelles chaînes apparaissent
3632à chaque sprint.", 3633 "tmsTitle": "TMS suisse (Locize)", 3634 "tmsP1": "Locize est un logiciel : une plateforme de gestion des traductions qui s'intègre à votre workflow de développeur via API, CDN et CI/CD. Elle prend en charge la couche de livraison technique que les agences ne couvrent pas.", 3635 "tmsP2": "Vous pouvez associer Locize à n'importe quelle agence de traduction (suisse ou non) pour le travail de traduction humaine. Beaucoup de nos clients font exactement cela." 3636 }, 3637 "faqSection": { 3638 "heading": "Questions fréquentes", 3639 "subtitle": "Si votre question manque, écrivez à [email protected]" 3640 }, 3641 "faqItems": [ 3642 { "q": "Qu'est-ce qu'un TMS Swiss-made ?", "a": "Un système de gestion des traductions (TMS) Swiss-made est un TMS conçu et exploité par une société enregistrée en Suisse, soumise au droit suisse (nLPD, en vigueur depuis septembre 2023). Dans la catégorie TMS orientée développeurs, Locize est le seul éditeur à capital suisse, conçu par l'équipe suisse à l'origine d'i18next, avec des données de traduction hébergées sur AWS Irlande (UE / RGPD) et une conformité LPD + RGPD complète. à distinguer des agences de traduction suisses (SwissGlobal, Apostroph Group, Comtexto, TTN) qui fournissent de la traduction humaine en tant que service plutôt que des logiciels de gestion des traductions dans les workflows de développeur." }, 3643 { "q": "Locize est-il Swiss-made ?", "a": "Oui. Locize a été fondée en 2016 et opère depuis une société enregistrée en Suisse. L'équipe à l'origine de Locize a également construit et maintient i18next, l'une des bibliothèques d'internationalisation JavaScript les plus utilisées sur npm (publiée en 2011). La société est détenue de manière indépendante (pas de maison mère US, UE ou de fonds private equity) et soumise au droit suisse, y compris à la loi fédérale révisée sur la protection des données (nLPD)." }, 3644 { "q": "Quels sont les avantages d'un TMS Swiss-made ?", "a": "Trois avantages concrets : (1) double couverture réglementaire â la LPD suisse et le RGPD européen s'appliquent tous deux à vos données de traduction, la règle la plus stricte l'emportant ; (2) stabilité de propriété â Locize est suisse et indépendante, sans pression à l'acquisition qui pourrait modifier la roadmap produit ou le modèle de tarification ; (3) stabilité API à long terme â la même équipe suisse maintient i18next avec des API stables depuis la réécriture v2 de 2015, et applique la même discipline d'ingénierie à Locize." }, 3645 { "q": "Où mes données de traduction Locize sont-elles stockées ?", "a": "Les données de traduction des clients sont hébergées sur Amazon Web Services (AWS) en Irlande, à l'intérieur de l'UE et soumises au RGPD. La correspondance professionnelle (par exemple [email protected]) est hébergée en Suisse par Hostpoint AG. Les notifications générées par l'application transitent par Amazon SES. Voir la page sécurité pour le détail complet de l'infrastructure." }, 3646 { "q": "Locize est-il conforme à la LPD et au RGPD ?", "a": "Oui, aux deux. Parce que Locize est une société suisse avec une infrastructure de données basée dans l'UE, la loi fédérale suisse révisée sur la protection des données (nLPD, en vigueur depuis septembre 2023) et le règlement général européen sur la protection des données s'appliquent tous deux. Un Data Processing Agreement (DPA) couvrant les deux réglementations est disponible. Voir /dpa. Les sous-traitants sont listés dans notre politique de confidentialité." }, 3647 { "q": "En quoi Locize est-il différent des agences de traduction suisses comme SwissGlobal, Apostroph ou TTN ?", "a": "Ce sont des agences de services de traduction : elles fournissent des traducteurs humains en tant que service. Locize est une plateforme de gestion des traductions : un logiciel destiné aux équipes de développeurs pour intégrer les traductions dans les applications web et mobiles via API, CDN et pipelines CI/CD. Vous pouvez associer Locize à n'importe quelle agence de traduction (suisse ou non) pour le travail de traduction humaine ; la plateforme prend en charge la couche de livraison technique que les agences ne couvrent pas." }, 3648 { "q": "Un TMS suisse crée-t-il des frictions pour les pipelines CI/CD US ou UE ?", "a": "Non. Locize est API-first et livre via CDN avec une infrastru
3648cture edge mondiale. L'intégration à GitHub Actions, GitLab CI, Vercel, Netlify ou n'importe quel autre pipeline de build est identique quel que soit l'endroit où s'exécutent vos runners. L'aspect suisse concerne l'entité d'entreprise et le cadre juridique, pas la surface de livraison technique." }, 3649 { "q": "Pourquoi le pays d'un éditeur de TMS importe-t-il, après tout ?", "a": "Pour la plupart des acheteurs, il n'importe pas. Mais pour les secteurs régulés, les organisations du secteur public ou les entreprises qui privilégient la stabilité éditeur à long terme, cela peut être important. Les éditeurs suisses sont soumis aux règles suisses de neutralité et de transparence sur la propriété, se situent en dehors du US CLOUD Act au niveau corporatif, et ont un historique de stabilité logicielle sur la durée (les produits logiciels suisses tendent à survivre à leurs concurrents financés par VC). Pour Locize spécifiquement, le lien d'ingénierie suisse avec i18next est un signal fort de longévité d'API : la bibliothèque i18next a maintenu la rétrocompatibilité pendant plus d'une décennie." } 3650 ], 3651 "related": { 3652 "linksHtml": "à lire aussi : <a class=\\"brand-link\\" href=\\"{{securityHref}}\\">Sécurité & résidence des données</a> · <a class=\\"brand-link\\" href=\\"{{dpaHref}}\\">DPA (LPD + RGPD)</a> · <a class=\\"brand-link\\" href=\\"{{euAccHref}}\\">Localisation EU Accessibility Act</a> · <a class=\\"brand-link\\" href=\\"{{i18nextVsLocizeHref}}\\">i18next vs. Locize</a> · <a class=\\"brand-link\\" href=\\"{{compareHref}}\\">Comparer Locize aux alternatives</a>" 3653 }, 3654 "finalCta": { 3655 "title": "Un TMS d'ingénierie suisse, conçu pour les équipes de développeurs.", 3656 "subtitle": "Essai gratuit de 14 jours. Sans carte bancaire.", 3657 "primaryLabel": "S'inscrire gratuitement" 3658 } 3659} 3660`,_c=`{ 3661 "meta": { 3662 "title": "Pas de commerciaux. Juste de l'ingénierie. - Locize", 3663 "description": "Pourquoi Locize investit dans l'ingénierie et le produit plutôt que dans des équipes commerciales, et en quoi cela profite à votre workflow de développement." 3664 }, 3665 "hero": { 3666 "title1": "Pas de commerciaux.", 3667 "title2": "Juste de l'ingénierie.", 3668 "subtitle": "Locize fait tourner des milliers de projets actifs pour une base clients mondiale, du développeur indépendant aux entreprises du Fortune 500. Le tout avec zéro commercial.", 3669 "cta1": "Lancer l'essai gratuit", 3670 "cta2": "Lire les docs" 3671 }, 3672 "philosophy": { 3673 "heading": "Le choix engineering-first", 3674 "intro": "La plupart des sociétés SaaS dépensent plus d'argent pour vendre leur produit que pour le construire. Nous avons pris la voie inverse. En éliminant les coûts d'un département commercial classique, nous réinvestissons chaque centime dans ce qui compte le plus : votre infrastru
3674cture.", 3675 "pillars": [ 3676 { 3677 "title": "Réinvestir dans i18next", 3678 "desc": "Nous finançons le développement de l'écosystème i18next pour que le framework i18n le plus populaire reste ouvert, rapide et moderne." 3679 }, 3680 { 3681 "title": "Innovation TMS & workflow", 3682 "desc": "Nous affinons en continu l'app Locize, en livrant des fonctionnalités comme le branching, l'intégration MCP et la traduction par IA, qui permettent à votre équipe de travailler plus intelligemment." 3683 }, 3684 { 3685 "title": "CDN de premier ordre", 3686 "desc": "Le chiffre d'affaires va directement dans notre réseau edge mondial et garantit une livraison plus rapide des traductions à vos utilisateurs." 3687 } 3688 ], 3689 "allocation": { 3690 "label": "Allocation actuelle des ressources", 3691 "engineering": "INGÃNIERIE & PRODUIT", 3692 "sales": "COMMERCIAUX", 3693 "footnote": "* Nous construisons pour les développeurs, pas pour les slides du procurement." 3694 } 3695 }, 3696 "values": [ 3697 { 3698 "title": "Pas de connaissances sous clé", 3699 "desc": "Vous n'avez pas besoin d'un « discovery call » pour voir notre produit. Nos docs sont publiques, les tarifs sont transparents et l'essai démarre instantanément." 3700 }, 3701 { 3702 "title": "Support directement à la source", 3703 "desc": "Parlez directement aux ingénieurs qui construisent Locize et i18next. Pas de « success managers » qui lisent un script." 3704 }, 3705 { 3706 "title": "Pas de « taxe commerciale »", 3707 "desc": "Des prix compétitifs parce que vous ne payez pas pour des commissions commerciales, des budgets de déplacement ou des CRM entreprise." 3708 }, 3709 { 3710 "title": "Pas de paywalls artificiels", 3711 "desc": "Les paliers à prix fixe évoluent avec des limites claires, visibles dès le départ, et la capacité supplémentaire s'achète par blocs dont vous connaissez le prix à l'avance. Aucune montée en gamme surprise, aucun coût par siège." 3712 } 3713 ], 3714 "finalCta": { 3715 "heading": "Nous ne voulons rien vous vendre.", 3716 "subtitle": "Nous voulons vous aider à livrer. Lancez votre essai aujourd'hui ou regardez notre vidéo démo.", 3717 "register": "S'inscrire gratuitement", 3718 "watchDemo": "Voir la démo" 3719 } 3720} 3721`,vc=`{ 3722 "meta": { 3723 "title": "Pourquoi ne pas se contenter de l'IA pour traduire ? | Locize", 3724 "description": "Un regard honnête sur la traduction par IA : quand ça marche, quand ça ne marche pas et pourquoi un TMS résout des problèmes que l'IA ne sait pas résoudre." 3725 }, 3726 "hero": { 3727 "badge": "Une réponse honnête", 3728 "title1": "Pourquoi ne pas se contenter", 3729 "title2": "de l'IA pour traduire ?", 3730 "p1Html": "Honnêtement ? Pour les petits projets, vous devriez. La traduction par IA est rapide, bon marché et de plus en plus bonne. Nous l'avons <a class=\\"brand-link\\" href=\\"{{aiHref}}\\">intégrée directement à Locize</a> pour exactement cette raison.", 3731 "p2Html": "La vraie question n'est pas de savoir si l'IA peut traduire vos chaînes. C'est de savoir si l'IA peut les <strong>gérer</strong> à travers une équipe, dans le temps, sans intervention d'un développeur à chaque changement." 3732 }, 3733 "distinction": { 3734 "aiTitle": "L'IA traduit les chaînes", 3735 "aiBody": "Donnez à Claude ou ChatGPT une chaîne en anglais, ils produisent une chaîne en français â dans plus de 95 langues, avec les marqueurs i18next intacts. Rapidement, à bas coût, en général bien. Ce problème est résolu. Utilisez l'IA pour cela ; nous le faisons.", 3736 "tmsTitle": "Un TMS les gère", 3737 "tmsBody": "Quelles clés ont changé depuis la semaine dernière ? Quelles langues sont incomplètes ? Comment livrer une correction de texte sans déploiement ? Qui peut éditer les traductions sans toucher au dépôt ? Ce sont des problèmes de système. L'IA ne les résout pas." 3738 }, 3739 "problems": { 3740 "heading": "Là où le workflow DIY craque", 3741 "subtitle": "Six problèmes qui apparaissent quand un vrai produit dépasse le sprint de traduction initial.", 3742 "aiLabel": "IA seule", 3743 "locizeLabel": "Locize", 3744 "items": [ 3745 { "title": "Gestion du cycle de vie des clés", "ai": "Traduit les chaînes qu'on lui donne. N'a aucune idée qu'une clé a été ajoutée, modifiée ou supprimée.", "locize": "saveMissing capture automatiquement les nouvelles clés en développement. La détection des clés inutilisées signale les traductions obsolètes." }, 3746 { "title": "Contexte et cohérence", "ai": "« Drive » peut être un verbe, un emplacement de stockage ou une marque. Sans contexte, l'IA devine.", "locize": "Les termes du glossaire et les descriptions au niveau des clés sont injectés dans chaque prompt IA. « Drive » signifie toujours ce que vous décidez." }, 3747 { "title": "Déployer un correctif de traduction", "ai": "Exécuter le script â commiter le JSON â ouvrir une PR â relecture â merge â déploiement. Voilà le cycle c
3747omplet pour une faute de frappe.", "locize": "Le traducteur édite dans l'éditeur Locize â publie â la modification est en ligne via CDN en quelques secondes. Zéro intervention développeur." }, 3748 { "title": "Accès non-développeur", "ai": "Donner accès aux traductions à un traducteur ou un product manager revient à lui donner accès à votre dépôt.", "locize": "Les traducteurs ont leur propre UI. Ils travaillent indépendamment, sans toucher à votre base de code ni à votre pipeline de déploiement." }, 3749 { "title": "Piste d'audit et historique", "ai": "Git blame est votre journal d'audit. Bonne chance pour retrouver quand et pourquoi une traduction spécifique a changé.", "locize": "Les modifications sont enregistrées avec leur auteur et leur date." }, 3750 { "title": "Staging vs. production", "ai": "Vous gérez cela vous-même, généralement avec des fichiers JSON ou des branches séparées.", "locize": "Les branches et les versions vous permettent de développer les traductions d'un release à venir en isolation, puis de les fusionner, exactement comme votre workflow Git." } 3751 ] 3752 }, 3753 "graduation": { 3754 "heading": "Déjà en tout-IA ? Le chemin de la graduation",
3755 "subtitle": "Inutile de jeter votre pipeline LLM. Graduer, c'est garder l'IA comme traducteur et ajouter la couche de gestion autour, en quatre étapes.", 3756 "mozillaHtml": "C'est exactement ce mode d'échec qui a fait les gros titres quand Mozilla a basculé son contenu de support vers une localisation IA-first et que sa communauté bénévole japonaise de longue date a démissionné : la critique ne portait pas sur le fait que l'IA traduise, mais sur <strong>l'absence de contrôle de la terminologie et du style</strong>. La solution, c'est la gouvernance, pas de meilleurs prompts.", 3757 "steps": [ 3758 { "title": "Gardez votre IA, donnez-lui du contexte", "body": "Apportez votre propre clé OpenAI, Gemini ou Mistral, ou votre propre endpoint compatible OpenAI (ou utilisez le service intégré). Locize injecte votre glossaire et votre guide de style dans chaque prompt, pour que la terminologie cesse de dériver." }, 3759 { "title": "Notez chaque traduction IA", "body": "La Quality Estimation note chaque traduction IA de 0 à 1. Les résultats sûrs sont enregistrés directement ; les résultats douteux partent en relecture humaine au lieu d'être publiés en silence." }, 3760 { "title": "Relisez ce qui compte, avec une trace", "body": "Les relecteurs travaillent en contexte sur l'application. L'historique accepter/refuser et l'export de provenance montrent qui a validé quoi, quand, et avec quel score de qualité." }, 3761 { "title": "Livrez via le CDN", "body": "Les traductions approuvées sont publiées sur un CDN mondial sans redéploiement. Votre pipeline CI reste ; l'étape copier-coller disparaît." } 3762 ], 3763 "cta": "Ajouter la gouvernance à votre pipeline IA", 3764 "blogLink": "à lire : quand les traductions IA dérapent", 3765 "actTitle": "Article 50 de l'EU AI Act : en vigueur dès le 2 août 2026", 3766 "actHtml": "à compter du 2 août 2026, les obligations de transparence de l'article 50 de l'EU AI Act s'appliquent. Les lignes directrices finales de la Commission (20 juillet 2026) exemptent les traductions IA fidèles du marquage lisible par machine, mais le texte traduit par IA qui informe le public sur des questions d'intérêt public exige toujours une divulgation visible â sauf s'il est passé par une relecture humaine avec responsabilité éditoriale, l'exemption que les lignes directrices illustrent avec exactement ce cas. Les étapes 2 et 3 enregistrent cette relecture, et l'<strong>export de provenance</strong> transforme l'enregistrement en preuve : un rapport CSV + JSON par version, langue ou namespace montrant qui a validé quoi, quand, la source de la traduction (humain, machine ou IA) et le score de confiance au moment de la décision. <a class=\\"brand-link\\" href=\\"{{actCheckHref}}\\">Faites le check de conformité en trois questions</a> ou consultez la <a class=\\"brand-link\\" href=\\"{{actDocsHref}}\\">mise en place du workflow Article 50</a>." 3767 }, 3768 "faq": { 3769 "heading": "Questions courantes", 3770 "items": [ 3771 { 3772 "q": "Puis-je simplement balancer mon JSON dans ChatGPT ?", 3773 "aHtml": "<p>Oui, et pour un projet de week-end avec 50 chaînes, c'est la bonne réponse. Arrêtez de lire et allez livrer.</p><p class=\\"mt-2\\">Le problème apparaît quand votre produit grandit. L'IA traduit les chaînes que vous lui donnez à l'instant T. Elle ne sait pas que vous avez ajouté 15 nouvelles clés au dernier sprint, que <code>drive</code> signifie « stockage cloud » et non un verbe dans votre app, ou qu'un traducteur a déjà corrigé trois fois le ton de <code>welcomeMessage</code> et que l'IA n'arrête pas de revenir en arrière.</p>" 3774 }, 3775 { 3776 "q": "Et si je construisais un script qui appelle l'API d'IA automatiquement ?", 3777 "aHtml": "<p>Cela résout la traduction mais crée une obligation de maintenance :</p><ul class=\\"list-disc pl-5 mt-2 space-y-1 text-sm\\"><li>Qui lance le script quand un développeur ajoute une nouvelle clé à 21 h ?</li><li>Comment savoir quelles clés ont changé et lesquelles un traducteur humain a déjà validées ?</li><li>Comment donner à un non-développeur un moyen de corriger une faute de frappe sans toucher à la base de code ?</li><li>Comment livrer ce correctif à vos utilisateurs sans déploiement, puis invali
3777der le cache CDN pour qu'ils le voient effectivement ?</li></ul><p class=\\"mt-2\\">Faire le diff des fichiers de locales, c'est les 5 % faciles â et oui, ça se fait vraiment en millisecondes. Les 95 % restants, c'est la livraison, la relecture et le fait de ne pas retraduire ce qui est déjà correct. Un script ne règle pas ça.</p>" 3778 }, 3779 { 3780 "q": "Les traductions par IA ont l'air assez bonnes. Pourquoi payer pour la relecture ?", 3781 "aHtml": "<p>Elles sont souvent assez bonnes, en particulier pour les chaînes d'UI standard. Le problème, c'est la cohérence dans le temps. à mesure que votre app évolue, les chaînes traduites par IA dérivent en ton. « Cancel » dans un contexte devient « Dismiss » dans un autre. Le terme de marque pour une fonctionnalité est traduit différemment à trois endroits.</p><p class=\\"mt-2\\">La fenêtre de contexte d'un modèle oublie entre les sessions ; une mémoire de traduction se souvient pendant des années. La TM de Locize est persistante, fuzzy-matched et partagée entre projets â la même phrase est résolue de la même manière, que le traducteur qui l'a validée à l'origine travaille toujours ici ou non. Le glossaire alimente directement le prompt IA, et c'est précisément la partie que ChatGPT brut ne peut pas reproduire sans que vous recolliez vos règles de style à chaque appel.</p>" 3782 }, 3783 { 3784 "q": "Et si mon projet est « terminé » et que je n'ai pas besoin de localisation en continu ?", 3785 "aHtml": "<p>La localisation est rarement vraiment terminée â et c'est tout le pari contre « l'IA l'a traduit une fois, c'est bon ». Un mois après le « terminé », vous ajoutez un lien « Mot de passe oublié », mettez à jour le texte de votre page de tarifs, renommez une fonctionnalité ou ajoutez une quatorzième langue. Chacune de ces actions relance le cycle, et l'IA n'a aucune idée de ce qui était là avant. La <strong>fonctionnalité Pause</strong> de Locize met un projet en hibernation avec 80 % de remise quand il est vraiment en mode maintenance â en gardant votre historique et votre workflow intacts pour la prochaine vague de changements.</p>" 3786 }, 3787 { 3788 "q": "Le calcul ne tient pas debout â l'API d'IA coûte quelques centimes par appel et Locize coûte des dollars par mois.", 3789 "aHtml": "<p>Vous comparez une tâche à un système.</p><p class=\\"mt-2\\">Faire passer 5 000 mots dans Claude ou GPT coûte à peu près le prix d'un café â une fois. Si c'est tout le boulot, l'API est effectivement moins chère, et nous l'avons dit en haut de la page. Ce n'est généralement pas tout le boulot.</p><p class=\\"mt-2\\">L'abonnement couvre ce qui se passe après la traduction : <strong>livraison</strong> (CDN global avec routage par branche et par tenant, invalidation de cache), <strong>itération</strong> (traducteurs qui éditent sans PR, corrections de texte en ligne en quelques secondes), <strong>mémoire</strong> (fuzzy-matched, inter-projets â la même phrase n'est pas retraduite et repayée à chaque cycle) et <strong>gouvernance</strong> (relecture, piste d'audit, qui a changé quoi). « Vous me faites payer de l'argent réel pour héberger un fichier YAML » est une réaction de tripe légitime devant la page de tarifs ; c'est ce que cet argent achète vraiment.</p>" 3790 }, 3791 { 3792 "q": "J'utilise déjà Cursor / Claude Code. L'agent écrit le code ET traduit le JSON. Que reste-t-il pour Locize ?", 3793 "aHtml": "<p>Traduire le fichier une fois. C'est la partie facile.</p><p class=\\"mt-2\\">Ensuite l'agent doit commiter un fichier en 30 langues dans le dépôt, redéployer quand le marketing veut un changement de texte, donner à un traducteur un moyen de corriger l'italien sans ouvrir de PR, et se rappeler quelles clés il a déjà traduites la semaine dernière pour ne pas les régénérer au prochain run.</p><p class=\\"mt-2\\">Locize publie un <a class=\\"brand-link\\" href=\\"/docs/integration/mcp\\">serveur MCP</a> pour que l'agent ne traduise pas le fichier du tout â il signale les clés manquantes, Locize les traduit automatiquement avec votre glossaire, votre guide de style et votre mémoire de traduction injectés dans le prompt, et le résultat est en ligne via CDN sans nouveau déploiement. L'agent reste dans l'IDE ; les chaînes cessent de vivre dans le dépôt.</p>" 3794 }, 3795 { 3796 "q": "L'EU AI Act s'applique-t-il à mon app traduite par IA ?", 3797 "aHtml": "<p>Moins que ne le suggèrent les gros titres, mais pas zéro. L'article 50 de l'EU AI Act est en vigueur à compter du 2 août 2026. Les lignes directrices finales de la Commission (20 juillet 2026) exemptent les traductions IA fidèles de l'obligation de marquage lisible par machine, mais le texte traduit par IA publié pour informer le public sur des questions d'intérêt public exige toujours une divulgation visible â sauf s'il est passé par une relecture humaine avec responsabilité éditoriale. L'exemple donné par les lignes directrices elles-mêmes pour cette exemption est une traduction IA relue par un humain ; un pipeline tout-IA sans relecture ne peut pas le démontrer, un pipeline gouverné le peut.</p><p class=\\"mt-2\\">L'<strong>export de provenance</strong> de Locize produit la preuve : un rapport CSV + JSON par version, langue ou namespace indiquant qui a relu, validé ou modifié chaque traduction et quand, la source de la traduction (humain, machine ou IA) et le score de confiance IA au moment de la décision. Le <a class=\\"brand-link\\" href=\\"/fr/ai-act-check\\">check de conformité en trois questions</a> vous dit si vos traductions sont concernées ; le <a class=\\"brand-link\\" href=\\"/fr/docs/eu-ai-act-article-50\\">guide du workflow Article 50</a> montre la mise en place complète.</p>" 3798 }, 3799 { 3800 "q": "N'êtes-vous pas en fait juste un pont entre des développeurs qui ne veulent pas gérer du JSON et des traducteurs qui ne veulent pas apprendre Git ?", 3801 "aHtml": "<p>Si. C'est le produit, pas l'excuse.</p><p class=\\"mt-2\\">Si vos développeurs aiment gérer les fichiers de locales dans Git et que vos traducteurs sont à l'aise avec <code>git pull</code>, vous n'avez pas besoin d'un pont. La plupart des équipes n'ont qu'un seul des deux côtés de leur côté, pas les deux. Locize est la jointure : les devs commitent les clés, les traducteurs éditent dans une UI web, les changements partent en prod via CDN â ni l'un ni l'autre n'a jamais à mettre les pieds dans les outils de l'autre.</p>" 3802 } 3803 ] 3804 }, 3805 "finalCta": { 3806 "heading": "Utilisez l'IA pour traduire. Utilisez Locize pour gérer.", 3807 "subtitle": "Locize a la traduction par IA intégrée (BYOK ou notre propre service). Vous obtenez la vitesse de l'IA avec l'infrastru
3807cture de workflow dont votre équipe a vraiment besoin.", 3808 "register": "Commencer gratuitement", 3809 "seeAi": "Voir les fonctionnalités IA" 3810 } 3811} 3812`,yc=`{ 3813 "meta": { 3814 "title": "EU AI Act articolo 50: check di conformità per i contenuti tradotti con IA", 3815 "description": "Autovalutazione gratuita: i tuoi contenuti tradotti con IA o traduzione automatica sono pronti per gli obblighi di trasparenza dell'articolo 50 dell'EU AI Act (dal 2 agosto 2026)? Tre domande, un verdetto chiaro." 3816 }, 3817 "hero": { 3818 "badge": "EU AI Act · articolo 50", 3819 "h1Prefix": "I tuoi contenuti tradotti con IA sono pronti per l'", 3820 "h1Accent": "articolo 50", 3821 "h1Suffix": "?", 3822 "intro": "Dal 2 agosto 2026, gli obblighi di trasparenza dell'articolo 50 dell'EU AI Act si applicano ai contenuti generati dall'IA. L'articolo 50(4) esenta il testo generato dall'IA che è stato sottoposto a revisione umana con responsabilità editoriale. Rispondi a tre domande per capire a che punto è la tua localizzazione.", 3823 "disclaimerHtml": "Indicazioni, non consulenza legale. Leggi il <a href=\\"{{backgroundHref}}\\">contesto</a> e la <a href=\\"{{workflowHref}}\\">guida al workflow</a>." 3824 }, 3825 "questions": { 3826 "usesAi": "Usi l'IA o la traduzione automatica per stringhe rivolte agli utenti?", 3827 "humanReview": "C'è una fase di revisione umana prima che i contenuti tradotti con IA o traduzione automatica vengano pubblicati?", 3828 "record": "Tieni traccia di chi ha revisionato ogni traduzione con IA o automatica, quando e con quale livello di confidenza?" 3829 }, 3830 "choices": { 3831 "yes": "Sì", 3832 "no": "No" 3833 }, 3834 "missingHeading": "Cosa manca", 3835 "missing": { 3836 "review": "Una fase di revisione umana prima della pubblicazione dei contenuti tradotti con IA o traduzione automatica, cioè la responsabilità editoriale che l'articolo 50(4) si aspetta.", 3837 "record": "Un record affidabile di chi ha revisionato cosa, quando e con quale livello di confidenza IA, che puoi produrre su richiesta." 3838 }, 3839 "verdict": { 3840 "notApplicable": { 3841 "title": "Le regole dell'articolo 50 sui contenuti IA probabilmente non si applicano alle tue traduzioni", 3842 "body": "Non usi l'IA né la traduzione automatica per le stringhe rivolte agli utenti, quindi è improbabile che gli obblighi di trasparenza dell'articolo 50 per il testo generato dall'IA si applichino ad esse. Da rivedere se inizi a usare l'IA o la traduzione automatica." 3843 }, 3844 "incomplete": { 3845 "title": "Servono ancora alcune risposte", 3846 "body": "Rispondi alle domande rimanenti per una valutazione completa." 3847 }, 3848 "strong": { 3849 "title": "Posizione solida", 3850 "body": "Usi l'IA o la traduzione automatica, ma la revisione umana con un record di provenienza è esattamente il meccanismo descritto dall'articolo 50(4). Assicurati che revisione e record coprano tutte le tue stringhe tradotte con IA o traduzione automatica." 3851 }, 3852 "gap": { 3853 "title": "Probabile lacuna", 3854 "body": "I contenuti rivolti agli utenti tradotti con IA o traduzione automatica e pubblicati senza revisione umana potrebbero non rientrare nell'esenzione dell'articolo 50(4). Aggiungi una fase di revisione umana prima della pubblicazione e tienine traccia." 3855 }, 3856 "almost": { 3857 "title": "Ci sei quasi", 3858 "body": "Revisioni i contenuti tradotti con IA o automatica, ma senza un record affidabile non puoi dimostrarlo. L'articolo 50(4) si basa su revisione umana e responsabilità editoriale dimostrabili. Aggiungi un record di provenienza o di audit." 3859 } 3860 }, 3861 "cta": { 3862 "heading": "Un workflow di revisione con record di provenienza è il meccanismo di esenzione", 3863 "body": "Il workflow di revisione umana di Locize registra chi ha revisionato ogni traduzione con IA o automatica, quando e con quale livello di confidenza IA, ed esporta un record di provenienza pronto per l'audit. à esattamente la revisione umana e la responsabilità editoriale descritte dall'articolo 50(4).", 3864 "start": "Inizia gratis", 3865 "how": "Scopri come funziona" 3866 }, 3867 "faqItems": [ 3868 { 3869 "q": "L'articolo 50 dell'EU AI Act si applica ai contenuti tradotti automaticamente?", 3870 "a": "L'articolo 50 stabilisce obblighi di trasparenza per il testo generato dall'IA. Le linee guida finali della Commissione (20 luglio 2026) esentano le traduzioni IA fedeli dall'obbligo di marcatura leggibile meccanicamente dell'articolo 50(2). L'obbligo di divulgazione visibile dell'articolo 50(4) può ancora applicarsi al testo tradotto dall'IA che informa
3870il pubblico su questioni di interesse pubblico; viene meno per il testo sottoposto a revisione umana con responsabilità editoriale â l'esempio delle stesse linee guida per questa esenzione è una traduzione IA revisionata da un umano." 3871 }, 3872 { 3873 "q": "Come rendo i contenuti tradotti con IA conformi all'articolo 50(4)?", 3874 "a": "Aggiungi una fase di revisione umana prima della pubblicazione dei contenuti tradotti con IA o traduzione automatica e tieni traccia di chi ha revisionato cosa, quando e con quale livello di confidenza, che puoi produrre su richiesta." 3875 }, 3876 { 3877 "q": "Quando si applicano le regole di trasparenza dell'articolo 50?", 3878 "a": "Gli obblighi di trasparenza dell'articolo 50 dell'EU AI Act si applicano dal 2 agosto 2026." 3879 } 3880 ] 3881} 3882`,bc=`{ 3883 "meta": { 3884 "title": "Infrastruttura di traduzione IA per ingegneri | Locize", 3885 "description": "Locize è l'infrastruttura per la traduzione guidata dall'IA: BYOK (OpenAI e qualsiasi endpoint compatibile OpenAI, Gemini, Mistral, DeepL), server MCP per assistenti IA, IA consapevole di glossario/style guide, workflow di review." 3886 }, 3887 "primaryCtaDefault": "Registrati gratis", 3888 "hero": { 3889 "badge": "Non un altro agente IA: la vostra IA, le vostre chiavi, il vostro controllo", 3890 "h1Prefix": "L'infrastruttura di cui il vostro ", 3891 "h1Accent": "workflow di traduzione IA ha bisogno.", 3892 "p1Html": "Quest'anno ogni altro TMS si sta riposizionando come «agente IA». Locize resta una <b>piattaforma che voi controllate</b>: portate le vostre chiavi LLM (OpenAI, Gemini, Mistral, DeepL) o puntate Locize al vostro endpoint compatibile OpenAI, tenete i dati nell'account del vostro provider e lasciate che siano gli umani a rivedere ciò che l'IA traduce. Costruita per ingegneri, non per lanci di prodotti agentici.", 3893 "primaryCta": "Registrati gratis", 3894 "aiLabel": "IA:", 3895 "mtLabel": "MT:", 3896 "aiProviders": ["Locize AI", "OpenAI", "Gemini", "Mistral", "..."], 3897 "mtProviders": ["Locize MT", "DeepL", "Google", "..."], 3898 "byokTitle": "Bring Your Own Key", 3899 "byokDesc": "Voi controllate provider e utilizzo.", 3900 "locizeAiTitle": "Oppure usate Locize AI", 3901 "locizeAiDesc": "Basato su token, fatturato in base all'uso.", 3902 "whyTmsPromptHtml": "Vi chiedete perché vi serve un TMS se l'IA sa già tradurre? <span class=\\"font-medium underline underline-offset-2 group-hover:no-underline\\">Leggete qui â</span>", 3903 "imageAlt": "Interfaccia Locize AI", 3904 "efficiencyLabel": "Guadagno di efficienza", 3905 "efficiencyValue": "Fino al 90%", 3906 "efficiencyCaption": "Generazione di bozze iniziali più veloce", 3907 "marqueeTitle": "Aziende globali che usano le nostre funzionalità IA" 3908 }, 3909 "mcp": { 3910 "titlePrefix": "Localizzazione con assistenti IA: ", 3911 "titleAccent": "Locize MCP", 3912 "subtitle": "Il server MCP di Locize porta la localizzazione con assistenti IA nel vostro IDE: collegate Claude, Cursor, VS Code e qualsiasi altro client MCP ai vostri progetti di traduzione. Leggete, aggiornate e pubblicate traduzioni, e date al vostro agente glossario, guida di stile e memoria di traduzione come contesto, senza lasciare il vostro ambiente di sviluppo.", 3913 "ctaLabel": "Guida al setup MCP", 3914 "agentsCta": "Convenzioni per agenti â", 3915 "examples": [ 3916 "Trova tutte le traduzioni tedesche mancanti nel namespace checkout", 3917 "Traduci le stringhe del checkout usando glossario, guida di stile e memoria", 3918 "Controlla le nuove stringhe inglesi di questa PR rispetto al glossario del progetto", 3919 "Pubblica l'ultima versione e attendi il completamento", 3920 "Aggiungi il giapponese a tutte le versioni del mio progetto", 3921 "Crea un branch per feature-v2 e poi merge quando è pronto", 3922 "Mostrami quali chiavi sono cambiate in inglese questa settimana", 3923 "Segnala queste nuove chiavi dalla mia codebase a Locize" 3924 ], 3925 "tools": [ 3926 { "title": "28 tool", "desc": "Leggere traduzioni, sfruttare glossario, guida di stile e memoria di traduzione, pubblicare versioni, gestire branch: il workflow completo, con il contesto nell'IDE." }, 3927 { "title": "Auth OAuth o PAT", "descHtml": "Collegatevi via OAuth da Claude Desktop / Cursor, oppure usate un <a class=\\"link\\" href=\\"{{patHref}}\\">Personal Access Token</a>." }, 3928 { "title": "Funziona con qualsiasi client MCP", "desc": "Claude Desktop, Claude Code, Cursor, VS Code e qualsiasi client che supporti il protocollo MCP." } 3929 ] 3930 }, 3931 "workflow": { 3932 "titlePrefix": "Il workflow di traduzione IA ", 3933 "titleAccent": "completo", 3934 "subtitle": "Dal codice alle traduzioni live, completamente automatizzato. Nessun file da committare, nessun deploy da scatenare.", 3935 "steps": [ 3936 { "title": "Scrivete il codice", "desc": "Gli sviluppatori scrivono codice con t('key') usando i18next, oppure un agente IA di coding fa il bootstrap del setup." }, 3937 { "title": "Chiavi rilevate automaticamente", "desc": "saveMissing invia automaticamente le nuove chiavi a Locize. Gli agenti IA possono chiamare report_missing_keys via MCP." }, 3938 { "title": "L'IA traduce automaticamente", "desc": "Locize traduce usando il provider configurato con style guide, glossario e translation memory come contesto." }, 3939 { "title": "Opzionale: review umana", "desc": "I traduttori revisionano e raffinano nell'editor CAT. Saltate questo passaggio quando la qualità IA è sufficiente." }, 3940 { "title": "Live via CDN", "desc": "Le traduzioni vengono pubblicate sul CDN, live nella vostra app senza nuovi deploy. Nessun file da committare, nessun deploy da scatenare." }, 3941 { "title": "L'IA gestisce il loop", "desc": "Il vostro agente IA di coding controlla la copertura, attiva la pubblicazione e gestisce l'intero workflow tramite il server MCP." } 3942 ], 3943 "localizeCta": "Localizzazione in un comando â", 3944 "ciActionCta": "Traduzione CI gratuita â", 3945 "setupCta": "Guida al setup â", 3946 "tutorialCta": "Tutorial saveMissing + IA â", 3947 "mcpCta": "Docs del server MCP â", 3948 "aiActCta": "AI Act europeo & traduzione automatica â" 3949 }, 3950 "privacy": { 3951 "heading": "I vostri dati. I vostri modelli.", 3952 "intro": "A differenza di altre piattaforme che vi rinchiudono nei loro servizi IA proprietari (spesso con un sovrapprezzo), Locize vi dà la scelta.",
3953 "byokTitle": "Bring Your Own Key (BYOK)", 3954 "byokDesc": "Mantenete il vostro contratto esistente con OpenAI, oppure eseguite l'inferenza sulla vostra infrastruttura tramite un endpoint compatibile OpenAI. Nessun sovrapprezzo da intermediari.", 3955 "sovereigntyTitle": "Sovranità dei dati", 3956 "sovereigntyDesc": "Le traduzioni vengono elaborate con le impostazioni di privacy del vostro provider. I vostri dati non vengono usati per addestrare i nostri modelli. Con un endpoint self-hosted e i servizi integrati disattivati, il testo non lascia mai la vostra infrastruttura." 3957 }, 3958 "providers": { 3959 "titlePrefix": "Diversi provider di traduzione, ", 3960 "titleAccent": "un solo workflow", 3961 "subtitle": "Combinate provider IA e di traduzione automatica nello stesso progetto. Portate la vostra chiave API per il controllo totale, oppure usate i servizi integrati di Locize.", 3962 "aiLabel": "Provider IA", 3963 "mtLabel": "Provider di traduzione automatica", 3964 "ai": [ 3965 { "name": "Locize AI", "desc": "Servizio di traduzione IA integrato, non serve una chiave API esterna. Fatturato per token IA su tutti i piani a pagamento." }, 3966 { "name": "OpenAI", "desc": "Modelli OpenAI tramite la vostra chiave API, oppure qualsiasi endpoint compatibile OpenAI (vLLM self-hosted, LiteLLM, OpenRouter) tramite base URL e nome del modello." }, 3967 { "name": "Google Gemini", "desc": "Modelli Gemini Pro e Flash per traduzioni IA di alta qualità ." }, 3968 { "name": "Mistral AI", "desc": "Modelli ospitati in Europa per team con requisiti di residenza dei dati." }, 3969 { "name": "Lara (di translated)", "desc": "Motore IA usato come MT." } 3970 ], 3971 "mt": [ 3972 { "name": "Locize MT", "desc": "Servizio di traduzione automatica integrato, non serve una chiave API esterna." }, 3973 { "name": "Google Translate", "desc": "Tier gratuito e limitato di Google Translate, nessuna chiave API richiesta." }, 3974 { "name": "DeepL", "desc": "Famoso per traduzioni naturali delle lingue europee." }, 3975 { "name": "MyMemory", "desc": "Translation memory community-driven con accesso API gratuito." } 3976 ], 3977 "tmTitle": "+ Translation Memory", 3978 "tmDesc": "Fuzzy matching su tutte le traduzioni passate. Lavora insieme all'IA per la coerenza.", 3979 "styleTitle": "+ IA consapevole della style guide", 3980 "styleDesc": "Definite tono, formalità e regole terminologiche per coppia di lingue: vengono iniettate automaticamente in ogni prompt IA e MT, così le traduzioni rispecchiano la voce del vostro brand.", 3981 "qeTitle": "+ Quality Estimation", 3982 "qeDesc": "Ogni traduzione IA riceve un punteggio di affidabilità giudicato dall'IA, visibile nell'editor. Le traduzioni a bassa affidabilità possono essere inviate automaticamente nel workflow di revisione." 3983 }, 3984 "whatIs": { 3985 "titlePrefix": "Cos'è la ", 3986 "titleAccent": "localizzazione IA?", 3987 "p1": "La localizzazione IA è la pratica di adattare i contenuti al contesto culturale e linguistico del vostro pubblico. Va oltre la traduzione diretta, mira a preservare significato, intento, tono e adattamento alla UI.", 3988 "p2": "In Locize, l'IA è integrata nel vostro workflow di traduzione esistente, così i team possono generare bozze più rapidamente e poi revisionare e raffinare con fiducia." 3989 }, 3990 "howItWorks": { 3991 "titlePrefix": "Best practice e ", 3992 "titleAccent": "come funziona", 3993 "subtitle": "Un workflow pratico, passo-passo, che potete applicare a siti web, app, giochi e UI di prodotto.", 3994 "stepLabel": "Passo", 3995 "works": [ 3996 { 3997 "title": "Portate la vostra chiave API", 3998 "imageAlt": "Aggiungere la chiave API del provider IA in Locize", 3999 "p1": "Aggiungete la vostra chiave OpenAI, Gemini, Mistral o di altro provider per mantenere la proprietà dei dati e poter scegliere il modello che preferite. Per un endpoint compatibile OpenAI, indicate anche la sua base URL e il nome del modello.", 4000 "altCardLabel": "Alternativa", 4001 "altCardTitle": "Usate il servizio integrato Locize AI", 4002 "altCardDescHtml": "Preferite non gestire una chiave esterna? Usate invece il <strong>servizio Locize AI</strong> integrato. L'utilizzo consuma <strong>token IA</strong> fatturati in base all'uso reale." 4003 }, 4004 { 4005 "title": "Selezionate il modello preferito", 4006 "imageAlt": "Scegliere un modello IA per le traduzioni", 4007 "p1": "Scegliete il modello che si adatta alle vostre esigenze di qualità , latenza e budget. Per la localizzazione UI, i risultati sono spesso vicini al publish-ready, con review." 4008 }, 4009 { 4010 "title": "Contesto: i metadata fanno funzionare l'IA", 4011 "imageAlt": "Aggiungere il contesto di traduzione in Locize", 4012 "p1Html": "L'IA è efficace tanto quanto le informazioni che riceve. Locize inietta automaticamente nel prompt il <strong>glossario</strong> di progetto e le <strong>descrizioni a livello di chiave</strong>, così l'IA sa che «Drive» è un sostantivo (archiviazione) e non un verbo (guidare)." 4013 }, 4014 { 4015 "title": "Sfruttate glossario e translation memory", 4016 "imageAlt": "Usare glossario e translation memory per maggiore coerenza", 4017 "p1Html": "Mantenete la terminologia coerente continuando a usare le funzionalità di <a class=\\"link\\" href=\\"{{glossaryHref}}\\">glossario</a> e translation memory di Locize." 4018 }, 4019 { 4020 "title": "Usatela come traduzione automatica", 4021 "imageAlt": "Eseguire la traduzione IA tramite azioni di massa", 4022 "p1Html": "Traducete singoli segmenti, eseguite <a class=\\"link\\" href=\\"{{bulkHref}}\\">azioni di massa</a> o automatizzate via <a class=\\"link\\" href=\\"{{autoHref}}\\">workflow di traduzione automatica</a>." 4023 }, 4024 { 4025 "title": "Raffinate le traduzioni con suggerimenti IA", 4026 "imageAlt": "Raffinare le traduzioni con suggerimenti IA", 4027 "p1": "Riformulate, accorciate o generate varianti che rispettino i vincoli di UI e il tono, poi lasciate che i traduttori rivedano e finalizzino." 4028 } 4029 ] 4030 }, 4031 "whyChoose": { 4032 "titlePrefix": "Perché scegliere la ", 4033 "titleAccent": "localizzazione IA?", 4034 "items": [ 4035 { "title": "Time-to-market più veloce", "desc": "Generate bozze iniziali di alta qualità rapidamente, così i team possono rilasciare in più lingue con meno ritardo." }, 4036 { "title": "Maggiore accuratezza e coerenza", "desc": "Contesto, glossario e translation memory aiutano a preservare tono e terminologia in tutto il vostro prodotto." }, 4037 { "title": "Prime traduzioni convenienti", "desc": "L'IA può accelerare il lavoro di traduzione iniziale e ridurre lo sforzo manuale, con review dove conta." } 4038 ], 4039 "imageAlt": "Selezione del modello IA in Locize", 4040 "imageCaption": "Scegliete il modello e il workflow che si adattano ai vostri requisiti di qualità e governance." 4041 }, 4042 "useCases": { 4043 "titlePrefix": "Localizzazione IA per ", 4044 "titleAccent": "tutti i casi d'uso", 4045 "subtitle": "State al passo con l'iterazione veloce del prodotto senza che la localizzazione diventi un blocco al rilascio.", 4046 "cards": [ 4047 { "title": "Localizzazione di siti web", "text": "Gestite siti web multilingua e pubblicate aggiornamenti in modo continuo.", "href": "/blog/website-localization", "cta": "Vedi la guida alla localizzazione web â" }, 4048 { "title": "Localizzazione di app mobile", "text": "Accelerate i cicli di traduzione e mantenete i rilasci in movimento.", "href": "/blog/what-is-mobile-app-localization", "cta": "Vedi la guida per app mobile â" }, 4049 { "title": "Localizzazione di videogiochi", "text": "Adattate il testo UI e i contenuti per i giocatori globali con terminologia coerente.", "href": "/blog/what-is-video-game-localization", "cta": "Vedi la guida per i giochi â" }, 4050 { "title": "Localizzazione di piattaforma", "text": "Scalate la localizzazione su prodotti e team complessi.", "href": "/blog/what-is-software-localization", "cta": "Vedi la guida di piattaforma â" }, 4051 { "title": "Website builder", "text": "Aggiungete workflow di localizzazione a CMS e site builder senza attriti.", "href": "/blog/website-internationalization-best-practices", "cta": "Vedi le best practice â" }, 4052 { "title": "Qualsiasi integrazione", "text": "Usate API, CLI e hook di automazione per adattarvi al vostro stack.", "href": "/docs/integration/api/", "cta": "Esplora l'API â" } 4053 ] 4054 }, 4055 "faq": { 4056 "titlePrefix": "Domande ", 4057 "titleAccent": "frequenti", 4058 "subtitle": "Risposte rapide sulla localizzazione IA in Locize.", 4059 "docsCta": "Vai ai docs", 4060 "items": [ 4061 { "q": "Come la localizzazione IA garantisce accuratezza e contesto nelle traduzioni?", "aHtml": "<p class=\\"m-0\\">L'IA usa contesto e istruzioni per produrre traduzioni più naturali. In Locize potete aggiungere contesto a livello di progetto e di chiave, così i risultati si adattano alla vostra UI e alla voce del brand.</p>" }, 4062 { "q": "Gli strumenti IA di Locize possono gestire diversi tipi di
4062software?", "aHtml": "<p class=\\"m-0\\">Sì. Lo stesso workflow si applica a siti web, app mobile, giochi e UI di piattaforma â purché le vostre stringhe siano in Locize.</p>" }, 4063 { "q": "Quanto è facile integrare la localizzazione IA nel mio workflow?", "aHtml": "<p class=\\"m-0\\">Potete usare l'IA tramite la UI, le azioni di massa o i workflow di automazione. Integrazioni come API e CLI vi aiutano a mantenere le traduzioni sincronizzate con la vostra codebase.</p>" }, 4064 { "q": "Posso usare l'IA senza fornire la mia chiave API?", "aHtml": "<p class=\\"m-0\\">Sì. Potete usare il servizio Locize AI integrato che consuma token IA fatturati in modo trasparente in base all'uso.</p>" }, 4065 { "q": "Se l'IA può tradurre le mie stringhe, perché mi serve un TMS?", "aHtml": "<p class=\\"m-0\\">L'IA traduce le stringhe. Un TMS le gestisce nel tempo: rileva quali chiavi mancano, mantiene la terminologia coerente su centinaia di chiavi, permette ai non-sviluppatori di pubblicare correzioni senza deploy e tiene un audit trail di ogni modifica. I due risolvono problemi diversi â per questo Locize integra l'IA nel workflow invece di sostituirlo. <a class=\\"link\\" href=\\"{{whyNotAiHref}}\\">Risposta più lunga qui â</a></p>" } 4066 ] 4067 }, 4068 "finalCta": { 4069 "title": "Smettete di aspettare. Iniziate a localizzare.", 4070 "subtitle": "Create un nuovo progetto e traducete la vostra applicazione con un workflow di cui il team può fidarsi.", 4071 "primaryCta": "Registrati gratis", 4072 "pricingLabel": "Vedi i prezzi" 4073 } 4074} 4075`,xc=`{ 4076 "skipToContent": "Vai al contenuto", 4077 "nav": { 4078 "primaryAria": "Navigazione principale", 4079 "howItWorks": "Come funziona", 4080 "forYourTeam": "Per il tuo team", 4081 "pricing": "Prezzi", 4082 "customers": "Clienti", 4083 "services": "Servizi", 4084 "ai": "IA", 4085 "docs": "Docs", 4086 "blog": "Blog" 4087 }, 4088 "cta": { 4089 "login": "Accedi", 4090 "register": "Registrati", 4091 "registerForFree": "Registrati gratis" 4092 }, 4093 "languageSwitcher": { 4094 "label": "Lingua", 4095 "en": "English", 4096 "de": "Deutsch", 4097 "it": "Italiano", 4098 "fr": "Français" 4099 }, 4100 "blog": { 4101 "title": "Blog", 4102 "subtitle": "Aggiornamenti di prodotto, guide e storie dei clienti.", 4103 "searchLabel": "Cerca", 4104 "searchPlaceholder": "Cerca tra gli articoli â¦", 4105 "allCategories": "TUTTI", 4106 "noResults": "Nessun risultato.", 4107 "postNotFound": "Articolo non trovato", 4108 "backToBlog": "Torna al blog", 4109 "cta": { 4110 "heading": "Stanco di gestire le traduzioni a mano?", 4111 "body": "Locize è il backend di gestione delle traduzioni creato dal team di i18next: distribuzione via CDN, traduzione con AI, editing in-context, senza nuovi deploy.", 4112 "button": "Inizia la prova gratuita di 14 giorni" 4113 }, 4114 "pagination": { 4115 "previous": "â Precedente", 4116 "next": "Successivo â" 4117 } 4118 }, 4119 "footer": { 4120 "columns": { 4121 "product": "Prodotto", 4122 "solutions": "Soluzioni", 4123 "company": "Azienda", 4124 "importantLinks": "Link importanti", 4125 "registration": "Registrazione" 4126 }, 4127 "links": { 4128 "pricing": "Prezzi", 4129 "howItWorks": "Come funziona", 4130 "services": "Servizi", 4131 "ai": "IA", 4132 "whyNotJustUseAi": "Perché non usare solo l'IA?", 4133 "continuousLocalization": "Localizzazione continua", 4134 "fileFormats": "Formati di file", 4135 "docs": "Docs", 4136 "i18next": "i18next", 4137 "i18nLibrary": "libreria i18n", 4138 "javascriptLocalization": "Localizzazione JavaScript", 4139 "websiteLocalizationServices": "Localizzazione di siti web", 4140 "softwareLocalizationService": "Localizzazione software", 4141 "euAccessibilityAct": "EU Accessibility Act", 4142 "forYourTeam": "Per il tuo team", 4143 "multiTenant": "Multi-tenant", 4144 "blog": "Blog", 4145 "caseStudies": "Casi studio", 4146 "security": "Sicurezza", 4147 "ourPhilosophy": "La nostra filosofia", 4148 "compareCompetitors": "Confronta concorrenti", 4149 "swissMadeTms": "TMS Swiss-made", 4150 "terms": "Termini", 4151 "privacyPolicy": "Privacy", 4152 "dpa": "DPA", 4153 "ccpa": "CCPA", 4154 "support": "Supporto" 4155 }, 4156 "i18nLibraryLine": "<0>i18next</0> o qualsiasi altra <1>libreria i18n</1>", 4157 "aiLine": "<0>IA</0> â <1>Perché non usare solo l'IA?</1>", 4158 "copyright": "© {{year}} inweso Sagl. Tutti i diritti riservati.",
4159 "social": { 4160 "emailTitle": "Email", 4161 "emailAria": "Email a [email protected]", 4162 "xTitle": "X", 4163 "xAria": "Locize su X", 4164 "facebookTitle": "Facebook", 4165 "facebookAria": "Locize su Facebook", 4166 "youtubeTitle": "YouTube", 4167 "youtubeAria": "Locize su YouTube", 4168 "instagramTitle": "Instagram", 4169 "instagramAria": "Locize su Instagram" 4170 } 4171 } 4172} 4173`,Sc=`{ 4174 "meta": { 4175 "title": "Clienti - Locize", 4176 "description": "Scoprite da oltre 100 team â tra cui ABB, Croce Rossa Svizzera e ZKB â come Locize ha ottimizzato il loro workflow di localizzazione. Casi studio e testimonianze." 4177 }, 4178 "marqueeTitle": "La fiducia delle principali aziende di prodotto", 4179 "hero": { 4180 "heading": "Storie di successo dei clienti", 4181 "subtitle": "Ascoltate cosa hanno da dire i nostri clienti." 4182 }, 4183 "partnerStories": { 4184 "headingPrefix": "Storie dei ", 4185 "headingAccent": "partner", 4186 "subtitle": "Casi di localizzazione reali dalla community.", 4187 "readStory": "Leggi la storia", 4188 "items": [ 4189 { 4190 "title": "L'importanza della comunicazione multilingua nelle scuole: attrarre un pubblico globale", 4191 "text": "Scoprite come Locize permette agli istituti educativi di curare e aggiornare senza sforzo i propri contenuti multilingua, presentandosi al meglio a un pubblico mondiale." 4192 }, 4193 { 4194 "title": "Localizzazione in Immersive Communities", 4195 "text": "Come Immersive Communities ha sfruttato Locize per gestire la localizzazione.", 4196 "extraLinkText": "Leggete anche la storia completa di come Mario ha costruito questo social network in 4 anni come sviluppatore solo." 4197 }, 4198 { 4199 "title": "Localizzazione in Networkme", 4200 "text": "Come Networkme è diventata almeno il 20% più produttiva?\\n\\nScoprite come Networkme dà ai copywriter l'autonomia di muoversi alla velocità che si aspettano." 4201 }, 4202 { 4203 "title": "Come abbiamo tradotto il sito Avocode in Next.js con il pacchetto i18next", 4204 "text": "Come si traduce un sito che cambia di continuo?" 4205 }, 4206 { 4207 "title": "ReactIntl + Namespace + Locize", 4208 "text": "Come ReactIntl insieme a Locize vi aiuta nelle attività di internazionalizzazione e localizzazione nel vostro progetto." 4209 }, 4210 { 4211 "title": "Localizzazione come servizio con Locize", 4212 "text": "Gestite le localizzazioni in Word? Excel? JSON? XML? Notepad? Credeteci o no, le abbiamo provate tutte." 4213 } 4214 ] 4215 }, 4216 "testimonials": { 4217 "headingPrefix": "Voci dei ", 4218 "headingAccent": "clienti",
4219 "subtitle": "Ascoltate cosa hanno da dire i nostri clienti!", 4220 "tryLocize": "Prova Locize" 4221 } 4222} 4223`,Cc=`{ 4224 "meta": { 4225 "title": "EU Accessibility Act e localizzazione: compliance multilingua per prodotti digitali", 4226 "description": "L'EU Accessibility Act (direttiva 2019/882) è in vigore dal 28 giugno 2025. Locize gestisce il lato multilingua: aggiornamenti via CDN, workflow di review, audit log, glossario, traduzione IA con revisione umana." 4227 }, 4228 "hero": { 4229 "badge": "In vigore dal 28 giugno 2025", 4230 "h1Prefix": "EU Accessibility Act: ", 4231 "h1Accent": "compliance multilingua per prodotti digitali", 4232 "p1Html": "<b>L'EU Accessibility Act</b> (direttiva (UE) 2019/882) richiede che i prodotti e i servizi digitali immessi sul mercato UE siano accessibili alle persone con disabilità . L'applicazione è iniziata il <b>28 giugno 2025</b>. La maggior parte delle aziende SaaS, e-commerce, banking, telefonia, trasporti e servizi media audiovisivi che serve utenti UE rientra nell'ambito.", 4233 "p2": "L'EAA si concentra sull'accessibilità , ma si interseca con le regole linguistiche UE. I prodotti digitali transfrontalieri devono tipicamente fornire contenuti nelle lingue ufficiali dei mercati UE serviti e aggiornarli rapidamente quando vengono segnalati problemi di compliance.", 4234 "p3Html": "<b>Locize gestisce il lato multilingua</b>: traduzioni distribuite via CDN (niente nuovi deploy per correzioni di compliance), workflow di review per il sign-off legale, audit log per chiave per gli audit di compliance, glossario e style guide per coerenza terminologica, traduzione IA con review umana per coprire rapidamente lingue UE aggiuntive.", 4235 "ctaTrial": "Inizia la prova gratuita", 4236 "ctaChecklist": "Vedi la checklist di compliance", 4237 "swissBadge": "TMS svizzero · residenza dei dati prossima alla UE", 4238 "gdprBadge": "Conforme al GDPR", 4239 "imageAlt": "Workflow di review Locize â sign-off legale e di accessibilità sui contenuti tradotti", 4240 "imageCaption": "Il workflow di review di Locize: revisori legali o di accessibilità possono approvare ogni traduzione prima della messa online." 4241 }, 4242 "whatIs": { 4243 "heading": "Cosa è cambiato il 28 giugno 2025", 4244 "subtitle": "La direttiva (UE) 2019/882 è entrata in vigore dopo un periodo di transizione di 6 anni. Le sanzioni sono ora attive.", 4245 "coversTitle": "Cosa copre l'EAA", 4246 "coversItems": [ 4247 "Siti e app di e-commerce", 4248 "Servizi bancari e finanziari (rivolti ai consumatori)", 4249 "Telefonia: voce + produttori di smartphone", 4250 "E-reader, e-book e servizi di media audiovisivi", 4251 "Trasporti: informazioni passeggeri, biglietterie automatiche", 4252 "Computer, smartphone e sistemi di ticketing", 4253 "Terminali self-service (bancomat, distributori di biglietti)" 4254 ], 4255 "whoMustTitle": "Chi deve essere conforme", 4256 "whoMustP1Html": "Qualsiasi azienda (dentro o fuori l'UE) che immetta prodotti o servizi coperti sul mercato UE. L'esenzione per le microimprese (meno di 10 dipendenti E meno di 2 mln ⬠di fatturato annuo) si applica solo ai requisiti per i <b>servizi</b>, non a quelli per i prodotti.", 4257 "whoMustP2": "La maggior parte delle aziende SaaS, e-commerce, fintech e digital media che servono utenti UE rientra nell'ambito. I regolatori nazionali (ARCOM in Francia, BFIT-Bund in Germania, AgID in Italia, ecc.) hanno iniziato a emettere notifiche di compliance.", 4258 "penaltiesTitle": "Sanzioni (definite dagli Stati membri)", 4259 "penaltiesP1": "Ogni Stato membro UE definisce la propria applicazione. Le sanzioni includono tipicamente: multe proporzionali al fatturato dell'azienda, rimozione dei prodotti non conformi dal mercato UE e piani di rimedio obbligatori. Il rischio reputazionale è significativo; le notifiche di applicazione sono tipicamente pubbliche." 4260 }, 4261 "language": { 4262 "heading": "Dove i contenuti multilingua si inseriscono nella compliance EAA", 4263 "subtitle": "L'EAA si concentra sull'accessibilità (alt text, sottotitoli, navigazione da tastiera, compatibilità con screen reader), ma non esiste in isolamento.", 4264 "whyTitle": "Perché il multilingua conta qui", 4265 "whyP1Html": "L'accessibilità presuppone <b>contenuto-nella-lingua-dell'utente</b>. Uno screen reader non può rendere accessibile un testo inglese a un utente polacco; i sottotitoli in lingua straniera non sono accessibilità .", 4266 "whyP2": "Molte regole UE che si sovrappongono richiedono già c
4266ontenuti nella lingua locale:", 4267 "whyBulletsHtml": [ 4268 "<b>Direttiva sui diritti dei consumatori (2011/83/UE)</b>: informazioni al consumatore nella lingua dello Stato membro", 4269 "<b>Web Accessibility Directive (2016/2102)</b>: enti del settore pubblico, ambito parallelo", 4270 "Recepimenti nazionali: legge Toubon in Francia, regole regionali in Belgio, legge Stanca in Italia" 4271 ], 4272 "practiceTitle": "Cosa significa in pratica", 4273 "practiceP1Html": "Se operate cross-border nell'UE, dovete tipicamente fornire il prodotto nelle lingue ufficiali dei mercati serviti, più testo alternativo, sottotitoli e dichiarazioni di accessibilità <b>nelle stesse lingue</b>.", 4274 "practiceP2": "Quando un problema di compliance viene identificato (da un regolatore, una segnalazione di un cliente o un audit interno), i fix devono essere rilasciati rapidamente. à qui che la traduzione-per-redeploy diventa dolorosa: un refuso in una dichiarazione di accessibilità non dovrebbe richiedere un rilascio." 4275 }, 4276 "checklist": { 4277 "heading": "Checklist di compliance multilingua", 4278 "subtitle": "Domande pratiche da porsi sul lato multilingua del vostro programma EAA.", 4279 "itemsHtml": [ 4280 "<b>Quali mercati UE servite?</b> Mappate le lingue ufficiali di ciascuno. Come soglia minima, l'inglese da solo è raramente sufficiente per servizi rivolti ai consumatori.", 4281 "<b>La vostra dichiarazione di accessibilità è disponibile in ogni lingua di mercato?</b> La dichiarazione stessa è richiesta da più regole UE e deve essere nella lingua dell'utente.", 4282 "<b>Potete distribuire una correzione di traduzione senza un deployment?</b> Se un regolatore segnala un problema di traduzione, dovreste poterlo correggere in minuti, non in un ciclo di rilascio.", 4283 "<b>Avete un workflow di review documentato per le traduzioni?</b> Gli auditor chiederanno chi ha approvato il testo localizzato e quando. L'audit log per chiave è la risposta standard.", 4284 "<b>Sono tradotti alt text, sottotitoli, messaggi di errore ed etichette dei form?</b> Sono facili da dimenticare quando si localizzano pagine di marketing ma non il chrome del prodotto.", 4285 "<b>La terminologia è coerente in tutte le lingue?</b> Incongruenze come «Accetta» / «Conferma» / «Continua» possono rompere il flusso di accessibilità per gli utenti screen reader che si muovono tra le pagine. Un glossario di progetto è il modo più pulito per farlo rispettare.", 4286 "<b>Potete aggiungere rapidamente una lingua se un nuovo mercato diventa prioritario?</b> I programmi di traduzione manuale richiedono tipicamente settimane; la traduzione IA con review umana può richiedere giorni." 4287 ], 4288 "footnote": "Questa è una checklist di contenuti multilingua. L'accessibilità stessa richiede anche conformità WCAG 2.2 AA, conformità EN 301 549 e requisiti specifici di prodotto; consultate uno specialista di accessibilità per il quadro completo." 4289 }, 4290 "mapping": { 4291 "heading": "Come Locize si mappa alle esigenze multilingua dell'EAA", 4292 "subtitle": "Ogni funzionalità di Locize si lega direttamente a un'esigenza di compliance multilingua.", 4293 "headers": ["Esigenza di compliance", "Funzionalità Locize"], 4294 "rows": [ 4295 ["Distribuire una correzione di traduzione in minuti", "<a class=\\"brand-link\\" href=\\"{{cdnHref}}\\">Traduzioni distribuite via CDN</a>: le modifiche vanno live senza nuovo deploy"], 4296 ["Sign-off legale / di accessibilità sui testi tradotti", "<a class=\\"brand-link\\" href=\\"{{reviewHref}}\\">Workflow di review</a>: accetta/rifiuta con visualizzazione diff, revisori per lingua"], 4297 ["Audit trail di chi ha cambiato cosa e quando", "<a class=\\"brand-link\\" href=\\"{{historyHref}}\\">Cronologia per chiave</a> + audit log nei piani superiori"], 4298 ["Terminologia coerente in tutte le lingue", "<a class=\\"brand-link\\" href=\\"{{glossaryHref}}\\">Glossario di progetto</a> + <a class=\\"brand-link\\" href=\\"{{styleguideHref}}\\">style guide</a> iniettati nei prompt IA"], 4299 ["Aggiungere rapidamente una nuova lingua UE", "<a class=\\"brand-link\\" href=\\"{{autoTransHref}}\\">Traduzione automatica</a> con BYOK (OpenAI, Gemini, Mistral, DeepL) + review umana"], 4300 ["Override multi-tenant (brand regionali, white-label)", "<a class=\\"brand-link\\" href=\\"{{multiTenantHref}}\\">Multi-tenant</a>: strato di override per tenant su una base condivisa"], 4301 ["Residenza dei dati UE/CH per i dati di traduzione", "Gestito da un'<a class=\\"brand-link\\" href=\\"{{swissHref}}\\">azienda svizzera</a> con dati di traduzione ospitati in AWS Irlanda; vedi la nostra <a class=\\"brand-link\\" href=\\"{{securityHref}}\\">pagina sicurezza</a>"] 4302 ] 4303 }, 4304 "customers": { 4305 "heading": "Team che già rilasciano prodotti UE multilingua con Locize", 4306 "moreCta": "Altre storie di clienti" 4307 }, 4308 "faqSection": { 4309 "heading": "Domande frequenti", 4310 "subtitle": "Se la vostra domanda manca, scrivete a [email protected]" 4311 }, 4312 "faqItems": [ 4313 { "q": "Cos'è l'EU Accessibility Act?", "a": "L'EU Accessibility Act (EAA, direttiva (UE) 2019/882) è una direttiva UE del 2019 che richiede che i prodotti e i servizi digitali immessi sul mercato UE siano accessibili alle persone con disabilità . L'applicazione è iniziata il 28 giugno 2025. I prodotti coperti includono e-commerce, banking, trasporti, telefonia, e-reader, servizi di media audiovisivi, computer, smartphone e sistemi di ticketing. La non-conformità comporta sanzioni definite dagli Stati membri, tipicamente multe." }, 4314 { "q": "L'EU Accessibility Act richiede contenuti multilingua?", "a": "L'EAA si concentra sull'accessibilità (alt text, sottotitoli, navigazione da tastiera, ecc.), non sulla lingua. Ma si interseca con altre regole UE: la Web Acce
4314ssibility Directive per gli enti del settore pubblico, la Direttiva sui diritti dei consumatori che richiede informazioni al consumatore nella lingua dello Stato membro, e i recepimenti nazionali che spesso aggiungono obblighi linguistici. In pratica, le aziende SaaS o e-commerce che servono più mercati UE hanno bisogno di contenuti multilingua oltre ai rigorosi requisiti di accessibilità ." }, 4315 { "q": "Chi deve rispettare l'EU Accessibility Act?", "a": "Qualsiasi azienda (dentro o fuori l'UE) che immetta prodotti o servizi coperti sul mercato UE. Le microimprese che forniscono servizi (meno di 10 dipendenti E meno di 2 mln ⬠di fatturato annuo) sono esenti dai requisiti per i servizi ma non da quelli per i prodotti. La maggior parte delle aziende SaaS, e-commerce, fintech e digital media che servono utenti UE rientra nell'ambito." }, 4316 { "q": "In che modo Locize aiuta con la compliance EAA?", "a": "Locize copre il lato multilingua: traduzioni distribuite via CDN così le correzioni di compliance vanno live senza nuovi deploy, workflow di review per il sign-off di esperti legali / di accessibilità , audit log per chiave per gli audit di compliance, glossario e style guide per coerenza terminologica e traduzione IA con review umana per coprire rapidamente lingue UE aggiuntive." }, 4317 { "q": "Quali lingue devo coprire per la compliance di accessibilità UE?", "a": "Ci sono 24 lingue ufficiali UE. Il requisito esatto dipende da quali mercati servite e da quali leggi linguistiche nazionali si applicano. Come soglia minima, la maggior parte dei provider SaaS cross-border copre le lingue dei mercati in cui vende attivamente â tipicamente un sottoinsieme di: tedesco, francese, spagnolo, italiano, olandese, polacco, portoghese, svedese, con l'inglese come fallback. I regolatori nazionali (es. Francia, Belgio, Vallonia influenzata dal Quebec) applicano rigorosamente i requisiti linguistici locali." }, 4318 { "q": "Cosa succede se il mio prodotto non è conforme?", "a": "Gli Stati membri definiscono la propria applicazione. Le sanzioni includono tipicamente multe (proporzionali al fatturato dell'azienda), rimozione dei prodotti non conformi dal mercato e danno reputazionale. I regolatori nazionali hanno iniziato a emettere notifiche alla fine del 2025. Per i fornitori di servizi (vs. produttori di prodotti) c'è un periodo di grazia aggiuntivo fino al 2030 in alcuni scenari, ma l'applicazione principale è iniziata il 28 giugno 2025." } 4319 ], 4320 "related": { 4321 "linksHtml": "Correlati: <a class=\\"brand-link\\" href=\\"{{websiteHref}}\\">Localizzazione di siti web</a> · <a class=\\"brand-link\\" href=\\"{{softwareHref}}\\">Localizzazione software</a> · <a class=\\"brand-link\\" href=\\"{{swissHref}}\\">TMS Swiss-made</a> · <a class=\\"brand-link\\" href=\\"{{jsHref}}\\">Localizzazione JavaScript</a> · <a class=\\"brand-link\\" href=\\"{{securityHref}}\\">Sicurezza e residenza dei dati</a>", 4322 "footnote": "Questa pagina descrive il lato dei contenuti multilingua della compliance EAA. L'accessibilità stessa (alt text, sottotitoli, navigazione da tastiera, conformità WCAG/EN 301 549) richiede strumenti e audit specializzati; consultate un esperto di accessibilità per un programma di compliance completo." 4323 }, 4324 "finalCta": { 4325 "title": "Rilasciate prodotti UE multilingua senza nuovi deploy.", 4326 "subtitle": "Prova gratuita di 14 giorni. Nessuna carta di credito richiesta.", 4327 "primaryLabel": "Registrati gratis" 4328 } 4329} 4330`,wc=`{ 4331 "meta": { 4332 "title": "Per il tuo team - Locize", 4333 "description": "Locize per sviluppatori, manager e traduttori: strumenti che ogni ruolo vuole davvero usare." 4334 }, 4335 "hero": { 4336 "h1": "La piattaforma di traduzione che tutto il team può davvero usare", 4337 "subtitle": "Per sviluppatori, manager e traduttori.", 4338 "roles": [ 4339 { "role": "Sviluppatori", "target": "developers", "desc": "Automatizzate il vostro workflow i18n e restate nell'IDE." }, 4340 { "role": "Manager", "target": "managers", "desc": "Monitorare il ROI, gestire i budget e rilasciare con fiducia." }, 4341 { "role": "Traduttori", "target": "translators", "desc": "Strumenti ricchi di contesto e workflow assistiti dall'IA." } 4342 ], 4343 "viewFeatures": "Vedi le funzionalità â",
4344 "intro": "Sfruttate la potenza di Locize per ogni ruolo del team. Ottimizza la collaborazione tra team di sviluppo e di traduzione.", 4345 "subIntroHtml": "Come tech team leader / engineering manager avete un problema in meno.<br />Rende i team di engineering più veloci, efficienti e fa risparmiare denaro complessivamente. <a href=\\"https://youtu.be/lCuHSZvSiVg\\" target=\\"_blank\\" rel=\\"noreferrer\\">Guardate</a> cosa Locize può offrirvi.<br /><a href=\\"{{trialHref}}\\" target=\\"_blank\\" rel=\\"noreferrer\\">Iniziate la prova gratuita</a>, configurate il vostro progetto Locize, confrontatelo con il vostro processo esistente e validatelo con i membri del team." 4346 }, 4347 "managers": { 4348 "title": "Per project e translation manager", 4349 "subtitle": "Accountability, trasparenza e time-to-market.", 4350 "items": [ 4351 { "title": "Trasparenza globale", "imageAlt": "Dashboard Locize", "p1": "Ottenete una trasparenza completa sul vostro footprint globale. Dal dashboard ad alto livello fino ai singoli file, avete i dati in tempo reale necessari per rilasciare con sicurezza e rispettare le scadenze internazionali senza tirare a indovinare." }, 4352 { "title": "Strategia data-driven", "imageAlt": "Statistiche Locize", "p1": "Trasformate la localizzazione â da centro di costo â in motore di crescita. Monitorate il numero di parole, la velocity delle traduzioni e l'attività degli sviluppatori per ottimizzare il budget e tracciare il ROI nell'espansione in nuovi mercati." }, 4353 { "title": "Audit log completi & accountability", "imageAlt": "Cronologia Locize", "p1": "Mantenete una chiara catena di prove per ogni stringa. I nostri log dettagliati garantiscono accountability e rendono facile annullare le modifiche â per dormire sereni in settori regolamentati o in ambienti con team grandi." }, 4354 { "title": "Ordinare traduzioni", "imageAlt": "Ordini Locize", "p1": "Pur potendo far fare le traduzioni a freelance o collaboratori interni direttamente in Locize, avete anche la possibilità di ordinare traduzioni direttamente da Locize.", "p2": "Attualmente potete ordinare direttamente presso TextMaster o BLEND." }, 4355 { "title": "Tenete il team aggiornato", "imageAlt": "Notifica Locize", "p1": "Tenete il team aggiornato attivando la nostra integrazione di notifiche Slack.", "p2": "Ricevete una notifica quando succede qualcosa di rilevante nel vostro progetto di localizzazione." } 4356 ] 4357 }, 4358 "translators": { 4359 "title": "Per traduttori", 4360 "subtitle": "Lavorate in modo più efficiente con Locize.", 4361 "items": [ 4362 { "title": "Smart Translation Memory", "imageAlt": "Translation Memory", "p1": "Tutti i vantaggi di una translation memory. Riutilizzate traduzioni già create. Consultate la terminologia usata.", "p2": "Portate con voi la vostra translation memory esportandola per SDL Trados o per altri tool di localizzazione." }, 4363 { "title": "Editing in-context", "imageAlt": "Editor in-context", "p1": "Traducete direttamente nel vostro sito / applicazione. Ogni traduzione è a un solo click di distanza.", "p2": "Tradurre direttamente nel contesto è il modo migliore per capire il contesto della propria traduzione." }, 4364 { "title": "Workflow di review configurabile con approvazione per lingua", "imageAlt": "Workflow di review", "p1": "Potete attivare il workflow di review per lingue specifiche.", "p2": "Così, a ogni modifica di una traduzione, parte un workflow di review. Il valore effettivo viene cambiato solo quando qualcuno accetta uno dei suggerimenti di traduzione." }, 4365 { "titleHtml": "Traduzioni automatiche o <a href=\\"{{aiHref}}\\">IA generativa</a>", "imageAlt": "Traduzione automatica", "p1": "Le traduzioni IA sono production-ready per molti casi d'uso: tool interni, documentazione tecnica e contenuti rivolti agli sviluppatori. Per contenuti critici per il brand, Locize offre il workflow di review per perfezionarli.", "p2": "Usate traduzioni automatiche o IA generativa per le prime bozze e lasciate che i traduttori revisionino e raffinino dove conta." } 4366 ] 4367 }, 4368 "developers": { 4369 "title": "Per sviluppatori", 4370 "subtitle": "Meno tempo speso in localizzazione significa più tempo per scrivere c
4370odice.", 4371 "items": [ 4372 { "title": "API REST completa con 60+ endpoint", "imageAlt": "API Locize", "p1": "Costruite qualsiasi integrazione contro la nostra API.", "p2": "Aggiungete nuove traduzioni, create nuove versioni e pubblicatele sul nostro CDN con una semplice chiamata API." }, 4373 { "title": "Tool CLI", "imageAlt": "Command line Locize", "p1": "Integrate il nostro tool CLI nel vostro processo di build.", "p2": "Scaricate i file di traduzione in qualsiasi formato fornito da Locize tramite la vostra command line.", "p3": "Sincronizzate le vostre traduzioni con Locize senza dover modificare il codice." }, 4374 { "title": "Nuovi segmenti direttamente dal codice", "imageAlt": "Codice Locize", "p1": "I segmenti non devono più essere aggiunti manualmente. Non lasciate mai più il vostro editor per aggiungere traduzioni.", "p2": "Se ad esempio strumentate i18next per l'internazionalizzazione nel vostro codice, i nuovi segmenti vengono aggiunti automaticamente al vostro progetto Locize." }, 4375 { "title": "Sviluppo & traduzione in parallelo", "imageAlt": "Versioning Locize", "p1": "Non lasciatevi più bloccare dalle traduzioni nel ciclo di rilascio. Il versioning permette ai vostri sviluppatori di rilasciare codice v2.0 mentre i traduttori finalizzano in parallelo i contenuti v1.1.", "p2": "Niente più conflitti di merge nei file JSON. Al loro posto un workflow indipendente e fluido per ogni ruolo.", "p3Html": "Costruite un prodotto multi-tenant? Gli <a class=\\"text-white/90 underline\\" href=\\"{{multiTenantHref}}\\">override di traduzione per cliente</a> permettono a ogni cliente di personalizzare il linguaggio senza forkare il vostro setup." } 4376 ] 4377 }, 4378 "security": { 4379 "title": "Sicurezza enterprise & controllo accessi", 4380 "subtitle": "I controlli che il vostro team di sicurezza pretende.", 4381 "items": [ 4382 { "title": "SAML SSO", "desc": "Single Sign-On enterprise tramite il vostro Identity Provider. Disponibile da Professional in su." }, 4383 { "title": "Obbligo MFA a livello progetto", "desc": "Imponete l'autenticazione multi-fattore a tutti gli utenti di un progetto, applicata a livello di progetto." }, 4384 { "title": "WebAuthn (passwordless)", "desc": "Login con chiave hardware e biometria per autenticazione resistente al phishing." }, 4385 { "title": "Controllo accessi basato sui ruoli", "desc": "Permessi per versione, per lingua e per namespace. Gli utenti vedono solo ciò che serve." }, 4386 { "title": "Ereditarietà dei permessi", "desc": "I ruoli fluiscono dai progetti parent ai child nei setup multi-tenant. Controllo accessi coerente su tutti i tenant." }, 4387 { "title": "Trattamento conforme al GDPR", "desc": "I dati sono trattati in conformità al GDPR. Azienda svizzera con gestione trasparente dei dati." } 4388 ], 4389 "cta": "Dettagli sulla sicurezza â" 4390 }, 4391 "support": { 4392 "heading": "Pronti ad allineare il vostro team â o vi serve aiuto per iniziare?", 4393 "subtitle": "Fate rispondere le vostre domande sull'integrazione di Locize da un membro del team.", 4394 "cta": "Contattateci!" 4395 } 4396} 4397`,Tc=`{ 4398 "meta": { 4399 "title": "Locize â Piattaforma di localizzazione e translation management", 4400 "description": "Locize collega sviluppo e traduzione. Localizzazione continua per sviluppatori, traduttori e team di prodotto. Costruita dai creatori di i18next." 4401 }, 4402 "marqueeTitle": "Scelta da team in tutto il mondo", 4403 "hero": { 4404 "badge": "Una piattaforma per localizzare l'intero prodotto", 4405 "rotatingHeadlines": [ 4406 "Rilasciate traduzioni\\nsenza nuovi deploy\\ndell'app", 4407 "Il backend di traduzione\\nnativo per i18next", 4408 "Le vostre traduzioni IA,\\nrevisionate e coerenti,\\nlive senza deploy.", 4409 "Localizzazione continua\\nper sviluppatori\\ne traduttori" 4410 ], 4411 "subtitle": "Locize è una piattaforma di localizzazione che collega il vostro codice e setup i18n ai traduttori e distribuisce aggiornamenti di traduzione in modo continuo, senza bloccare i rilasci.", 4412 "builtByPrefix": "Costruita dai creatori di ", 4413 "builtByLink": "i18next", 4414 "builtByDot": ".", 4415 "worksWithPrefix": "Funziona con ", 4416 "worksWithLink": "qualsiasi libreria i18n", 4417 "worksWithSuffix": " e qualsiasi workflow.",
4418 "swissNoticeHtml": "ð¨ð Resa disponibile da un'<a class=\\"brand-link\\" href=\\"{{swissHref}}\\">azienda svizzera</a>.", 4419 "bullets": [ 4420 "Automatizzate il workflow e rilasciate prodotti globali più velocemente.", 4421 "Gli sviluppatori restano in code/CI; i traduttori lavorano in una UI dedicata.", 4422 "Workflow di review e versioni: trasparenza per engineering lead, prodotto e localizzazione.", 4423 "Distribuite via CDN/API così gli aggiornamenti di traduzione non richiedono un nuovo deploy dell'app." 4424 ], 4425 "primaryCta": "Registrati gratis", 4426 "secondaryCta": "Scopri come funziona", 4427 "docsLink": "Docs", 4428 "demoLink": "Guarda la demo", 4429 "servicesLink": "Servizi", 4430 "trialBadge": "Prova 14 giorni · funzionalità complete · nessuna carta", 4431 "planBadgeHtml": "Poi scegli <a class=\\"link\\" href=\\"{{pricingHref}}#plan=fixed\\">Free</a> (per sempre) o qualsiasi piano a pagamento", 4432 "imageAlt": "Locize: il ponte tra localizzazione e sviluppo", 4433 "bridgeCaption": "Colmate il divario tra sviluppatori, product manager e traduttori.", 4434 "roleCards": [ 4435 { "id": "developers", "title": "Per sviluppatori", "desc": "CLI, API e integrazione i18next nativa. Zero gestione manuale dei file JSON." }, 4436 { "id": "managers", "title": "Per manager", "desc": "Controllo costi a consumo, workflow di review e metriche sulla salute del progetto." }, 4437 { "id": "translators", "title": "Per traduttori", "desc": "Tool CAT assistito dall'IA, editor in-context e gestione del glossario." } 4438 ] 4439 }, 4440 "whatIsLocize": { 4441 "title": "Cos'è Locize", 4442 "titleSmall": "(in un minuto)", 4443 "intro": "Locize collega engineering e localizzazione: le chiavi fluiscono dalla codebase, i traduttori lavorano in una UI e la vostra app riceve aggiornamenti in modo continuo.", 4444 "steps": [ 4445 { "label": "Sync", "title": "Dal codice a Locize", "desc": "Inviate nuove chiavi e stringhe sorgente via CLI/CI, oppure collegatevi direttamente dal vostro setup i18n." }, 4446 { "label": "Tradurre / Review", "title": "UI + workflow", "desc": "Traduttori e revisori lavorano in una UI dedicata con ruoli, passaggi di review e controlli di qualità ." }, 4447 { "label": "Distribuire", "title": "Aggiornamenti a runtime", "desc": "Distribuite le traduzioni via CDN/API così gli aggiornamenti non devono aspettare un nuovo deploy completo." } 4448 ], 4449 "typicalFlowTitle": "Flusso tipico", 4450 "typicalFlowSubtitle": "Dalle chiavi mancanti alla consegna a runtime", 4451 "flowSteps": ["strumenta l'app", "invio automatico chiavi mancanti", "workflow di traduzione", "l'app preleva gli aggiornamenti"], 4452 "flowWorkflowSubsteps": ["auto-traduzione (IA/MT)", "review & correzione", "pubblicazione automatica"], 4453 "roleCards": [ 4454 { "title": "Per sviluppatori", "desc": "Integrate una volta, automatizzate il sync in CI e basta con il giocoliere manuale di file." }, 4455 { "title": "Per engineering lead", "desc": "Riducete il rischio di rilascio con trasparenza, ruoli e distribuzione versionata." }, 4456 { "title": "Per team di localizzazione", "desc": "Traducete in una UI con passaggi di review, controlli QA e contesto." } 4457 ] 4458 }, 4459 "socialProof": { 4460 "title": "Si inserisce nel vostro stack", 4461 "subtitle": "Tenete chiavi e rilasci in code/CI. Lasciate che traduttori e revisori lavorino in una UI dedicata. Distribuite gli aggiornamenti via CDN/API quando siete pronti.", 4462 "badges": ["i18next", "CI/CD", "Workflow di review", "Distribuzione CDN/API", "Pre-traduzione IA/MT"], 4463 "builtByLabel": "Costruita dai creatori di", 4464 "worksWithAny": "Funziona con qualsiasi libreria i18n e qualsiasi workflow.", 4465 "integrationHubTitle": "Si integra nel vostro workflow esistente", 4466 "integrationHubIntroHtml": "Che usiate i18next, <a class=\\"brand-link\\" href=\\"{{i18nLibsHref}}\\">altre librerie i18n</a>, framework web, SDK mobile o semplici chiamate API â Locize è la single source of truth per le vostre traduzioni.", 4467 "integrations": [ 4468 { "name": "i18next" }, 4469 { "name": "React" }, 4470 { "name": "Vue" }, 4471 { "name": "Angular" }, 4472 { "name": "Next.js" }, 4473 { "name": "Node.js" }, 4474 { "name": "CLI / CI-CD" }, 4475 { "name": "API" }, 4476 { "name": "Plugin Figma" }, 4477 { "name": "Mobile (iOS/Android)" }, 4478 { "name": "Diversi formati di file", "href": "/file-formats" }, 4479 { "name": "PHP / Python / Java / .NET" } 4480 ], 4481 "quickLinks": [ 4482 { "label": "i18next", "href": "/i18next", "kind": "outline" }, 4483 { "label": "Docs", "href": "/docs", "kind": "ghost" }, 4484 { "label": "Come funziona", "href": "/how-it-works", "kind": "ghost" }, 4485 { "label": "Traduzione IA", "href": "/ai", "kind": "ghost" }, 4486 { "label": "Collega il tuo assistente IA via MCP", "href": "/docs/integration/mcp", "kind": "ghost" } 4487 ] 4488 }, 4489 "developerQuickstart": { 4490 "title": "Valutazione pratica veloce", 4491 "titleSmall": "(con un esempio i18next)", 4492 "intro": "Volete verificare rapidamente il percorso di integrazione? Ecco una traccia di setup pratica e la via più breve a un progetto funzionante.", 4493 "quickstartLabel": "Quickstart", 4494 "quickstartTitle": "Collegate l'app e rilasciate traduzioni in modo continuo", 4495 "stepsHtml": [ 4496 "Registratevi per una prova di 14 giorni con funzionalità complete, senza carta. Durante o dopo la prova, scegliete il <a class=\\"brand-link\\" href=\\"{{pricingHref}}#plan=fixed\\">piano Free</a> (per sempre) o un piano a pagamento per mantenere il progetto.", 4497 "Collegate il setup i18n (i18next è il più comune)", 4498 "Sincronizzate le risorse via CLI/CI o distribuite via CDN", 4499 "Lasciate che i traduttori lavorino nella UI o nell'editor in-context" 4500 ], 4501 "primaryCta": "Crea un progetto gratuito", 4502 "secondaryCta": "Apri i docs", 4503 "shortcutsLabel": "Scorciatoie", 4504 "shortcutLinks": [ 4505 { "label": "Integrazione i18next", "href": "/i18next" }, 4506 { "label": "Guida alla localizzazione JavaScript", "href": "/javascript-localization" }, 4507 { "label": "Servizi", "href": "/services" }, 4508 { "label": "Prezzi", "href": "/pricing" } 4509 ], 4510 "codeLabel": "Codice", 4511 "codeTitle": "Setup i18next tipico (backend)", 4512 "codeIntro": "Collegate Locize come backend i18next e mantenete le traduzioni sincronizzate senza giochi di prestigio con i file.", 4513 "codeFilename": "i18next (esempio)", 4514 "alreadyHaveTitle": "Avete già un progetto i18next?", 4515 "alreadyHaveIntro": "Eseguite questo dalla root del repo, nessuna configurazione necessaria.", 4516 "fullPathLink": "Vedi il percorso di migrazione completo â", 4517 "demoVideoTitle": "Demo Locize: workflow di localizzazione continua" 4518 }, 4519 "whyChoose": { 4520 "prefix": "Perché i nostri clienti hanno scelto", 4521 "brand": "Locize?", 4522 "intro": "Una piattaforma di localizzazione che collega prodotto, engineering e traduttori senza aggiungere attriti al rilascio.", 4523 "benefitsLabel": "Vantaggi", 4524 "bullets": [ 4525 "Sync automatico delle chiavi mancanti da i18next, nessun export manuale", 4526 "CLI e GitHub Actions per le pipeline CI/CD", 4527 "Pricing mensile fisso, nessuna sorpresa per utente o per parola", 4528 "Integrazioni & compatibilità CI/CD", 4529 "Workflow di review con accessi basati sui ruoli e audit trail", 4530 "Aggiornamenti in tempo reale via CDN" 4531 ], 4532 "experienceLabel": "Esperienza cliente", 4533 "experienceTitle": "Risparmiate tempo e snellite il processo di traduzione", 4534 "whyLinkLabel": "Perché Locize", 4535 "quote": "Abbiamo ridotto i passaggi manuali e reso la localizzazione una parte affidabile della pipeline di rilascio. Gli aggiornamenti vanno in produzione in modo continuo, senza bloccare i rilasci.", 4536 "attributionName": "Team di engineering, cliente Locize", 4537 "attributionContextHtml": "Workflow di <a class=\\"brand-link\\" href=\\"{{continuousHref}}\\">localizzazione continua</a>", 4538 "badges": ["CI", "CDN", "QA"] 4539 }, 4540 "featureGrid": { 4541 "title": "Tutto ciò che serve per gestire la localizzazione come engineering", 4542 "subtitle": "Un workflow moderno di translation management che si inserisce in CI/CD e mantiene i team allineati.", 4543 "items": [ 4544 { "title": "Tenete sincronizzate le chiavi di traduzione", "body": "Rilevate le chiavi mancanti, inviate automaticamente nuovi segmenti e mantenete coerenti le stringhe sorgente tra i rilasci." }, 4545 { "title": "Rilasciate traduzioni senza nuovi deploy", "body": "Ogni altro TMS vi dà un file. Locize vi dà un URL. Pubblicate aggiornamenti tramite il CDN di Locize e le app prelevano i contenuti più recenti all'istante, niente build, niente deploy." }, 4546 { "title": "Pensata per i team di prodotto", "body": "Date a traduttori e revisori una UI dedicata mentre gli sviluppatori continuano a lavorare nel loro workflow esistente." }, 4547 { "title": "150+ lingue, 50 versioni e override per tenant, tutto da un unico progetto", "body": "Supportate più ambienti, versioni e lingue con un processo che cresce con il vostro prodotto." }, 4548 { "title": "Controlli di qualità chiari", "body": "Revisionate le modifiche, validate la completezza e riducete le regressioni con workflow strutturati." }, 4549 { "title": "Diversi formati di file", "bodyHtml": "Importate XLIFF, Gettext, Android strings, RESX, Fluent e altri. Esportate in qualsiasi formato richieda il vostro stack. <a class=\\"link\\" href=\\"{{fileFormatsHref}}\\">Vedi tutti i formati â</a>" }, 4550 { "title": "Override di traduzione per cliente", "bodyHtml": "I team SaaS possono dare a ogni cliente un proprio strato di traduzioni, senza gestire progetti separati. <a class=\\"link\\" href=\\"{{multiTenantHref}}\\">Scopri il multi-tenant â</a>" }, 4551 { "title": "Usa Locize dal tuo assistente IA", "bodyHtml": "Non un altro agente IA brandizzato: una piattaforma che voi controllate, con le vostre chiavi LLM. Collegate Claude, Cursor o VS Code alle vostre traduzioni tramite il <a class=\\"link\\" href=\\"{{mcpHref}}\\">server MCP di Locize</a> e gestitele senza lasciare l'ambiente di sviluppo." }, 4552 { "title": "Onboard in meno di 10 minuti", "body": "Iniziate in piccolo: un progetto, qualche namespace e un processo ripetibile che potete standardizzare in seguito." } 4553 ] 4554 }, 4555 "aiPositioning": { 4556 "title": "L'IA traduce. Locize si assicura che sia corretto.", 4557 "intro": "I tool IA sono eccellenti nel generare traduzioni. Ciò che sfugge loro è tutto il contesto: le 15 chiavi aggiunte nell'ultimo sprint, il fatto che \\"drive\\" nella vostra app significhi archiviazione, il tono che un revisore ha già c
4557orretto tre volte. Locize avvolge la vostra IA, con Locize AI o con le vostre chiavi LLM: controlla, revisiona e versiona ciò che l'IA produce, e distribuisce il risultato senza deploy.", 4558 "ctaLabel": "Perché non usare solo l'IA?" 4559 }, 4560 "testimonials": { 4561 "title": "Non fidatevi solo della nostra parola", 4562 "subtitle": "I team usano Locize per togliere la traduzione dal percorso critico.", 4563 "moreCta": "Altre storie di clienti" 4564 }, 4565 "faq": { 4566 "title": "Domande frequenti", 4567 "subtitle": "Risposte rapide per aiutarvi a valutare Locize.", 4568 "docsCta": "Vai ai docs", 4569 "comparePromptHtml": "Cercate un confronto? <a href=\\"{{compareHref}}\\">Vedi come Locize si confronta con le alternative â</a>", 4570 "items": [ 4571 { "q": "A cosa serve Locize?", "aHtml": "<p class=\\"m-0\\">Locize aiuta i team a gestire le traduzioni e a distribuirle in modo continuo. Gli sviluppatori la integrano nel loro setup i18n, mentre traduttori e revisori lavorano in una UI dedicata.</p>" }, 4572 { "q": "Posso integrare Locize con i18next?", "aHtml": "<p class=\\"m-0\\">Sì. Locize è comunemente usata insieme ai workflow i18next (compresa l'automazione per chiavi mancanti e sync delle risorse).</p>" }, 4573 { "q": "Devo fare il redeploy per pubblicare aggiornamenti di traduzione?", "aHtml": "<p class=\\"m-0\\">In genere no. Le traduzioni possono essere distribuite tramite il CDN di Locize così le applicazioni prelevano le ultime versioni senza un redeploy completo.</p>" }, 4574 { "q": "Da dove dovrei iniziare?", "aHtml": "<p class=\\"m-0\\">Iniziate dall'introduzione nella documentazione e collegate Locize al vostro setup i18n. Potete poi caricare le chiavi esistenti o lasciar rilevare e sincronizzare automaticamente le chiavi mancanti.</p>" } 4575 ] 4576 }, 4577 "finalCta": { 4578 "title": "Iniziate a localizzare oggi", 4579 "subtitle": "Create un progetto, collegate il vostro setup i18n e pubblicate traduzioni in modo continuo.", 4580 "trialBadge": "Prova gratuita: nessuna carta richiesta", 4581 "planBadgeHtml": "<a class=\\"link mr-1\\" href=\\"{{pricingHref}}#plan=fixed\\">Piano Free</a>disponibile", 4582 "demoQuestionHtml": "Cercate una demo call? <a class=\\"no-underline text-white/70 hover:text-white/100\\" href=\\"{{whyNoSalesHref}}\\">Leggete perché preferiamo il codice alle call.</a>", 4583 "primaryCta": "Registrati gratis", 4584 "secondaryCta": "Leggi i docs" 4585 } 4586} 4587`,Ec=`{ 4588 "meta": { 4589 "title": "Come funziona - Locize", 4590 "description": "Dai workflow basati su file alla localizzazione continua completamente automatizzata â scoprite come Locize si integra nel vostro stack." 4591 }, 4592 "hero": { 4593 "heading": "Come funziona", 4594 "subtitleHtml": "Usate Locize come si adatta al vostro team: dai classici workflow basati su file fino alla localizzazione continua completamente automatizzata. Vedetelo applicato alla <a class=\\"brand-link\\" href=\\"{{websiteHref}}\\">localizzazione di siti web</a>, alla <a class=\\"brand-link\\" href=\\"{{softwareHref}}\\">localizzazione software</a> e allo <a class=\\"brand-link\\" href=\\"{{jsHref}}\\">stack JavaScript</a>." 4595 }, 4596 "fileBased": { 4597 "title": "Gestione basata su file", 4598 "subtitle": "Per i team che preferiscono il controllo manuale sui propri asset di traduzione.", 4599 "imageAlt": "Editor Locize", 4600 "featureTitle": "Import / export classico", 4601 "p1": "Lavorate con i formati che conoscete. Caricate i vostri file JSON, XLIFF o Gettext, gestiteli nel nostro editor altamente produttivo ed esportateli di nuovo nel vostro repository.", 4602 "p2Html": "<strong>Il vantaggio:</strong> controllo manuale completo con la potenza della Smart Translation Memory di Locize e dei <a href=\\"{{aiHref}}\\">suggerimenti IA</a>.", 4603 "p3Html": "Scoprite di più sui <a href=\\"{{formatsHref}}\\" target=\\"_blank\\" rel=\\"noreferrer\\">formati supportati</a>." 4604 }, 4605 "automated": { 4606 "title": "Pipeline automatizzate", 4607 "subtitle": "Sincronizzate la localizzazione con il vostro workflow CI/CD o Git.", 4608 "imageAlt": "CLI Locize", 4609 "featureTitle": "CLI, API e GitHub Actions", 4610 "p1Html": "Eliminate l'«intermediario umano». Usate la nostra <a href=\\"{{apiHref}}\\" target=\\"_blank\\" rel=\\"noreferrer\\">API</a>, <a href=\\"https://github.com/locize/locize-cli#synchronize-locize-with-your-repository-or-any-other-local-directory\\" target=\\"_blank\\" rel=\\"noreferrer\\">il tool CLI di sync</a>, la <a href=\\"https://github.com/locize/download\\" target=\\"_blank\\" rel=\\"noreferrer\\">Download Action</a> o la <a href=\\"https://github.com/locize/sync\\" target=\\"_blank\\" rel=\\"noreferrer\\">Sync Action</a> per mantenere le traduzioni sincronizzate e scaricare i file più recenti a ogni build.", 4611 "p2Html": "<strong>Il vantaggio:</strong> codebase e traduzioni sono sempre sincronizzati, senza che uno sviluppatore debba mai più scaricare manualmente un file." 4612 }, 4613 "continuous": { 4614 "title": "Localizzazione continua", 4615 "subtitle": "L'approccio «hands-off» per la massima velocità .", 4616 "imageAlt": "Locize InContext", 4617 "featureTitle": "Live-sync via CDN", 4618 "p1": "Il setup zero-deployment: le traduzioni vanno online via CDN, senza modifiche al codice. La vostra app si collega direttamente al CDN di Locize.", 4619 "bulletsHtml": [ 4620 "<strong>Auto-discovery:</strong> il nuovo testo nel vostro codice viene aggiunto automaticamente a Locize.", 4621 "<strong>Pubblicazione istantanea:</strong> i traduttori salvano una modifica ed è immediatamente live nella vostra app.", 4622 "<strong>Zero deployment:</strong> aggiornate i testi, correggete refusi o aggiungete lingue senza modificare nemmeno una riga di codice.", 4623 "<strong>Tracking dell'utilizzo:</strong> <a href=\\"{{unusedHref}}\\">rilevate le chiavi inutilizzate</a> e smettete di mantenere traduzioni che nessuno vede." 4624 ], 4625 "outroHtml": "Vedete tutta la potenza in questo <a href=\\"https://youtu.be/osScyaGMVqo\\" target=\\"_blank\\" rel=\\"noreferrer\\">esempio video</a> per React.js. Scoprite più in basso le opzioni di integrazione con <a href=\\"{{i18nextHref}}\\">i18next</a> o con altri framework i18n." 4626 }, 4627 "branches": { 4628 "title": "CI/CD per le traduzioni", 4629 "subtitle": "I branch di traduzione funzionano come i branch di codice.", 4630 "imageAlt": "Branching in Locize", 4631 "featureTitle": "Branch che rispecchiano il vostro workflow di sviluppo", 4632 "p1": "Create un branch di traduzione quando aprite un feature branch. Traducete le nuove stringhe in isolamento. Mergete le traduzioni quando la funzionalità viene rilasciata. Traduttori e codebase restano sincronizzati, senza sorprese al rilascio.", 4633 "p2": "Testate le traduzioni in staging senza influenzare la produzione. Quando la funzionalità è pronta, mergete il branch di traduzione esattamente come fareste con il codice. Pensato per team che usano GitFlow, feature branch o qualsiasi altro workflow in cui le traduzioni devono restare isolate fino a quando un rilascio è pronto.", 4634 "linkHtml": "<a href=\\"{{branchesDocsHref}}\\">Scopri di più su branch vs versioni â</a>" 4635 }, 4636 "integrationFor": { 4637 "title": "C'è un'integrazione adatta a tutti", 4638 "subtitle": "Integrazioni per ogni stack: i18next, locizify, CLI/API e workflow basati su file." 4639 }, 4640 "integrations": { 4641 "locizify": { 4642 "tagline": "Localizzate qualsiasi sito web, senza modifiche al codice.", 4643 "whereLabel": "Dove usarlo:", 4644 "bulletsHtml": [ 4645 "Aggiungete un tag script e la vostra pagina è traducibile", 4646 "Nessuno sviluppatore necessario, adatto a team di content e marketer", 4647 "Plurali, interpolazione e routing dei namespace basato su URL inclusi", 4648 "Costruito su un'implementazione virtual-DOM sopra <a href=\\"{{i18nextHref}}\\">i18next</a>", 4649 "Funziona con WordPress, Shopify e altri site builder", 4650 "Editing in-context incluso: traducete direttamente sulla vostra pagina live" 4651 ], 4652 "cta": "Configura Locizify" 4653 }, 4654 "i18next": { 4655 "tagline": "Il miglior translation management per i18next.", 4656 "imageAlt": "Framework i18next", 4657 "whereLabel": "Dove usarlo:", 4658 "bulletsHtml": [ 4659 "Adatto a tutti i framework UI: React, Angular, Vue, jQuery, Next.js e altri", 4660 "Conoscenze di programmazione minime richieste", 4661 "Opzioni di traduzione flessibili come plurali, interpolazione, contesto, â¦", 4662 "Basato sul framework i18n open source <a href=\\"{{i18nextHref}}\\">i18next</a>", 4663 "Utilizzabile su web, mobile, desktop e server" 4664 ], 4665 "cta": "Integra con i18next" 4666 }, 4667 "other": { 4668 "title": "Altre opzioni", 4669 "tagline": "Soluzione basata su file.", 4670 "whereLabel": "Dove usarlo:", 4671 "bulletsHtml": [ 4672 "Da usare con framework come react-intl, vue-i18n, svelte-i18n e altri", 4673 "Forniamo uno script che semplifica il caricamento delle traduzioni nel vostro client JavaScript", 4674 "Ottimo per soluzioni basate su formati come XLIFF, MO, PO, Android XML, â¦", 4675 "Con la nostra <a href=\\"{{apiHref}}\\" target=\\"_blank\\" rel=\\"noreferrer\\">API</a>, <a href=\\"https://github.com/locize/locize-cli\\" target=\\"_blank\\" rel=\\"noreferrer\\">CLI</a> o <a href=\\"{{ghActionHref}}\\">GitHub Actions</a> potete costruire qualsiasi cosa vi venga in mente" 4676 ], 4677 "cta": "Vedi le opzioni di formato file" 4678 } 4679 }, 4680 "loop": { 4681 "title": "Il loop della localizzazione continua", 4682 "subtitle": "Locize trasforma la localizzazione in un processo di background che non blocca mai il vostro team.", 4683 "steps": [ 4684 { "title": "Estrarre", "desc": "Il vostro codice (i18next) rileva nuovo testo e lo invia automaticamente a Locize." }, 4685 { "title": "Tradurre", "desc": "Traduttori o IA raffinano i contenuti nel nostro editor ricco di contesto." }, 4686 { "title": "Revisionare", "desc": "I manager approvano le modifiche tramite workflow di review integrati." }, 4687 { "title": "Distribuire", "desc": "Le stringhe aggiornate vengono distribuite via CDN, immediatamente live per i vostri utenti." } 4688 ] 4689 }, 4690 "support": { 4691 "heading": "Vi serve aiuto per iniziare?", 4692 "subtitle": "Fate rispondere le vostre domande sull'integrazione di Locize da un membro del team.", 4693 "cta": "Contattateci!" 4694 } 4695} 4696`,Dc=`{ 4697 "meta": { 4698 "title": "Localizzazione multi-tenant: override di traduzione per cliente | Locize", 4699 "description": "Date a ogni cliente uno strato di traduzioni proprio con il modello parent/child di Locize. Nessuna duplicazione, override a livello namespace, accesso isolato." 4700 }, 4701 "intro": { 4702 "heading": "Localizzazione multi-tenant", 4703 "subtitle": "Date a ogni cliente uno strato di traduzioni proprio â senza gestire progetti separati o duplicare contenuti." 4704 }, 4705 "problem": { 4706 "heading": "Il problema", 4707 "p1": "Avete un prodotto SaaS multilingua e ogni cliente desidera personalizzazioni linguistiche proprie: terminologia di marca, espressioni regionali o traduzioni completamente diverse per certe stringhe.", 4708 "p2": "Senza supporto multi-tenant finite per duplicare interi progetti, scrivere una vostra logica di override o abusare di namespace e codici locale per simulare contenuti per-cliente. Nessuno di questi approcci scala.", 4709 "workaroundsLabel": "Workaround comuni che non scalano", 4710 "workarounds": [ 4711 "Duplicare l'intero progetto per ogni cliente", 4712 "Usare namespace aggiuntivi tipo «customer1_common»", 4713 "Codici locale personalizzati tipo «en-x-customer1»", 4714 "Script di merge manuali tra progetti" 4715 ] 4716 }, 4717 "solution": { 4718 "heading": "Come lo risolve Locize", 4719 "subtitle": "Un progetto parent contiene le traduzioni base. Ogni progetto tenant eredita tutto e sovrascrive solo ciò che gli serve.", 4720 "steps": [ 4721 { "title": "Progetto parent", "desc": "Il vostro progetto principale contiene le traduzioni base per tutte le lingue. à la single source of truth." }, 4722 { "title": "Progetti tenant", "desc": "Ogni cliente riceve un progetto child che eredita tutte le traduzioni dal parent. Solo le stringhe sovrascritte vengono salvate separatamente." }, 4723 { "title": "Distribuzione CDN", "desc": "Ogni tenant ha il proprio endpoint CDN. Il runtime unisce automaticamente le traduzioni parent e tenant." } 4724 ], 4725 "imageAlt": "Creare un nuovo progetto tenant in Locize", 4726 "cta": "Prova gratis" 4727 }, 4728 "capabilities": { 4729 "heading": "Funzionalità chiave", 4730 "subtitle": "Tutto ciò che vi serve per gestire traduzioni per-cliente in modo scalabile.", 4731 "items": [ 4732 { "title": "Ereditarietà parent/child", "desc": "I progetti tenant ereditano tutte le traduzioni dal parent. Le nuove chiavi nel parent appaiono automaticamente in ogni tenant." }, 4733 { "title": "Override a livello namespace", "desc": "I tenant sovrascrivono singole stringhe, il resto ricade sul parent. Solo i valori sovrascritti contano per l'utilizzo del tenant." }, 4734 { "title": "Opzioni di sync delle lingue", "desc": "Scegliete per tenant: sincronizzare automaticamente le lingue con il progetto parent o lasciare che ogni tenant gestisca la propria lista lingue." }, 4735 { "title": "Controllo accessi isolato", "desc": "Gli utenti tenant vedono solo il proprio progetto. I clienti non possono accedere ai dati di altri clienti o al progetto parent." }, 4736 { "title": "Fatturazione flessibile", "desc": "Assumetevi i costi voi o lasciate che ogni cliente paghi per il proprio utilizzo tenant. Il pricing si basa solo sui valori sovrascritti." },
4737 { "title": "Ereditarietà dei permessi", "desc": "Ruoli e permessi fluiscono dai progetti parent ai child. Imponete MFA e restrizioni di accesso in modo coerente su tutti i tenant." } 4738 ] 4739 }, 4740 "audience": { 4741 "heading": "Per chi è pensato", 4742 "items": [ 4743 { "title": "Aziende SaaS", "desc": "Lasciate che ogni cliente enterprise adatti il linguaggio del prodotto senza dover forkare il vostro setup di traduzione." }, 4744 { "title": "Costruttori di prodotti white-label", "desc": "Offrite un'esperienza linguistica completamente brandizzata per cliente con sforzo operativo minimo." }, 4745 { "title": "Agenzie con più clienti", "desc": "Mantenete una traduzione base comune e lasciate che ogni progetto cliente erediti e sovrascriva quando serve." }, 4746 { "title": "Aziende franchise e multi-brand", "desc": "Ogni marchio o regione riceve un proprio strato di traduzioni sopra una base aziendale comune." } 4747 ] 4748 }, 4749 "finalCta": { 4750 "heading": "Pronti per la localizzazione multi-tenant?", 4751 "subtitle": "Leggete la documentazione multi-tenant completa o iniziate una prova gratuita.", 4752 "trial": "Inizia la prova gratuita", 4753 "docs": "Docs multi-tenant" 4754 } 4755} 4756`,Oc=`{ 4757 "meta": { 4758 "title": "Servizi | Locize", 4759 "description": "Servizi aggiuntivi di Locize: translation memory, workflow di review, traduzione automatica, SSO, plugin Figma e partner di traduzione integrati." 4760 }, 4761 "learnMore": "Scopri di più", 4762 "hero": { 4763 "h1Prefix": "Servizi aggiuntivi di localizzazione e traduzione offerti da ", 4764 "h1Accent": "Locize", 4765 "subtitle": "Estendete la vostra esperienza Locize con questi servizi aggiuntivi.", 4766 "imageAlt": "Servizi", 4767 "registerCta": "Registrati gratis" 4768 }, 4769 "additional": { 4770 "heading": "Servizi aggiuntivi", 4771 "subtitle": "Estendete la vostra esperienza Locize con questi servizi aggiuntivi.", 4772 "cards": [ 4773 { "title": "Smart Translation Memory", "subtitle": "La translation memory intelligente.", "href": "/docs/translation-memory", "p1": "La Smart Translation Memory vi suggerisce segmenti già tradotti e vi aiuta a risparmiare tempo mantenendo le traduzioni coerenti." }, 4774 { "title": "Workflow di review", "subtitle": "Avviate un workflow di review quando le traduzioni cambiano.", "href": "/docs/review-workflow", "p1": "Attivate il workflow di review per lingue specifiche. A ogni modifica parte una review e il valore effettivo non cambia finché un suggerimento non viene accettato." }, 4775 { "title": "Traduzione automatica", "subtitle": "Automatizzate la traduzione (in modo intelligente).", "href": "/docs/automatic-translation", "p1": "Traducete automaticamente i nuovi contenuti in tutte le lingue di destinazione usando il provider scelto (es. Google Translate, DeepL o provider IA generativi).", "p2": "Con il workflow di traduzione automatica e saveMissing è possibile anche un'esperienza di sviluppo molto focalizzata." }, 4776 { "title": "Cronologia", "subtitle": "Tenete traccia di tutte le modifiche alle traduzioni.", "href": "/docs/history", "p1": "La cronologia permette di tracciare le ultime modifiche fatte alle traduzioni e di dimostrare in qualsiasi momento quando un frammento di contenuto è stato modificato." }, 4777 { "title": "SAML Single Sign-On (SSO)", "subtitle": "Accesso degli utenti tramite il vostro Identity Provider.", "href": "/docs/user-management#saml-single-sign-on-sso", "p1": "Date agli utenti accesso a Locize tramite un Identity Provider (IdP) a vostra scelta." }, 4778 { "title": "Plugin Figma", "subtitle": "Colmare il divario tra traduzione e product design.", "href": "/docs/integration/figma-plugin", "p1": "Validate i design con contenuti tradotti, riducete i cicli di feedback e inviate le traduzioni mancanti a Locize." }, 4779 { "title": "Multi-Tenant", "subtitle": "Traduzioni per cliente o override specifici per cliente.", "href": "/docs/multi-tenant", "p1": "Se offrite software personalizzato ai vostri clienti, prevedete traduzioni per tenant e consentite override quando serve." }, 4780 { "title": "Branch", "subtitle": "Lavorate in sicurezza sulle traduzioni tra versioni.", "href": "/docs/general-questions/should-i-use-versions-or-branches", "p1": "I branch vi aiutano a collaborare sulle traduzioni senza mettere a rischio lo stato di produzione.", "p2Html": "Usate i <a href=\\"/docs/guides/working-with-translators#use-branched-projects-branches\\" rel=\\"noreferrer\\">progetti branched</a> quando lavorate con i traduttori." }, 4781 { "title": "Rilevamento chiavi inutilizzate", "subtitle": "Trovate e rimuovete traduzioni che nessuno vede.", "href": "/docs/guides/find-unused-translations", "p1Html": "Tracciate quali chiavi di traduzione sono effettivamente usate nella vostra applicazione con il plugin <code>locize-lastused</code>. Filtrate per «non usata da» per trovare chiavi obsolete e fate pulizia con sicurezza.", "p2": "Smettete di pagare per mantenere traduzioni che non sono più nella vostra codebase." }, 4782 { "title": "Controlli & issue", "subtitle": "Individuate automaticamente i problemi di traduzione.", "href": "/docs/checks-issues", "p1": "Controlli di coerenza automatici: translation memory, applicazione del glossario, validazione di sintassi i18n, rilevamento di sorgente obsoleta, limiti massimi di caratteri e altro.", "p2": "Eseguite i controlli per segmento o in blocco, ignorate i falsi positivi e configurate quali controlli contano per il vostro progetto." }, 4783 { "title": "Altri serviziâ¦", "subtitle": "Slack, Microsoft Teams, glossario e altro.", "href": "/docs/integration/slack", "p1": "Le integrazioni con Slack e Microsoft Teams vi tengono informati sugli eventi rilevanti. Il supporto per il glossario aiuta a far rispettare la terminologia.", "p2": "C'è molto di più, e offriamo continuamente nuovi servizi." } 4784 ], 4785 "exploreCta": "Scopri come funziona"
4786 }, 4787 "partners": { 4788 "headingPrefix": "Partner di ", 4789 "headingAccent": "traduzione integrati", 4790 "subtitle": "Ordinate traduzioni direttamente dai nostri partner.", 4791 "howItWorksHtml": "Locize individua quali segmenti richiedono lavoro, li invia al partner e importa i risultati automaticamente. <a href=\\"/docs/ordering\\">Scoprite come funzionano gli ordini</a>.", 4792 "cards": [ 4793 { "logoAlt": "Supertext", "subtitle": "i prezzi dipendono dal vostro contratto", "bullets": ["La vostra soluzione all-in-one per una localizzazione di qualità su larga scala", "Dallo 0% al 100% di automazione: combina IA linguistica ed esperti umani su un'unica piattaforma", "Offre sia soluzioni di traduzione IA sia servizi di esperti per contenuti web e localizzazione di prodotto"] }, 4794 { "logoAlt": "TextMaster", "subtitle": "0,066 â 0,132 USD per parola", "bullets": ["Il vostro servizio di traduzione SaaS professionale", "Ideale per contenuti web semplici, cataloghi ad alto volume o documenti complessi", "Offre traduzione generale più ambiti specializzati come finanziario, tecnico e legale"] }, 4795 { "logoAlt": "BLEND", "subtitle": "0,079 â 0,139 USD per parola", "bullets": ["Soluzioni di localizzazione end-to-end per più mercati", "Comunità globale di traduttori e specialisti linguistici", "Piattaforma di traduzione self-service per progetti personali e aziendali"] }, 4796 { "logoAlt": "Translated", "subtitle": "i prezzi dipendono dal vostro contratto", "bullets": ["Servizi di traduzione e localizzazione professionali", "Combina competenze umane con strumenti IA avanzati", "Supporta un'ampia gamma di settori tra cui legale, marketing e tecnico"] } 4797 ] 4798 }, 4799 "alternatively": { 4800 "heading": "In alternativa potete:", 4801 "bulletsHtml": [ 4802 "<a href=\\"/docs/guides/working-with-translators#send-files\\" target=\\"_blank\\" rel=\\"noreferrer\\">Esportare e inviare i file</a> ai vostri traduttori", 4803 "<a href=\\"/docs/guides/working-with-translators#invite-them-to-your-project\\" target=\\"_blank\\" rel=\\"noreferrer\\">Invitarli</a> al vostro progetto", 4804 "Creare un nuovo <a href=\\"/docs/guides/working-with-translators#use-branched-projects-branches\\" target=\\"_blank\\" rel=\\"noreferrer\\">progetto branched</a> su Locize" 4805 ] 4806 }, 4807 "contact": { 4808 "heading": "Vi serve aiuto per iniziare?", 4809 "subtitle": "Fate rispondere le vostre domande sull'integrazione di Locize da un membro del team.", 4810 "cta": "Contattateci!" 4811 }, 4812 "finalCta": { 4813 "heading": "Smettete di aspettare. Iniziate a localizzare.", 4814 "subtitle": "Iniziate creando un nuovo progetto e traducete la vostra applicazione.", 4815 "register": "Registrati gratis", 4816 "pricing": "Vedi i prezzi" 4817 } 4818} 4819`,kc=`{ 4820 "meta": { 4821 "title": "TMS Swiss-made dal team i18next | Locize", 4822 "description": "Locize è il sistema di gestione delle traduzioni svizzero, costruito dal team dietro i18next. Doppia conformità FADP + GDPR, residenza dati UE, nessun rischio di acquisizione statunitense." 4823 }, 4824 "hero": { 4825 "badge": "ð¨ð Swiss-engineered · Swiss-registered · GDPR + FADP", 4826 "h1Prefix": "Locize, il TMS ", 4827 "h1Accent": "Swiss-engineered", 4828 "p1Html": "<b>Locize è un TMS Swiss-made per team di sviluppo.</b> Costruito e gestito da un'azienda registrata in Svizzera, lo stesso team dietro <a class=\\"brand-link\\" href=\\"https://www.i18next.com\\" target=\\"_blank\\" rel=\\"noreferrer\\">i18next</a> â una delle librerie di internazionalizzazione JavaScript più diffuse su npm. à l'unico TMS di proprietà svizzera nella categoria sviluppatori.", 4829 "p2": "Soggetto al diritto svizzero (FADP) e al diritto UE (GDPR): vince la regola più severa per i vostri dati di traduzione. Proprietà indipendente. Nessuna società madre statunitense, UE o di private equity. Nessuna pressione di acquisizione che possa cambiare la roadmap o il pricing.", 4830 "ctaTrial": "Inizia la prova gratuita", 4831 "ctaWhy": "Perché lo Swiss conta", 4832 "badges": ["Conforme FADP + GDPR", "Residenza dati UE (AWS Irlanda)", "Proprietà svizzera indipendente"], 4833 "tableTitle": "Come Locize si confronta sulla proprietà ", 4834 "tableHeaders": ["Vendor", "Paese", "Stato"], 4835 "tableRows": [ 4836 ["Locize", "ð¨ð Svizzera", "Indipendente", "highlight"], 4837 ["Lokalise", "ð±ð» Lettonia", "VC-finanziata", ""], 4838 ["Phrase", "ð©ðª Germania", "PE (Carlyle)", ""], 4839 ["Crowdin", "ðªðª Estonia / ðºð¦ Ucraina", "Privata", ""], 4840 ["Transifex", "ðºð¸ Stati Uniti", "Acquisita da XTM (gen. 2025)", ""] 4841 ], 4842 "tableFootnote": "Informazioni di proprietà pubbliche al maggio 2026. La proprietà svizzera mantiene Locize fuori dal CLOUD Act statunitense a livello societario." 4843 }, 4844 "whatSwiss": { 4845 "heading": "Cosa significa davvero «Swiss-made» per il vostro TMS", 4846 "subtitle": "Tre fatti concreti, niente fumo di marketing.", 4847 "items": [ 4848 { "title": "Azienda registrata in Svizzera", "p1": "Locize è gestita da un'azienda registrata in Svizzera. Soggetta al diritto svizzero compresa la legge federale rivista sulla protezione dei dati (revFADP), in vigore da settembre 2023.", "p2": "Nessuna società madre estera. Nessuna proprietà di private equity. Nessuna spirale di acquisizioni." }, 4849 { "title": "Swiss-engineered", "p1Html": "Locize è costruita dallo stesso team che ha creato e mantiene <a class=\\"brand-link\\" href=\\"https://www.i18next.com\\" target=\\"_blank\\" rel=\\"noreferrer\\">i18next</a>, una libreria di internazionalizzazione JavaScript su npm dal 2011, con un rewrite v2 nel 2015 e API
4849stabili da allora.", "p2": "La stessa disciplina di engineering che ha mantenuto i18next stabile per oltre un decennio è applicata alla piattaforma e alle API di Locize." }, 4850 { "title": "Residenza dati UE", "p1Html": "I dati di traduzione dei clienti sono ospitati in <b>AWS Irlanda</b>, dentro l'UE e soggetti al GDPR. La corrispondenza commerciale passa per hosting svizzero (Hostpoint AG).", "p2Html": "Vedi <a class=\\"brand-link\\" href=\\"{{securityHref}}\\">sicurezza & residenza dei dati</a> per il dettaglio infrastrutturale completo." } 4851 ] 4852 }, 4853 "whyMatters": { 4854 "heading": "Perché lo Swiss conta per i compratori di TMS", 4855 "subtitle": "La maggior parte dei confronti TMS si concentra su funzionalità e prezzi. Per settori regolamentati, organizzazioni del settore pubblico e team che pensano al rischio a lungo termine del fornitore, la giurisdizione è un fattore reale.", 4856 "items": [ 4857 { "title": "Doppia copertura regolatoria", "p1Html": "Locize è soggetta sia al <b>FADP svizzero</b> (revFADP da settembre 2023) sia al <b>GDPR UE</b> (tramite la residenza dei dati in AWS Irlanda). Quando le due regole differiscono, vince la più severa. Questa doppia copertura è inclusa nel nostro DPA, vedi <a class=\\"brand-link\\" href=\\"{{dpaHref}}\\">DPA</a>." }, 4858 { "title": "Nessun rischio di acquisizione", "p1": "L'infrastruttura di traduzione dovrebbe sopravvivere a un ciclo di hype. Locize è di proprietà indipendente: niente VC, niente PE, nessuna società madre estera. Pricing e roadmap non sono soggetti a pivot, repackaging o annunci di sunset guidati da un acquirente." }, 4859 { "title": "Stabilità API a lungo termine", "p1Html": "Lo stesso team svizzero mantiene <a class=\\"brand-link\\" href=\\"https://www.i18next.com\\" target=\\"_blank\\" rel=\\"noreferrer\\">i18next</a> dal rewrite v2 del 2015 con retrocompatibilità intatta. L'SDK e l'API di Locize seguono la stessa disciplina: niente riscritture trimestrali del vostro codice di integrazione." }, 4860 { "title": "Stabilità del fornitore", "p1": "Le aziende software svizzere hanno una storia di longevità superiore a quella dei concorrenti finanziati da VC. Per qualcosa di fondamentale come la vostra infrastruttura di traduzione, la stabilità del fornitore conta più della parità di funzionalità ." } 4861 ] 4862 }, 4863 "i18nextStory": { 4864 "heading": "Costruito su open source svizzero: la connessione con i18next", 4865 "subtitle": "Locize non è solo un TMS che casualmente supporta i18next. à la piattaforma gestita dallo stesso team svizzero che ha creato la libreria.", 4866 "items": [ 4867 { "title": "i18next: la base open source", "p1Html": "<a class=\\"brand-link\\" href=\\"https://www.i18next.com\\" target=\\"_blank\\" rel=\\"noreferrer\\">i18next</a> è arrivata su npm nel 2011 ed è cresciuta fino a diventare una delle librerie di internazionalizzazione JavaScript più diffuse, coprendo web, Node.js e un profondo ecosistema di integrazioni framework (React, Vue, Angular, Svelte, Next.js e altri).", "p2Html": "Dal rewrite v2 del 2015, la libreria ha mantenuto API stabili e retrocompatibilità , una disciplina rara nell'ecosistema JavaScript. Vedi la <a class=\\"brand-link\\" href=\\"https://www.i18next.com/misc/the-history-of-i18next\\" target=\\"_blank\\" rel=\\"noreferrer\\">storia di i18next</a>." }, 4868 { "title": "Locize: l'estensione gestita naturale", "p1": "Fondata nel 2016, Locize è stata costruita dal team di i18next come piattaforma di traduzione gestita che la libreria OSS volutamente non include: UI per traduttori, distribuzione via CDN, traduzione IA, workflow di review, audit log.", "p2Html": "Il risultato: integrazione i18next più profonda di qualsiasi altro TMS, con la stessa cultura di engineering svizzera applicata al lato piattaforma. Vedi la documentazione <a class=\\"brand-link\\" href=\\"{{i18nextVsLocizeHref}}\\">i18next vs. Locize</a>." } 4869 ] 4870 }, 4871 "customers": { 4872 "heading": "Scelti dalle organizzazioni svizzere", 4873 "subtitle": "Locize gestisce le traduzioni per alcuni dei prodotti multilingua più impegnativi della Svizzera.", 4874 "moreCta": "Altre storie di clienti" 4875 }, 4876 "compliance": { 4877 "heading": "Compliance e residenza dei dati, in dettaglio", 4878 "subtitle": "Nessuna promessa di marketing su dove vivono i vostri dati. Ecco i fatti.", 4879 "headers": ["Voce", "Posizione / Stato"], 4880 "rows": [ 4881 ["Giurisdizione aziendale", "ð¨ð Svizzera â soggetta a revFADP"], 4882 ["Dati di traduzione dei clienti", "ð®ðª AWS Irlanda â soggetti al GDPR"], 4883 ["Corrispondenza commerciale", "ð¨ð Svizzera â Hostpoint AG"], 4884 ["Notifiche generate dall'app", "Amazon SES su AWS"], 4885 ["Data Processing Agreement", "<a class=\\"brand-link\\" href=\\"{{dpaHref}}\\">Disponibile â copre FADP + GDPR</a>"], 4886 ["Subprocessor", "<a class=\\"brand-link\\" href=\\"{{privacyHref}}\\">Elencati nell'informativa sulla privacy</a>"], 4887 ["Dettaglio completo sicurezza & infrastruttura", "<a class=\\"brand-link\\" href=\\"{{securityHref}}\\">Sicurezza in Locize</a>"] 4888 ], 4889 "footnote": "La residenza dei dati di traduzione in AWS Irlanda è una scelta deliberata: mantiene Locize dentro il perimetro regolatorio UE pur rimanendo l'entità aziendale svizzera. Si applicano entrambe le regolamentazioni; vince la più severa." 4890 }, 4891 "vsAgencies": { 4892 "heading": "TMS svizzero vs agenzie di traduzione svizzere", 4893 "subtitle": "Quando si cerca «TMS Swiss-made», spesso si confondono due cose diverse. Ecco la distinzione.", 4894 "agencyTitle": "Agenzie di traduzione svizzere", 4895 "agencyP1": "Aziende come SwissGlobal, Apostroph Group, Comtexto e TTN forniscono la traduzione umana come servizio. V
4895oi inviate i contenuti sorgente; loro restituiscono le traduzioni.", 4896 "agencyP2": "Eccellenti per contenuti ad alto rischio: documenti legali, copy di marketing, traduzioni certificate. Meno adatte per la localizzazione software continua, dove nuove stringhe appaiono in ogni sprint.", 4897 "tmsTitle": "TMS svizzero (Locize)", 4898 "tmsP1": "Locize è software: una piattaforma di gestione delle traduzioni che si integra nel vostro workflow di sviluppo tramite API, CDN e CI/CD. Gestisce il livello di consegna tecnico che le agenzie non coprono.", 4899 "tmsP2": "Potete abbinare Locize a qualsiasi agenzia di traduzione (svizzera o no) per il lavoro di traduzione umana. Molti dei nostri clienti fanno esattamente questo." 4900 }, 4901 "faqSection": { 4902 "heading": "Domande frequenti", 4903 "subtitle": "Se la vostra domanda manca, scrivete a [email protected]" 4904 }, 4905 "faqItems": [ 4906 { "q": "Cos'è un TMS Swiss-made?", "a": "Un TMS Swiss-made è un TMS costruito e gestito da un'azienda registrata in Svizzera e soggetto al diritto svizzero (revFADP / FADP da settembre 2023). Nella categoria TMS orientata agli sviluppatori, Locize è l'unico fornitore di proprietà svizzera â costruito dal team svizzero dietro i18next, con dati di traduzione ospitati in AWS Irlanda (UE / GDPR) e piena conformità FADP+GDPR. Da distinguere dalle agenzie di traduzione svizzere (SwissGlobal, Apostroph Group, Comtexto, TTN) che forniscono traduzione umana come servizio invece di software per gestire le traduzioni nei workflow di sviluppo." }, 4907 { "q": "Locize è Swiss-made?", "a": "Sì. Locize è stata fondata nel 2016 e opera da un'azienda registrata in Svizzera. Il team dietro Locize ha anche costruito e mantiene i18next, una delle librerie di internazionalizzazione JavaScript più diffuse su npm (lanciata nel 2011). L'azienda è di proprietà indipendente (nessuna società madre statunitense, UE o di private equity) e soggetta al diritto svizzero compresa la legge federale rivista sulla protezione dei dati (FADP / DSG)." }, 4908 { "q": "Quali sono i vantaggi di un TMS Swiss-made?", "a": "Tre vantaggi concreti: (1) doppia copertura regolatoria â FADP svizzero e GDPR UE si applicano entrambi ai vostri dati di traduzione, con la regola più severa che vince; (2) stabilità di proprietà â Locize è di proprietà svizzera e indipendente, senza pressione di acquisizione che possa cambiare la roadmap del prodotto o il pricing; (3) stabilità API a lungo termine â lo stesso team svizzero mantiene i18next con API stabili dal rewrite v2 del 2015 e applica la stessa disciplina di engineering a Locize." }, 4909 { "q": "Dove sono memorizzati i miei dati di traduzione Locize?", "a": "I dati di traduzione dei clienti sono ospitati su Amazon Web Services (AWS) in Irlanda, dentro l'UE e soggetti al GDPR. La corrispondenza commerciale (es. [email protected]) è ospitata in Svizzera da Hostpoint AG. Le notifiche generate dall'app passano per Amazon SES. Vedi la pagina sicurezza per il dettaglio infrastrutturale completo." }, 4910 { "q": "Locize è conforme a FADP e GDPR?", "a": "Sì, entrambi. Poiché Locize è un'azienda svizzera con infrastruttura dati basata nell'UE, si applicano sia la legge svizzera sulla protezione dei dati (revFADP, in vigore da settembre 2023) sia il GDPR UE. à disponibile un Data Processing Agreement (DPA) che copre entrambe le regolamentazioni. Vedi /dpa. I subprocessor sono elencati nella nostra informativa sulla privacy." }, 4911 { "q": "Cosa distingue Locize dalle agenzie di traduzione svizzere come SwissGlobal, Apostroph o TTN?", "a": "Quelle sono agenzie di servizi di traduzione: forniscono traduttori umani come servizio. Locize è una piattaforma di gestione delle traduzioni: software per i team di sviluppo per integrare le traduzioni in app web e mobile tramite API, CDN e pipeline CI/CD. Potete abbinare Locize a qualsiasi agenzia di traduzione (svizzera o no) per il lavoro di traduzione umana; la piattaforma gestisce il livello di consegna tecnico che le agenzie non coprono." }, 4912 { "q": "Un TMS svizzero crea attrito per le pipeline CI/CD statunitensi o UE?", "a": "No. Locize è API-first e distribuita via CDN con infrastruttura edge globale. L'integrazione con GitHub Actions, GitLab CI, Vercel, Netlify o qualsiasi altra pipeline di build è identica indipendentemente da dove si trovano i vostri build runner. L'aspetto svizzero si applica all'entità aziendale e al quadro legale, non alla superficie di consegna tecnica." }, 4913 { "q": "Perché il paese di un fornitore TMS dovrebbe contare?", "a": "Per la maggior parte degli acquirenti non conta. Ma per settori regolamentati, organizzazioni del settore pubblico o aziende che danno priorità alla stabilità del fornitore a lungo termine, può essere significativo. I fornitori svizzeri sono soggetti alle regole svizzere di neutralità e divulgazione della proprietà , restano fuori dal CLOUD Act statunitense a livello societario e hanno una storia di longevità del software (i prodotti software svizzeri tendono a sopravvivere ai concorrenti finanziati da VC). Specificamente per Locize, la connessione di engineering svizzero con i18next è un forte segnale di longevità delle API: la libreria i18next mantiene la retrocompatibilità da oltre un decennio." } 4914 ], 4915 "related": { 4916 "linksHtml": "Correlati: <a class=\\"brand-link\\" href=\\"{{securityHref}}\\">Sicurezza & residenza dei dati</a> · <a class=\\"brand-link\\" href=\\"{{dpaHref}}\\">DPA (FADP + GDPR)</a> · <a class=\\"brand-link\\" href=\\"{{euAccHref}}\\">Localizzazione EU Accessibility Act</a> · <a class=\\"brand-link\\" href=\\"{{i18nextVsLocizeHref}}\\">i18next vs. Locize</a>
4916 · <a class=\\"brand-link\\" href=\\"{{compareHref}}\\">Confronta Locize con le alternative</a>" 4917 }, 4918 "finalCta": { 4919 "title": "Un TMS Swiss-engineered, costruito per team di sviluppo.", 4920 "subtitle": "Prova gratuita di 14 giorni. Nessuna carta di credito richiesta.", 4921 "primaryLabel": "Registrati gratis" 4922 } 4923} 4924`,Ac=`{ 4925 "meta": { 4926 "title": "Niente vendite. Solo engineering. - Locize", 4927 "description": "Perché Locize investe in engineering e prodotto invece che in team commerciali â e come questo migliora il vostro workflow di sviluppo." 4928 }, 4929 "hero": { 4930 "title1": "Niente vendite.", 4931 "title2": "Solo engineering.", 4932 "subtitle": "Locize gestisce migliaia di progetti attivi per una base clienti globale â da singoli sviluppatori ad aziende Fortune 500. E tutto questo con zero commerciali.", 4933 "cta1": "Inizia la prova gratuita", 4934 "cta2": "Leggi i docs" 4935 }, 4936 "philosophy": { 4937 "heading": "La scelta engineering-first", 4938 "intro": "La maggior parte delle aziende SaaS spende più per vendere il proprio prodotto che per svilupparlo. Noi abbiamo fatto l'opposto. Eliminando l'overhead di un classico reparto vendite, reinvestiamo ogni euro in ciò che conta di più: la vostra infrastruttura.", 4939 "pillars": [ 4940 { 4941 "title": "Reinvestimento in i18next", 4942 "desc": "Finanziamo lo sviluppo dell'ecosistema i18next, in modo che il framework i18n più diffuso rimanga aperto, veloce e moderno." 4943 }, 4944 { 4945 "title": "Innovazione TMS & workflow", 4946 "desc": "Miglioriamo continuamente l'app Locize, rilasciando funzionalità come branching, integrazione MCP e traduzione IA che permettono al vostro team di lavorare in modo più intelligente." 4947 }, 4948 { 4949 "title": "CDN di prima classe", 4950 "desc": "Il fatturato confluisce direttamente nella nostra rete edge globale e garantisce una distribuzione più veloce delle traduzioni ai vostri utenti." 4951 } 4952 ], 4953 "allocation": { 4954 "label": "Allocazione attuale delle risorse", 4955 "engineering": "ENGINEERING & PRODOTTO", 4956 "sales": "VENDITORI", 4957 "footnote": "* Costruiamo per gli sviluppatori, non per le slide del procurement." 4958 } 4959 }, 4960 "values": [ 4961 { 4962 "title": "Niente conoscenze sotto chiave", 4963 "desc": "Non vi serve una «discovery call» per vedere il nostro prodotto. I nostri docs sono pubblici, i prezzi trasparenti e la prova parte subito." 4964 }, 4965 { 4966 "title": "Supporto direttamente dalla fonte", 4967 "desc": "Parlate direttamente con gli ingegneri che costruiscono Locize e i18next. Niente «success manager» che leggono uno script." 4968 }, 4969 { 4970 "title": "Nessuna «tassa vendite»", 4971 "desc": "Prezzi competitivi perché non pagate provvigioni commerciali, budget di trasferta o CRM enterprise." 4972 }, 4973 { 4974 "title": "Nessun paywall artificiale", 4975 "desc": "I piani a prezzo fisso crescono con limiti chiari, visibili fin dall'inizio, e la capacità aggiuntiva si acquista a blocchi di cui conoscete il prezzo in anticipo. Nessun upgrade a sorpresa, nessun costo per postazione." 4976 } 4977 ], 4978 "finalCta": { 4979 "heading": "Non vogliamo vendervi nulla.", 4980 "subtitle": "Vogliamo aiutarvi a rilasciare. Inizia oggi la tua prova o guarda il nostro video demo.", 4981 "register": "Registrati gratis", 4982 "watchDemo": "Guarda il video demo" 4983 } 4984} 4985`,jc=`{ 4986 "meta": { 4987 "title": "Perché non usare semplicemente l'IA per tradurre? | Locize", 4988 "description": "Una valutazione onesta della traduzione IA: quando funziona, quando no e perché un TMS risolve problemi che l'IA non può risolvere." 4989 }, 4990 "hero": { 4991 "badge": "Una risposta onesta", 4992 "title1": "Perché non usare", 4993 "title2": "semplicemente l'IA per tradurre?", 4994 "p1Html": "Onestamente? Per progetti piccoli dovreste farlo. La traduzione IA è veloce, economica e sempre più valida. L'abbiamo <a class=\\"brand-link\\" href=\\"{{aiHref}}\\">integrata direttamente in Locize</a>, proprio per questo motivo.", 4995 "p2Html": "La domanda non è se l'IA possa tradurre le vostre stringhe. La domanda è se l'IA possa <strong>gestirle</strong> â tra un team, nel tempo, senza coinvolgere uno sviluppatore per ogni modifica." 4996 }, 4997 "distinction": { 4998 "aiTitle": "L'IA traduce le stringhe", 4999 "aiBody": "Da una stringa inglese, Claude o ChatGPT ne produce una francese â in oltre 95 lingue, con i segnaposto i18next intatti. Veloce, economica, di solito buona. Questo è davvero risolto. Usate l'IA per questo; lo facciamo anche noi.", 5000 "tmsTitle": "Un TMS le gestisce", 5001 "tmsBody": "Quali chiavi sono cambiate dalla scorsa settimana? Quali lingue sono incomplete? Come distribuite una correzione di testo senza deployment? Chi può modificare le traduzioni senza toccare il repo? Sono problemi di sistema. L'IA non li risolve." 5002 }, 5003 "problems": { 5004 "heading": "Dove il workflow DIY si rompe", 5005 "subtitle": "Sei problemi che emergono quando un prodotto reale cresce oltre lo sprint di traduzione iniziale.", 5006 "aiLabel": "Solo IA", 5007 "locizeLabel": "Locize", 5008 "items": [ 5009 { "title": "Gestire il ciclo di vita delle chiavi", "ai": "Traduce le stringhe che le date. Non ha idea se una chiave è stata aggiunta, modificata o rimossa.", "locize": "saveMissing rileva automaticamente le nuove chiavi durante lo sviluppo. Il rilevamento delle chiavi inutilizzate segnala traduzioni obsolete." }, 5010 { "title": "Contesto e coerenza", "ai": "«Drive» può essere un verbo, un luogo di archiviazione o un nome di marchio. Senza contesto, l'IA tira a indovinare.", "locize": "Termini di glossario e descrizioni delle chiavi vengono inseriti in ogni prompt IA. «Drive» significa sempre ciò che dite voi." }, 5011 { "title": "Distribuire una correzione di traduzione", "ai": "Eseguire script â committare JSON â aprire PR â review â merge â deploy. Questo è il ciclo completo per correggere un refuso.", "locize": "Il traduttore modifica nell'editor Locize â pubblica â
5011 la modifica è online in pochi secondi via CDN. Zero coinvolgimento degli sviluppatori." }, 5012 { "title": "Accesso per non-sviluppatori", "ai": "Dare a un traduttore o product manager accesso alle traduzioni significa dare accesso al vostro repo.", "locize": "I traduttori hanno la loro UI. Lavorano in modo indipendente, senza toccare la codebase o la pipeline di deployment." }, 5013 { "title": "Audit trail e cronologia", "ai": "Git blame è il vostro audit log. Buona fortuna a cercare quando e perché è cambiata una determinata traduzione.", "locize": "Le modifiche vengono registrate con chi e quando." }, 5014 { "title": "Staging vs produzione", "ai": "Lo gestite voi, di solito tramite file JSON o branch separati.", "locize": "Branch e versioni permettono di sviluppare le traduzioni per un prossimo rilascio in isolamento e poi fare merge â proprio come il vostro workflow Git." } 5015 ] 5016 }, 5017 "graduation": { 5018 "heading": "Già tutto su IA? Il percorso di crescita", 5019 "subtitle": "Non dovete buttare via la vostra pipeline LLM. Crescere significa tenere l'IA come traduttore e aggiungere intorno il livello di gestione, in quattro passi.", 5020 "mozillaHtml": "à esattamente il fallimento finito sui titoli quando Mozilla ha spostato i contenuti di supporto alla localizzazione IA-first e la storica comunità di volontari giapponese si è dimessa in blocco: la critica non era che l'IA traducesse, ma che <strong>nulla facesse rispettare terminologia e stile</strong>. La soluzione è la governance, non prompt migliori.", 5021 "steps": [ 5022 { "title": "Tenete la vostra IA, datele contesto", "body": "Portate la vostra chiave OpenAI, Gemini o Mistral, oppure il vostro endpoint compatibile OpenAI (o usate il servizio integrato). Locize inserisce glossario e styleguide in ogni prompt, così la terminologia smette di derivare." }, 5023 { "title": "Valutate ogni traduzione IA", "body": "La Quality Estimation valuta ogni traduzione IA da 0 a 1. I risultati affidabili vengono salvati subito; quelli incerti passano alla revisione umana invece di andare online in silenzio." }, 5024 { "title": "Rivedete ciò che conta, con tracciabilità ", "body": "I revisori lavorano nel contesto dell'app in esecuzione. La cronologia accetta/rifiuta e l'export di provenance mostrano chi ha approvato cosa, quando e con quale punteggio di qualità ." }, 5025 { "title": "Consegnate via CDN", "body": "Le traduzioni approvate vengono pubblicate su una CDN globale senza redeploy. La vostra pipeline CI resta; il passaggio copia-incolla sparisce." } 5026 ], 5027 "cta": "Aggiungete la governance alla pipeline IA", 5028 "blogLink": "Da leggere: quando le traduzioni IA si rompono", 5029 "actTitle": "Articolo 50 dell'EU AI Act: in vigore dal 2 agosto 2026", 5030 "actHtml": "Dal 2 agosto 2026 si applicano gli obblighi di trasparenza dell'articolo 50 dell'EU AI Act. Le linee guida finali della Commissione (20 luglio 2026) esentano le traduzioni IA fedeli dalla marcatura leggibile meccanicamente, ma il testo tradotto dall'IA che informa il pubblico su questioni di interesse pubblico richiede ancora una divulgazione visibile â a meno che non sia passato per una revisione umana con responsabilità editoriale, l'esenzione che le linee guida illustrano esattamente con questo caso. I passi 2 e 3 registrano quella revisione, e l'<strong>export di provenance</strong> trasforma la registrazione in evidenza: un report CSV + JSON per versione, lingua o namespace che mostra chi ha approvato cosa, quando, la fonte della traduzione (umano, macchina o IA) e il punteggio di confidenza al momento della decisione. <a class=\\"brand-link\\" href=\\"{{actCheckHref}}\\">Fate il check di conformità in tre domande</a> o guardate la <a class=\\"brand-link\\" href=\\"{{actDocsHref}}\\">configurazione del workflow Articolo 50</a>." 5031 }, 5032 "faq": { 5033 "heading": "Domande frequenti", 5034 "items": [ 5035 { 5036 "q": "Non posso semplicemente caricare il mio JSON in ChatGPT?", 5037 "aHtml": "<p>Sì, e per un progetto del weekend con 50 stringhe è esattamente la risposta giusta. Smettete di leggere e rilasciate.</p><p class=\\"mt-2\\">Il problema si presenta quando il vostro prodotto cresce. L'IA traduce le stringhe che le date in quel momento. Non sa che la scorsa sprint avete aggiunto 15 nuove chiavi, che <code>drive</code> nella vostra app significa «archiviazione cloud» e non «guidare», o che un traduttore ha g
5037ià corretto tre volte il tono di <code>welcomeMessage</code> e l'IA continua ad annullare le sue modifiche.</p>" 5038 }, 5039 { 5040 "q": "E se usassi uno script che chiama automaticamente l'API IA?", 5041 "aHtml": "<p>Risolve la traduzione, ma crea un onere di manutenzione:</p><ul class=\\"list-disc pl-5 mt-2 space-y-1 text-sm\\"><li>Chi esegue lo script quando uno sviluppatore aggiunge una nuova chiave alle 21?</li><li>Come sapete quali chiavi sono cambiate e quali un traduttore umano ha già approvato?</li><li>Come date a un non-sviluppatore un modo per correggere un refuso senza toccare la codebase?</li><li>Come distribuite questa correzione agli utenti senza un deployment, poi invalidate la cache del CDN perché la vedano davvero?</li></ul><p class=\\"mt-2\\">Fare il diff dei file di locale è il facile 5% â e sì, davvero in millisecondi. L'altro 95% è distribuzione, review e non ritradurre ciò che è già corretto. Uno script non risolve quello.</p>" 5042 }, 5043 { 5044 "q": "Le traduzioni IA sembrano abbastanza buone. Perché pagare per il review?", 5045 "aHtml": "<p>Spesso sono abbastanza buone, soprattutto per stringhe UI standard. Il problema è la coerenza nel tempo. Quando la vostra app si evolve, il tono delle stringhe tradotte dall'IA deriva. «Annulla» in un contesto diventa «Chiudi» in un altro. Il termine del brand per una funzionalità viene tradotto in tre modi diversi in tre punti diversi.</p><p class=\\"mt-2\\">La finestra di contesto di un modello dimentica tra una sessione e l'altra; una translation memory ricorda per anni. La TM di Locize è persistente, fuzzy-matched e condivisa tra progetti â la stessa frase si risolve allo stesso modo, sia che il traduttore che l'ha approvata la prima volta lavori ancora qui sia che non ci sia più. Il glossario alimenta direttamente il prompt IA, ed è la parte che ChatGPT da solo non può replicare senza che reincolliate le vostre regole di stile a ogni chiamata.</p>" 5046 }, 5047 { 5048 "q": "E se il mio progetto è «finito» e non ho bisogno di localizzazione continua?", 5049 "aHtml": "<p>La localizzazione raramente è davvero finita â ed è proprio la scommessa contro «l'IA l'ha tradotta una volta, abbiamo fatto». Un mese dopo «finito» aggiungete un link «Password dimenticata», aggiornate il testo dei prezzi, rinominate una funzionalità o vi espandete in una quattordicesima lingua. Ognuna di queste azioni riavvia il ciclo, e l'IA non ha idea di cosa ci fosse prima. La <strong>funzione pausa</strong> di Locize congela un progetto con uno sconto dell'80% quando è davvero in modalità manutenzione â conservando cronologia e workflow per quando arriverà la prossima tornata di modifiche.</p>" 5050 }, 5051 { 5052 "q": "I conti non tornano â l'API IA costa centesimi a chiamata e Locize costa dollari al mese.", 5053 "aHtml": "<p>State confrontando un compito con un sistema.</p><p class=\\"mt-2\\">Far passare 5.000 parole attraverso Claude o GPT costa più o meno quanto un caffè â una volta. Se quello è tutto il lavoro, l'API è davvero più economica, e lo abbiamo detto in cima alla pagina. Di solito non è tutto il lavoro.</p><p class=\\"mt-2\\">L'abbonamento copre ciò che succede dopo la traduzione: <strong>distribuzione</strong> (CDN globale con routing per branch e per tenant, invalidazione della cache), <strong>iterazione</strong> (traduttori che modificano senza PR, correzioni di testo in produzione in pochi secondi), <strong>memoria</strong> (fuzzy-matched, tra progetti â la stessa frase non viene ritradotta e ripagata a ogni ciclo) e <strong>governance</strong> (review, audit trail, chi-ha-cambiato-cosa). «Mi fate pagare soldi veri per ospitare un file YAML» è una reazione di pancia comprensibile davanti alla pagina dei prezzi; questo è ciò che quei soldi comprano davvero.</p>" 5054 }, 5055 { 5056 "q": "Uso già Cursor / Claude Code. L'agente scrive il codice E traduce il JSON. Cosa resta per Locize?", 5057 "aHtml": "<p>Tradurre il file una volta. Quella è la parte facile.</p><p class=\\"mt-2\\">Poi l'agente deve committare un file in 30 lingue nel repo, ridistribuire quando il marketing vuole una modifica al testo, dare a un traduttore un modo per correggere l'italiano senza aprire una PR, e ricordarsi quali chiavi ha già tradotto la scorsa settimana per non rigenerarle alla prossima esecuzione.</p><p class=\\"mt-2\\">Locize pubblica un <a class=\\"brand-link\\" href=\\"/docs/integration/mcp\\">server MCP</a> in modo che l'agente non traduca affatto il file â segnala le chiavi mancanti, Locize le traduce automaticamente con il vostro glossario, styleguide e translation memory inseriti nel prompt, e il risultato è live via CDN senza un nuovo deployment. L'agente resta nell'IDE; le stringhe smettono di vivere nel repo.</p>" 5058 }, 5059 { 5060 "q": "L'EU AI Act si applica alla mia app tradotta con l'IA?", 5061 "aHtml": "<p>Meno di quanto suggeriscano i titoli, ma non zero. L'articolo 50 dell'EU AI Act è in vigore dal 2 agosto 2026. Le linee guida finali della Commissione (20 luglio 2026) esentano le traduzioni IA fedeli dall'obbligo di marcatura leggibile meccanicamente, ma il testo tradotto dall'IA pubblicato per informare il pubblico su questioni di interesse pubblico richiede ancora una divulgazione visibile â a meno che non sia passato per una revisione umana con responsabilità editoriale. L'esempio delle stesse linee guida per quell'esenzione è una traduzione IA revisionata da un umano; una pipeline solo-IA senza revisione non può dimostrarla, una pipeline governata sì.</p><p class=\\"mt-2\\">L'<strong>export di provenance</strong> di Locize produce l'evidenza: un report CSV + JSON per versione, lingua o namespace con chi ha revisionato, approvato o modificato ogni traduzione e quando, la fonte della traduzione (umano, macchina o IA) e il punteggio di confidenza IA al momento della decisione. Il <a class=\\"brand-link\\" href=\\"/it/ai-act-check\\">check di conformità in tre domande</a> vi dice se le vostre traduzioni sono in ambito; la <a class=\\"brand-link\\" href=\\"/it/docs/eu-ai-act-article-50\\">guida al workflow Articolo 50</a> mostra la configurazione completa.</p>" 5062 }, 5063 { 5064 "q": "Non siete in realtà solo un ponte tra sviluppatori che non vogliono gestire JSON e traduttori che non vogliono imparare Git?", 5065 "aHtml": "<p>Sì. à il prodotto, non la scusa.</p><p class=\\"mt-2\\">Se ai vostri sviluppatori piace gestire i file di locale in Git e i vostri traduttori sono fluenti in <code>git pull</code>, non vi serve un ponte. La maggior parte dei team ha solo una delle due cose dalla propria parte, non entrambe. Locize è la giuntura: gli sviluppatori committano le chiavi, i traduttori modificano in una UI web, le modifiche vanno in produzione via CDN â nessuna delle due parti deve mai mettere piede negli strumenti dell'altra.</p>" 5066 } 5067 ] 5068 }, 5069 "finalCta": { 5070 "heading": "Usate l'IA per tradurre. Usate Locize per gestire.", 5071 "subtitle": "Locize ha la traduzione IA integrata (BYOK o il nostro
5071servizio). Ottenete la velocità dell'IA con l'infrastruttura di workflow di cui il vostro team ha davvero bisogno.", 5072 "register": "Inizia gratis", 5073 "seeAi": "Vedi le funzionalità IA" 5074 } 5075} 5076`,{slice:Mc,forEach:Nc}=[];function Pc(e){return Nc.call(Mc.call(arguments,1),t=>{if(t)for(let n in t)e[n]===void 0&&(e[n]=t[n])}),e}function Fc(e){return typeof e==`string`&&[/<\s*script.*?>/i,/<\s*\/\s*script\s*>/i,/<\s*img.*?on\w+\s*=/i,/<\s*\w+\s*on\w+\s*=.*?>/i,/javascript\s*:/i,/vbscript\s*:/i,/expression\s*\(/i,/eval\s*\(/i,/alert\s*\(/i,/document\.cookie/i,/document\.write\s*\(/i,/window\.location/i,/innerHTML/i].some(t=>t.test(e))}var Ic=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/,Lc=function(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{path:`/`},r=`${e}=${encodeURIComponent(t)}`;if(n.maxAge>0){let e=n.maxAge-0;if(Number.isNaN(e))throw Error(`maxAge should be a Number`);r+=`; Max-Age=${Math.floor(e)}`}if(n.domain){if(!Ic.test(n.domain))throw TypeError(`option domain is invalid`);r+=`; Domain=${n.domain}`}if(n.path){if(!Ic.test(n.path))throw TypeError(`option path is invalid`);r+=`; Path=${n.path}`}if(n.expires){if(typeof n.expires.toUTCString!=`function`)throw TypeError(`option expires is invali
5076d`);r+=`; Expires=${n.expires.toUTCString()}`}if(n.httpOnly&&(r+=`; HttpOnly`),n.secure&&(r+=`; Secure`),n.sameSite)switch(typeof n.sameSite==`string`?n.sameSite.toLowerCase():n.sameSite){case!0:r+=`; SameSite=Strict`;break;case`lax`:r+=`; SameSite=Lax`;break;case`strict`:r+=`; SameSite=Strict`;break;case`none`:r+=`; SameSite=None`;break;default:throw TypeError(`option sameSite is invalid`)}return n.partitioned&&(r+=`; Partitioned`),r},Rc={create(e,t,n,r){let i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{path:`/`,sameSite:`strict`};n&&(i.expires=new Date,i.expires.setTime(i.expires.getTime()+n*60*1e3)),r&&(i.domain=r),document.cookie=Lc(e,t,i)},read(e){let t=`${e}=`,n=document.cookie.split(`;`);for(let e=0;e<n.length;e++){let r=n[e];for(;r.charAt(0)===` `;)r=r.substring(1,r.length);if(r.indexOf(t)===0)return r.substring(t.length,r.length)}return null},remove(e,t){this.create(e,``,-1,t)}},zc={name:`cookie`,lookup(e){let{lookupCookie:t}=e;if(t&&typeof document<`u`)return Rc.read(t)||void 0},cacheUserLanguage(e,t){let{lookupCookie:n,cookieMinutes:r,cookieDomain:i,cookieOptions:a}=t;n&&typeof document<`u`&&Rc.create(n,e,r,i,a)}},Bc={name:`querystring`,lookup(e){let{lookupQuerystring:t}=e,n;if(typeof window<`u`){let{search:e}=window.location;!window.location.search&&window.location.hash?.indexOf(`?`)>-1&&(e=window.location.hash.substring(window.location.hash.indexOf(`?`)));let r=e.substring(1).split(`&`);for(let e=0;e<r.length;e++){let i=r[e].indexOf(`=`);i>0&&r[e].substring(0,i)===t&&(n=r[e].substring(i+1))}}return n}},Vc={name:`hash`,lookup(e){let{lookupHash:t,lookupFromHashIndex:n}=e,r;if(typeof window<`u`){let{hash:e}=window.location;if(e&&e.length>2){let i=e.substring(1);if(t){let e=i.split(`&`);for(let n=0;n<e.length;n++){let i=e[n].indexOf(`=`);i>0&&e[n].substring(0,i)===t&&(r=e[n].substring(i+1))}}if(r)return r;if(!r&&n>-1){let t=e.match(/\/([a-zA-Z-]*)/g);
5076return Array.isArray(t)?t[typeof n==`number`?n:0]?.replace(`/`,``):void 0}}}return r}},Hc=null,Uc=()=>{if(Hc!==null)return Hc;try{if(Hc=typeof window<`u`&&window.localStorage!==null,!Hc)return!1;let e=`i18next.translate.boo`;window.localStorage.setItem(e,`foo`),window.localStorage.removeItem(e)}catch{Hc=!1}return Hc},Wc={name:`localStorage`,lookup(e){let{lookupLocalStorage:t}=e;if(t&&Uc())return window.localStorage.getItem(t)||void 0},cacheUserLanguage(e,t){let{lookupLocalStorage:n}=t;n&&Uc()&&window.localStorage.setItem(n,e)}},Gc=null,Kc=()=>{if(Gc!==null)return Gc;try{if(Gc=typeof window<`u`&&window.sessionStorage!==null,!Gc)return!1;let e=`i18next.translate.boo`;window.sessionStorage.setItem(e,`foo`),window.sessionStorage.removeItem(e)}catch{Gc=!1}return Gc},qc={name:`sessionStorage`,lookup(e){let{lookupSessionStorage:t}=e;if(t&&Kc())return window.sessionStorage.getItem(t)||void 0},cacheUserLanguage(e,t){let{lookupSessionStorage:n}=t;n&&Kc()&&window.sessionStorage.setItem(n,e)}},Jc={name:`navigator`,lookup(e){let t=[];if(typeof navigator<`u`){let{languages:e,userLanguage:n,language:r}=navigator;if(e)for(let n=0;n<e.length;n++)t.push(e[n]);n&&t.push(n),r&&t.push(r)}return t.length>0?t:void 0}},Yc={name:`htmlTag`,lookup(e){let{htmlTag:t}=e,n,r=t||(typeof document<`u`?document.documentElement:null);return r&&typeof r.getAttribute==`function`&&(n=r.getAttribute(`lang`)),n}},Xc={name:`path`,lookup(e){let{lookupFromPathIndex:t}=e;if(typeof window>`u`)return;let n=window.location.pathname.match(/\/([a-zA-Z-]*)/g);if(Array.isArray(n))return n[typeof t==`number`?t:0]?.replace(`/`,``)}},Zc={name:`subdomain`,lookup(e){let{lookupFromSubdomainIndex:t}=e,n=typeof t==`number`?t+1:1,r=typeof window<`u`&&window.location?.hostname?.match(/^(\w{2,5})\.(([a-z0-9-]{1,63}\.[a-z]{2,6})|localhost)/i);if(r)return r[n]}},Qc=!1;try{document.cookie,Qc=!0}catch{}var $c=[`querystring`,`cookie`,`localStorage`,`sessionStorage`,`navigator`,`htmlTag`];Qc||$c.splice(1,1);var el=()=>({order:$c,lookupQuerystring:`lng`,lookupCookie:`i18next`,lookupLocalStorage:`i18nextLng`,lookupSessionStorage:`i18nextLng`,caches:[`localStorage`],excludeCacheFor:[`cimode`],convertDetectedLanguage:e=>e}),tl=class{constructor(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.type=`languageDetector`,this.detectors={},this.init(e,t)}init(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{languageUtils:{}},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};this.services=e,this.options=Pc(t,this.options||{},el()),typeof this.options.convertDetectedLanguage==`string`&&this.options.convertDetectedLanguage.indexOf(`15897`)>-1&&(this.options.convertDetectedLanguage=e=>e.replace(`-`,`_`)),this.options.lookupFromUrlIndex&&(this.options.lookupFromPathIndex=this.options.lookupFromUrlIndex),this.i18nOptions=n,this.addDetector(zc),this.addDetector(Bc),this.addDetector(Wc),this.addDetector(qc),this.addDetector(Jc),this.addDetector(Yc),this.addDetector(Xc),this.addDetector(Zc),this.addDetector(Vc)}
5076addDetector(e){return this.detectors[e.name]=e,this}detect(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.options.order,t=[];return e.forEach(e=>{if(this.detectors[e]){let n=this.detectors[e].lookup(this.options);n&&typeof n==`string`&&(n=[n]),n&&(t=t.concat(n))}}),t=t.filter(e=>e!=null&&!Fc(e)).map(e=>this.options.convertDetectedLanguage(e)),this.services&&this.services.languageUtils&&this.services.languageUtils.getBestMatchFromCodes?t:t.length>0?t[0]:null}cacheUserLanguage(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.options.caches;t&&(this.options.excludeCacheFor&&this.options.excludeCacheFor.indexOf(e)>-1||t.forEach(t=>{this.detectors[t]&&this.detectors[t].cacheUserLanguage(e,this.options)}))}};tl.type=`languageDetector`;var nl=Object.assign({"../locales/de/ai-act-check.json":Ps,"../locales/de/ai.json":Fs,"../locales/de/common.json":Is,"../locales/de/customers.json":Ls,"../locales/de/eu-accessibility-act-localization.json":Rs,"../locales/de/for-your-team.json":zs,"../locales/de/home.json":Bs,"../locales/de/how-it-works.json":Vs,"../locales/de/multi-tenant.json":Hs,"../locales/de/services.json":Us,"../locales/de/swiss-made-tms.json":Ws,"../locales/de/why-no-sales.json":Gs,"../locales/de/why-not-just-use-ai.json":Ks,"../locales/en/ai-act-check.json":qs,"../locales/en/ai.json":Js,"../locales/en/common.json":Ys,"../locales/en/customers.json":Xs,"../locales/en/eu-accessibility-act-localization.json":Zs,"../locales/en/for-your-team.json":Qs,"../locales/en/home.json":$s,"../locales/en/how-it-works.json":ec,"../locales/en/multi-tenant.json":tc,"../locales/en/services.json":nc,"../locales/en/swiss-made-tms.json":rc,"../locales/en/why-no-sales.json":ic,"../locales/en/why-not-just-use-ai.json":ac,"../locales/fr/ai-act-check.json":oc,"../locales/fr/ai.json":sc,"../locales/fr/common.json":cc,"../locales/fr/customers.json":lc,"../locales/fr/eu-accessibility-act-localization.json":uc,"../locales/fr/for-your-team.json":dc,"../locales/fr/home.json":fc,"../locales/fr/how-it-works.json":pc,"../locales/fr/multi-tenant.json":mc,"../locales/fr/services.json":hc,"../locales/fr/swiss-made-tms.json":gc,"../locales/fr/why-no-sales.json":_c,"../locales/fr/why-not-just-use-ai.json":vc,"../locales/it/ai-act-check.json":yc,"../locales/it/ai.json":bc,"../locales/it/common.json":xc,"../locales/it/customers.json":Sc,"../locales/it/eu-accessibility-act-localization.json":Cc,"../locales/it/for-your-team.json":wc,"../locales/it/home.json":Tc,"../locales/it/how-it-works.json":Ec,"../locales/it/multi-tenant.json":Dc,"../locales/it/services.json":Oc,"../locales/it/swiss-made-tms.json":kc,"../locales/it/why-no-sales.json":Ac,"../locales/it/why-not-just-use-ai.json":jc}),rl={};for(let[e,t]of Object.entries(nl)){let n=e.match(/locales\/([^/]+)\/([^/]+)\.json$/);if(!n)continue;let[,r,i]=n;rl[r]||(rl[r]={});try{rl[r][i]=JSON.parse(t)}catch{rl[r][i]={}}}if(!xt.isInitialized){typeof window<`u`&&xt.use(tl);let e=new Set;for(let t of Object.keys(rl))for(let n of Object.keys(rl[t]))e.add(n);xt.use(un).init({lng:`en`,resources:rl,supportedLngs:r,fallbackLng:`en`,defaultNS:`common`,ns:Array.from(e),detection:{order:[`path`,`localStorage`,`cookie`,`navigator`],lookupFromPathIndex:0,lookupLocalStorage:`i18nextLng`,caches:[`localStorage`]},interpolation:{escapeValue:!1},react:{useSuspense:!1}})}var il=xt;function al({CookieConsent:e}){return(0,P.jsxs)(`div`,{className:`fixed right-2 bottom-2 inline-flex items-center gap-2 bottom-utility-buttons z-50`,children:[(0,P.jsx)(`button`,{className:`brand-btn-outline btn-circle btn-sm no-underline`,type:`button`,onClick:()=>{e.showPreferences()},"aria-label":`Cookie preferences`,children:(0,P.jsx)(Ta,{name:`cookie`})}),(0,P.jsx)(`button`,{className:`brand-btn-outline btn-circle btn-sm no-underline`,type:`button`,onClick:()=>{window.scrollTo(0,0)},"aria-label":`Scroll to top`,children:(0,P.jsx)(Ta,{name:`arrow_upward`})})]})}var ol=t({default:()=>cl}),sl=typeof window<`u`?y.useLayoutEffect:y.useEffect;function cl({children:e}){let t=ee(),n=t.routeParams?.lang||`en`,r=Dn(t?.urlPathname||`/`,n);typeof window>`u`&&il.language!==n&&il.changeLanguage(n),sl(()=>{il.language!==n&&il.changeLanguage(n)},[n]);let{t:i}=vn(),a=js(),o=bs();return Ns(),(0,P.jsxs)(P.Fragment,{children:[(0,P.jsxs)(`div`,{"data-theme":`light`,className:`min-h-screen text-base-content flex flex-col relative overflow-x-hidden bg-soft-brand-gradient`,children:[(0,P.jsx)(`a`,{href:`#page-content`,className:`sr-only focu
5076s:not-sr-only focus:absolute focus:z-[9999] focus:bg-primary focus:text-white focus:px-4 focus:py-2 focus:top-2 focus:left-2 focus:rounded`,children:i(`skipToContent`)}),(0,P.jsx)(dl,{t:i,lang:n}),(0,P.jsx)(`main`,{id:`page-content`,className:`flex-1 relative z-10`,children:(0,P.jsx)(Ca,{children:(0,P.jsx)(c,{components:a,children:e})})}),(0,P.jsx)(fl,{t:i,lang:n,basePath:r})]}),(0,P.jsx)(al,{CookieConsent:o})]})}var ll=[{slug:`/how-it-works`,key:`howItWorks`},{slug:`/for-your-team`,key:`forYourTeam`},{slug:`/pricing`,key:`pricing`},{slug:`/customers`,key:`customers`},{slug:`/services`,key:`services`},{slug:`/ai`,key:`ai`},{slug:`/docs/introduction`,key:`docs`},{slug:`/blog`,key:`blog`}];function ul({lang:e,basePath:t,t:n}){let i=r.filter(t=>t!==e).filter(e=>e===`en`||En.has(t));return i.length===0?null:(0,P.jsxs)(`div`,{className:`inline-flex items-center gap-2 text-xs`,children:[(0,P.jsx)(`span`,{"aria-hidden":!0,className:`text-neutral-content/50`,children:`·`}),(0,P.jsxs)(`span`,{className:`text-neutral-content/50`,children:[n(`languageSwitcher.label`),`:`]}),i.map(e=>(0,P.jsx)(`a`,{href:On(t,e),className:`text-neutral-content/80 hover:text-neutral-content no-underline`,children:n(`languageSwitcher.${e}`)},e))]})}function dl({t:e,lang:t}){let n=ll.map(n=>({href:On(n.slug,t),label:e(`nav.${n.key}`)}));return(0,P.jsx)(`header`,{className:`sticky top-0 z-50 brand-header`,children:(0,P.jsxs)(`div`,{className:`max-w-[90rem] mx-auto px-4`,children:[(0,P.jsxs)(`div`,{className:`navbar px-0 min-h-[3.75rem]`,children:[(0,P.jsx)(`div`,{className:`navbar-start`,children:(0,P.jsx)(`a`,{href:On(`/`,t),className:`inline-flex items-center gap-3 no-underline`,children:(0,P.jsx)(`img`,{src:`/img/locize_color.svg`,alt:`Locize`,className:`h-7 w-auto`})})}),(0,P.jsx)(`div`,{className:`navbar-center hidden md:flex`,children:(0,P.jsx)(`nav`,{className:`flex items-center gap-7 text-sm font-medium`,"aria-label":e(`nav.primaryAria`),children:n.map(e=>(0,P.jsx)(`a`,{className:`brand-nav-link`,href:e.href,children:e.label},e.href))})}),(0,P.jsxs)(`div`,{className:`navbar-end gap-2`,children:[(0,P.jsx)(`a`,{className:`brand-btn-outline btn-sm no-underline`,href:kn(jn,t,`header`),rel:`noopener noreferrer`,target:`_blank`,children:e(`cta.login`)}),(0,P.jsx)(`a`,{className:`brand-btn btn-sm no-underline`,href:kn(An,t,`header`),rel:`noopener noreferrer`,target:`_blank`,children:e(`cta.register`)})]})]}),(0,P.jsx)(`div`,{className:`md:hidden pb-2`,children:(0,P.jsx)(`nav`,{className:`flex items-center gap-5 text-sm font-medium overflow-x-auto whitespace-nowrap [scrollbar-width:none] [-webkit-overflow-scrolling:touch]`,"aria-label":e(`nav.primaryAria`),children:n.map(e=>(0,P.jsx)(`a`,{className:`brand-nav-link`,href:e.href,children:e.label},e.href))})})]})})}function fl({t:e,lang:t,basePath:n}){let r=(n,r)=>(0,P.jsx)(`a`,{className:`block no-underline hover:text-neutral-content`,href:On(n,t),children:e(`footer.links.${r}`)});return(0,P.jsx)(`footer`,{className:`border-t border-white/10 relative z-10 text-neutral-content bg-[linear-gradient(180deg,var(--brand-ink)_0%,color-mix(in_srgb,var(--brand-ink)_88%,white)_100%)]`,children:(0,P.jsxs)(`div`,{className:`max-w-[90rem] mx-auto px-4 py-6 pb-4`,children:[(0,P.jsxs)(`div`,{className:`flex items-center justify-between gap-6`,children:[(0,P.jsx)(`a`,{href:On(`/`,t),className:`inline-flex items-center no-underline`,children:(0,P.jsx)(`img`,{src:`/img/locize_white.svg`,alt:`Locize`,className:`h-7 w-auto`})}),(0,P.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,P.jsx)(`a`,{className:`btn btn-circle btn-sm btn-outline no-underline text-neutral-content/80 hover:text-[var(--brand-primary)]`,href:`mailto:[email protected]`,"aria-label":e(`footer.social.emailAria`),title:e(`footer.social.emailTitle`),children:(0,P.jsx)(Ta,{name:`mail`,fontSize:`18px`})}),(0,P.jsx)(`a`,{className:`btn btn-circle btn-sm btn-outline no-underline text-neutral-content/80 hover:text-[var(--brand-primary)]`,href:`https://x.com/locize`,target:`_blank`,rel:`noopener noreferrer`,"aria-label":e(`footer.social.xAria`),title:e(`footer.social.xTitle`),children:(0,P.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 640 640`,className:`w-4 h-4`,fill:`currentColor`,"aria-hidden":!0,
5076children:(0,P.jsx)(`path`,{d:`M453.2 112L523.8 112L369.6 288.2L551 528L409 528L297.7 382.6L170.5 528L99.8 528L264.7 339.5L90.8 112L236.4 112L336.9 244.9L453.2 112zM428.4 485.8L467.5 485.8L215.1 152L173.1 152L428.4 485.8z`})})}),(0,P.jsx)(`a`,{className:`btn btn-circle btn-sm btn-outline no-underline text-neutral-content/80 hover:text-[var(--brand-primary)]`,href:`https://www.facebook.com/locize`,target:`_blank`,rel:`noopener noreferrer`,"aria-label":e(`footer.social.facebookAria`),title:e(`footer.social.facebookTitle`),children:(0,P.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 640 640`,className:`w-4 h-4`,fill:`currentColor`,"aria-hidden":!0,children:(0,P.jsx)(`path`,{d:`M576 320C576 178.6 461.4 64 320 64C178.6 64 64 178.6 64 320C64 440 146.7 540.8 258.2 568.5L258.2 398.2L205.4 398.2L205.4 320L258.2 320L258.2 286.3C258.2 199.2 297.6 158.8 383.2 158.8C399.4 158.8 427.4 162 438.9 165.2L438.9 236C432.9 235.4 422.4 235 409.3 235C367.3 235 351.1 250.9 351.1 292.2L351.1 320L434.7 320L420.3 398.2L351 398.2L351 574.1C477.8 558.8 576 450.9 576 320z`})})}),(0,P.jsx)(`a`,{className:`btn btn-circle btn-sm btn-outline no-underline text-neutral-content/80 hover:text-[var(--brand-primary)]`,href:`https://www.youtube.com/channel/UCPYQjBbbXojUcB8qjeIB3uA`,target:`_blank`,rel:`noopener noreferrer`,"aria-label":e(`footer.social.youtubeAria`),title:e(`footer.social.youtubeTitle`),children:(0,P.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 640 640`,className:`w-4 h-4`,fill:`currentColor`,"aria-hidden":!0,children:(0,P.jsx)(`path`,{d:`M581.7 188.1C575.5 164.4 556.9 145.8 533.4 139.5C490.9 128 320.1 128 320.1 128C320.1 128 149.3 128 106.7 139.5C83.2 145.8 64.7 164.4 58.4 188.1C47 231 47 320.4 47 320.4C47 320.4 47 409.8 58.4 452.7C64.7 476.3 83.2 494.2 106.7 500.5C149.3 512 320.1 512 320.1 512C320.1 512 490.9 512 533.5 500.5C557 494.2 575.5 476.3 581.8 452.7C593.2 409.8 593.2 320.4 593.2 320.4C593.2 320.4 593.2 231 581.8 188.1zM264.2 401.6L264.2 239.2L406.9 320.4L264.2 401.6z`})})}),(0,P.jsx)(`a`,{className:`btn btn-circle btn-sm btn-outline no-underline text-neutral-content/80 hover:text-[var(--brand-primary)]`,href:`https://www.instagram.com/i18next_locize/`,target:`_blank`,rel:`noopener noreferrer`,"aria-label":e(`footer.social.instagramAria`),title:e(`footer.social.instagramTitle`),children:(0,P.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 640 640`,className:`w-4 h-4`,fill:`currentColor`,"aria-hidden":!0,children:(0,P.jsx)(`path`,{d:`M320.3 205C256.8 204.8 205.2 256.2 205 319.7C204.8 383.2 256.2 434.8 319.7 435C383.2 435.2 434.8 383.8 435 320.3C435.2 256.8 383.8 205.2 320.3 205zM319.7 245.4C360.9 245.2 394.4 278.5 394.6 319.7C394.8 360.9 361.5 394.4 320.3 394.6C279.1 394.8 245.6 361.5 245.4 320.3C245.2 279.1 278.5 245.6 319.7 245.4zM413.1 200.3C413.1 185.5 425.1 173.5 439.9 173.5C454.7 173.5 466.7 185.5 466.7 200.3C466.7 215.1 454.7 227.1 439.9 227.1C425.1 227.1 413.1 215.1 413.1 200.3zM542.8 227.5C541.1 191.6 532.9 159.8 506.6 133.6C480.4 107.4 448.6 99.2 412.7 97.4C375.7 95.3 264.8 95.3 227.8 97.4C192 99.1 160.2 107.3 133.9 133.5C107.6 159.7 99.5 191.5 97.7 227.4C95.6 264.4 95.6 375.3 97.7 412.3C99.4 448.2 107.6 480 133.9 506.2C160.2 532.4 191.9 540.6 227.8 542.4C264.8 544.5 375.7 544.5 412.7 542.4C448.6 540.7 480.4 532.5 506.6 506.2C532.8 480 541 448.2 542.8 412.3C544.9 375.3 544.9 264.5 542.8 227.5zM495 452C487.2 471.6 472.1 486.7 452.4 494.6C422.9 506.3 352.9 503.6 320.3 503.6C287.7 503.6 217.6 506.2 188.2 494.6C168.6 486.8 153.5 471.7 145.6 452C133.9 422.5 136.6 352.5 136.6 319.9C136.6 287.3 134 217.2 145.6 187.8C153.4 168.2 168.5 153.1 188.2 145.2C217.7 133.5 287.7 136.2 320.3 136.2C352.9 136.2 423 133.6 452.4 145.2C472 153 487.1 168.1 495 187.8C506.7 217.3 504 287.3 504 319.9C504 352.5 506.7 422.6 495 452z`})})})]})]}),(0,P.jsxs)(`div`,{className:`mt-6 border-t border-neutral-content/10 pt-6`,children:[(0,P.jsxs)(`div`,{className:`grid grid-cols-2 md:grid-cols-5 gap-10`,children:[(0,P.jsxs)(`div`,{children:[(0,P.jsx)(`div`,{className:`text-base font-semibold`,children:e(`footer.columns.product`)}),(0,P.jsxs)(`div`,{className:`mt-4 space-y-3 text-sm text-neutral-content/70`,children:[r(`/pricing`,`pricing`),r(`/how-it-works`,`howItWorks`),r(`/services`,`services`),(0,P.jsx)(`span`,{className:`block`,children:(0,P.jsx)(pn,{i18nKey:`footer.aiLine`,components:[(0,P.jsx)(`a`,{className:`no-underline hover:text-neutral-content`,href:On(`/ai`,t)},`ai`),(0,P.jsx)(`a`,{className:`no-underline hover:text-neutral-content`,href:On(`/why-not-just-use
5076-ai`,t)},`why-not-ai`)]})}),r(`/continuous-localization`,`continuousLocalization`),r(`/file-formats`,`fileFormats`),r(`/docs/introduction`,`docs`)]})]}),(0,P.jsxs)(`div`,{children:[(0,P.jsx)(`div`,{className:`text-base font-semibold`,children:e(`footer.columns.solutions`)}),(0,P.jsxs)(`div`,{className:`mt-4 space-y-3 text-sm text-neutral-content/70`,children:[(0,P.jsx)(`span`,{className:`block`,children:(0,P.jsx)(pn,{i18nKey:`footer.i18nLibraryLine`,components:[(0,P.jsx)(`a`,{className:`no-underline hover:text-neutral-content`,href:On(`/i18next`,t)},`i18next`),(0,P.jsx)(`a`,{className:`no-underline hover:text-neutral-content`,href:On(`/i18n-libraries`,t)},`i18n-libraries`)]})}),r(`/javascript-localization`,`javascriptLocalization`),r(`/website-localization-services`,`websiteLocalizationServices`),r(`/software-localization-service`,`softwareLocalizationService`),r(`/eu-accessibility-act-localization`,`euAccessibilityAct`),r(`/for-your-team`,`forYourTeam`),r(`/multi-tenant`,`multiTenant`)]})]}),(0,P.jsxs)(`div`,{children:[(0,P.jsx)(`div`,{className:`text-base font-semibold`,children:e(`footer.columns.company`)}),(0,P.jsxs)(`div`,{className:`mt-4 space-y-3 text-sm text-neutral-content/70`,children:[r(`/blog`,`blog`),r(`/customers`,`caseStudies`),r(`/security`,`security`),r(`/why-no-sales`,`ourPhilosophy`),r(`/compare`,`compareCompetitors`),r(`/swiss-made-tms`,`swissMadeTms`)]})]}),(0,P.jsxs)(`div`,{children:[(0,P.jsx)(`div`,{className:`text-base font-semibold`,children:e(`footer.columns.importantLinks`)}),(0,P.jsxs)(`div`,{className:`mt-4 space-y-3 text-sm text-neutral-content/70`,children:[r(`/terms`,`terms`),r(`/privacy`,`privacyPolicy`),r(`/dpa`,`dpa`),r(`/ccpa`,`ccpa`),(0,P.jsx)(`a`,{className:`block no-underline hover:text-neutral-content`,href:`mailto:[email protected]`,children:e(`footer.links.support`)})]})]}),(0,P.jsxs)(`div`,{children:[(0,P.jsx)(`div`,{className:`text-base font-semibold`,children:e(`footer.columns.registration`)}),(0,P.jsx)(`div`,{className:`mt-5`,children:(0,P.jsx)(`a`,{className:`brand-btn btn-md w-full no-underline`,href:kn(An,t,`footer`),rel:`noopener noreferrer`,target:`_blank`,children:e(`cta.registerForFree`)})})]})]}),(0,P.jsxs)(`div`,{className:`mt-6 border-t border-neutral-content/10 pt-4 flex flex-col sm:flex-row items-center justify-center gap-3 text-sm text-neutral-content/70`,children:[(0,P.jsx)(`span`,{children:e(`footer.copyright`,{year:new Date().getFullYear()})}),(0,P.jsx)(ul,{lang:t,basePath:n,t:e})]})]})]})})}var pl={component:ml};function ml(){return y.createElement(y.Fragment,null,y.createElement(`div`,{style:{width:`100%`,height:`100%`,maxHeight:`100%`,background:`linear-gradient(110deg, #ececec 8%, #f5f5f5 18%, #ececec 33%)`,borderRadius:`5px`,backgroundSize:`200% 100%`,animation:`1.3s vike-react-loading linear infinite`,aspectRatio:`2.5/1`}}),y.createElement(`style`,{href:`vike-react-loading`,precedence:`default`},` 5077 @keyframes vike-react-loading { 5078 to { 5079 background-position-x: -200%; 5080 } 5081 } 5082 `))}export{Te as C,ee as D,ce as E,f as O,vn as S,fe as T,An as _,Ts as a,On as b,Ea as c,yi as d,ni as f,Kr as g,Xr as h,Ds as i,Ta as l,Yr as m,ol as n,xs as o,Qr as p,js as r,Da as s,pl as t,Sa as u,kn as v,ye as w,En as x,Nn as y};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.