PageSourceSearch

https://sendvault.online/assets/js/index-BTHmmvQ_.js

js sendvault.online collected 2026-10-08 10:33:05 UTC 969,859 bytes, 3,992 lines download raw bytes

vendor: 5,670 bytes, lines 1-18
1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/js/WeTransferAlternativePage_V2-Dlzlh6O0.js","assets/js/icons-DMGuWW1B.js","assets/js/supabase-CsvS5AOb.js","assets/js/vendor-1zw1pNgy.js","assets/js/WhatsAppAlternativePage_V2-8sr3VMfd.js","assets/js/SecureFileSharingPage-DC-QPkzm.js"])))=>i.map(i=>d[i]);
2import{r as V,R as Nr}from"./icons-DMGuWW1B.js";import{g as Ly,c as a2,a as zs,_ as ju}from"./supabase-CsvS5AOb.js";import{r as o2,a as s2}from"./vendor-1zw1pNgy.js";(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const d of document.querySelectorAll('link[rel="modulepreload"]'))l(d);new MutationObserver(d=>{for(const p of d)if(p.type==="childList")for(const u of p.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&l(u)}).observe(document,{childList:!0,subtree:!0});function o(d){const p={};return d.integrity&&(p.integrity=d.integrity),d.referrerPolicy&&(p.referrerPolicy=d.referrerPolicy),d.crossOrigin==="use-credentials"?p.credentials="include":d.crossOrigin==="anonymous"?p.credentials="omit":p.credentials="same-origin",p}function l(d){if(d.ep)return;d.ep=!0;const p=o(d);fetch(d.href,p)}})();var xd={exports:{}},Za={};/**
3 * @license React
4 * react-jsx-runtime.production.js
5 *
6 * Copyright (c) Meta Platforms, Inc. and affiliates.
7 *
8 * This source code is licensed under the MIT license found in the
9 * LICENSE file in the root directory of this source tree.
10 */var im;function l2(){if(im)return Za;im=1;var n=Symbol.for("react.transitional.element"),r=Symbol.for("react.fragment");function o(l,d,p){var u=null;if(p!==void 0&&(u=""+p),d.key!==void 0&&(u=""+d.key),"key"in d){p={};for(var f in d)f!=="key"&&(p[f]=d[f])}else p=d;return d=p.ref,{$$typeof:n,type:l,key:u,ref:d!==void 0?d:null,props:p}}return Za.Fragment=r,Za.jsx=o,Za.jsxs=o,Za}var rm;function c2(){return rm||(rm=1,xd.exports=l2()),xd.exports}var s=c2(),wd={exports:{}},Xa={},kd={exports:{}},Sd={};/**
11 * @license React
12 * scheduler.production.js
13 *
14 * Copyright (c) Meta Platforms, Inc. and affiliates.
15 *
16 * This source code is licensed under the MIT license found in the
17 * LICENSE file in the root directory of this source tree.
18 */var am;function d2(){return am||(am=1,function(n){function r(F,U){var ee=F.length;F.push(U);e:for(;0<ee;){var te=ee-1>>>1,me=F[te];if(0<d(me,U))F[te]=U,F[ee]=me,ee=te;else break e}}function o(F){return F.length===0?null:F[0]}function l(F){if(F.length===0)return null;var U=F[0],ee=F.pop();if(ee!==U){F[0]=ee;e:for(var te=0,me=F.length,Z=me>>>1;te<Z;){var Y=2*(te+1)-1,fe=F[Y],pe=Y+1,he=F[pe];if(0>d(fe,ee))pe<me&&0>d(he,fe)?(F[te]=he,F[pe]=ee,te=pe):(F[te]=fe,F[Y]=ee,te=Y);else if(pe<me&&0>d(he,ee))F[te]=he,F[pe]=ee,te=pe;else break e}}return U}function d(F,U){var ee=F.sortIndex-U.sortIndex;return ee!==0?ee:F.id-U.id}if(n.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var p=performance;n.unstable_now=function(){return p.now()}}else{var u=Date,f=u.now();n.unstable_now=function(){return u.now()-f}}var g=[],y=[],m=1,v=null,w=3,b=!1,A=!1,x=!1,j=!1,T=typeof setTimeout=="function"?setTimeout:null,D=typeof clearTimeout=="function"?clearTimeout:null,_=typeof setImmediate<"u"?setImmediate:null;function L(F){for(var U=o(y);U!==null;){if(U.callback===null)l(y);else if(U.startTime<=F)l(y),U.sortIndex=U.expirationTime,r(g,U);else break;U=o(y)}}function B(F){if(x=!1,L(F),!A)if(o(g)!==null)A=!0,P||(P=!0,N());else{var U=o(y);U!==null&&re(B,U.startTime-F)}}var P=!1,z=-1,W=5,H=-1;function ae(){return j?!0:!(n.unstable_now()-H<W)}function ve(){if(j=!1,P){var F=n.unstable_now();H=F;var U=!0;try{e:{A=!1,x&&(x=!1,D(z),z=-1),b=!0;var ee=w;try{t:{for(L(F),v=o(g);v!==null&&!(v.expirationTime>F&&ae());){var te=v.callback;if(typeof te=="function"){v.callback=null,w=v.priorityLevel;var me=te(v.expirationTime<=F);if(F=n.unstable_now(),typeof me=="function"){v.callback=me,L(F),U=!0;break t}v===o(g)&&l(g),L(F)}else l(g);v=o(g)}if(v!==null)U=!0;else{var Z=o(y);Z!==null&&re(B,Z.startTime-F),U=!1}}break e}finally{v=null,w=ee,b=!1}U=void 0}}finally{U?N():P=!1}}}var N;if(typeof _=="function")N=function(){_(ve)};else if(typeof MessageChannel<"u"){var ie=new MessageChannel,C=ie.port2;ie.port1.onmessage=ve,N=function(){C.postMessage(null)}}else N=function(){T(ve,0)};function re(F,U){z=T(function(){F(n.unstable_now())},U)}n.unstable_IdlePriority=5,n.unstable_ImmediatePriority=1,n.unstable_LowPriority=4,n.unstable_NormalPriority=3,n.unstable_Profiling=null,n.unstable_UserBlockingPriority=2,n.unstable_cancelCallback=function(F){F.callback=null},n.unstable_forceFrameRate=function(F){0>F||125<F?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):W=0<F?Math.floor(1e3/F):5},n.unstable_getCurrentPriorityLevel=function(){return w},n.unstable_next=function(F){switch(w){case 1:case 2:case 3:var U=3;break;default:U=w}var ee=w;w=U;try{return F()}finally{w=ee}},n.unstable_requestPaint=function(){j=!0},n.unstable_runWithPriority=function(F,U){switch(F){case 1:case 2:case 3:case 4:case 5:break;default:F=3}var ee=w;w=F;try{return U()}finally{w=ee}},n.unstable_scheduleCallback=function(F,U,ee){var te=n.unstable_now();switch(typeof ee=="object"&&ee!==null?(ee=ee.delay,ee=typeof ee=="number"&&0<ee?te+ee:te):ee=te,F){case 1:var me=-1;break;case 2:me=250;break;case 5:me=1073741823;break;case 4:me=1e4;break;default:me=5e3}return me=ee+me,F={id:m++,callback:U,priorityLevel:F,startTime:ee,expirationTime:me,sortIndex:-1},ee>te?(F.sortIndex=ee,r(y,F),o(g)===null&&F===o(y)&&(x?(D(z),z=-1):x=!0,re(B,ee-te))):(F.sortIndex=me,r(g,F),A||b||(A=!0,P||(P=!0,N())
vendor: 9,446 bytes, lines 18-26
18)),F},n.unstable_shouldYield=ae,n.unstable_wrapCallback=function(F){var U=w;return function(){var ee=w;w=U;try{return F.apply(this,arguments)}finally{w=ee}}}}(Sd)),Sd}var om;function u2(){return om||(om=1,kd.exports=d2()),kd.exports}/**
19 * @license React
20 * react-dom-client.production.js
21 *
22 * Copyright (c) Meta Platforms, Inc. and affiliates.
23 *
24 * This source code is licensed under the MIT license found in the
25 * LICENSE file in the root directory of this source tree.
26 */var sm;function h2(){if(sm)return Xa;sm=1;var n=u2(),r=o2(),o=s2();function l(e){var t="https://react.dev/errors/"+e;if(1<arguments.length){t+="?args[]="+encodeURIComponent(arguments[1]);for(var i=2;i<arguments.length;i++)t+="&args[]="+encodeURIComponent(arguments[i])}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 d(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function p(e){var t=e,i=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do t=e,(t.flags&4098)!==0&&(i=t.return),e=t.return;while(e)}return t.tag===3?i:null}function u(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 f(e){if(p(e)!==e)throw Error(l(188))}function g(e){var t=e.alternate;if(!t){if(t=p(e),t===null)throw Error(l(188));return t!==e?null:e}for(var i=e,a=t;;){var c=i.return;if(c===null)break;var h=c.alternate;if(h===null){if(a=c.return,a!==null){i=a;continue}break}if(c.child===h.child){for(h=c.child;h;){if(h===i)return f(c),e;if(h===a)return f(c),t;h=h.sibling}throw Error(l(188))}if(i.return!==a.return)i=c,a=h;else{for(var k=!1,E=c.child;E;){if(E===i){k=!0,i=c,a=h;break}if(E===a){k=!0,a=c,i=h;break}E=E.sibling}if(!k){for(E=h.child;E;){if(E===i){k=!0,i=h,a=c;break}if(E===a){k=!0,a=h,i=c;break}E=E.sibling}if(!k)throw Error(l(189))}}if(i.alternate!==a)throw Error(l(190))}if(i.tag!==3)throw Error(l(188));return i.stateNode.current===i?e:t}function y(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e;for(e=e.child;e!==null;){if(t=y(e),t!==null)return t;e=e.sibling}return null}var m=Object.assign,v=Symbol.for("react.element"),w=Symbol.for("react.transitional.element"),b=Symbol.for("react.portal"),A=Symbol.for("react.fragment"),x=Symbol.for("react.strict_mode"),j=Symbol.for("react.profiler"),T=Symbol.for("react.provider"),D=Symbol.for("react.consumer"),_=Symbol.for("react.context"),L=Symbol.for("react.forward_ref"),B=Symbol.for("react.suspense"),P=Symbol.for("react.suspense_list"),z=Symbol.for("react.memo"),W=Symbol.for("react.lazy"),H=Symbol.for("react.activity"),ae=Symbol.for("react.memo_cache_sentinel"),ve=Symbol.iterator;function N(e){return e===null||typeof e!="object"?null:(e=ve&&e[ve]||e["@@iterator"],typeof e=="function"?e:null)}var ie=Symbol.for("react.client.reference");function C(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===ie?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case A:return"Fragment";case j:return"Profiler";case x:return"StrictMode";case B:return"Suspense";case P:return"SuspenseList";case H:return"Activity"}if(typeof e=="object")switch(e.$$typeof){case b:return"Portal";case _:return(e.displayName||"Context")+".Provider";case D:return(e._context.displayName||"Context")+".Consumer";case L:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case z:return t=e.displayName||null,t!==null?t:C(e.type)||"Memo";case W:t=e._payload,e=e._init;try{return C(e(t))}catch{}}return null}var re=Array.isArray,F=r.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,U=o.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ee={pending:!1,data:null,method:null,action:null},te=[],me=-1;function Z(e){return{current:e}}function Y(e){0>me||(e.current=te[me],te[me]=null,me--)}function fe(e,t){me++,te[me]=e.current,e.current=t}var pe=Z(null),he=Z(null),Pe=Z(null),ot=Z(null);function _e(e,t){switch(fe(Pe,t),fe(he,e),fe(pe,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Mg(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Mg(t),e=Rg(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}Y(pe),fe(pe,e)}function ze(){Y(pe),Y(he),Y(Pe)}function nt(e){e.memoizedState!==null&&fe(ot,e);var t=pe.current,i=Rg(t,e.type);t!==i&&(fe(he,e),fe(pe,i))}function Ye(e){he.current===e&&(Y(pe),Y(he)),ot.current===e&&(Y(ot),Wa._currentValue=ee)}var Mt=Object.prototype.hasOwnProperty,Ct=n.unstable_scheduleCallback,S=n.unstable_cancelCallback,le=n.unstable_shouldYield,ne=n.unstable_requestPaint,R=n.unstable_now,M=n.unstable_getCurrentPriorityLevel,G=n.unstable_ImmediatePriority,de=n.unstable_UserBlockingPriority,ue=n.unstable_NormalPriority,Q=n.unstable_LowPriority,ge=n.unstable_IdlePriority,be=n.log,ye=n.unstable_setDisableYieldValue,Se=null,De=null;function Ee(e){if(typeof be=="function"&&ye(e),De&&typeof De.setStrictMode=="function")try{De.setStrictMode(Se,e)}catch{}}var Ze=Math.clz32?Math.clz32:ki,wi=Math.log,Gt=Math.LN2;function ki(e){return e>>>=0,e===0?32:31-(wi(e)/Gt|0)|0}var Xe=256,Cn=4194304;function sn(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:case 262144:case 524288:case 1048576:case 2097152:return e&4194048;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 Rt(e,t,i){var a=e.pendingLanes;if(a===0)return 0;var c=0,h=e.suspendedLanes,k=e.pingedLanes;e=e.warmLanes;var E=a&134217727;return E!==0?(a=E&~h,a!==0?c=sn(a):(k&=E,k!==0?c=sn(k):i||(i=E&~e,i!==0&&(c=sn(i))))):(E=a&~h,E!==0?c=sn(E):k!==0?c=sn(k):i||(i=a&~e,i!==0&&(c=sn(i)))),c===0?0:t!==0&&t!==c&&(t&h)===0&&(h=c&-c,i=t&-t,h>=i||h===32&&(i&4194048)!==0)?t:c}function Hn(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function cl(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 wo(){var e=Xe;return Xe<<=1,(Xe&4194048)===0&&(Xe=256),e}function ko(){var e=Cn;return Cn<<=1,(Cn&62914560)===0&&(Cn=4194304),e}function Ki(e){for(var t=[],i=0;31>i;i++)t.push(e);return t}function ln(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Qi(e,t,i,a,c,h){var k=e.pendingLanes;e.pendingLanes=i,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=i,e.entangledLanes&=i,e.errorRecoveryDisabledLanes&=i,e.shellSuspendCounter=0;var E=e.entanglements,O=e.expirationTimes,K=e.hiddenUpdates;for(i=k&~i;0<i;){var oe=31-Ze(i),ce=1<<oe;E[oe]=0,O[oe]=-1;var J=K[oe];if(J!==null)for(K[oe]=null,oe=0;oe<J.length;oe++){var $=J[oe];$!==null&&($.lane&=-536870913)}i&=~ce}a!==0&&gh(e,a,0),h!==0&&c===0&&e.tag!==0&&(e.suspendedLanes|=h&~(k&~t))}function gh(e,t,i){e.pendingLanes|=t,e.suspendedLanes&=~t;var a=31-Ze(t);e.entangledLanes|=t,e.entanglements[a]=e.entanglements[a]|1073741824|i&4194090}function mh(e,t){var i=e.entangledLanes|=t;for(e=e.entanglements;i;){var a=31-Ze(i),c=1<<a;c&t|e[a]&t&&(e[a]|=t),i&=~c}}function dl(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 ul(e){return e&=-e,2<e?8<e?(e&134217727)!==0?32:268435456:8:2}function yh(){var e=U.p;return e!==0?e:(e=window.event,e===void 0?32:Qg(e.type))}function Z0(e,t){var i=U.p;try{return U.p=e,t()}finally{U.p=i}}var Gn=Math.random().toString(36).slice(2),St="__reactFiber$"+Gn,zt="__reactProps$"+Gn,Ji="__reactContainer$"+Gn,hl="__reactEvents$"+Gn,X0="__reactListeners$"+Gn,K0="__reactHandles$"+Gn,vh="__reactResources$"+Gn,ea="__reactMarker$"+Gn;function pl(e){delete e[St],delete e[zt],delete e[hl],delete e[X0],delete e[K0]}function $i(e){var t=e[St];if(t)return t;for(var i=e.parentNode;i;){if(t=i[Ji]||i[St]){if(i=t.alternate,t.child!==null||i!==null&&i.child!==null)for(e=Og(e);e!==null;){if(i=e[St])return i;e=Og(e)}return t}e=i,i=e.parentNode}return null}function er(e){if(e=e[St]||e[Ji]){var t=e.tag;if(t===5||t===6||t===13||t===26||t===27||t===3)return e}return null}function ta(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e.stateNode;throw Error(l(33))}function tr(e){var t=e[vh];return t||(t=e[vh]={hoistableStyles:new Map,hoistableScripts:new Map}),t}function gt(e){e[ea]=!0}var bh=new Set,xh={};function Si(e,t){nr(e,t),nr(e+"Capture",t)}function nr(e,t){for(xh[e]=t,e=0;e<t.length;e++)bh.add(t[e])}var Q0=RegExp("^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u
26037D\\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]*$"),wh={},kh={};function J0(e){return Mt.call(kh,e)?!0:Mt.call(wh,e)?!1:Q0.test(e)?kh[e]=!0:(wh[e]=!0,!1)}function So(e,t,i){if(J0(t))if(i===null)e.removeAttribute(t);else{switch(typeof i){case"undefined":case"function":case"symbol":e.removeAttribute(t);return;case"boolean":var a=t.toLowerCase().slice(0,5);if(a!=="data-"&&a!=="aria-"){e.removeAttribute(t);return}}e.setAttribute(t,""+i)}}function To(e,t,i){if(i===null)e.removeAttribute(t);else{switch(typeof i){case"undefined":case"function":case"symbol":case"boolean":e.removeAttribute(t);return}e.setAttribute(t,""+i)}}function jn(e,t,i,a){if(a===null)e.removeAttribute(i);else{switch(typeof a){case"undefined":case"function":case"symbol":case"boolean":e.removeAttribute(i);return}e.setAttributeNS(t,i,""+a)}}var fl,Sh;function ir(e){if(fl===void 0)try{throw Error()}catch(i){var t=i.stack.trim().match(/\n( *(at )?)/);fl=t&&t[1]||"",Sh=-1<i.stack.indexOf(`
27    at`)?" (<anonymous>)":-1<i.stack.indexOf("@")?"@unknown:0:0":""}return`
28`+fl+e+Sh}var gl=!1;function ml(e,t){if(!e||gl)return"";gl=!0;var i=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var a={DetermineComponentFrameRoot:function(){try{if(t){var ce=function(){throw Error()};if(Object.defineProperty(ce.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(ce,[])}catch($){var J=$}Reflect.construct(e,[],ce)}else{try{ce.call()}catch($){J=$}e.call(ce.prototype)}}else{try{throw Error()}catch($){J=$}(ce=e())&&typeof ce.catch=="function"&&ce.catch(function(){})}}catch($){if($&&J&&typeof $.stack=="string")return[$.stack,J.stack]}return[null,null]}};a.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var c=Object.getOwnPropertyDescriptor(a.DetermineComponentFrameRoot,"name");c&&c.configurable&&Object.defineProperty(a.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var h=a.DetermineComponentFrameRoot(),k=h[0],E=h[1];if(k&&E){var O=k.split(`
29`),K=E.split(`
30`);for(c=a=0;a<O.length&&!O[a].includes("DetermineComponentFrameRoot");)a++;for(;c<K.length&&!K[c].includes("DetermineComponentFrameRoot");)c++;if(a===O.length||c===K.length)for(a=O.length-1,c=K.length-1;1<=a&&0<=c&&O[a]!==K[c];)c--;for(;1<=a&&0<=c;a--,c--)if(O[a]!==K[c]){if(a!==1||c!==1)do if(a--,c--,0>c||O[a]!==K[c]){var oe=`
31`+O[a].replace(" at new "," at ");return e.displayName&&oe.includes("<anonymous>")&&(oe=oe.replace("<anonymous>",e.displayName)),oe}while(1<=a&&0<=c);break}}}finally{gl=!1,Error.prepareStackTrace=i}return(i=e?e.displayName||e.name:"")?ir(i):""}function $0(e){switch(e.tag){case 26:case 27:case 5:return ir(e.type);case 16:return ir("Lazy");case 13:return ir("Suspense");case 19:return ir("SuspenseList");case 0:case 15:return ml(e.type,!1);case 11:return ml(e.type.render,!1);case 1:return ml(e.type,!0);case 31:return ir("Activity");default:return""}}function Th(e){try{var t="";do t+=$0(e),e=e.return;while(e);return t}catch(i){return`
32Error generating stack: `+i.message+`
33`+i.stack}}function qt(e){switch(typeof e){case"bigint":case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Ah(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function ev(e){var t=Ah(e)?"checked":"value",i=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),a=""+e[t];if(!e.hasOwnProperty(t)&&typeof i<"u"&&typeof i.get=="function"&&typeof i.set=="function"){var c=i.get,h=i.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return c.call(this)},set:function(k){a=""+k,h.call(this,k)}}),Object.defineProperty(e,t,{enumerable:i.enumerable}),{getValue:function(){return a},setValue:function(k){a=""+k},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Ao(e){e._valueTracker||(e._valueTracker=ev(e))}function Ch(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var i=t.getValue(),a="";return e&&(a=Ah(e)?e.checked?"true":"false":e.value),e=a,e!==i?(t.setValue(e),!0):!1}function Co(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var tv=/[\n"\\]/g;function Yt(e){return e.replace(tv,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function yl(e,t,i,a,c,h,k,E){e.name="",k!=null&&typeof k!="function"&&typeof k!="symbol"&&typeof k!="boolean"?e.type=k:e.removeAttribute("type"),t!=null?k==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+qt(t)):e.value!==""+qt(t)&&(e.value=""+qt(t)):k!=="submit"&&k!=="reset"||e.removeAttribute("value"),t!=null?vl(e,k,qt(t)):i!=null?vl(e,k,qt(i)):a!=null&&e.removeAttribute("value"),c==null&&h!=null&&(e.defaultChecked=!!h),c!=null&&(e.checked=c&&typeof c!="function"&&typeof c!="symbol"),E!=null&&typeof E!="function"&&typeof E!="symbol"&&typeof E!="boolean"?e.name=""+qt(E):e.removeAttribute("name")}function jh(e,t,i,a,c,h,k,E){if(h!=null&&typeof h!="function"&&typeof h!="symbol"&&typeof h!="boolean"&&(e.type=h),t!=null||i!=null){if(!(h!=="submit"&&h!=="reset"||t!=null))return;i=i!=null?""+qt(i):"",t=t!=null?""+qt(t):i,E||t===e.value||(e.value=t),e.defaultValue=t}a=a??c,a=typeof a!="function"&&typeof a!="symbol"&&!!a,e.checked=E?e.checked:!!a,e.defaultChecked=!!a,k!=null&&typeof k!="function"&&typeof k!="symbol"&&typeof k!="boolean"&&(e.name=k)}function vl(e,t,i){t==="number"&&Co(e.ownerDocument)===e||e.defaultValue===""+i||(e.defaultValue=""+i)}function rr(e,t,i,a){if(e=e.options,t){t={};for(var c=0;c<i.length;c++)t["$"+i[c]]=!0;for(i=0;i<e.length;i++)c=t.hasOwnProperty("$"+e[i].value),e[i].selected!==c&&(e[i].selected=c),c&&a&&(e[i].defaultSelected=!0)}else{for(i=""+qt(i),t=null,c=0;c<e.length;c++){if(e[c].value===i){e[c].selected=!0,a&&(e[c].defaultSelected=!0);return}t!==null||e[c].disabled||(t=e[c])}t!==null&&(t.selected=!0)}}function Eh(e,t,i){if(t!=null&&(t=""+qt(t),t!==e.value&&(e.value=t),i==null)){e.defaultValue!==t&&(e.defaultValue=t);return}e.defaultValue=i!=null?""+qt(i):""}function Dh(e,t,i,a){if(t==null){if(a!=null){if(i!=null)throw Error(l(92));if(re(a)){if(1<a.length)throw Error(l(93));a=a[0]}i=a}i==null&&(i=""),t=i}i=qt(t),e.defaultValue=i,a=e.textContent,a===i&&a!==""&&a!==null&&(e.value=a)}function ar(e,t){if(t){var i=e.firstChild;
vendor: 4,140 bytes, line 33
33if(i&&i===e.lastChild&&i.nodeType===3){i.nodeValue=t;return}}e.textContent=t}var nv=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 _h(e,t,i){var a=t.indexOf("--")===0;i==null||typeof i=="boolean"||i===""?a?e.setProperty(t,""):t==="float"?e.cssFloat="":e[t]="":a?e.setProperty(t,i):typeof i!="number"||i===0||nv.has(t)?t==="float"?e.cssFloat=i:e[t]=(""+i).trim():e[t]=i+"px"}function Mh(e,t,i){if(t!=null&&typeof t!="object")throw Error(l(62));if(e=e.style,i!=null){for(var a in i)!i.hasOwnProperty(a)||t!=null&&t.hasOwnProperty(a)||(a.indexOf("--")===0?e.setProperty(a,""):a==="float"?e.cssFloat="":e[a]="");for(var c in t)a=t[c],t.hasOwnProperty(c)&&i[c]!==a&&_h(e,c,a)}else for(var h in t)t.hasOwnProperty(h)&&_h(e,h,t[h])}function bl(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 iv=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"],["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
33-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"]]),rv=/^[\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 jo(e){return rv.test(""+e)?"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')":e}var xl=null;function wl(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var or=null,sr=null;function Rh(e){var t=er(e);if(t&&(e=t.stateNode)){var i=e[zt]||null;e:switch(e=t.stateNode,t.type){case"input":if(yl(e,i.value,i.defaultValue,i.defaultValue,i.checked,i.defaultChecked,i.type,i.name),t=i.name,i.type==="radio"&&t!=null){for(i=e;i.parentNode;)i=i.parentNode;for(i=i.querySelectorAll('input[name="'+Yt(""+t)+'"][type="radio"]'),t=0;t<i.length;t++){var a=i[t];if(a!==e&&a.form===e.form){var c=a[zt]||null;if(!c)throw Error(l(90));yl(a,c.value,c.defaultValue,c.defaultValue,c.checked,c.defaultChecked,c.type,c.name)}}for(t=0;t<i.length;t++)a=i[t],a.form===e.form&&Ch(a)}break e;case"textarea":Eh(e,i.value,i.defaultValue);break e;case"select":t=i.value,t!=null&&rr(e,!!i.multiple,t,!1)}}}var kl=!1;function zh(e,t,i){if(kl)return e(t,i);kl=!0;try{var a=e(t);return a}finally{if(kl=!1,(or!==null||sr!==null)&&(hs(),or&&(t=or,e=sr,sr=or=null,Rh(t),e)))for(t=0;t<e.length;t++)Rh(e[t])}}function na(e,t){var i=e.stateNode;if(i===null)return null;var a=i[zt]||null;if(a===null)return null;i=a[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(a=!a.disabled)||(e=e.type,a=!(e==="button"||e==="input"||e==="select"||e==="textarea")),e=!a;break e;default:e=!1}if(e)return null;if(i&&typeof i!="function")throw Error(l(231,t,typeof i));return i}var En=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Sl=!1;if(En)try{var ia={};Object.defineProperty(ia,"passive",{get:function(){Sl=!0}}),window.addEventListener("test",ia,ia),window.removeEventListener("test",ia,ia)}catch{Sl=!1}var qn=null,Tl=null,Eo=null;function Bh(){if(Eo)return Eo;var e,t=Tl,i=t.length,a,c="value"in qn?qn.value:qn.textContent,h=c.length;for(e=0;e<i&&t[e]===c[e];e++);var k=i-e;for(a=1;a<=k&&t[i-a]===c[h-a];a++);return Eo=c.slice(e,1<a?1-a:void 0)}function Do(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 _o(){return!0}function Lh(){return!1}function Bt(e){function t(i,a,c,h,k){this._reactName=i,this._targetInst=c,this.type=a,this.nativeEvent=h,this.target=k,this.currentTarget=null;for(var E in e)e.hasOwnProperty(E)&&(i=e[E],this[E]=i?i(h):h[E]);return this.isDefaultPrevented=(h.defaultPrevented!=null?h.defaultPrevented:h.returnValue===!1)?_o:Lh,this.isPropagationStopped=Lh,this}return m(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var i=this.nativeEvent;i&&(i.preventDefault?i.preventDefault():typeof i.returnValue!="unknown"&&(i.returnValue=!1),this.isDefaultPrevented=_o)},stopPropagation:function(){var i=this.nativeEvent;i&&(i.stopPropagation?i.stopPropagation():typeof i.cancelBubble!="unknown"&&(i.cancelBubble=!0),this.isPropagationStopped=_o)},persist:function(){},isPersistent:_o}),t}var Ti={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Mo=Bt(Ti),ra=m({},Ti,{view:0,detail:0}),av=Bt(ra),Al,Cl,aa,Ro=m({},ra,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:El,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!==aa&&(aa&&e.type==="mousemove"?(Al=e.screenX-aa.screenX,Cl=e.screenY-aa.screenY):Cl=Al=0,aa=e),Al)},movementY:function(e){return"movementY"in e?e.movementY:Cl}}),Oh=Bt(Ro),ov=m({},Ro,{dataTransfer:0}),sv=Bt(ov),lv=m({},ra,{relatedTarget:0}),jl=Bt(lv),cv=m({},Ti,{animationName:0,elapsedTime:0,pseudoElement:0}),dv=Bt(cv),uv=m({},Ti,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),hv=Bt(uv),pv=m({},Ti,{data:0}),Nh=Bt(pv),fv={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},gv={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"},mv={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function yv(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):(e=mv[e])?!!t[e]:!1}function El(){return yv}var vv=m({},ra,{key:function(e){if(e.key){var t=fv[e.key]||e.key;if(t!=="Unidentified")return t}
vendor: 5,186 bytes, line 33
33return e.type==="keypress"?(e=Do(e),e===13?"Enter":String.fromCharCode(e)):e.type==="keydown"||e.type==="keyup"?gv[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:El,charCode:function(e){return e.type==="keypress"?Do(e):0},keyCode:function(e){return e.type==="keydown"||e.type==="keyup"?e.keyCode:0},which:function(e){return e.type==="keypress"?Do(e):e.type==="keydown"||e.type==="keyup"?e.keyCode:0}}),bv=Bt(vv),xv=m({},Ro,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Ph=Bt(xv),wv=m({},ra,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:El}),kv=Bt(wv),Sv=m({},Ti,{propertyName:0,elapsedTime:0,pseudoElement:0}),Tv=Bt(Sv),Av=m({},Ro,{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}),Cv=Bt(Av),jv=m({},Ti,{newState:0,oldState:0}),Ev=Bt(jv),Dv=[9,13,27,32],Dl=En&&"CompositionEvent"in window,oa=null;En&&"documentMode"in document&&(oa=document.documentMode);var _v=En&&"TextEvent"in window&&!oa,Uh=En&&(!Dl||oa&&8<oa&&11>=oa),Ih=" ",Vh=!1;function Fh(e,t){switch(e){case"keyup":return Dv.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Wh(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var lr=!1;function Mv(e,t){switch(e){case"compositionend":return Wh(t);case"keypress":return t.which!==32?null:(Vh=!0,Ih);case"textInput":return e=t.data,e===Ih&&Vh?null:e;default:return null}}function Rv(e,t){if(lr)return e==="compositionend"||!Dl&&Fh(e,t)?(e=Bh(),Eo=Tl=qn=null,lr=!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 Uh&&t.locale!=="ko"?null:t.data;default:return null}}var zv={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 Hh(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t==="input"?!!zv[e.type]:t==="textarea"}function Gh(e,t,i,a){or?sr?sr.push(a):sr=[a]:or=a,t=vs(t,"onChange"),0<t.length&&(i=new Mo("onChange","change",null,i,a),e.push({event:i,listeners:t}))}var sa=null,la=null;function Bv(e){Cg(e,0)}function zo(e){var t=ta(e);if(Ch(t))return e}function qh(e,t){if(e==="change")return t}var Yh=!1;if(En){var _l;if(En){var Ml="oninput"in document;if(!Ml){var Zh=document.createElement("div");Zh.setAttribute("oninput","return;"),Ml=typeof Zh.oninput=="function"}_l=Ml}else _l=!1;Yh=_l&&(!document.documentMode||9<document.documentMode)}function Xh(){sa&&(sa.detachEvent("onpropertychange",Kh),la=sa=null)}function Kh(e){if(e.propertyName==="value"&&zo(la)){var t=[];Gh(t,la,e,wl(e)),zh(Bv,t)}}function Lv(e,t,i){e==="focusin"?(Xh(),sa=t,la=i,sa.attachEvent("onpropertychange",Kh)):e==="focusout"&&Xh()}function Ov(e){if(e==="selectionchange"||e==="keyup"||e==="keydown")return zo(la)}function Nv(e,t){if(e==="click")return zo(t)}function Pv(e,t){if(e==="input"||e==="change")return zo(t)}function Uv(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Pt=typeof Object.is=="function"?Object.is:Uv;function ca(e,t){if(Pt(e,t))return!0;if(typeof e!="object"||e===null||typeof t!="object"||t===null)return!1;var i=Object.keys(e),a=Object.keys(t);if(i.length!==a.length)return!1;for(a=0;a<i.length;a++){var c=i[a];if(!Mt.call(t,c)||!Pt(e[c],t[c]))return!1}return!0}function Qh(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function Jh(e,t){var i=Qh(e);e=0;for(var a;i;){if(i.nodeType===3){if(a=e+i.textContent.length,e<=t&&a>=t)return{node:i,offset:t-e};e=a}e:{for(;i;){if(i.nextSibling){i=i.nextSibling;break e}i=i.parentNode}i=void 0}i=Qh(i)}}function $h(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?$h(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function ep(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Co(e.document);t instanceof e.HTMLIFrameElement;){try{var i=typeof t.contentWindow.location.href=="string"}catch{i=!1}if(i)e=t.contentWindow;else break;t=Co(e.document)}return t}function Rl(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 Iv=En&&"documentMode"in document&&11>=document.documentMode,cr=null,zl=null,da=null,Bl=!1;function tp(e,t,i){var a=i.window===i?i.document:i.nodeType===9?i:i.ownerDocument;Bl||cr==null||cr!==Co(a)||(a=cr,"selectionStart"in a&&Rl(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focu
vendor: 73,840 bytes, line 33
33sNode:a.focusNode,focusOffset:a.focusOffset}),da&&ca(da,a)||(da=a,a=vs(zl,"onSelect"),0<a.length&&(t=new Mo("onSelect","select",null,t,i),e.push({event:t,listeners:a}),t.target=cr)))}function Ai(e,t){var i={};return i[e.toLowerCase()]=t.toLowerCase(),i["Webkit"+e]="webkit"+t,i["Moz"+e]="moz"+t,i}var dr={animationend:Ai("Animation","AnimationEnd"),animationiteration:Ai("Animation","AnimationIteration"),animationstart:Ai("Animation","AnimationStart"),transitionrun:Ai("Transition","TransitionRun"),transitionstart:Ai("Transition","TransitionStart"),transitioncancel:Ai("Transition","TransitionCancel"),transitionend:Ai("Transition","TransitionEnd")},Ll={},np={};En&&(np=document.createElement("div").style,"AnimationEvent"in window||(delete dr.animationend.animation,delete dr.animationiteration.animation,delete dr.animationstart.animation),"TransitionEvent"in window||delete dr.transitionend.transition);function Ci(e){if(Ll[e])return Ll[e];if(!dr[e])return e;var t=dr[e],i;for(i in t)if(t.hasOwnProperty(i)&&i in np)return Ll[e]=t[i];return e}var ip=Ci("animationend"),rp=Ci("animationiteration"),ap=Ci("animationstart"),Vv=Ci("transitionrun"),Fv=Ci("transitionstart"),Wv=Ci("transitioncancel"),op=Ci("transitionend"),sp=new Map,Ol="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error 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(" ");Ol.push("scrollEnd");function cn(e,t){sp.set(e,t),Si(t,[e])}var lp=new WeakMap;function Zt(e,t){if(typeof e=="object"&&e!==null){var i=lp.get(e);return i!==void 0?i:(t={value:e,source:t,stack:Th(t)},lp.set(e,t),t)}return{value:e,source:t,stack:Th(t)}}var Xt=[],ur=0,Nl=0;function Bo(){for(var e=ur,t=Nl=ur=0;t<e;){var i=Xt[t];Xt[t++]=null;var a=Xt[t];Xt[t++]=null;var c=Xt[t];Xt[t++]=null;var h=Xt[t];if(Xt[t++]=null,a!==null&&c!==null){var k=a.pending;k===null?c.next=c:(c.next=k.next,k.next=c),a.pending=c}h!==0&&cp(i,c,h)}}function Lo(e,t,i,a){Xt[ur++]=e,Xt[ur++]=t,Xt[ur++]=i,Xt[ur++]=a,Nl|=a,e.lanes|=a,e=e.alternate,e!==null&&(e.lanes|=a)}function Pl(e,t,i,a){return Lo(e,t,i,a),Oo(e)}function hr(e,t){return Lo(e,null,null,t),Oo(e)}function cp(e,t,i){e.lanes|=i;var a=e.alternate;a!==null&&(a.lanes|=i);for(var c=!1,h=e.return;h!==null;)h.childLanes|=i,a=h.alternate,a!==null&&(a.childLanes|=i),h.tag===22&&(e=h.stateNode,e===null||e._visibility&1||(c=!0)),e=h,h=h.return;return e.tag===3?(h=e.stateNode,c&&t!==null&&(c=31-Ze(i),e=h.hiddenUpdates,a=e[c],a===null?e[c]=[t]:a.push(t),t.lane=i|536870912),h):null}function Oo(e){if(50<La)throw La=0,Hc=null,Error(l(185));for(var t=e.return;t!==null;)e=t,t=e.return;return e.tag===3?e.stateNode:null}var pr={};function Hv(e,t,i,a){this.tag=e,this.key=i,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=a,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Ut(e,t,i,a){return new Hv(e,t,i,a)}function Ul(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Dn(e,t){var i=e.alternate;return i===null?(i=Ut(e.tag,t,e.key,e.mode),i.elementType=e.elementType,i.type=e.type,i.stateNode=e.stateNode,i.alternate=e,e.alternate=i):(i.pendingProps=t,i.type=e.type,i.flags=0,i.subtreeFlags=0,i.deletions=null),i.flags=e.flags&65011712,i.childLanes=e.childLanes,i.lanes=e.lanes,i.child=e.child,i.memoizedProps=e.memoizedProps,i.memoizedState=e.memoizedState,i.updateQueue=e.updateQueue,t=e.dependencies,i.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},i.sibling=e.sibling,i.index=e.index,i.ref=e.ref,i.refCleanup=e.refCleanup,i}function dp(e,t){e.flags&=65011714;var i=e.alternate;return i===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=i.childLanes,e.lanes=i.lanes,e.child=i.child,e.subtreeFlags=0,e.deletions=null,e.memoizedProps=i.memoizedProps,e.memoizedState=i.memoizedState,e.updateQueue=i.updateQueue,e.type=i.type,t=i.dependencies,e.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext}),e}function No(e,t,i,a,c,h){var k=0;if(a=e,typeof e=="function")Ul(e)&&(k=1);else if(typeof e=="string")k=qb(e,i,pe.current)?26:e==="html"||e==="head"||e==="body"?27:5;else e:switch(e){case H:return e=Ut(31,i,t,c),e.elementType=H,e.lanes=h,e;case A:return ji(i.children,c,h,t);case x:k=8,c|=24;break;case j:return e=Ut(12,i,t,c|2),e.elementType=j,e.lanes=h,e;case B:return e=Ut(13,i,t,c),e.elementType=B,e.lanes=h,e;case P:return e=Ut(19,i,t,c),e.elementType=P,e.lanes=h,e;default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case T:case _:k=10;break e;case D:k=9;break e;case L:k=11;break e;case z:k=14;break e;case W:k=16,a=null;break e}k=29,i=Error(l(130,e===null?"null":typeof e,"")),a=null}return t=Ut(k,i,t,c),t.elementType=e,t.type=a,t.lanes=h,t}function ji(e,t,i,a){return e=Ut(7,e,a,t),e.lanes=i,e}function Il(e,t,i){return e=Ut(6,e,null,t),e.lanes=i,e}function Vl(e,t,i){return t=Ut(4,e.children!==null?e.children:[],e.key,t),t.lanes=i,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}var fr=[],gr=0,Po=null,Uo=0,Kt=[],Qt=0,Ei=null,_n=1,Mn="";function Di(e,t){fr[gr++]=Uo,fr[gr++]=Po,Po=e,Uo=t}function up(e,t,i){Kt[Qt++]=_n,Kt[Qt++]=Mn,Kt[Qt++]=Ei,Ei=e;var a=_n;e=Mn;var c=32-Ze(a)-1;a&=~(1<<c),i+=1;var h=32-Ze(t)+c;if(30<h){var k=c-c%5;h=(a&(1<<k)-1).toString(32),a>>=k,c-=k,_n=1<<32-Ze(t)+c|i<<c|a,Mn=h+e}else _n=1<<h|i<<c|a,Mn=e}function Fl(e){e.return!==null&&(Di(e,1),up(e,1,0))}function Wl(e){for(;e===Po;)Po=fr[--gr],fr[gr]=null,Uo=fr[--gr],fr[gr]=null;for(;e===Ei;)Ei=Kt[--Qt],Kt[Qt]=null,Mn=Kt[--Qt],Kt[Qt]=null,_n=Kt[--Qt],Kt[Qt]=null}var jt=null,it=null,Ie=!1,_i=null,yn=!1,Hl=Error(l(519));function Mi(e){var t=Error(l(418,""));throw pa(Zt(t,e)),Hl}function hp(e){var t=e.stateNode,i=e.type,a=e.memoizedProps;switch(t[St]=e,t[zt]=a,i){case"dialog":Le("cancel",t),Le("close",t);break;case"iframe":case"object":case"embed":Le("load",t);break;case"video":case"audio":for(i=0;i<Na.length;i++)Le(Na[i],t);break;case"source":Le("error",t);break;case"img":case"image":case"link":Le("error",t),Le("load",t);break;case"details":Le("toggle",t);break;case"input":Le("invalid",t),jh(t,a.value,a.defaultValue,a.checked,a.defaultChecked,a.type,a.name,!0),Ao(t);break;case"select":Le("invalid",t);break;case"textarea":Le("invalid",t),Dh(t,a.value,a.defaultValue,a.children),Ao(t)}i=a.children,typeof i!="string"&&typeof i!="number"&&typeof i!="bigint"||t.textContent===""+i||a.suppressHydrationWarning===!0||_g(t.textContent,i)?(a.popover!=null&&(Le("beforetoggle",t),Le("toggle",t)),a.onScroll!=null&&Le("scroll",t),a.onScrollEnd!=null&&Le("scrollend",t),a.onClick!=null&&(t.onclick=bs),t=!0):t=!1,t||Mi(e)}function pp(e){for(jt=e.return;jt;)switch(jt.tag){case 5:case 13:yn=!1;return;case 27:case 3:yn=!0;return;default:jt=jt.return}}function ua(e){if(e!==jt)return!1;if(!Ie)return pp(e),Ie=!0,!1;var t=e.tag,i;if((i=t!==3&&t!==27)&&((i=t===5)&&(i=e.type,i=!(i!=="form"&&i!=="button")||od(e.type,e.memoizedProps)),i=!i),i&&it&&Mi(e),pp(e),t===13){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(l(317));e:{for(e=e.nextSibling,t=0;e;){if(e.nodeType===8)if(i=e.data,i==="/$"){if(t===0){it=un(e.nextSibling);break e}t--}else i!=="$"&&i!=="$!"&&i!=="$?"||t++;e=e.nextSibling}it=null}}else t===27?(t=it,li(e.type)?(e=dd,dd=null,it=e):it=t):it=jt?un(e.stateNode.nextSibling):null;return!0}function ha(){it=jt=null,Ie=!1}function fp(){var e=_i;return e!==null&&(Nt===null?Nt=e:Nt.push.apply(Nt,e),_i=null),e}function pa(e){_i===null?_i=[e]:_i.push(e)}var Gl=Z(null),Ri=null,Rn=null;function Yn(e,t,i){fe(Gl,t._currentValue),t._currentValue=i}function zn(e){e._currentValue=Gl.current,Y(Gl)}function ql(e,t,i){for(;e!==null;){var a=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,a!==null&&(a.childLanes|=t)):a!==null&&(a.childLanes&t)!==t&&(a.childLanes|=t),e===i)break;e=e.return}}function Yl(e,t,i,a){var c=e.child;for(c!==null&&(c.return=e);c!==null;){var h=c.dependencies;if(h!==null){var k=c.child;h=h.firstContext;e:for(;h!==null;){var E=h;h=c;for(var O=0;O<t.length;O++)if(E.context===t[O]){h.lanes|=i,E=h.alternate,E!==null&&(E.lanes|=i),ql(h.return,i,e),a||(k=null);break e}h=E.next}}else if(c.tag===18){if(k=c.return,k===null)throw Error(l(341));k.lanes|=i,h=k.alternate,h!==null&&(h.lanes|=i),ql(k,i,e),k=null}else k=c.child;if(k!==null)k.return=c;else for(k=c;k!==null;){if(k===e){k=null;break}if(c=k.sibling,c!==null){c.return=k.return,k=c;break}k=k.return}c=k}}function fa(e,t,i,a){e=null;for(var c=t,h=!1;c!==null;){if(!h){if((c.flags&524288)!==0)h=!0;else if((c.flags&262144)!==0)break}if(c.tag===10){var k=c.alternate;if(k===null)throw Error(l(387));if(k=k.memoizedProps,k!==null){var E=c.type;Pt(c.pendingProps.value,k.value)||(e!==null?e.push(E):e=[E])}}else if(c===ot.current){if(k=c.alternate,k===null)throw Error(l(387));k.memoizedState.memoizedState!==c.memoizedState.memoizedState&&(e!==null?e.push(Wa):e=[Wa])}c=c.return}e!==null&&Yl(t,e,i,a),t.flags|=262144}function Io(e){for(e=e.firstContext;e!==null;){if(!Pt(e.context._currentValue,e.memoizedValue))return!0;e=e.next}return!1}function zi(e){Ri=e,Rn=null,e=e.dependencies,e!==null&&(e.firstContext=null)}function Tt(e){return gp(Ri,e)}function Vo(e,t){return Ri===null&&zi(e),gp(e,t)}function gp(e,t){var i=t._currentValue;if(t={context:t,memoizedValue:i,next:null},Rn===null){if(e===null)throw Error(l(308));Rn=t,e.dependencies={lanes:0,firstContext:t},e.flags|=524288}else Rn=Rn.next=t;return i}var Gv=typeof AbortController<"u"?AbortController:function(){var e=[],t=this.signal={aborted:!1,addEventListener:function(i,a){e.push(a)}};this.abort=function(){t.aborted=!0,e.forEach(function(i){return i()})}},qv=n.unstable_scheduleCallback,Yv=n.unstable_NormalPriority,ht={$$typeof:_,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function Zl(){return{controller:new Gv,data:new Map,refCount:0}}function ga(e){e.refCount--,e.refCount===0&&qv(Yv,function(){e.controller.abort()})}var ma=null,Xl=0,mr=0,yr=null;function Zv(e,t){if(ma===null){var i=ma=[];Xl=0,mr=Qc(),yr={status:"pending",value:void 0,then:function(a){i.push(a)}}}return Xl++,t.then(mp,mp),t}function mp(){if(--Xl===0&&ma!==null){yr!==null&&(yr.status="fulfilled");var e=ma;ma=null,mr=0,yr=null;for(var t=0;t<e.length;t++)(0,e[t])()}}function Xv(e,t){var i=[],a={status:"pending",value:null,reason:null,then:function(c){i.push(c)}};return e.then(function(){a.status="fulfilled",a.value=t;for(var c=0;c<i.length;c++)(0,i[c])(t)},function(c){for(a.status="rejected",a.reason=c,c=0;c<i.length;c++)(0,i[c])(void 0)}),a}var yp=F.S;F.S=function(e,t){typeof t=="object"&&t!==null&&typeof t.then=="function"&&Zv(e,t),yp!==null&&yp(e,t)};var Bi=Z(null);function Kl(){var e=Bi.current;return e!==null?e:Ke.pooledCache}function Fo(e,t){t===null?fe(Bi,Bi.current):fe(Bi,t.pool)}function vp(){var e=Kl();return e===null?null:{parent:ht._currentValue,pool:e}}var ya=Error(l(460)),bp=Error(l(474)),Wo=Error(l(542)),Ql={then:function(){}};function xp(e){return e=e.status,e==="fulfilled"||e==="rejected"}function Ho(){}function wp(e,t,i){switch(i=e[i],i===void 0?e.push(t):i!==t&&(t.then(Ho,Ho),t=i),t.status){case"fulfilled":return t.value;case"rejected":throw e=t.reason,Sp(e),e;default:if(typeof t.status=="string")t.then(Ho,Ho);else{if(e=Ke,e!==null&&100<e.shellSuspendCounter)throw Error(l(482));e=t,e.status="pending",e.then(function(a){if(t.status==="pending"){var c=t;c.status="fulfilled",c.value=a}},function(a){if(t.status==="pending"){var c=t;c.status="rejected",c.reason=a}})}switch(t.status){case"fulfilled":return t.value;case"rejected":throw e=t.reason,Sp(e),e}throw va=t,ya}}var va=null;function kp(){if(va===null)throw Error(l(459));var e=va;return va=null,e}function Sp(e){if(e===ya||e===Wo)throw Error(l(483))}var Zn=!1;function Jl(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function $l(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 Xn(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Kn(e,t,i){var a=e.updateQueue;if(a===null)return null;if(a=a.shared,(Ve&2)!==0){var c=a.pending;return c===null?t.next=t:(t.next=c.next,c.next=t),a.pending=t,t=Oo(e),cp(e,null,i),t}return Lo(e,a,t,i),Oo(e)}function ba(e,t,i){if(t=t.updateQueue,t!==null&&(t=t.shared,(i&4194048)!==0)){var a=t.lanes;a&=e.pendingLanes,i|=a,t.lanes=i,mh(e,i)}}function ec(e,t){var i=e.updateQueue,a=e.alternate;if(a!==null&&(a=a.updateQueue,i===a)){var c=null,h=null;if(i=i.firstBaseUpdate,i!==null){do{var k={lane:i.lane,tag:i.tag,payload:i.payload,callback:null,next:null};h===null?c=h=k:h=h.next=k,i=i.next}while(i!==null);h===null?c=h=t:h=h.next=t}else c=h=t;i={baseState:a.baseState,firstBaseUpdate:c,lastBaseUpdate:h,shared:a.shared,callbacks:a.callbacks},e.updateQueue=i;return}e=i.lastBaseUpdate,e===null?i.firstBaseUpdate=t:e.next=t,i.lastBaseUpdate=t}var tc=!1;function xa(){if(tc){var e=yr;if(e!==null)throw e}}function wa(e,t,i,a){tc=!1;var c=e.updateQueue;Zn=!1;var h=c.firstBaseUpdate,k=c.lastBaseUpdate,E=c.shared.pending;if(E!==null){c.shared.pending=null;var O=E,K=O.next;O.next=null,k===null?h=K:k.next=K,k=O;var oe=e.alternate;oe!==null&&(oe=oe.updateQueue,E=oe.lastBaseUpdate,E!==k&&(E===null?oe.firstBaseUpdate=K:E.next=K,oe.lastBaseUpdate=O))}if(h!==null){var ce=c.baseState;k=0,oe=K=O=null,E=h;do{var J=E.lane&-536870913,$=J!==E.lane;if($?(Ne&J)===J:(a&J)===J){J!==0&&J===mr&&(tc=!0),oe!==null&&(oe=oe.next={lane:0,tag:E.tag,payload:E.payload,callback:null,next:null});e:{var je=e,Ae=E;J=t;var Ge=i;switch(Ae.tag){case 1:if(je=Ae.payload,typeof je=="function"){ce=je.call(Ge,ce,J);break e}ce=je;break e;case 3:je.flags=je.flags&-65537|128;case 0:if(je=Ae.payload,J=typeof je=="function"?je.call(Ge,ce,J):je,J==null)break e;ce=m({},ce,J);break e;case 2:Zn=!0}}J=E.callback,J!==null&&(e.flags|=64,$&&(e.flags|=8192),$=c.callbacks,$===null?c.callbacks=[J]:$.push(J))}else $={lane:J,tag:E.tag,payload:E.payload,callback:E.callback,next:null},oe===null?(K=oe=$,O=ce):oe=oe.next=$,k|=J;if(E=E.next,E===null){if(E=c.shared.pending,E===null)break;$=E,E=$.next,$.next=null,c.lastBaseUpdate=$,c.shared.pending=null}}while(!0);oe===null&&(O=ce),c.baseState=O,c.firstBaseUpdate=K,c.lastBaseUpdate=oe,h===null&&(c.shared.lanes=0),ri|=k,e.lanes=k,e.memoizedState=ce}}function Tp(e,t){if(typeof e!="function")throw Error(l(191,e));e.call(t)}function Ap(e,t){var i=e.callbacks;if(i!==null)for(e.callbacks=null,e=0;e<i.length;e++)Tp(i[e],t)}var vr=Z(null),Go=Z(0);function Cp(e,t){e=In,fe(Go,e),fe(vr,t),In=e|t.baseLanes}function nc(){fe(Go,In),fe(vr,vr.current)}function ic(){In=Go.current,Y(vr),Y(Go)}var Qn=0,Me=null,We=null,ct=null,qo=!1,br=!1,Li=!1,Yo=0,ka=0,xr=null,Kv=0;function st(){throw Error(l(321))}function rc(e,t){if(t===null)return!1;for(var i=0;i<t.length&&i<e.length;i++)if(!Pt(e[i],t[i]))return!1;return!0}function ac(e,t,i,a,c,h){return Qn=h,Me=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,F.H=e===null||e.memoizedState===null?df:uf,Li=!1,h=i(a,c),Li=!1,br&&(h=Ep(t,i,a,c)),jp(e),h}function jp(e){F.H=$o;var t=We!==null&&We.next!==null;if(Qn=0,ct=We=Me=null,qo=!1,ka=0,xr=null,t)throw Error(l(300));e===null||mt||(e=e.dependencies,e!==null&&Io(e)&&(mt=!0))}function Ep(e,t,i,a){Me=e;var c=0;do{if(br&&(xr=null),ka=0,br=!1,25<=c)throw Error(l(301));if(c+=1,ct=We=null,e.updateQueue!=null){var h=e.updateQueue;h.lastEffect=null,h.events=null,h.stores=null,h.memoCache!=null&&(h.memoCache.index=0)}F.H=ib,h=t(i,a)}while(br);return h}function Qv(){var e=F.H,t=e.useState()[0];return t=typeof t.then=="function"?Sa(t):t,e=e.useState()[0],(We!==null?We.memoizedState:null)!==e&&(Me.flags|=1024),t}function oc(){var e=Yo!==0;return Yo=0,e}function sc(e,t,i){t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~i}function lc(e){if(qo){for(e=e.memoizedState;e!==null;){var t=e.queue;t!==null&&(t.pending=null),e=e.next}qo=!1}Qn=0,ct=We=Me=null,br=!1,ka=Yo=0,xr=null}function Lt(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return ct===null?Me.memoizedState=ct=e:ct=ct.next=e,ct}function dt(){if(We===null){var e=Me.alternate;e=e!==null?e.memoizedState:null}else e=We.next;var t=ct===null?Me.memoizedState:ct.next;if(t!==null)ct=t,We=e;else{if(e===null)throw Me.alternate===null?Error(l(467)):Error(l(310));We=e,e={memoizedState:We.memoizedState,baseState:We.baseState,baseQueue:We.baseQueue,queue:We.queue,next:null},ct===null?Me.memoizedState=ct=e:ct=ct.next=e}return ct}function cc(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function Sa(e){var t=ka;return ka+=1,xr===null&&(xr=[]),e=wp(xr,e,t),t=Me,(ct===null?t.memoizedState:ct.next)===null&&(t=t.alternate,F.H=t===null||t.memoizedState===null?df:uf),e}function Zo(e){if(e!==null&&typeof e=="object"){if(typeof e.then=="function")return Sa(e);if(e.$$typeof===_)return Tt(e)}throw Error(l(438,String(e)))}function dc(e){var t=null,i=Me.updateQueue;if(i!==null&&(t=i.memoCache),t==null){var a=Me.alternate;a!==null&&(a=a.updateQueue,a!==null&&(a=a.memoCache,a!=null&&(t={data:a.data.map(function(c){return c.slice()}),index:0})))}if(t==null&&(t={data:[],index:0}),i===null&&(i=cc(),Me.updateQueue=i),i.memoCache=t,i=t.data[t.index],i===void 0)for(i=t.data[t.index]=Array(e),a=0;a<e;a++)i[a]=ae;return t.index++,i}function Bn(e,t){return typeof t=="function"?t(e):t}function Xo(e){var t=dt();return uc(t,We,e)}function uc(e,t,i){var a=e.queue;if(a===null)throw Error(l(311));a.lastRenderedReducer=i;var c=e.baseQueue,h=a.pending;if(h!==null){if(c!==null){var k=c.next;c.next=h.next,h.next=k}t.baseQueue=c=h,a.pending=null}if(h=e.baseState,c===null)e.memoizedState=h;else{t=c.next;var E=k=null,O=null,K=t,oe=!1;do{var ce=K.lane&-536870913;if(ce!==K.lane?(Ne&ce)===ce:(Qn&ce)===ce){var J=K.revertLane;if(J===0)O!==null&&(O=O.next={lane:0,revertLane:0,action:K.action,hasEagerState:K.hasEagerState,eagerState:K.eagerState,next:null}),ce===mr&&(oe=!0);else if((Qn&J)===J){K=K.next,J===mr&&(oe=!0);continue}else ce={lane:0,revertLane:K.revertLane,action:K.action,hasEagerState:K.hasEagerState,eagerState:K.eagerState,next:null},O===null?(E=O=ce,k=h):O=O.next=ce,Me.lanes|=J,ri|=J;ce=K.action,Li&&i(h,ce),h=K.hasEagerState?K.eagerState:i(h,ce)}else J={lane:ce,revertLane:K.revertLane,action:K.action,hasEagerState:K.hasEagerState,eagerState:K.eagerState,next:null},O===null?(E=O=J,k=h):O=O.next=J,Me.lanes|=ce,ri|=ce;K=K.next}while(K!==null&&K!==t);if(O===null?k=h:O.next=E,!Pt(h,e.memoizedState)&&(mt=!0,oe&&(i=yr,i!==null)))throw i;e.memoizedState=h,e.baseState=k,e.baseQueue=O,a.lastRenderedState=h}return c===null&&(a.lanes=0),[e.memoizedState,a.dispatch]}function hc(e){var t=dt(),i=t.queue;if(i===null)throw Error(l(311));i.lastRenderedReducer=e;var a=i.dispatch,c=i.pending,h=t.memoizedState;if(c!==null){i.pending=null;var k=c=c.next;do h=e(h,k.action),k=k.next;while(k!==c);Pt(h,t.memoizedState)||(mt=!0),t.memoizedState=h,t.baseQueue===null&&(t.baseState=h),i.lastRenderedState=h}return[h,a]}function Dp(e,t,i){var a=Me,c=dt(),h=Ie;if(h){if(i===void 0)throw Error(l(407));i=i()}else i=t();var k=!Pt((We||c).memoizedState,i);k&&(c.memoizedState=i,mt=!0),c=c.queue;var E=Rp.bind(null,a,c,e);if(Ta(2048,8,E,[e]),c.getSnapshot!==t||k||ct!==null&&ct.memoizedState.tag&1){if(a.flags|=2048,wr(9,Ko(),Mp.bind(null,a,c,i,t),null),Ke===null)throw Error(l(349));h||(Qn&124)!==0||_p(a,t,i)}return i}function _p(e,t,i){e.flags|=16384,e={getSnapshot:t,value:i},t=Me.updateQueue,t===null?(t=cc(),Me.updateQueue=t,t.stores=[e]):(i=t.stores,i===null?t.stores=[e]:i.push(e))}function Mp(e,t,i,a){t.value=i,t.getSnapshot=a,zp(t)&&Bp(e)}function Rp(e,t,i){return i(function(){zp(t)&&Bp(e)})}function zp(e){var t=e.getSnapshot;e=e.value;try{var i=t();return!Pt(e,i)}catch{return!0}}function Bp(e){var t=hr(e,2);t!==null&&Ht(t,e,2)}function pc(e){var t=Lt();if(typeof e=="function"){var i=e;if(e=i(),Li){Ee(!0);try{i()}finally{Ee(!1)}}}return t.memoizedState=t.baseState=e,t.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:Bn,lastRenderedState:e},t}function Lp(e,t,i,a){return e.baseState=i,uc(e,We,typeof a=="function"?a:Bn)}function Jv(e,t,i,a,c){if(Jo(e))throw Error(l(485));if(e=t.action,e!==null){var h={payload:c,action:e,next:null,isTransition:!0,status:"pending",value:null,reason:null,listeners:[],then:function(k){h.listeners.push(k)}};F.T!==null?i(!0):h.isTransition=!1,a(h),i=t.pending,i===null?(h.next=t.pending=h,Op(t,h)):(h.next=i.next,t.pending=i.next=h)}}function Op(e,t){var i=t.action,a=t.payload,c=e.state;if(t.isTransition){var h=F.T,k={};F.T=k;try{var E=i(c,a),O=F.S;O!==null&&O(k,E),Np(e,t,E)}catch(K){fc(e,t,K)}finally{F.T=h}}else try{h=i(c,a),Np(e,t,h)}catch(K){fc(e,t,K)}}function Np(e,t,i){i!==null&&typeof i=="object"&&typeof i.then=="function"?i.then(function(a){Pp(e,t,a)},function(a){return fc(e,t,a)}):Pp(e,t,i)}function Pp(e,t,i){t.status="fulfilled",t.value=i,Up(t),e.state=i,t=e.pending,t!==null&&(i=t.next,i===t?e.pending=null:(i=i.next,t.next=i,Op(e,i)))}function fc(e,t,i){var a=e.pending;if(e.pending=null,a!==null){a=a.next;do t.status="rejected",t.reason=i,Up(t),t=t.next;while(t!==a)}e.action=null}function Up(e){e=e.listeners;for(var t=0;t<e.length;t++)(0,e[t])()}function Ip(e,t){return t}function Vp(e,t){if(Ie){var i=Ke.formState;if(i!==null){e:{var a=Me;if(Ie){if(it){t:{for(var c=it,h=yn;c.nodeType!==8;){if(!h){c=null;break t}if(c=un(c.nextSibling),c===null){c=null;break t}}h=c.data,c=h==="F!"||h==="F"?c:null}if(c){it=un(c.nextSibling),a=c.data==="F!";break e}}Mi(a)}a=!1}a&&(t=i[0])}}return i=Lt(),i.memoizedState=i.baseState=t,a={pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ip,lastRenderedState:t},i.queue=a,i=sf.bind(null,Me,a),a.dispatch=i,a=pc(!1),h=bc.bind(null,Me,!1,a.queue),a=Lt(),c={state:t,dispatch:null,action:e,pending:null},a.queue=c,i=Jv.bind(null,Me,c,h,i),c.dispatch=i,a.memoizedState=e,[t,i,!1]}function Fp(e){var t=dt();return Wp(t,We,e)}function Wp(e,t,i){if(t=uc(e,t,Ip)[0],e=Xo(Bn)[0],typeof t=="object"&&t!==null&&typeof t.then=="function")try{var a=Sa(t)}catch(k){throw k===ya?Wo:k}else a=t;t=dt();var c=t.queue,h=c.dispatch;return i!==t.memoizedState&&(Me.flags|=2048,wr(9,Ko(),$v.bind(null,c,i),null)),[a,h,e]}function $v(e,t){e.action=t}function Hp(e){var t=dt(),i=We;if(i!==null)return Wp(t,i,e);dt(),t=t.memoizedState,i=dt();var a=i.queue.dispatch;return i.memoizedState=e,[t,a,!1]}function wr(e,t,i,a){return e={tag:e,create:i,deps:a,inst:t,next:null},t=Me.updateQueue,t===null&&(t=cc(),Me.updateQueue=t),i=t.lastEffect,i===null?t.lastEffect=e.next=e:(a=i.next,i.next=e,e.next=a,t.lastEffect=e),e}function Ko(){return{destroy:void 0,resource:void 0}}function Gp(){return dt().memoizedState}function Qo(e,t,i,a){var c=Lt();a=a===void 0?null:a,Me.flags|=e,c.memoizedState=wr(1|t,Ko(),i,a)}function Ta(e,t,i,a){var c=dt();a=a===void 0?null:a;var h=c.memoizedState.inst;We!==null&&a!==null&&rc(a,We.memoizedState.deps)?c.memoizedState=wr(t,h,i,a):(Me.flags|=e,c.memoizedState=wr(1|t,h,i,a))}function qp(e,t){Qo(8390656,8,e,t)}function Yp(e,t){Ta(2048,8,e,t)}function Zp(e,t){return Ta(4,2,e,t)}function Xp(e,t){return Ta(4,4,e,t)}function Kp(e,t){if(typeof t=="function"){e=e();var i=t(e);return function(){typeof i=="function"?i():t(null)}}if(t!=null)return e=e(),t.current=e,function(){t.current=null}}function Qp(e,t,i){i=i!=null?i.concat([e]):null,Ta(4,4,Kp.bind(null,t,e),i)}function gc(){}function Jp(e,t){var i=dt();t=t===void 0?null:t;var a=i.memoizedState;return t!==null&&rc(t,a[1])?a[0]:(i.memoizedState=[e,t],e)}function $p(e,t){var i=dt();t=t===void 0?null:t;var a=i.memoizedState;if(t!==null&&rc(t,a[1]))return a[0];if(a=e(),Li){Ee(!0);try{e()}finally{Ee(!1)}}return i.memoizedState=[a,t],a}function mc(e,t,i){return i===void 0||(Qn&1073741824)!==0?e.memoizedState=t:(e.memoizedState=i,e=ig(),Me.lanes|=e,ri|=e,i)}function ef(e,t,i,a){return Pt(i,t)?i:vr.current!==null?(e=mc(e,i,a),Pt(e,t)||(mt=!0),e):(Qn&42)===0?(mt=!0,e.memoizedState=i):(e=ig(),Me.lanes|=e,ri|=e,t)}function tf(e,t,i,a,c){var h=U.p;U.p=h!==0&&8>h?h:8;var k=F.T,E={};F.T=E,bc(e,!1,t,i);try{var O=c(),K=F.S;if(K!==null&&K(E,O),O!==null&&typeof O=="object"&&typeof O.then=="function"){var oe=Xv(O,a);Aa(e,t,oe,Wt(e))}else Aa(e,t,a,Wt(e))}catch(ce){Aa(e,t,{then:function(){},status:"rejected",reason:ce},Wt())}finally{U.p=h,F.T=k}}function eb(){}function yc(e,t,i,a){if(e.tag!==5)throw Error(l(476));var c=nf(e).queue;tf(e,c,t,ee,i===null?eb:function(){return rf(e),i(a)})}function nf(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:ee,baseState:ee,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Bn,lastRenderedState:ee},next:null};var i={};return t.next={memoizedState:i,baseState:i,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Bn,lastRenderedState:i},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function rf(e){var t=nf(e).next.queue;Aa(e,t,{},Wt())}function vc(){return Tt(Wa)}function af(){return dt().memoizedState}function of(){return dt().memoizedState}function tb(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var i=Wt();e=Xn(i);var a=Kn(t,e,i);a!==null&&(Ht(a,t,i),ba(a,t,i)),t={cache:Zl()},e.payload=t;return}t=t.return}}function nb(e,t,i){var a=Wt();i={lane:a,revertLane:0,action:i,hasEagerState:!1,eagerState:null,next:null},Jo(e)?lf(t,i):(i=Pl(e,t,i,a),i!==null&&(Ht(i,e,a),cf(i,t,a)))}function sf(e,t,i){var a=Wt();Aa(e,t,i,a)}function Aa(e,t,i,a){var c={lane:a,revertLane:0,action:i,hasEagerState:!1,eagerState:null,next:null};if(Jo(e))lf(t,c);else{var h=e.alternate;if(e.lanes===0&&(h===null||h.lanes===0)&&(h=t.lastRenderedReducer,h!==null))try{var k=t.lastRenderedState,E=h(k,i);if(c.hasEagerState=!0,c.eagerState=E,Pt(E,k))return Lo(e,t,c,0),Ke===null&&Bo(),!1}catch{}finally{}if(i=Pl(e,t,c,a),i!==null)return Ht(i,e,a),cf(i,t,a),!0}return!1}function bc(e,t,i,a){if(a={lane:2,revertLane:Qc(),action:a,hasEagerState:!1,eagerState:null,next:null},Jo(e)){if(t)throw Error(l(479))}else t=Pl(e,i,a,2),t!==null&&Ht(t,e,2)}function Jo(e){var t=e.alternate;return e===Me||t!==null&&t===Me}function lf(e,t){br=qo=!0;var i=e.pending;i===null?t.next=t:(t.next=i.next,i.next=t),e.pending=t}function cf(e,t,i){if((i&4194048)!==0){var a=t.lanes;a&=e.pendingLanes,i|=a,t.lanes=i,mh(e,i)}}var $o={readContext:Tt,use:Zo,useCallback:st,useContext:st,useEffect:st,useImperativeHandle:st,useLayoutEffect:st,useInsertionEffect:st,useMemo:st,useReducer:st,useRef:st,useState:st,useDebugValue:st,useDeferredValue:st,useTransition:st,useSyncExternalStore:st,useId:st,useHostTransitionStatus:st,useFormState:st,useActionState:st,useOptimistic:st,useMemoCache:st,useCacheRefresh:st},df={readContext:Tt,use:Zo,useCallback:function(e,t){return Lt().memoizedState=[e,t===void 0?null:t],e},useContext:Tt,useEffect:qp,useImperativeHandle:function(e,t,i){i=i!=null?i.concat([e]):null,Qo(4194308,4,Kp.bind(null,t,e),i)},useLayoutEffect:function(e,t){return Qo(4194308,4,e,t)},useInsertionEffect:function(e,t){Qo(4,2,e,t)},useMemo:function(e,t){var i=Lt();t=t===void 0?null:t;var a=e();if(Li){Ee(!0);try{e()}finally{Ee(!1)}}return i.memoizedState=[a,t],a},useReducer:function(e,t,i){var a=Lt();if(i!==void 0){var c=i(t);if(Li){Ee(!0);try{i(t)}finally{Ee(!1)}}}else c=t;return a.memoizedState=a.baseState=c,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:c},a.queue=e,e=e.dispatch=nb.bind(null,Me,e),[a.memoizedState,e]},useRef:function(e){var t=Lt();return e={current:e},t.memoizedState=e},useState:function(e){e=pc(e);var t=e.queue,i=sf.bind(null,Me,t);return t.dispatch=i,[e.memoizedState,i]},useDebugValue:gc,useDeferredValue:function(e,t){var i=Lt();return mc(i,e,t)},useTransition:function(){var e=pc(!1);return e=tf.bind(null,Me,e.queue,!0,!1),Lt().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,i){var a=Me,c=Lt();if(Ie){if(i===void 0)throw Error(l(407));i=i()}else{if(i=t(),Ke===null)throw Error(l(349));(Ne&124)!==0||_p(a,t,i)}c.memoizedState=i;var h={value:i,getSnapshot:t};return c.queue=h,qp(Rp.bind(null,a,h,e),[e]),a.flags|=2048,wr(9,Ko(),Mp.bind(null,a,h,i,t),null),i},useId:function(){var e=Lt(),t=Ke.identifierPrefix;if(Ie){var i=Mn,a=_n;i=(a&~(1<<32-Ze(a)-1)).toString(32)+i,t="«"+t+"R"+i,i=Yo++,0<i&&(t+="H"+i.toString(32)),t+="»"}else i=Kv++,t="«"+t+"r"+i.toString(32)+"»";return e.memoizedState=t},useHostTransitionStatus:vc,useFormState:Vp,useActionState:Vp,useOptimistic:function(e){var t=Lt();t.memoizedState=t.baseState=e;var i={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return t.queue=i,t=bc.bind(null,Me,!0,i),i.dispatch=t,[e,t]},useMemoCache:dc,useCacheRefresh:function(){return Lt().memoizedState=tb.bind(null,Me)}},uf={readContext:Tt,use:Zo,useCallback:Jp,useContext:Tt,useEffect:Yp,useImperativeHandle:Qp,useInsertionEffect:Zp,useLayoutEffect:Xp,useMemo:$p,useReducer:Xo,useRef:Gp,useState:function(){return Xo(Bn)},useDebugValue:gc,useDeferredValue:function(e,t){var i=dt();return ef(i,We.memoizedState,e,t)},useTransition:function(){var e=Xo(Bn)[0],t=dt().memoizedState;return[typeof e=="boolean"?e:Sa(e),t]},useSyncExternalStore:Dp,useId:af,useHostTransitionStatus:vc,useFormState:Fp,useActionState:Fp,useOptimistic:function(e,t){var i=dt();return Lp(i,We,e,t)},useMemoCache:dc,useCacheRefresh:of},ib={readContext:Tt,use:Zo,useCallback:Jp,useContext:Tt,useEffect:Yp,useImperativeHandle:Qp,useInsertionEffect:Zp,useLayoutEffect:Xp,useMemo:$p,useReducer:hc,useRef:Gp,useState:function(){return hc(Bn)},useDebugValue:gc,useDeferredValue:function(e,t){var i=dt();return We===null?mc(i,e,t):ef(i,We.memoizedState,e,t)},useTransition:function(){var e=hc(Bn)[0],t=dt().memoizedState;return[typeof e=="boolean"?e:Sa(e),t]},useSyncExternalStore:Dp,useId:af,useHostTransitionStatus:vc,useFormState:Hp,useActionState:Hp,useOptimistic:function(e,t){var i=dt();return We!==null?Lp(i,We,e,t):(i.baseState=e,[e,i.queue.dispatch])},useMemoCache:dc,useCacheRefresh:of},kr=null,Ca=0;function es(e){var t=Ca;return Ca+=1,kr===null&&(kr=[]),wp(kr,e,t)}function ja(e,t){t=t.props.ref,e.ref=t!==void 0?t:null}function ts(e,t){throw t.$$typeof===v?Error(l(525)):(e=Object.prototype.toString.call(t),Error(l(31,e==="[object Object]"?"object with keys {"+Object.keys(t).join(", ")+"}":e)))}function hf(e){var t=e._init;return t(e._payload)}function pf(e){function t(q,I){if(e){var X=q.deletions;X===null?(q.deletions=[I],q.flags|=16):X.push(I)}}function i(q,I){if(!e)return null;for(;I!==null;)t(q,I),I=I.sibling;return null}function a(q){for(var I=new Map;q!==null;)q.key!==null?I.set(q.key,q):I.set(q.index,q),q=q.sibling;return I}function c(q,I){return q=Dn(q,I),q.index=0,q.sibling=null,q}function h(q,I,X){return q.index=X,e?(X=q.alternate,X!==null?(X=X.index,X<I?(q.flags|=67108866,I):X):(q.flags|=67108866,I)):(q.flags|=1048576,I)}function k(q){return e&&q.alternate===null&&(q.flags|=67108866),q}function E(q,I,X,se){return I===null||I.tag!==6?(I=Il(X,q.mode,se),I.return=q,I):(I=c(I,X),I.return=q,I)}function O(q,I,X,se){var xe=X.type;return xe===A?oe(q,I,X.props.children,se,X.key):I!==null&&(I.elementType===xe||typeof xe=="object"&&xe!==null&&xe.$$typeof===W&&hf(xe)===I.type)?(I=c(I,X.props),ja(I,X),I.return=q,I):(I=No(X.type,X.key,X.props,null,q.mode,se),ja(I,X),I.return=q,I)}function K(q,I,X,se){return I===null||I.tag!==4||I.stateNode.containerInfo!==X.containerInfo||I.stateNode.implementation!==X.implementation?(I=Vl(X,q.mode,se),I.return=q,I):(I=c(I,X.children||[]),I.return=q,I)}function oe(q,I,X,se,xe){return I===null||I.tag!==7?(I=ji(X,q.mode,se,xe),I.return=q,I):(I=c(I,X),I.return=q,I)}function ce(q,I,X){if(typeof I=="string"&&I!==""||typeof I=="number"||typeof I=="bigint")return I=Il(""+I,q.mode,X),I.return=q,I;if(typeof I=="object"&&I!==null){switch(I.$$typeof){case w:return X=No(I.type,I.key,I.props,null,q.mode,X),ja(X,I),X.return=q,X;case b:return I=Vl(I,q.mode,X),I.return=q,I;case W:var se=I._init;return I=se(I._payload),ce(q,I,X)}if(re(I)||N(I))return I=ji(I,q.mode,X,null),I.return=q,I;if(typeof I.then=="function")return ce(q,es(I),X);if(I.$$typeof===_)return ce(q,Vo(q,I),X);ts(q,I)}return null}function J(q,I,X,se){var xe=I!==null?I.key:null;if(typeof X=="string"&&X!==""||typeof X=="number"||typeof X=="bigint")return xe!==null?null:E(q,I,""+X,se);if(typeof X=="object"&&X!==null){switch(X.$$typeof){case w:return X.key===xe?O(q,I,X,se):null;case b:return X.key===xe?K(q,I,X,se):null;case W:return xe=X._init,X=xe(X._payload),J(q,I,X,se)}if(re(X)||N(X))return xe!==null?null:oe(q,I,X,se,null);if(typeof X.then=="function")return J(q,I,es(X),se);if(X.$$typeof===_)return J(q,I,Vo(q,X),se);ts(q,X)}return null}function $(q,I,X,se,xe){if(typeof se=="string"&&se!==""||typeof se=="number"||typeof se=="bigint")return q=q.get(X)||null,E(I,q,""+se,xe);if(typeof se=="object"&&se!==null){switch(se.$$typeof){case w:return q=q.get(se.key===null?X:se.key)||null,O(I,q,se,xe);case b:return q=q.get(se.key===null?X:se.key)||null,K(I,q,se,xe);case W:var Re=se._init;return se=Re(se._payload),$(q,I,X,se,xe)}if(re(se)||N(se))return q=q.get(X)||null,oe(I,q,se,xe,null);if(typeof se.then=="function")return $(q,I,X,es(se),xe);if(se.$$typeof===_)return $(q,I,X,Vo(I,se),xe);ts(I,se)}return null}function je(q,I,X,se){for(var xe=null,Re=null,Te=I,Ce=I=0,vt=null;Te!==null&&Ce<X.length;Ce++){Te.index>Ce?(vt=Te,Te=null):vt=Te.sibling;var Ue=J(q,Te,X[Ce],se);if(Ue===null){Te===null&&(Te=vt);break}e&&Te&&Ue.alternate===null&&t(q,Te),I=h(Ue,I,Ce),Re===null?xe=Ue:Re.sibling=Ue,Re=Ue,Te=vt}if(Ce===X.length)return i(q,Te),Ie&&Di(q,Ce),xe;if(Te===null){for(;Ce<X.length;Ce++)Te=ce(q,X[Ce],se),Te!==null&&(I=h(Te,I,Ce),Re===null?xe=Te:Re.sibling=Te,Re=Te);return Ie&&Di(q,Ce),xe}for(Te=a(Te);Ce<X.length;Ce++)vt=$(Te,q,Ce,X[Ce],se),vt!==null&&(e&&vt.alternate!==null&&Te.delete(vt.key===null?Ce:vt.key),I=h(vt,I,Ce),Re===null?xe=vt:Re.sibling=vt,Re=vt);return e&&Te.forEach(function(pi){return t(q,pi)}),Ie&&Di(q,Ce),xe}function Ae(q,I,X,se){if(X==null)throw Error(l(151));for(var xe=null,Re=null,Te=I,Ce=I=0,vt=null,Ue=X.next();Te!==null&&!Ue.done;Ce++,Ue=X.next()){Te.index>Ce?(vt=Te,Te=null):vt=Te.sibling;var pi=J(q,Te,Ue.value,se);if(pi===null){Te===null&&(Te=vt);break}e&&Te&&pi.alternate===null&&t(q,Te),I=h(pi,I,Ce),Re===null?xe=pi:Re.sibling=pi,Re=pi,Te=vt}if(Ue.done)return i(q,Te),Ie&&Di(q,Ce),xe;if(Te===null){for(;!Ue.done;Ce++,Ue=X.next())Ue=ce(q,Ue.value,se),Ue!==null&&(I=h(Ue,I,Ce),Re===null?xe=Ue:Re.sibling=Ue,Re=Ue);return Ie&&Di(q,Ce),xe}for(Te=a(Te);!Ue.done;Ce++,Ue=X.next())Ue=$(Te,q,Ce,Ue.value,se),Ue!==null&&(e&&Ue.alternate!==null&&Te.delete(Ue.key===null?Ce:Ue.key),I=h(Ue,I,Ce),Re===null?xe=Ue:Re.sibling=Ue,Re=Ue);return e&&Te.forEach(function(r2){return t(q,r2)}),Ie&&Di(q,Ce),xe}function Ge(q,I,X,se){if(typeof X=="object"&&X!==null&&X.type===A&&X.key===null&&(X=X.props.children),typeof X=="object"&&X!==null){switch(X.$$typeof){case w:e:{for(var xe=X.key;I!==null;){if(I.key===xe){if(xe=X.type,xe===A){if(I.tag===7){i(q,I.sibling),se=c(I,X.props.children),se.return=q,q=se;break e}}else if(I.elementType===xe||typeof xe=="object"&&xe!==null&&xe.$$typeof===W&&hf(xe)===I.type){i(q,I.sibling),se=c(I,X.props),ja(se,X),se.return=q,q=se;break e}i(q,I);break}else t(q,I);I=I.sibling}X.type===A?(se=ji(X.props.children,q.mode,se,X.key),se.return=q,q=se):(se=No(X.type,X.key,X.props,null,q.mode,se),ja(se,X),se.return=q,q=se)}return k(q);case b:e:{for(xe=X.key;I!==null;){if(I.key===xe)if(I.tag===4&&I.stateNode.containerInfo===X.containerInfo&&I.stateNode.implementation===X.implementation){i(q,I.sibling),se=c(I,X.children||[]),se.return=q,q=se;break e}else{i(q,I);break}else t(q,I);I=I.sibling}se=Vl(X,q.mode,se),se.return=q,q=se}return k(q);case W:return xe=X._init,X=xe(X._payload),Ge(q,I,X,se)}if(re(X))return je(q,I,X,se);if(N(X)){if(xe=N(X),typeof xe!="function")throw Error(l(150));return X=xe.call(X),Ae(q,I,X,se)}if(typeof X.then=="function")return Ge(q,I,es(X),se);if(X.$$typeof===_)return Ge(q,I,Vo(q,X),se);ts(q,X)}return typeof X=="string"&&X!==""||typeof X=="number"||typeof X=="bigint"?(X=""+X,I!==null&&I.tag===6?(i(q,I.sibling),se=c(I,X),se.return=q,q=se):(i(q,I),se=Il(X,q.mode,se),se.return=q,q=se),k(q)):i(q,I)}return function(q,I,X,se){try{Ca=0;var xe=Ge(q,I,X,se);return kr=null,xe}catch(Te){if(Te===ya||Te===Wo)throw Te;var Re=Ut(29,Te,null,q.mode);return Re.lanes=se,Re.return=q,Re}finally{}}}var Sr=pf(!0),ff=pf(!1),Jt=Z(null),vn=null;function Jn(e){var t=e.alternate;fe(pt,pt.current&1),fe(Jt,e),vn===null&&(t===null||vr.current!==null||t.memoizedState!==null)&&(vn=e)}function gf(e){if(e.tag===22){if(fe(pt,pt.current),fe(Jt,e),vn===null){var t=e.alternate;t!==null&&t.memoizedState!==null&&(vn=e)}}else $n()}function $n(){fe(pt,pt.current),fe(Jt,Jt.current)}function Ln(e){Y(Jt),vn===e&&(vn=null),Y(pt)}var pt=Z(0);function ns(e){for(var t=e;t!==null;){if(t.tag===13){var i=t.memoizedState;if(i!==null&&(i=i.dehydrated,i===null||i.data==="$?"||cd(i)))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if((t.flags&128)!==0)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}function xc(e,t,i,a){t=e.memoizedState,i=i(a,t),i=i==null?t:m({},t,i),e.memoizedState=i,e.lanes===0&&(e.updateQueue.baseState=i)}var wc={enqueueSetState:function(e,t,i){e=e._reactInternals;var a=Wt(),c=Xn(a);c.payload=t,i!=null&&(c.callback=i),t=Kn(e,c,a),t!==null&&(Ht(t,e,a),ba(t,e,a))},enqueueReplaceState:function(e,t,i){e=e._reactInternals;var a=Wt(),c=Xn(a);c.tag=1,c.payload=t,i!=null&&(c.callback=i),t=Kn(e,c,a),t!==null&&(Ht(t,e,a),ba(t,e,a))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var i=Wt(),a=Xn(i);a.tag=2,t!=null&&(a.callback=t),t=Kn(e,a,i),t!==null&&(Ht(t,e,i),ba(t,e,i))}};function mf(e,t,i,a,c,h,k){return e=e.stateNode,typeof e.shouldComponentUpdate=="function"?e.shouldComponentUpdate(a,h,k):t.prototype&&t.prototype.isPureReactComponent?!ca(i,a)||!ca(c,h):!0}function yf(e,t,i,a){e=t.state,typeof t.componentWillReceiveProps=="function"&&t.componentWillReceiveProps(i,a),typeof t.UNSAFE_componentWillReceiveProps=="function"&&t.UNSAFE_componentWillReceiveProps(i,a),t.state!==e&&wc.enqueueReplaceState(t,t.state,null)}function Oi(e,t){var i=t;if("ref"in t){i={};for(var a in t)a!=="ref"&&(i[a]=t[a])}if(e=e.defaultProps){i===t&&(i=m({},i));for(var c in e)i[c]===void 0&&(i[c]=e[c])}return i}var is=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!==null&&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)};function vf(e){is(e)}function bf(e){console.error(e)}function xf(e){is(e)}function rs(e,t){try{var i=e.onUncaughtError;i(t.value,{componentStack:t.stack})}catch(a){setTimeout(function(){throw a})}}function wf(e,t,i){try{var a=e.onCaughtError;a(i.value,{componentStack:i.stack,errorBoundary:t.tag===1?t.stateNode:null})}catch(c){setTimeout(function(){throw c})}}function kc(e,t,i){return i=Xn(i),i.tag=3,i.payload={element:null},i.callback=function(){rs(e,t)},i}function kf(e){return e=Xn(e),e.tag=3,e}function Sf(e,t,i,a){var c=i.type.getDerivedStateFromError;if(typeof c=="function"){var h=a.value;e.payload=function(){return c(h)},e.callback=function(){wf(t,i,a)}}var k=i.stateNode;k!==null&&typeof k.componentDidCatch=="function"&&(e.callback=function(){wf(t,i,a),typeof c!="function"&&(ai===null?ai=new Set([this]):ai.add(this));var E=a.stack;this.componentDidCatch(a.value,{componentStack:E!==null?E:""})})}function rb(e,t,i,a,c){if(i.flags|=32768,a!==null&&typeof a=="object"&&typeof a.then=="function"){if(t=i.alternate,t!==null&&fa(t,i,c,!0),i=Jt.current,i!==null){switch(i.tag){case 13:return vn===null?qc():i.alternate===null&&rt===0&&(rt=3),i.flags&=-257,i.flags|=65536,i.lanes=c,a===Ql?i.flags|=16384:(t=i.updateQueue,t===null?i.updateQueue=new Set([a]):t.add(a),Zc(e,a,c)),!1;case 22:return i.flags|=65536,a===Ql?i.flags|=16384:(t=i.updateQueue,t===null?(t={transitions:null,markerInstances:null,retryQueue:new Set([a])},i.updateQueue=t):(i=t.retryQueue,i===null?t.retryQueue=new Set([a]):i.add(a)),Zc(e,a,c)),!1}throw Error(l(435,i.tag))}return Zc(e,a,c),qc(),!1}if(Ie)return t=Jt.current,t!==null?((t.flags&65536)===0&&(t.flags|=256),t.flags|=65536,t.lanes=c,a!==Hl&&(e=Error(l(422),{cause:a}),pa(Zt(e,i)))):(a!==Hl&&(t=Error(l(423),{cause:a}),pa(Zt(t,i))),e=e.current.alternate,e.flags|=65536,c&=-c,e.lanes|=c,a=Zt(a,i),c=kc(e.stateNode,a,c),ec(e,c),rt!==4&&(rt=2)),!1;var h=Error(l(520),{cause:a});if(h=Zt(h,i),Ba===null?Ba=[h]:Ba.push(h),rt!==4&&(rt=2),t===null)return!0;a=Zt(a,i),i=t;do{switch(i.tag){case 3:return i.flags|=65536,e=c&-c,i.lanes|=e,e=kc(i.stateNode,a,e),ec(i,e),!1;case 1:if(t=i.type,h=i.stateNode,(i.flags&128)===0&&(typeof t.getDerivedStateFromError=="function"||h!==null&&typeof h.componentDidCatch=="function"&&(ai===null||!ai.has(h))))return i.flags|=65536,c&=-c,i.lanes|=c,c=kf(c),Sf(c,e,i,a),ec(i,c),!1}i=i.return}while(i!==null);return!1}var Tf=Error(l(461)),mt=!1;function bt(e,t,i,a){t.child=e===null?ff(t,null,i,a):Sr(t,e.child,i,a)}function Af(e,t,i,a,c){i=i.render;var h=t.ref;if("ref"in a){var k={};for(var E in a)E!=="ref"&&(k[E]=a[E])}else k=a;return zi(t),a=ac(e,t,i,k,h,c),E=oc(),e!==null&&!mt?(sc(e,t,c),On(e,t,c)):(Ie&&E&&Fl(t),t.flags|=1,bt(e,t,a,c),t.child)}function Cf(e,t,i,a,c){if(e===null){var h=i.type;return typeof h=="function"&&!Ul(h)&&h.defaultProps===void 0&&i.compare===null?(t.tag=15,t.type=h,jf(e,t,h,a,c)):(e=No(i.type,null,a,t,t.mode,c),e.ref=t.ref,e.return=t,t.child=e)}if(h=e.child,!_c(e,c)){var k=h.memoizedProps;if(i=i.compare,i=i!==null?i:ca,i(k,a)&&e.ref===t.ref)return On(e,t,c)}return t.flags|=1,e=Dn(h,a),e.ref=t.ref,e.return=t,t.child=e}function jf(e,t,i,a,c){if(e!==null){var h=e.memoizedProps;if(ca(h,a)&&e.ref===t.ref)if(mt=!1,t.pendingProps=a=h,_c(e,c))(e.flags&131072)!==0&&(mt=!0);else return t.lanes=e.lanes,On(e,t,c)}return Sc(e,t,i,a,c)}function Ef(e,t,i){var a=t.pendingProps,c=a.children,h=e!==null?e.memoizedState:null;if(a.mode==="hidden"){if((t.flags&128)!==0){if(a=h!==null?h.baseLanes|i:i,e!==null){for(c=t.child=e.child,h=0;c!==null;)h=h|c.lanes|c.childLanes,c=c.sibling;t.childLanes=h&~a}else t.childLanes=0,t.child=null;return Df(e,t,a,i)}if((i&536870912)!==0)t.memoizedState={baseLanes:0,cachePool:null},e!==null&&Fo(t,h!==null?h.cachePool:null),h!==null?Cp(t,h):nc(),gf(t);else return t.lanes=t.childLanes=536870912,Df(e,t,h!==null?h.baseLanes|i:i,i)}else h!==null?(Fo(t,h.cachePool),Cp(t,h),$n(),t.memoizedState=null):(e!==null&&Fo(t,null),nc(),$n());return bt(e,t,c,i),t.child}function Df(e,t,i,a){var c=Kl();return c=c===null?null:{parent:ht._currentValue,pool:c},t.memoizedState={baseLanes:i,cachePool:c},e!==null&&Fo(t,null),nc(),gf(t),e!==null&&fa(e,t,a,!0),null}function as(e,t){var i=t.ref;if(i===null)e!==null&&e.ref!==null&&(t.flags|=4194816);else{if(typeof i!="function"&&typeof i!="object")throw Error(l(284));(e===null||e.ref!==i)&&(t.flags|=4194816)}}function Sc(e,t,i,a,c){return zi(t),i=ac(e,t,i,a,void 0,c),a=oc(),e!==null&&!mt?(sc(e,t,c),On(e,t,c)):(Ie&&a&&Fl(t),t.flags|=1,bt(e,t,i,c),t.child)}function _f(e,t,i,a,c,h){return zi(t),t.updateQueue=null,i=Ep(t,a,i,c),jp(e),a=oc(),e!==null&&!mt?(sc(e,t,h),On(e,t,h)):(Ie&&a&&Fl(t),t.flags|=1,bt(e,t,i,h),t.child)}function Mf(e,t,i,a,c){if(zi(t),t.stateNode===null){var h=pr,k=i.contextType;typeof k=="object"&&k!==null&&(h=Tt(k)),h=new i(a,h),t.memoizedState=h.state!==null&&h.state!==void 0?h.state:null,h.updater=wc,t.stateNode=h,h._reactInternals=t,h=t.stateNode,h.props=a,h.state=t.memoizedState,h.refs={},Jl(t),k=i.contextType,h.context=typeof k=="object"&&k!==null?Tt(k):pr,h.state=t.memoizedState,k=i.getDerivedStateFromProps,typeof k=="function"&&(xc(t,i,k,a),h.state=t.memoizedState),typeof i.getDerivedStateFromProps=="function"||typeof h.getSnapshotBeforeUpdate=="function"||typeof h.UNSAFE_componentWillMount!="function"&&typeof h.componentWillMount!="function"||(k=h.state,typeof h.componentWillMount=="function"&&h.componentWillMount(),typeof h.UNSAFE_componentWillMount=="function"&&h.UNSAFE_componentWillMount(),k!==h.state&&wc.enqueueReplaceState(h,h.state,null),wa(t,a,h,c),xa(),h.state=t.memoizedState),typeof h.componentDidMount=="function"&&(t.flags|=4194308),a=!0}else if(e===null){h=t.stateNode;var E=t.memoizedProps,O=Oi(i,E);h.props=O;var K=h.context,oe=i.contextType;k=pr,typeof oe=="object"&&oe!==null&&(k=Tt(oe));var ce=i.getDerivedStateFromProps;oe=typeof ce=="function"||typeof h.getSnapshotBeforeUpdate=="function",E=t.pendingProps!==E,oe||typeof h.UNSAFE_componentWillReceiveProps!="function"&&typeof h.componentWillReceiveProps!="function"||(E||K!==k)&&yf(t,h,a,k),Zn=!1;var J=t.memoizedState;h.state=J,wa(t,a,h,c),xa(),K=t.memoizedState,E||J!==K||Zn?(typeof ce=="function"&&(xc(t,i,ce,a),K=t.memoizedState),(O=Zn||mf(t,i,O,a,J,K,k))?(oe||typeof h.UNSAFE_componentWillMount!="function"&&typeof h.componentWillMount!="function"||(typeof h.componentWillMount=="function"&&h.componentWillMount(),typeof h.UNSAFE_componentWillMount=="function"&&h.UNSAFE_componentWillMount()),typeof h.componentDidMount=="function"&&(t.flags|=4194308)):(typeof h.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=a,t.memoizedState=K),h.props=a,h.state=K,h.context=k,a=O):(typeof h.componentDidMount=="function"&&(t.flags|=4194308),a=!1)}else{h=t.stateNode,$l(e,t),k=t.memoizedProps,oe=Oi(i,k),h.props=oe,ce=t.pendingProps,J=h.context,K=i.contextType,O=pr,typeof K=="object"&&K!==null&&(O=Tt(K)),E=i.getDerivedStateFromProps,(K=typeof E=="function"||typeof h.getSnapshotBeforeUpdate=="function")||typeof h.UNSAFE_componentWillReceiveProps!="function"&&typeof h.componentWillReceiveProps!="function"||(k!==ce||J!==O)&&yf(t,h,a,O),Zn=!1,J=t.memoizedState,h.state=J,wa(t,a,h,c),xa();var $=t.memoizedState;k!==ce||J!==$||Zn||e!==null&&e.dependencies!==null&&Io(e.dependencies)?(typeof E=="function"&&(xc(t,i,E,a),$=t.memoizedState),(oe=Zn||mf(t,i,oe,a,J,$,O)||e!==null&&e.dependencies!==null&&Io(e.dependencies))?(K||typeof h.UNSAFE_componentWillUpdate!="function"&&typeof h.componentWillUpdate!="function"||(typeof h.componentWillUpdate=="function"&&h.componentWillUpdate(a,$,O),typeof h.UNSAFE_componentWillUpdate=="function"&&h.UNSAFE_componentWillUpdate(a,$,O)),typeof h.componentDidUpdate=="function"&&(t.flags|=4),typeof h.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof h.componentDidUpdate!="function"||k===e.memoizedProps&&J===e.memoizedState||(t.flags|=4),typeof h.getSnapshotBeforeUpdate!="function"||k===e.memoizedProps&&J===e.memoizedState||(t.flags|=1024),t.memoizedProps=a,t.memoizedState=$),h.props=a,h.state=$,h.context=O,a=oe):(typeof h.componentDidUpdate!="function"||k===e.memoizedProps&&J===e.memoizedState||(t.flags|=4),typeof h.getSnapshotBeforeUpdate!="function"||k===e.memoizedProps&&J===e.memoizedState||(t.flags|=1024),a=!1)}return h=a,as(e,t),a=(t.flags&128)!==0,h||a?(h=t.stateNode,i=a&&typeof i.getDerivedStateFromError!="function"?null:h.render(),t.flags|=1,e!==null&&a?(t.child=Sr(t,e.child,null,c),t.child=Sr(t,null,i,c)):bt(e,t,i,c),t.memoizedState=h.state,e=t.child):e=On(e,t,c),e}function Rf(e,t,i,a){return ha(),t.flags|=256,bt(e,t,i,a),t.child}var Tc={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function Ac(e){return{baseLanes:e,cachePool:vp()}}function Cc(e,t,i){return e=e!==null?e.childLanes&~i:0,t&&(e|=$t),e}function zf(e,t,i){var a=t.pendingProps,c=!1,h=(t.flags&128)!==0,k;if((k=h)||(k=e!==null&&e.memoizedState===null?!1:(pt.current&2)!==0),k&&(c=!0,t.flags&=-129),k=(t.flags&32)!==0,t.flags&=-33,e===null){if(Ie){if(c?Jn(t):$n(),Ie){var E=it,O;if(O=E){e:{for(O=E,E=yn;O.nodeType!==8;){if(!E){E=null;break e}if(O=un(O.nextSibling),O===null){E=null;break e}}E=O}E!==null?(t.memoizedState={dehydrated:E,treeContext:Ei!==null?{id:_n,overflow:Mn}:null,retryLane:536870912,hydrationErrors:null},O=Ut(18,null,null,0),O.stateNode=E,O.return=t,t.child=O,jt=t,it=null,O=!0):O=!1}O||Mi(t)}if(E=t.memoizedState,E!==null&&(E=E.dehydrated,E!==null))return cd(E)?t.lanes=32:t.lanes=536870912,null;Ln(t)}return E=a.children,a=a.fallback,c?($n(),c=t.mode,E=os({mode:"hidden",children:E},c),a=ji(a,c,i,null),E.return=t,a.return=t,E.sibling=a,t.child=E,c=t.child,c.memoizedState=Ac(i),c.childLanes=Cc(e,k,i),t.memoizedState=Tc,a):(Jn(t),jc(t,E))}if(O=e.memoizedState,O!==null&&(E=O.dehydrated,E!==null)){if(h)t.flags&256?(Jn(t),t.flags&=-257,t=Ec(e,t,i)):t.memoizedState!==null?($n(),t.child=e.child,t.flags|=128,t=null):($n(),c=a.fallback,E=t.mode,a=os({mode:"visible",children:a.children},E),c=ji(c,E,i,null),c.flags|=2,a.return=t,c.return=t,a.sibling=c,t.child=a,Sr(t,e.child,null,i),a=t.child,a.memoizedState=Ac(i),a.childLanes=Cc(e,k,i),t.memoizedState=Tc,t=c);else if(Jn(t),cd(E)){if(k=E.nextSibling&&E.nextSibling.dataset,k)var K=k.dgst;k=K,a=Error(l(419)),a.stack="",a.digest=k,pa({value:a,source:null,stack:null}),t=Ec(e,t,i)}else if(mt||fa(e,t,i,!1),k=(i&e.childLanes)!==0,mt||k){if(k=Ke,k!==null&&(a=i&-i,a=(a&42)!==0?1:dl(a),a=(a&(k.suspendedLanes|i))!==0?0:a,a!==0&&a!==O.retryLane))throw O.retryLane=a,hr(e,a),Ht(k,e,a),Tf;E.data==="$?"||qc(),t=Ec(e,t,i)}else E.data==="$?"?(t.flags|=192,t.child=e.child,t=null):(e=O.treeContext,it=un(E.nextSibling),jt=t,Ie=!0,_i=null,yn=!1,e!==null&&(Kt[Qt++]=_n,Kt[Qt++]=Mn,Kt[Qt++]=Ei,_n=e.id,Mn=e.overflow,Ei=t),t=jc(t,a.children),t.flags|=4096);return t}return c?($n(),c=a.fallback,E=t.mode,O=e.child,K=O.sibling,a=Dn(O,{mode:"hidden",children:a.children}),a.subtreeFlags=O.subtreeFlags&65011712,K!==null?c=Dn(K,c):(c=ji(c,E,i,null),c.flags|=2),c.return=t,a.return=t,a.sibling=c,t.child=a,a=c,c=t.child,E=e.child.memoizedState,E===null?E=Ac(i):(O=E.cachePool,O!==null?(K=ht._currentValue,O=O.parent!==K?{parent:K,pool:K}:O):O=vp(),E={baseLanes:E.baseLanes|i,cachePool:O}),c.memoizedState=E,c.childLanes=Cc(e,k,i),t.memoizedState=Tc,a):(Jn(t),i=e.child,e=i.sibling,i=Dn(i,{mode:"visible",children:a.children}),i.return=t,i.sibling=null,e!==null&&(k=t.deletions,k===null?(t.deletions=[e],t.flags|=16):k.push(e)),t.child=i,t.memoizedState=null,i)}function jc(e,t){return t=os({mode:"visible",children:t},e.mode),t.return=e,e.child=t}function os(e,t){return e=Ut(22,e,null,t),e.lanes=0,e.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null},e}function Ec(e,t,i){return Sr(t,e.child,null,i),e=jc(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function Bf(e,t,i){e.lanes|=t;var a=e.alternate;a!==null&&(a.lanes|=t),ql(e.return,t,i)}function Dc(e,t,i,a,c){var h=e.memoizedState;h===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:a,tail:i,tailMode:c}:(h.isBackwards=t,h.rendering=null,h.renderingStartTime=0,h.last=a,h.tail=i,h.tailMode=c)}function Lf(e,t,i){var a=t.pendingProps,c=a.revealOrder,h=a.tail;if(bt(e,t,a.children,i),a=pt.current,(a&2)!==0)a=a&1|2,t.flags|=128;else{if(e!==null&&(e.flags&128)!==0)e:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&Bf(e,i,t);else if(e.tag===19)Bf(e,i,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;e.sibling===null;){if(e.return===null||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}a&=1}switch(fe(pt,a),c){case"forwards":for(i=t.child,c=null;i!==null;)e=i.alternate,e!==null&&ns(e)===null&&(c=i),i=i.sibling;i=c,i===null?(c=t.child,t.child=null):(c=i.sibling,i.sibling=null),Dc(t,!1,c,i,h);break;case"backwards":for(i=null,c=t.child,t.child=null;c!==null;){if(e=c.alternate,e!==null&&ns(e)===null){t.child=c;break}e=c.sibling,c.sibling=i,i=c,c=e}Dc(t,!0,i,null,h);break;case"together":Dc(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function On(e,t,i){if(e!==null&&(t.dependencies=e.dependencies),ri|=t.lanes,(i&t.childLanes)===0)if(e!==null){if(fa(e,t,i,!1),(i&t.childLanes)===0)return null}else return null;if(e!==null&&t.child!==e.child)throw Error(l(153));if(t.child!==null){for(e=t.child,i=Dn(e,e.pendingProps),t.child=i,i.return=t;e.sibling!==null;)e=e.sibling,i=i.sibling=Dn(e,e.pendingProps),i.return=t;i.sibling=null}return t.child}function _c(e,t){return(e.lanes&t)!==0?!0:(e=e.dependencies,!!(e!==null&&Io(e)))}function ab(e,t,i){switch(t.tag){case 3:_e(t,t.stateNode.containerInfo),Yn(t,ht,e.memoizedState.cache),ha();break;case 27:case 5:nt(t);break;case 4:_e(t,t.stateNode.containerInfo);break;case 10:Yn(t,t.type,t.memoizedProps.value);break;case 13:var a=t.memoizedState;if(a!==null)return a.dehydrated!==null?(Jn(t),t.flags|=128,null):(i&t.child.childLanes)!==0?zf(e,t,i):(Jn(t),e=On(e,t,i),e!==null?e.sibling:null);Jn(t);break;case 19:var c=(e.flags&128)!==0;if(a=(i&t.childLanes)!==0,a||(fa(e,t,i,!1),a=(i&t.childLanes)!==0),c){if(a)return Lf(e,t,i);t.flags|=128}if(c=t.memoizedState,c!==null&&(c.rendering=null,c.tail=null,c.lastEffect=null),fe(pt,pt.current),a)break;return null;case 22:case 23:return t.lanes=0,Ef(e,t,i);case 24:Yn(t,ht,e.memoizedState.cache)}return On(e,t,i)}function Of(e,t,i){if(e!==null)if(e.memoizedProps!==t.pendingProps)mt=!0;else{if(!_c(e,i)&&(t.flags&128)===0)return mt=!1,ab(e,t,i);mt=(e.flags&131072)!==0}else mt=!1,Ie&&(t.flags&1048576)!==0&&up(t,Uo,t.index);switch(t.lanes=0,t.tag){case 16:e:{e=t.pendingProps;var a=t.elementType,c=a._init;if(a=c(a._payload),t.type=a,typeof a=="function")Ul(a)?(e=Oi(a,e),t.tag=1,t=Mf(null,t,a,e,i)):(t.tag=0,t=Sc(null,t,a,e,i));else{if(a!=null){if(c=a.$$typeof,c===L){t.tag=11,t=Af(null,t,a,e,i);break e}else if(c===z){t.tag=14,t=Cf(null,t,a,e,i);break e}}throw t=C(a)||a,Error(l(306,t,""))}}return t;case 0:return Sc(e,t,t.type,t.pendingProps,i);case 1:return a=t.type,c=Oi(a,t.pendingProps),Mf(e,t,a,c,i);case 3:e:{if(_e(t,t.stateNode.containerInfo),e===null)throw Error(l(387));a=t.pendingProps;var h=t.memoizedState;c=h.element,$l(e,t),wa(t,a,null,i);var k=t.memoizedState;if(a=k.cache,Yn(t,ht,a),a!==h.cache&&Yl(t,[ht],i,!0),xa(),a=k.element,h.isDehydrated)if(h={element:a,isDehydrated:!1,cache:k.cache},t.updateQueue.baseState=h,t.memoizedState=h,t.flags&256){t=Rf(e,t,a,i);break e}else if(a!==c){c=Zt(Error(l(424)),t),pa(c),t=Rf(e,t,a,i);break e}else{switch(e=t.stateNode.containerInfo,e.nodeType){case 9:e=e.body;break;default:e=e.nodeName==="HTML"?e.ownerDocument.body:e}for(it=un(e.firstChild),jt=t,Ie=!0,_i=null,yn=!0,i=ff(t,null,a,i),t.child=i;i;)i.flags=i.flags&-3|4096,i=i.sibling}else{if(ha(),a===c){t=On(e,t,i);break e}bt(e,t,a,i)}t=t.child}return t;case 26:return as(e,t),e===null?(i=Ig(t.type,null,t.pendingProps,null))?t.memoizedState=i:Ie||(i=t.type,e=t.pendingProps,a=xs(Pe.current).createElement(i),a[St]=t,a[zt]=e,wt(a,i,e),gt(a),t.stateNode=a):t.memoizedState=Ig(t.type,e.memoizedProps,t.pendingProps,e.memoizedState),null;case 27:return nt(t),e===null&&Ie&&(a=t.stateNode=Ng(t.type,t.pendingProps,Pe.current),jt=t,yn=!0,c=it,li(t.type)?(dd=c,it=un(a.firstChild)):it=c),bt(e,t,t.pendingProps.children,i),as(e,t),e===null&&(t.flags|=4194304),t.child;case 5:return e===null&&Ie&&((c=a=it)&&(a=zb(a,t.type,t.pendingProps,yn),a!==null?(t.stateNode=a,jt=t,it=un(a.firstChild),yn=!1,c=!0):c=!1),c||Mi(t)),nt(t),c=t.type,h=t.pendingProps,k=e!==null?e.memoizedProps:null,a=h.children,od(c,h)?a=null:k!==null&&od(c,k)&&(t.flags|=32),t.memoizedState!==null&&(c=ac(e,t,Qv,null,null,i),Wa._currentValue=c),as(e,t),bt(e,t,a,i),t.child;case 6:return e===null&&Ie&&((e=i=it)&&(i=Bb(i,t.pendingProps,yn),i!==null?(t.stateNode=i,jt=t,it=null,e=!0):e=!1),e||Mi(t)),null;case 13:return zf(e,t,i);case 4:return _e(t,t.stateNode.containerInfo),a=t.pendingProps,e===null?t.child=Sr(t,null,a,i):bt(e,t,a,i),t.child;case 11:return Af(e,t,t.type,t.pendingProps,i);case 7:return bt(e,t,t.pendingProps,i),t.child;case 8:return bt(e,t,t.pendingProps.children,i),t.child;case 12:return bt(e,t,t.pendingProps.children,i),t.child;case 10:return a=t.pendingProps,Yn(t,t.type,a.value),bt(e,t,a.children,i),t.child;case 9:return c=t.type._context,a=t.pendingProps.children,zi(t),c=Tt(c),a=a(c),t.flags|=1,bt(e,t,a,i),t.child;case 14:return Cf(e,t,t.type,t.pendingProps,i);case 15:return jf(e,t,t.type,t.pendingProps,i);case 19:return Lf(e,t,i);case 31:return a=t.pendingProps,i=t.mode,a={mode:a.mode,children:a.children},e===null?(i=os(a,i),i.ref=t.ref,t.child=i,i.return=t,t=i):(i=Dn(e.child,a),i.ref=t.ref,t.child=i,i.return=t,t=i),t;case 22:return Ef(e,t,i);case 24:return zi(t),a=Tt(ht),e===null?(c=Kl(),c===null&&(c=Ke,h=Zl(),c.pooledCache=h,h.refCount++,h!==null&&(c.pooledCacheLanes|=i),c=h),t.memoizedState={parent:a,cache:c},Jl(t),Yn(t,ht,c)):((e.lanes&i)!==0&&($l(e,t),wa(t,null,null,i),xa()),c=e.memoizedState,h=t.memoizedState,c.parent!==a?(c={parent:a,cache:a},t.memoizedState=c,t.lanes===0&&(t.memoizedState=t.updateQueue.baseState=c),Yn(t,ht,a)):(a=h.cache,Yn(t,ht,a),a!==c.cache&&Yl(t,[ht],i,!0))),bt(e,t,t.pendingProps.children,i),t.child;case 29:throw t.pendingProps}throw Error(l(156,t.tag))}function Nn(e){e.flags|=4}function Nf(e,t){if(t.type!=="stylesheet"||(t.state.loading&4)!==0)e.flags&=-16777217;else if(e.flags|=16777216,!Gg(t)){if(t=Jt.current,t!==null&&((Ne&4194048)===Ne?vn!==null:(Ne&62914560)!==Ne&&(Ne&536870912)===0||t!==vn))throw va=Ql,bp;e.flags|=8192}}function ss(e,t){t!==null&&(e.flags|=4),e.flags&16384&&(t=e.tag!==22?ko():536870912,e.lanes|=t,jr|=t)}function Ea(e,t){if(!Ie)switch(e.tailMode){case"hidden":t=e.tail;for(var i=null;t!==null;)t.alternate!==null&&(i=t),t=t.sibling;i===null?e.tail=null:i.sibling=null;break;case"collapsed":i=e.tail;for(var a=null;i!==null;)i.alternate!==null&&(a=i),i=i.sibling;a===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:a.sibling=null}}function et(e){var t=e.alternate!==null&&e.alternate.child===e.child,i=0,a=0;if(t)for(var c=e.child;c!==null;)i|=c.lanes|c.childLanes,a|=c.subtreeFlags&65011712,a|=c.flags&65011712,c.return=e,c=c.sibling;else for(c=e.child;c!==null;)i|=c.lanes|c.childLanes,a|=c.subtreeFlags,a|=c.flags,c.return=e,c=c.sibling;return e.subtreeFlags|=a,e.childLanes=i,t}function ob(e,t,i){var a=t.pendingProps;switch(Wl(t),t.tag){case 31:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return et(t),null;case 1:return et(t),null;case 3:return i=t.stateNode,a=null,e!==null&&(a=e.memoizedState.cache),t.memoizedState.cache!==a&&(t.flags|=2048),zn(ht),ze(),i.pendingContext&&(i.context=i.pendingContext,i.pendingContext=null),(e===null||e.child===null)&&(ua(t)?Nn(t):e===null||e.memoizedState.isDehydrated&&(t.flags&256)===0||(t.flags|=1024,fp())),et(t),null;case 26:return i=t.memoizedState,e===null?(Nn(t),i!==null?(et(t),Nf(t,i)):(et(t),t.flags&=-16777217)):i?i!==e.memoizedState?(Nn(t),et(t),Nf(t,i)):(et(t),t.flags&=-16777217):(e.memoizedProps!==a&&Nn(t),et(t),t.flags&=-16777217),null;case 27:Ye(t),i=Pe.current;var c=t.type;if(e!==null&&t.stateNode!=null)e.memoizedProps!==a&&Nn(t);else{if(!a){if(t.stateNode===null)throw Error(l(166));return et(t),null}e=pe.current,ua(t)?hp(t):(e=Ng(c,a,i),t.stateNode=e,Nn(t))}return et(t),null;case 5:if(Ye(t),i=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==a&&Nn(t);else{if(!a){if(t.stateNode===null)throw Error(l(166));return et(t),null}if(e=pe.current,ua(t))hp(t);else{switch(c=xs(Pe.current),e){case 1:e=c.createElementNS("http://www.w3.org/2000/svg",i);break;case 2:e=c.createElementNS("http://www.w3.org/1998/Math/MathML",i);break;default:switch(i){case"svg":e=c.createElementNS("http://www.w3.org/2000/svg",i);break;case"math":e=c.createElementNS("http://www.w3.org/1998/Math/MathML",i);break;case"script":e=c.createElement("div"),e.innerHTML="<script><\/script>",e=e.removeChild(e.firstChild);break;case"select":e=typeof a.is=="string"?c.createElement("select",{is:a.is}):c.createElement("select"),a.multiple?e.multiple=!0:a.size&&(e.size=a.size);break;default:e=typeof a.is=="string"?c.createElement(i,{is:a.is}):c.createElement(i)}}e[St]=t,e[zt]=a;e:for(c=t.child;c!==null;){if(c.tag===5||c.tag===6)e.appendChild(c.stateNode);else if(c.tag!==4&&c.tag!==27&&c.child!==null){c.child.return=c,c=c.child;continue}if(c===t)break e;for(;c.sibling===null;){if(c.return===null||c.return===t)break e;c=c.return}c.sibling.return=c.return,c=c.sibling}t.stateNode=e;e:switch(wt(e,i,a),i){case"button":case"input":case"select":case"textarea":e=!!a.autoFocus;break e;case"img":e=!0;break e;default:e=!1}e&&Nn(t)}}return et(t),t.flags&=-16777217,null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==a&&Nn(t);else{if(typeof a!="string"&&t.stateNode===null)throw Error(l(166));if(e=Pe.current,ua(t)){if(e=t.stateNode,i=t.memoizedProps,a=null,c=jt,c!==null)switch(c.tag){case 27:case 5:a=c.memoizedProps}e[St]=t,e=!!(e.nodeValue===i||a!==null&&a.suppressHydrationWarning===!0||_g(e.nodeValue,i)),e||Mi(t)}else e=xs(e).createTextNode(a),e[St]=t,t.stateNode=e}return et(t),null;case 13:if(a=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(c=ua(t),a!==null&&a.dehydrated!==null){if(e===null){if(!c)throw Error(l(318));if(c=t.memoizedState,c=c!==null?c.dehydrated:null,!c)throw Error(l(317));c[St]=t}else ha(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;et(t),c=!1}else c=fp(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=c),c=!0;if(!c)return t.flags&256?(Ln(t),t):(Ln(t),null)}if(Ln(t),(t.flags&128)!==0)return t.lanes=i,t;if(i=a!==null,e=e!==null&&e.memoizedState!==null,i){a=t.child,c=null,a.alternate!==null&&a.alternate.memoizedState!==null&&a.alternate.memoizedState.cachePool!==null&&(c=a.alternate.memoizedState.cachePool.pool);var h=null;a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(h=a.memoizedState.cachePool.pool),h!==c&&(a.flags|=2048)}return i!==e&&i&&(t.child.flags|=8192),ss(t,t.updateQueue),et(t),null;case 4:return ze(),e===null&&td(t.stateNode.containerInfo),et(t),null;case 10:return zn(t.type),et(t),null;case 19:if(Y(pt),c=t.memoizedState,c===null)return et(t),null;if(a=(t.flags&128)!==0,h=c.rendering,h===null)if(a)Ea(c,!1);else{if(rt!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(h=ns(e),h!==null){for(t.flags|=128,Ea(c,!1),e=h.updateQueue,t.updateQueue=e,ss(t,e),t.subtreeFlags=0,e=i,i=t.child;i!==null;)dp(i,e),i=i.sibling;return fe(pt,pt.current&1|2),t.child}e=e.sibling}c.tail!==null&&R()>ds&&(t.flags|=128,a=!0,Ea(c,!1),t.lanes=4194304)}else{if(!a)if(e=ns(h),e!==null){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,ss(t,e),Ea(c,!0),c.tail===null&&c.tailMode==="hidden"&&!h.alternate&&!Ie)return et(t),null}else 2*R()-c.renderingStartTime>ds&&i!==536870912&&(t.flags|=128,a=!0,Ea(c,!1),t.lanes=4194304);c.isBackwards?(h.sibling=t.child,t.child=h):(e=c.last,e!==null?e.sibling=h:t.child=h,c.last=h)}return c.tail!==null?(t=c.tail,c.rendering=t,c.tail=t.sibling,c.renderingStartTime=R(),t.sibling=null,e=pt.current,fe(pt,a?e&1|2:e&1),t):(et(t),null);case 22:case 23:return Ln(t),ic(),a=t.memoizedState!==null,e!==null?e.memoizedState!==null!==a&&(t.flags|=8192):a&&(t.flags|=8192),a?(i&536870912)!==0&&(t.flags&128)===0&&(et(t),t.subtreeFlags&6&&(t.flags|=8192)):et(t),i=t.updateQueue,i!==null&&ss(t,i.retryQueue),i=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(i=e.memoizedState.cachePool.pool),a=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),a!==i&&(t.flags|=2048),e!==null&&Y(Bi),null;case 24:return i=null,e!==null&&(i=e.memoizedState.cache),t.memoizedState.cache!==i&&(t.flags|=2048),zn(ht),et(t),null;case 25:return null;case 30:return null}throw Error(l(156,t.tag))}function sb(e,t){switch(Wl(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return zn(ht),ze(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Ye(t),null;case 13:if(Ln(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(l(340));ha()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Y(pt),null;case 4:return ze(),null;case 10:return zn(t.type),null;case 22:case 23:return Ln(t),ic(),e!==null&&Y(Bi),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return zn(ht),null;case 25:return null;default:return null}}function Pf(e,t){switch(Wl(t),t.tag){case 3:zn(ht),ze();break;case 26:case 27:case 5:Ye(t);break;case 4:ze();break;case 13:Ln(t);break;case 19:Y(pt);break;case 10:zn(t.type);break;case 22:case 23:Ln(t),ic(),e!==null&&Y(Bi);break;case 24:zn(ht)}}function Da(e,t){try{var i=t.updateQueue,a=i!==null?i.lastEffect:null;if(a!==null){var c=a.next;i=c;do{if((i.tag&e)===e){a=void 0;var h=i.create,k=i.inst;a=h(),k.destroy=a}i=i.next}while(i!==c)}}catch(E){qe(t,t.return,E)}}function ei(e,t,i){try{var a=t.updateQueue,c=a!==null?a.lastEffect:null;if(c!==null){var h=c.next;a=h;do{if((a.tag&e)===e){var k=a.inst,E=k.destroy;if(E!==void 0){k.destroy=void 0,c=t;var O=i,K=E;try{K()}catch(oe){qe(c,O,oe)}}}a=a.next}while(a!==h)}}catch(oe){qe(t,t.return,oe)}}function Uf(e){var t=e.updateQueue;if(t!==null){var i=e.stateNode;try{Ap(t,i)}catch(a){qe(e,e.return,a)}}}function If(e,t,i){i.props=Oi(e.type,e.memoizedProps),i.state=e.memoizedState;try{i.componentWillUnmount()}catch(a){qe(e,t,a)}}function _a(e,t){try{var i=e.ref;if(i!==null){switch(e.tag){case 26:case 27:case 5:var a=e.stateNode;break;case 30:a=e.stateNode;break;default:a=e.stateNode}typeof i=="function"?e.refCleanup=i(a):i.current=a}}catch(c){qe(e,t,c)}}function bn(e,t){var i=e.ref,a=e.refCleanup;if(i!==null)if(typeof a=="function")try{a()}catch(c){qe(e,t,c)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof i=="function")try{i(null)}catch(c){qe(e,t,c)}else i.current=null}function Vf(e){var t=e.type,i=e.memoizedProps,a=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":i.autoFocus&&a.focus();break e;case"img":i.src?a.src=i.src:i.srcSet&&(a.srcset=i.srcSet)}}catch(c){qe(e,e.return,c)}}function Mc(e,t,i){try{var a=e.stateNode;Eb(a,e.type,i,t),a[zt]=t}catch(c){qe(e,e.return,c)}}function Ff(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&li(e.type)||e.tag===4}function Rc(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Ff(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&&li(e.type)||e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function zc(e,t,i){var a=e.tag;if(a===5||a===6)e=e.stateNode,t?(i.nodeType===9?i.body:i.nodeName==="HTML"?i.ownerDocument.body:i).insertBefore(e,t):(t=i.nodeType===9?i.body:i.nodeName==="HTML"?i.ownerDocument.body:i,t.appendChild(e),i=i._reactRootContainer,i!=null||t.onclick!==null||(t.onclick=bs));else if(a!==4&&(a===27&&li(e.type)&&(i=e.stateNode,t=null),e=e.child,e!==null))for(zc(e,t,i),e=e.sibling;e!==null;)zc(e,t,i),e=e.sibling}function ls(e,t,i){var a=e.tag;if(a===5||a===6)e=e.stateNode,t?i.insertBefore(e,t):i.appendChild(e);else if(a!==4&&(a===27&&li(e.type)&&(i=e.stateNode),e=e.child,e!==null))for(ls(e,t,i),e=e.sibling;e!==null;)ls(e,t,i),e=e.sibling}function Wf(e){var t=e.stateNode,i=e.memoizedProps;try{for(var a=e.type,c=t.attributes;c.length;)t.removeAttributeNode(c[0]);wt(t,a,i),t[St]=e,t[zt]=i}catch(h){qe(e,e.return,h)}}var Pn=!1,lt=!1,Bc=!1,Hf=typeof WeakSet=="function"?WeakSet:Set,yt=null;function lb(e,t){if(e=e.containerInfo,rd=Cs,e=ep(e),Rl(e)){if("selectionStart"in e)var i={start:e.selectionStart,end:e.selectionEnd};else e:{i=(i=e.ownerDocument)&&i.defaultView||window;var a=i.getSelection&&i.getSelection();if(a&&a.rangeCount!==0){i=a.anchorNode;var c=a.anchorOffset,h=a.focusNode;a=a.focusOffset;try{i.nodeType,h.nodeType}catch{i=null;break e}var k=0,E=-1,O=-1,K=0,oe=0,ce=e,J=null;t:for(;;){for(var $;ce!==i||c!==0&&ce.nodeType!==3||(E=k+c),ce!==h||a!==0&&ce.nodeType!==3||(O=k+a),ce.nodeType===3&&(k+=ce.nodeValue.length),($=ce.firstChild)!==null;)J=ce,ce=$;for(;;){if(ce===e)break t;if(J===i&&++K===c&&(E=k),J===h&&++oe===a&&(O=k),($=ce.nextSibling)!==null)break;ce=J,J=ce.parentNode}ce=$}i=E===-1||O===-1?null:{start:E,end:O}}else i=null}i=i||{start:0,end:0}}else i=null;for(ad={focusedElem:e,selectionRange:i},Cs=!1,yt=t;yt!==null;)if(t=yt,e=t.child,(t.subtreeFlags&1024)!==0&&e!==null)e.return=t,yt=e;else for(;yt!==null;){switch(t=yt,h=t.alternate,e=t.flags,t.tag){case 0:break;case 11:case 15:break;case 1:if((e&1024)!==0&&h!==null){e=void 0,i=t,c=h.memoizedProps,h=h.memoizedState,a=i.stateNode;try{var je=Oi(i.type,c,i.elementType===i.type);e=a.getSnapshotBeforeUpdate(je,h),a.__reactInternalSnapshotBeforeUpdate=e}catch(Ae){qe(i,i.return,Ae)}}break;case 3:if((e&1024)!==0){if(e=t.stateNode.containerInfo,i=e.nodeType,i===9)ld(e);else if(i===1)switch(e.nodeName){case"HEAD":case"HTML":case"BODY":ld(e);break;default:e.textContent=""}}break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if((e&1024)!==0)throw Error(l(163))}if(e=t.sibling,e!==null){e.return=t.return,yt=e;break}yt=t.return}}function Gf(e,t,i){var a=i.flags;switch(i.tag){case 0:case 11:case 15:ti(e,i),a&4&&Da(5,i);break;case 1:if(ti(e,i),a&4)if(e=i.stateNode,t===null)try{e.componentDidMount()}catch(k){qe(i,i.return,k)}else{var c=Oi(i.type,t.memoizedProps);t=t.memoizedState;try{e.componentDidUpdate(c,t,e.__reactInternalSnapshotBeforeUpdate)}catch(k){qe(i,i.return,k)}}a&64&&Uf(i),a&512&&_a(i,i.return);break;case 3:if(ti(e,i),a&64&&(e=i.updateQueue,e!==null)){if(t=null,i.child!==null)switch(i.child.tag){case 27:case 5:t=i.child.stateNode;break;case 1:t=i.child.stateNode}try{Ap(e,t)}catch(k){qe(i,i.return,k)}}break;case 27:t===null&&a&4&&Wf(i);case 26:case 5:ti(e,i),t===null&&a&4&&Vf(i),a&512&&_a(i,i.return);break;case 12:ti(e,i);break;case 13:ti(e,i),a&4&&Zf(e,i),a&64&&(e=i.memoizedState,e!==null&&(e=e.dehydrated,e!==null&&(i=yb.bind(null,i),Lb(e,i))));break;case 22:if(a=i.memoizedState!==null||Pn,!a){t=t!==null&&t.memoizedState!==null||lt,c=Pn;var h=lt;Pn=a,(lt=t)&&!h?ni(e,i,(i.subtreeFlags&8772)!==0):ti(e,i),Pn=c,lt=h}break;case 30:break;default:ti(e,i)}}function qf(e){var t=e.alternate;t!==null&&(e.alternate=null,qf(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&pl(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 $e=null,Ot=!1;function Un(e,t,i){for(i=i.child;i!==null;)Yf(e,t,i),i=i.sibling}function Yf(e,t,i){if(De&&typeof De.onCommitFiberUnmount=="function")try{De.onCommitFiberUnmount(Se,i)}catch{}switch(i.tag){case 26:lt||bn(i,t),Un(e,t,i),i.memoizedState?i.memoizedState.count--:i.stateNode&&(i=i.stateNode,i.parentNode.removeChild(i));break;case 27:lt||bn(i,t);var a=$e,c=Ot;li(i.type)&&($e=i.stateNode,Ot=!1),Un(e,t,i),Ua(i.stateNode),$e=a,Ot=c;break;case 5:lt||bn(i,t);case 6:if(a=$e,c=Ot,$e=null,Un(e,t,i),$e=a,Ot=c,$e!==null)if(Ot)try{($e.nodeType===9?$e.body:$e.nodeName==="HTML"?$e.ownerDocument.body:$e).removeChild(i.stateNode)}catch(h){qe(i,t,h)}else try{$e.removeChild(i.stateNode)}catch(h){qe(i,t,h)}break;case 18:$e!==null&&(Ot?(e=$e,Lg(e.nodeType===9?e.body:e.nodeName==="HTML"?e.ownerDocument.body:e,i.stateNode),Ya(e)):Lg($e,i.stateNode));break;case 4:a=$e,c=Ot,$e=i.stateNode.containerInfo,Ot=!0,Un(e,t,i),$e=a,Ot=c;break;case 0:case 11:case 14:case 15:lt||ei(2,i,t),lt||ei(4,i,t),Un(e,t,i);break;case 1:lt||(bn(i,t),a=i.stateNode,typeof a.componentWillUnmount=="function"&&If(i,t,a)),Un(e,t,i);break;case 21:Un(e,t,i);break;case 22:lt=(a=lt)||i.memoizedState!==null,Un(e,t,i),lt=a;break;default:Un(e,t,i)}}function Zf(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null&&(e=e.dehydrated,e!==null))))try{Ya(e)}catch(i){qe(t,t.return,i)}}function cb(e){switch(e.tag){case 13:case 19:var t=e.stateNode;return t===null&&(t=e.stateNode=new Hf),t;case 22:return e=e.stateNode,t=e._retryCache,t===null&&(t=e._retryCache=new Hf),t;default:throw Error(l(435,e.tag))}}function Lc(e,t){var i=cb(e);t.forEach(function(a){var c=vb.bind(null,e,a);i.has(a)||(i.add(a),a.then(c,c))})}function It(e,t){var i=t.deletions;if(i!==null)for(var a=0;a<i.length;a++){var c=i[a],h=e,k=t,E=k;e:for(;E!==null;){switch(E.tag){case 27:if(li(E.type)){$e=E.stateNode,Ot=!1;break e}break;case 5:$e=E.stateNode,Ot=!1;break e;case 3:case 4:$e=E.stateNode.containerInfo,Ot=!0;break e}E=E.return}if($e===null)throw Error(l(160));Yf(h,k,c),$e=null,Ot=!1,h=c.alternate,h!==null&&(h.return=null),c.return=null}if(t.subtreeFlags&13878)for(t=t.child;t!==null;)Xf(t,e),t=t.sibling}var dn=null;function Xf(e,t){var i=e.alternate,a=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:It(t,e),Vt(e),a&4&&(ei(3,e,e.return),Da(3,e),ei(5,e,e.return));break;case 1:It(t,e),Vt(e),a&512&&(lt||i===null||bn(i,i.return)),a&64&&Pn&&(e=e.updateQueue,e!==null&&(a=e.callbacks,a!==null&&(i=e.shared.hiddenCallbacks,e.shared.hiddenCallbacks=i===null?a:i.concat(a))));break;case 26:var c=dn;
vendor: 4,700 bytes, line 33
33if(It(t,e),Vt(e),a&512&&(lt||i===null||bn(i,i.return)),a&4){var h=i!==null?i.memoizedState:null;if(a=e.memoizedState,i===null)if(a===null)if(e.stateNode===null){e:{a=e.type,i=e.memoizedProps,c=c.ownerDocument||c;t:switch(a){case"title":h=c.getElementsByTagName("title")[0],(!h||h[ea]||h[St]||h.namespaceURI==="http://www.w3.org/2000/svg"||h.hasAttribute("itemprop"))&&(h=c.createElement(a),c.head.insertBefore(h,c.querySelector("head > title"))),wt(h,a,i),h[St]=e,gt(h),a=h;break e;case"link":var k=Wg("link","href",c).get(a+(i.href||""));if(k){for(var E=0;E<k.length;E++)if(h=k[E],h.getAttribute("href")===(i.href==null||i.href===""?null:i.href)&&h.getAttribute("rel")===(i.rel==null?null:i.rel)&&h.getAttribute("title")===(i.title==null?null:i.title)&&h.getAttribute("crossorigin")===(i.crossOrigin==null?null:i.crossOrigin)){k.splice(E,1);break t}}h=c.createElement(a),wt(h,a,i),c.head.appendChild(h);break;case"meta":if(k=Wg("meta","content",c).get(a+(i.content||""))){for(E=0;E<k.length;E++)if(h=k[E],h.getAttribute("content")===(i.content==null?null:""+i.content)&&h.getAttribute("name")===(i.name==null?null:i.name)&&h.getAttribute("property")===(i.property==null?null:i.property)&&h.getAttribute("http-equiv")===(i.httpEquiv==null?null:i.httpEquiv)&&h.getAttribute("charset")===(i.charSet==null?null:i.charSet)){k.splice(E,1);break t}}h=c.createElement(a),wt(h,a,i),c.head.appendChild(h);break;default:throw Error(l(468,a))}h[St]=e,gt(h),a=h}e.stateNode=a}else Hg(c,e.type,e.stateNode);else e.stateNode=Fg(c,a,e.memoizedProps);else h!==a?(h===null?i.stateNode!==null&&(i=i.stateNode,i.parentNode.removeChild(i)):h.count--,a===null?Hg(c,e.type,e.stateNode):Fg(c,a,e.memoizedProps)):a===null&&e.stateNode!==null&&Mc(e,e.memoizedProps,i.memoizedProps)}break;case 27:It(t,e),Vt(e),a&512&&(lt||i===null||bn(i,i.return)),i!==null&&a&4&&Mc(e,e.memoizedProps,i.memoizedProps);break;case 5:if(It(t,e),Vt(e),a&512&&(lt||i===null||bn(i,i.return)),e.flags&32){c=e.stateNode;try{ar(c,"")}catch($){qe(e,e.return,$)}}a&4&&e.stateNode!=null&&(c=e.memoizedProps,Mc(e,c,i!==null?i.memoizedProps:c)),a&1024&&(Bc=!0);break;case 6:if(It(t,e),Vt(e),a&4){if(e.stateNode===null)throw Error(l(162));a=e.memoizedProps,i=e.stateNode;try{i.nodeValue=a}catch($){qe(e,e.return,$)}}break;case 3:if(Ss=null,c=dn,dn=ws(t.containerInfo),It(t,e),dn=c,Vt(e),a&4&&i!==null&&i.memoizedState.isDehydrated)try{Ya(t.containerInfo)}catch($){qe(e,e.return,$)}Bc&&(Bc=!1,Kf(e));break;case 4:a=dn,dn=ws(e.stateNode.containerInfo),It(t,e),Vt(e),dn=a;break;case 12:It(t,e),Vt(e);break;case 13:It(t,e),Vt(e),e.child.flags&8192&&e.memoizedState!==null!=(i!==null&&i.memoizedState!==null)&&(Vc=R()),a&4&&(a=e.updateQueue,a!==null&&(e.updateQueue=null,Lc(e,a)));break;case 22:c=e.memoizedState!==null;var O=i!==null&&i.memoizedState!==null,K=Pn,oe=lt;if(Pn=K||c,lt=oe||O,It(t,e),lt=oe,Pn=K,Vt(e),a&8192)e:for(t=e.stateNode,t._visibility=c?t._visibility&-2:t._visibility|1,c&&(i===null||O||Pn||lt||Ni(e)),i=null,t=e;;){if(t.tag===5||t.tag===26){if(i===null){O=i=t;try{if(h=O.stateNode,c)k=h.style,typeof k.setProperty=="function"?k.setProperty("display","none","important"):k.display="none";else{E=O.stateNode;var ce=O.memoizedProps.style,J=ce!=null&&ce.hasOwnProperty("display")?ce.display:null;E.style.display=J==null||typeof J=="boolean"?"":(""+J).trim()}}catch($){qe(O,O.return,$)}}}else if(t.tag===6){if(i===null){O=t;try{O.stateNode.nodeValue=c?"":O.memoizedProps}catch($){qe(O,O.return,$)}}}else if((t.tag!==22&&t.tag!==23||t.memoizedState===null||t===e)&&t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break e;for(;t.sibling===null;){if(t.return===null||t.return===e)break e;i===t&&(i=null),t=t.return}i===t&&(i=null),t.sibling.return=t.return,t=t.sibling}a&4&&(a=e.updateQueue,a!==null&&(i=a.retryQueue,i!==null&&(a.retryQueue=null,Lc(e,i))));break;case 19:It(t,e),Vt(e),a&4&&(a=e.updateQueue,a!==null&&(e.updateQueue=null,Lc(e,a)));break;case 30:break;case 21:break;default:It(t,e),Vt(e)}}function Vt(e){var t=e.flags;if(t&2){try{for(var i,a=e.return;a!==null;){if(Ff(a)){i=a;break}a=a.return}if(i==null)throw Error(l(160));switch(i.tag){case 27:var c=i.stateNode,h=Rc(e);ls(e,h,c);break;case 5:var k=i.stateNode;i.flags&32&&(ar(k,""),i.flags&=-33);var E=Rc(e);ls(e,E,k);break;case 3:case 4:var O=i.stateNode.containerInfo,K=Rc(e);zc(e,K,O);break;default:throw Error(l(161))}}catch(oe){qe(e,e.return,oe)}e.flags&=-3}t&4096&&(e.flags&=-4097)}function Kf(e){if(e.subtreeFlags&1024)for(e=e.child;e!==null;){var t=e;Kf(t),t.tag===5&&t.flags&1024&&t.stateNode.reset(),e=e.sibling}}function ti(e,t){if(t.subtreeFlags&8772)for(t=t.child;t!==null;)Gf(e,t.alternate,t),t=t.sibling}function Ni(e){for(e=e.child;e!==null;){var t=e;
vendor: 59,816 bytes, lines 33-34
33switch(t.tag){case 0:case 11:case 14:case 15:ei(4,t,t.return),Ni(t);break;case 1:bn(t,t.return);var i=t.stateNode;typeof i.componentWillUnmount=="function"&&If(t,t.return,i),Ni(t);break;case 27:Ua(t.stateNode);case 26:case 5:bn(t,t.return),Ni(t);break;case 22:t.memoizedState===null&&Ni(t);break;case 30:Ni(t);break;default:Ni(t)}e=e.sibling}}function ni(e,t,i){for(i=i&&(t.subtreeFlags&8772)!==0,t=t.child;t!==null;){var a=t.alternate,c=e,h=t,k=h.flags;switch(h.tag){case 0:case 11:case 15:ni(c,h,i),Da(4,h);break;case 1:if(ni(c,h,i),a=h,c=a.stateNode,typeof c.componentDidMount=="function")try{c.componentDidMount()}catch(K){qe(a,a.return,K)}if(a=h,c=a.updateQueue,c!==null){var E=a.stateNode;try{var O=c.shared.hiddenCallbacks;if(O!==null)for(c.shared.hiddenCallbacks=null,c=0;c<O.length;c++)Tp(O[c],E)}catch(K){qe(a,a.return,K)}}i&&k&64&&Uf(h),_a(h,h.return);break;case 27:Wf(h);case 26:case 5:ni(c,h,i),i&&a===null&&k&4&&Vf(h),_a(h,h.return);break;case 12:ni(c,h,i);break;case 13:ni(c,h,i),i&&k&4&&Zf(c,h);break;case 22:h.memoizedState===null&&ni(c,h,i),_a(h,h.return);break;case 30:break;default:ni(c,h,i)}t=t.sibling}}function Oc(e,t){var i=null;e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(i=e.memoizedState.cachePool.pool),e=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(e=t.memoizedState.cachePool.pool),e!==i&&(e!=null&&e.refCount++,i!=null&&ga(i))}function Nc(e,t){e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&ga(e))}function xn(e,t,i,a){if(t.subtreeFlags&10256)for(t=t.child;t!==null;)Qf(e,t,i,a),t=t.sibling}function Qf(e,t,i,a){var c=t.flags;switch(t.tag){case 0:case 11:case 15:xn(e,t,i,a),c&2048&&Da(9,t);break;case 1:xn(e,t,i,a);break;case 3:xn(e,t,i,a),c&2048&&(e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&ga(e)));break;case 12:if(c&2048){xn(e,t,i,a),e=t.stateNode;try{var h=t.memoizedProps,k=h.id,E=h.onPostCommit;typeof E=="function"&&E(k,t.alternate===null?"mount":"update",e.passiveEffectDuration,-0)}catch(O){qe(t,t.return,O)}}else xn(e,t,i,a);break;case 13:xn(e,t,i,a);break;case 23:break;case 22:h=t.stateNode,k=t.alternate,t.memoizedState!==null?h._visibility&2?xn(e,t,i,a):Ma(e,t):h._visibility&2?xn(e,t,i,a):(h._visibility|=2,Tr(e,t,i,a,(t.subtreeFlags&10256)!==0)),c&2048&&Oc(k,t);break;case 24:xn(e,t,i,a),c&2048&&Nc(t.alternate,t);break;default:xn(e,t,i,a)}}function Tr(e,t,i,a,c){for(c=c&&(t.subtreeFlags&10256)!==0,t=t.child;t!==null;){var h=e,k=t,E=i,O=a,K=k.flags;switch(k.tag){case 0:case 11:case 15:Tr(h,k,E,O,c),Da(8,k);break;case 23:break;case 22:var oe=k.stateNode;k.memoizedState!==null?oe._visibility&2?Tr(h,k,E,O,c):Ma(h,k):(oe._visibility|=2,Tr(h,k,E,O,c)),c&&K&2048&&Oc(k.alternate,k);break;case 24:Tr(h,k,E,O,c),c&&K&2048&&Nc(k.alternate,k);break;default:Tr(h,k,E,O,c)}t=t.sibling}}function Ma(e,t){if(t.subtreeFlags&10256)for(t=t.child;t!==null;){var i=e,a=t,c=a.flags;switch(a.tag){case 22:Ma(i,a),c&2048&&Oc(a.alternate,a);break;case 24:Ma(i,a),c&2048&&Nc(a.alternate,a);break;default:Ma(i,a)}t=t.sibling}}var Ra=8192;function Ar(e){if(e.subtreeFlags&Ra)for(e=e.child;e!==null;)Jf(e),e=e.sibling}function Jf(e){switch(e.tag){case 26:Ar(e),e.flags&Ra&&e.memoizedState!==null&&Zb(dn,e.memoizedState,e.memoizedProps);break;case 5:Ar(e);break;case 3:case 4:var t=dn;dn=ws(e.stateNode.containerInfo),Ar(e),dn=t;break;case 22:e.memoizedState===null&&(t=e.alternate,t!==null&&t.memoizedState!==null?(t=Ra,Ra=16777216,Ar(e),Ra=t):Ar(e));break;default:Ar(e)}}function $f(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 za(e){var t=e.deletions;if((e.flags&16)!==0){if(t!==null)for(var i=0;i<t.length;i++){var a=t[i];yt=a,tg(a,e)}$f(e)}if(e.subtreeFlags&10256)for(e=e.child;e!==null;)eg(e),e=e.sibling}function eg(e){switch(e.tag){case 0:case 11:case 15:za(e),e.flags&2048&&ei(9,e,e.return);break;case 3:za(e);break;case 12:za(e);break;case 22:var t=e.stateNode;e.memoizedState!==null&&t._visibility&2&&(e.return===null||e.return.tag!==13)?(t._visibility&=-3,cs(e)):za(e);break;default:za(e)}}function cs(e){var t=e.deletions;if((e.flags&16)!==0){if(t!==null)for(var i=0;i<t.length;i++){var a=t[i];yt=a,tg(a,e)}$f(e)}for(e=e.child;e!==null;){switch(t=e,t.tag){case 0:case 11:case 15:ei(8,t,t.return),cs(t);break;case 22:i=t.stateNode,i._visibility&2&&(i._visibility&=-3,cs(t));break;default:cs(t)}e=e.sibling}}function tg(e,t){for(;yt!==null;){var i=yt;switch(i.tag){case 0:case 11:case 15:ei(8,i,t);break;case 23:case 22:if(i.memoizedState!==null&&i.memoizedState.cachePool!==null){var a=i.memoizedState.cachePool.pool;a!=null&&a.refCount++}break;case 24:ga(i.memoizedState.cache)}if(a=i.child,a!==null)a.return=i,yt=a;else e:for(i=e;yt!==null;){a=yt;var c=a.sibling,h=a.return;if(qf(a),a===i){yt=null;break e}if(c!==null){c.return=h,yt=c;break e}yt=h}}}var db={getCacheForType:function(e){var t=Tt(ht),i=t.data.get(e);return i===void 0&&(i=e(),t.data.set(e,i)),i}},ub=typeof WeakMap=="function"?WeakMap:Map,Ve=0,Ke=null,Be=null,Ne=0,Fe=0,Ft=null,ii=!1,Cr=!1,Pc=!1,In=0,rt=0,ri=0,Pi=0,Uc=0,$t=0,jr=0,Ba=null,Nt=null,Ic=!1,Vc=0,ds=1/0,us=null,ai=null,xt=0,oi=null,Er=null,Dr=0,Fc=0,Wc=null,ng=null,La=0,Hc=null;function Wt(){if((Ve&2)!==0&&Ne!==0)return Ne&-Ne;if(F.T!==null){var e=mr;return e!==0?e:Qc()}return yh()}function ig(){$t===0&&($t=(Ne&536870912)===0||Ie?wo():536870912);var e=Jt.current;return e!==null&&(e.flags|=32),$t}function Ht(e,t,i){(e===Ke&&(Fe===2||Fe===9)||e.cancelPendingCommit!==null)&&(_r(e,0),si(e,Ne,$t,!1)),ln(e,i),((Ve&2)===0||e!==Ke)&&(e===Ke&&((Ve&2)===0&&(Pi|=i),rt===4&&si(e,Ne,$t,!1)),wn(e))}function rg(e,t,i){if((Ve&6)!==0)throw Error(l(327));var a=!i&&(t&124)===0&&(t&e.expiredLanes)===0||Hn(e,t),c=a?fb(e,t):Yc(e,t,!0),h=a;do{if(c===0){Cr&&!a&&si(e,t,0,!1);break}else{if(i=e.current.alternate,h&&!hb(i)){c=Yc(e,t,!1),h=!1;continue}if(c===2){if(h=t,e.errorRecoveryDisabledLanes&h)var k=0;else k=e.pendingLanes&-536870913,k=k!==0?k:k&536870912?536870912:0;if(k!==0){t=k;e:{var E=e;c=Ba;var O=E.current.memoizedState.isDehydrated;if(O&&(_r(E,k).flags|=256),k=Yc(E,k,!1),k!==2){if(Pc&&!O){E.errorRecoveryDisabledLanes|=h,Pi|=h,c=4;break e}h=Nt,Nt=c,h!==null&&(Nt===null?Nt=h:Nt.push.apply(Nt,h))}c=k}if(h=!1,c!==2)continue}}if(c===1){_r(e,0),si(e,t,0,!0);break}e:{switch(a=e,h=c,h){case 0:case 1:throw Error(l(345));case 4:if((t&4194048)!==t)break;case 6:si(a,t,$t,!ii);break e;case 2:Nt=null;break;case 3:case 5:break;default:throw Error(l(329))}if((t&62914560)===t&&(c=Vc+300-R(),10<c)){if(si(a,t,$t,!ii),Rt(a,0,!0)!==0)break e;a.timeoutHandle=zg(ag.bind(null,a,i,Nt,us,Ic,t,$t,Pi,jr,ii,h,2,-0,0),c);break e}ag(a,i,Nt,us,Ic,t,$t,Pi,jr,ii,h,0,-0,0)}}break}while(!0);wn(e)}function ag(e,t,i,a,c,h,k,E,O,K,oe,ce,J,$){if(e.timeoutHandle=-1,ce=t.subtreeFlags,(ce&8192||(ce&16785408)===16785408)&&(Fa={stylesheets:null,count:0,unsuspend:Yb},Jf(t),ce=Xb(),ce!==null)){e.cancelPendingCommit=ce(hg.bind(null,e,t,h,i,a,c,k,E,O,oe,1,J,$)),si(e,h,k,!K);return}hg(e,t,h,i,a,c,k,E,O)}function hb(e){for(var t=e;;){var i=t.tag;if((i===0||i===11||i===15)&&t.flags&16384&&(i=t.updateQueue,i!==null&&(i=i.stores,i!==null)))for(var a=0;a<i.length;a++){var c=i[a],h=c.getSnapshot;c=c.value;try{if(!Pt(h(),c))return!1}catch{return!1}}if(i=t.child,t.subtreeFlags&16384&&i!==null)i.return=t,t=i;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 si(e,t,i,a){t&=~Uc,t&=~Pi,e.suspendedLanes|=t,e.pingedLanes&=~t,a&&(e.warmLanes|=t),a=e.expirationTimes;for(var c=t;0<c;){var h=31-Ze(c),k=1<<h;a[h]=-1,c&=~k}i!==0&&gh(e,i,t)}function hs(){return(Ve&6)===0?(Oa(0),!1):!0}function Gc(){if(Be!==null){if(Fe===0)var e=Be.return;else e=Be,Rn=Ri=null,lc(e),kr=null,Ca=0,e=Be;for(;e!==null;)Pf(e.alternate,e),e=e.return;Be=null}}function _r(e,t){var i=e.timeoutHandle;i!==-1&&(e.timeoutHandle=-1,_b(i)),i=e.cancelPendingCommit,i!==null&&(e.cancelPendingCommit=null,i()),Gc(),Ke=e,Be=i=Dn(e.current,null),Ne=t,Fe=0,Ft=null,ii=!1,Cr=Hn(e,t),Pc=!1,jr=$t=Uc=Pi=ri=rt=0,Nt=Ba=null,Ic=!1,(t&8)!==0&&(t|=t&32);var a=e.entangledLanes;if(a!==0)for(e=e.entanglements,a&=t;0<a;){var c=31-Ze(a),h=1<<c;t|=e[c],a&=~h}return In=t,Bo(),i}function og(e,t){Me=null,F.H=$o,t===ya||t===Wo?(t=kp(),Fe=3):t===bp?(t=kp(),Fe=4):Fe=t===Tf?8:t!==null&&typeof t=="object"&&typeof t.then=="function"?6:1,Ft=t,Be===null&&(rt=1,rs(e,Zt(t,e.current)))}function sg(){var e=F.H;return F.H=$o,e===null?$o:e}function lg(){var e=F.A;return F.A=db,e}function qc(){rt=4,ii||(Ne&4194048)!==Ne&&Jt.current!==null||(Cr=!0),(ri&134217727)===0&&(Pi&134217727)===0||Ke===null||si(Ke,Ne,$t,!1)}function Yc(e,t,i){var a=Ve;Ve|=2;var c=sg(),h=lg();(Ke!==e||Ne!==t)&&(us=null,_r(e,t)),t=!1;var k=rt;e:do try{if(Fe!==0&&Be!==null){var E=Be,O=Ft;switch(Fe){case 8:Gc(),k=6;break e;case 3:case 2:case 9:case 6:Jt.current===null&&(t=!0);var K=Fe;if(Fe=0,Ft=null,Mr(e,E,O,K),i&&Cr){k=0;break e}break;default:K=Fe,Fe=0,Ft=null,Mr(e,E,O,K)}}pb(),k=rt;break}catch(oe){og(e,oe)}while(!0);return t&&e.shellSuspendCounter++,Rn=Ri=null,Ve=a,F.H=c,F.A=h,Be===null&&(Ke=null,Ne=0,Bo()),k}function pb(){for(;Be!==null;)cg(Be)}function fb(e,t){var i=Ve;Ve|=2;var a=sg(),c=lg();Ke!==e||Ne!==t?(us=null,ds=R()+500,_r(e,t)):Cr=Hn(e,t);e:do try{if(Fe!==0&&Be!==null){t=Be;var h=Ft;t:switch(Fe){case 1:Fe=0,Ft=null,Mr(e,t,h,1);break;case 2:case 9:if(xp(h)){Fe=0,Ft=null,dg(t);break}t=function(){Fe!==2&&Fe!==9||Ke!==e||(Fe=7),wn(e)},h.then(t,t);break e;case 3:Fe=7;break e;case 4:Fe=5;break e;case 7:xp(h)?(Fe=0,Ft=null,dg(t)):(Fe=0,Ft=null,Mr(e,t,h,7));break;case 5:var k=null;switch(Be.tag){case 26:k=Be.memoizedState;case 5:case 27:var E=Be;if(!k||Gg(k)){Fe=0,Ft=null;var O=E.sibling;if(O!==null)Be=O;else{var K=E.return;K!==null?(Be=K,ps(K)):Be=null}break t}}Fe=0,Ft=null,Mr(e,t,h,5);break;case 6:Fe=0,Ft=null,Mr(e,t,h,6);break;case 8:Gc(),rt=6;break e;default:throw Error(l(462))}}gb();break}catch(oe){og(e,oe)}while(!0);return Rn=Ri=null,F.H=a,F.A=c,Ve=i,Be!==null?0:(Ke=null,Ne=0,Bo(),rt)}function gb(){for(;Be!==null&&!le();)cg(Be)}function cg(e){var t=Of(e.alternate,e,In);e.memoizedProps=e.pendingProps,t===null?ps(e):Be=t}function dg(e){var t=e,i=t.alternate;switch(t.tag){case 15:case 0:t=_f(i,t,t.pendingProps,t.type,void 0,Ne);break;case 11:t=_f(i,t,t.pendingProps,t.type.render,t.ref,Ne);break;case 5:lc(t);default:Pf(i,t),t=Be=dp(t,In),t=Of(i,t,In)}e.memoizedProps=e.pendingProps,t===null?ps(e):Be=t}function Mr(e,t,i,a){Rn=Ri=null,lc(t),kr=null,Ca=0;var c=t.return;try{if(rb(e,c,t,i,Ne)){rt=1,rs(e,Zt(i,e.current)),Be=null;return}}catch(h){if(c!==null)throw Be=c,h;rt=1,rs(e,Zt(i,e.current)),Be=null;return}t.flags&32768?(Ie||a===1?e=!0:Cr||(Ne&536870912)!==0?e=!1:(ii=e=!0,(a===2||a===9||a===3||a===6)&&(a=Jt.current,a!==null&&a.tag===13&&(a.flags|=16384))),ug(t,e)):ps(t)}function ps(e){var t=e;do{if((t.flags&32768)!==0){ug(t,ii);return}e=t.return;var i=ob(t.alternate,t,In);if(i!==null){Be=i;return}if(t=t.sibling,t!==null){Be=t;return}Be=t=e}while(t!==null);rt===0&&(rt=5)}function ug(e,t){do{var i=sb(e.alternate,e);if(i!==null){i.flags&=32767,Be=i;return}if(i=e.return,i!==null&&(i.flags|=32768,i.subtreeFlags=0,i.deletions=null),!t&&(e=e.sibling,e!==null)){Be=e;return}Be=e=i}while(e!==null);rt=6,Be=null}function hg(e,t,i,a,c,h,k,E,O){e.cancelPendingCommit=null;do fs();while(xt!==0);if((Ve&6)!==0)throw Error(l(327));if(t!==null){if(t===e.current)throw Error(l(177));if(h=t.lanes|t.childLanes,h|=Nl,Qi(e,i,h,k,E,O),e===Ke&&(Be=Ke=null,Ne=0),Er=t,oi=e,Dr=i,Fc=h,Wc=c,ng=a,(t.subtreeFlags&10256)!==0||(t.flags&10256)!==0?(e.callbackNode=null,e.callbackPriority=0,bb(ue,function(){return yg(),null})):(e.callbackNode=null,e.callbackPriority=0),a=(t.flags&13878)!==0,(t.subtreeFlags&13878)!==0||a){a=F.T,F.T=null,c=U.p,U.p=2,k=Ve,Ve|=4;try{lb(e,t,i)}finally{Ve=k,U.p=c,F.T=a}}xt=1,pg(),fg(),gg()}}function pg(){if(xt===1){xt=0;var e=oi,t=Er,i=(t.flags&13878)!==0;if((t.subtreeFlags&13878)!==0||i){i=F.T,F.T=null;var a=U.p;U.p=2;var c=Ve;Ve|=4;try{Xf(t,e);var h=ad,k=ep(e.containerInfo),E=h.focusedElem,O=h.selectionRange;if(k!==E&&E&&E.ownerDocument&&$h(E.ownerDocument.documentElement,E)){if(O!==null&&Rl(E)){var K=O.start,oe=O.end;if(oe===void 0&&(oe=K),"selectionStart"in E)E.selectionStart=K,E.selectionEnd=Math.min(oe,E.value.length);else{var ce=E.ownerDocument||document,J=ce&&ce.defaultView||window;if(J.getSelection){var $=J.getSelection(),je=E.textContent.length,Ae=Math.min(O.start,je),Ge=O.end===void 0?Ae:Math.min(O.end,je);!$.extend&&Ae>Ge&&(k=Ge,Ge=Ae,Ae=k);var q=Jh(E,Ae),I=Jh(E,Ge);if(q&&I&&($.rangeCount!==1||$.anchorNode!==q.node||$.anchorOffset!==q.offset||$.focusNode!==I.node||$.focusOffset!==I.offset)){var X=ce.createRange();X.setStart(q.node,q.offset),$.removeAllRanges(),Ae>Ge?($.addRange(X),$.extend(I.node,I.offset)):(X.setEnd(I.node,I.offset),$.addRange(X))}}}}for(ce=[],$=E;$=$.parentNode;)$.nodeType===1&&ce.push({element:$,left:$.scrollLeft,top:$.scrollTop});for(typeof E.focus=="function"&&E.focus(),E=0;E<ce.length;E++){var se=ce[E];se.element.scrollLeft=se.left,se.element.scrollTop=se.top}}Cs=!!rd,ad=rd=null}finally{Ve=c,U.p=a,F.T=i}}e.current=t,xt=2}}function fg(){if(xt===2){xt=0;var e=oi,t=Er,i=(t.flags&8772)!==0;if((t.subtreeFlags&8772)!==0||i){i=F.T,F.T=null;var a=U.p;U.p=2;var c=Ve;Ve|=4;try{Gf(e,t.alternate,t)}finally{Ve=c,U.p=a,F.T=i}}xt=3}}function gg(){if(xt===4||xt===3){xt=0,ne();var e=oi,t=Er,i=Dr,a=ng;(t.subtreeFlags&10256)!==0||(t.flags&10256)!==0?xt=5:(xt=0,Er=oi=null,mg(e,e.pendingLanes));var c=e.pendingLanes;if(c===0&&(ai=null),ul(i),t=t.stateNode,De&&typeof De.onCommitFiberRoot=="function")try{De.onCommitFiberRoot(Se,t,void 0,(t.current.flags&128)===128)}catch{}if(a!==null){t=F.T,c=U.p,U.p=2,F.T=null;try{for(var h=e.onRecoverableError,k=0;k<a.length;k++){var E=a[k];h(E.value,{componentStack:E.stack})}}finally{F.T=t,U.p=c}}(Dr&3)!==0&&fs(),wn(e),c=e.pendingLanes,(i&4194090)!==0&&(c&42)!==0?e===Hc?La++:(La=0,Hc=e):La=0,Oa(0)}}function mg(e,t){(e.pooledCacheLanes&=t)===0&&(t=e.pooledCache,t!=null&&(e.pooledCache=null,ga(t)))}function fs(e){return pg(),fg(),gg(),yg()}function yg(){if(xt!==5)return!1;var e=oi,t=Fc;Fc=0;var i=ul(Dr),a=F.T,c=U.p;try{U.p=32>i?32:i,F.T=null,i=Wc,Wc=null;var h=oi,k=Dr;if(xt=0,Er=oi=null,Dr=0,(Ve&6)!==0)throw Error(l(331));var E=Ve;if(Ve|=4,eg(h.current),Qf(h,h.current,k,i),Ve=E,Oa(0,!1),De&&typeof De.onPostCommitFiberRoot=="function")try{De.onPostCommitFiberRoot(Se,h)}catch{}return!0}finally{U.p=c,F.T=a,mg(e,t)}}function vg(e,t,i){t=Zt(i,t),t=kc(e.stateNode,t,2),e=Kn(e,t,2),e!==null&&(ln(e,2),wn(e))}function qe(e,t,i){if(e.tag===3)vg(e,e,i);else for(;t!==null;){if(t.tag===3){vg(t,e,i);break}else if(t.tag===1){var a=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(ai===null||!ai.has(a))){e=Zt(i,e),i=kf(2),a=Kn(t,i,2),a!==null&&(Sf(i,a,t,e),ln(a,2),wn(a));break}}t=t.return}}function Zc(e,t,i){var a=e.pingCache;if(a===null){a=e.pingCache=new ub;var c=new Set;a.set(t,c)}else c=a.get(t),c===void 0&&(c=new Set,a.set(t,c));c.has(i)||(Pc=!0,c.add(i),e=mb.bind(null,e,t,i),t.then(e,e))}function mb(e,t,i){var a=e.pingCache;a!==null&&a.delete(t),e.pingedLanes|=e.suspendedLanes&i,e.warmLanes&=~i,Ke===e&&(Ne&i)===i&&(rt===4||rt===3&&(Ne&62914560)===Ne&&300>R()-Vc?(Ve&2)===0&&_r(e,0):Uc|=i,jr===Ne&&(jr=0)),wn(e)}function bg(e,t){t===0&&(t=ko()),e=hr(e,t),e!==null&&(ln(e,t),wn(e))}function yb(e){var t=e.memoizedState,i=0;t!==null&&(i=t.retryLane),bg(e,i)}function vb(e,t){var i=0;switch(e.tag){case 13:var a=e.stateNode,c=e.memoizedState;c!==null&&(i=c.retryLane);break;case 19:a=e.stateNode;break;case 22:a=e.stateNode._retryCache;break;default:throw Error(l(314))}a!==null&&a.delete(t),bg(e,i)}function bb(e,t){return Ct(e,t)}var gs=null,Rr=null,Xc=!1,ms=!1,Kc=!1,Ui=0;function wn(e){e!==Rr&&e.next===null&&(Rr===null?gs=Rr=e:Rr=Rr.next=e),ms=!0,Xc||(Xc=!0,wb())}function Oa(e,t){if(!Kc&&ms){Kc=!0;do for(var i=!1,a=gs;a!==null;){if(e!==0){var c=a.pendingLanes;if(c===0)var h=0;else{var k=a.suspendedLanes,E=a.pingedLanes;h=(1<<31-Ze(42|e)+1)-1,h&=c&~(k&~E),h=h&201326741?h&201326741|1:h?h|2:0}h!==0&&(i=!0,Sg(a,h))}else h=Ne,h=Rt(a,a===Ke?h:0,a.cancelPendingCommit!==null||a.timeoutHandle!==-1),(h&3)===0||Hn(a,h)||(i=!0,Sg(a,h));a=a.next}while(i);Kc=!1}}function xb(){xg()}function xg(){ms=Xc=!1;var e=0;Ui!==0&&(Db()&&(e=Ui),Ui=0);for(var t=R(),i=null,a=gs;a!==null;){var c=a.next,h=wg(a,t);h===0?(a.next=null,i===null?gs=c:i.next=c,c===null&&(Rr=i)):(i=a,(e!==0||(h&3)!==0)&&(ms=!0)),a=c}Oa(e)}function wg(e,t){for(var i=e.suspendedLanes,a=e.pingedLanes,c=e.expirationTimes,h=e.pendingLanes&-62914561;0<h;){var k=31-Ze(h),E=1<<k,O=c[k];O===-1?((E&i)===0||(E&a)!==0)&&(c[k]=cl(E,t)):O<=t&&(e.expiredLanes|=E),h&=~E}if(t=Ke,i=Ne,i=Rt(e,e===t?i:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),a=e.callbackNode,i===0||e===t&&(Fe===2||Fe===9)||e.cancelPendingCommit!==null)return a!==null&&a!==null&&S(a),e.callbackNode=null,e.callbackPriority=0;if((i&3)===0||Hn(e,i)){if(t=i&-i,t===e.callbackPriority)return t;switch(a!==null&&S(a),ul(i)){case 2:case 8:i=de;break;case 32:i=ue;break;case 268435456:i=ge;break;default:i=ue}return a=kg.bind(null,e),i=Ct(i,a),e.callbackPriority=t,e.callbackNode=i,t}return a!==null&&a!==null&&S(a),e.callbackPriority=2,e.callbackNode=null,2}function kg(e,t){if(xt!==0&&xt!==5)return e.callbackNode=null,e.callbackPriority=0,null;var i=e.callbackNode;if(fs()&&e.callbackNode!==i)return null;var a=Ne;return a=Rt(e,e===Ke?a:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),a===0?null:(rg(e,a,t),wg(e,R()),e.callbackNode!=null&&e.callbackNode===i?kg.bind(null,e):null)}function Sg(e,t){if(fs())return null;rg(e,t,!0)}function wb(){Mb(function(){(Ve&6)!==0?Ct(G,xb):xg()})}function Qc(){return Ui===0&&(Ui=wo()),Ui}function Tg(e){return e==null||typeof e=="symbol"||typeof e=="boolean"?null:typeof e=="function"?e:jo(""+e)}function Ag(e,t){var i=t.ownerDocument.createElement("input");return i.name=t.name,i.value=t.value,e.id&&i.setAttribute("form",e.id),t.parentNode.insertBefore(i,t),e=new FormData(e),i.parentNode.removeChild(i),e}function kb(e,t,i,a,c){if(t==="submit"&&i&&i.stateNode===c){var h=Tg((c[zt]||null).action),k=a.submitter;k&&(t=(t=k[zt]||null)?Tg(t.formAction):k.getAttribute("formAction"),t!==null&&(h=t,k=null));var E=new Mo("action","action",null,a,c);e.push({event:E,listeners:[{instance:null,listener:function(){if(a.defaultPrevented){if(Ui!==0){var O=k?Ag(c,k):new FormData(c);yc(i,{pending:!0,data:O,method:c.method,action:h},null,O)}}else typeof h=="function"&&(E.preventDefault(),O=k?Ag(c,k):new FormData(c),yc(i,{pending:!0,data:O,method:c.method,action:h},h,O))},currentTarget:c}]})}}for(var Jc=0;Jc<Ol.length;Jc++){var $c=Ol[Jc],Sb=$c.toLowerCase(),Tb=$c[0].toUpperCase()+$c.slice(1);cn(Sb,"on"+Tb)}cn(ip,"onAnimationEnd"),cn(rp,"onAnimationIteration"),cn(ap,"onAnimationStart"),cn("dblclick","onDoubleClick"),cn("focusin","onFocus"),cn("focusout","onBlur"),cn(Vv,"onTransitionRun"),cn(Fv,"onTransitionStart"),cn(Wv,"onTransitionCancel"),cn(op,"onTransitionEnd"),nr("onMouseEnter",["mouseout","mouseover"]),nr("onMouseLeave",["mouseout","mouseover"]),nr("onPointerEnter",["pointerout","pointerover"]),nr("onPointerLeave",["pointerout","pointerover"]),Si("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),Si("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),Si("onBeforeInput",["compositionend","keypress","textInput","paste"]),Si("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),Si("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),Si("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Na="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(" "),Ab=new Set("beforetoggle cancel close invalid load scroll scrollend toggle".split(" ").concat(Na));function Cg(e,t){t=(t&4)!==0;for(var i=0;i<e.length;i++){var a=e[i],c=a.event;a=a.listeners;e:{var h=void 0;if(t)for(var k=a.length-1;0<=k;k--){var E=a[k],O=E.instance,K=E.currentTarget;if(E=E.listener,O!==h&&c.isPropagationStopped())break e;h=E,c.currentTarget=K;try{h(c)}catch(oe){is(oe)}c.currentTarget=null,h=O}else for(k=0;k<a.length;k++){if(E=a[k],O=E.instance,K=E.currentTarget,E=E.listener,O!==h&&c.isPropagationStopped())break e;h=E,c.currentTarget=K;try{h(c)}catch(oe){is(oe)}c.currentTarget=null,h=O}}}}function Le(e,t){var i=t[hl];i===void 0&&(i=t[hl]=new Set);var a=e+"__bubble";i.has(a)||(jg(t,e,2,!1),i.add(a))}function ed(e,t,i){var a=0;t&&(a|=4),jg(i,e,a,t)}var ys="_reactListening"+Math.random().toString(36).slice(2);function td(e){if(!e[ys]){e[ys]=!0,bh.forEach(function(i){i!=="selectionchange"&&(Ab.has(i)||ed(i,!1,e),ed(i,!0,e))});var t=e.nodeType===9?e:e.ownerDocument;t===null||t[ys]||(t[ys]=!0,ed("selectionchange",!1,t))}}function jg(e,t,i,a){switch(Qg(t)){case 2:var c=Jb;break;case 8:c=$b;break;default:c=gd}i=c.bind(null,t,i,e),c=void 0,!Sl||t!=="touchstart"&&t!=="touchmove"&&t!=="wheel"||(c=!0),a?c!==void 0?e.addEventListener(t,i,{capture:!0,passive:c}):e.addEventListener(t,i,!0):c!==void 0?e.addEventListener(t,i,{passive:c}):e.addEventListener(t,i,!1)}function nd(e,t,i,a,c){var h=a;if((t&1)===0&&(t&2)===0&&a!==null)e:for(;;){if(a===null)return;var k=a.tag;if(k===3||k===4){var E=a.stateNode.containerInfo;if(E===c)break;if(k===4)for(k=a.return;k!==null;){var O=k.tag;if((O===3||O===4)&&k.stateNode.containerInfo===c)return;k=k.return}for(;E!==null;){if(k=$i(E),k===null)return;if(O=k.tag,O===5||O===6||O===26||O===27){a=h=k;continue e}E=E.parentNode}}a=a.return}zh(function(){var K=h,oe=wl(i),ce=[];e:{var J=sp.get(e);if(J!==void 0){var $=Mo,je=e;switch(e){case"keypress":if(Do(i)===0)break e;case"keydown":case"keyup":$=bv;break;case"focusin":je="focus",$=jl;break;case"focusout":je="blur",$=jl;break;case"beforeblur":case"afterblur":$=jl;break;case"click":if(i.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":$=Oh;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":$=sv;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":$=kv;break;case ip:case rp:case ap:$=dv;break;case op:$=Tv;break;case"scroll":case"scrollend":$=av;break;case"wheel":$=Cv;break;case"copy":case"cut":case"paste":$=hv;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":$=Ph;break;case"toggle":case"beforetoggle":$=Ev}var Ae=(t&4)!==0,Ge=!Ae&&(e==="scroll"||e==="scrollend"),q=Ae?J!==null?J+"Capture":null:J;Ae=[];for(var I=K,X;I!==null;){var se=I;if(X=se.stateNode,se=se.tag,se!==5&&se!==26&&se!==27||X===null||q===null||(se=na(I,q),se!=null&&Ae.push(Pa(I,se,X))),Ge)break;I=I.return}0<Ae.length&&(J=new $(J,je,null,i,oe),ce.push({event:J,listeners:Ae}))}}if((t&7)===0){e:{if(J=e==="mouseover"||e==="pointerover",$=e==="mouseout"||e==="pointerout",J&&i!==xl&&(je=i.relatedTarget||i.fromElement)&&($i(je)||je[Ji]))break e;if(($||J)&&(J=oe.window===oe?oe:(J=oe.ownerDocument)?J.defaultView||J.parentWindow:window,$?(je=i.relatedTarget||i.toElement,$=K,je=je?$i(je):null,je!==null&&(Ge=p(je),Ae=je.tag,je!==Ge||Ae!==5&&Ae!==27&&Ae!==6)&&(je=null)):($=null,je=K),$!==je)){if(Ae=Oh,se="onMouseLeave",q="onMouseEnter",I="mouse",(e==="pointerout"||e==="pointerover")&&(Ae=Ph,se="onPointerLeave",q="onPointerEnter",I="pointer"),Ge=$==null?J:ta($),X=je==null?J:ta(je),J=new Ae(se,I+"leave",$,i,oe),J.target=Ge,J.relatedTarget=X,se=null,$i(oe)===K&&(Ae=new Ae(q,I+"enter",je,i,oe),Ae.target=X,Ae.relatedTarget=Ge,se=Ae),Ge=se,$&&je)t:{for(Ae=$,q=je,I=0,X=Ae;X;X=zr(X))I++;for(X=0,se=q;se;se=zr(se))X++;for(;0<I-X;)Ae=zr(Ae),I--;for(;0<X-I;)q=zr(q),X--;for(;I--;){if(Ae===q||q!==null&&Ae===q.alternate)break t;Ae=zr(Ae),q=zr(q)}Ae=null}else Ae=null;$!==null&&Eg(ce,J,$,Ae,!1),je!==null&&Ge!==null&&Eg(ce,Ge,je,Ae,!0)}}e:{if(J=K?ta(K):window,$=J.nodeName&&J.nodeName.toLowerCase(),$==="select"||$==="input"&&J.type==="file")var xe=qh;else if(Hh(J))if(Yh)xe=Pv;else{xe=Ov;var Re=Lv}else $=J.nodeName,!$||$.toLowerCase()!=="input"||J.type!=="checkbox"&&J.type!=="radio"?K&&bl(K.elementType)&&(xe=qh):xe=Nv;if(xe&&(xe=xe(e,K))){Gh(ce,xe,i,oe);break e}Re&&Re(e,J,K),e==="focusout"&&K&&J.type==="number"&&K.memoizedProps.value!=null&&vl(J,"number",J.value)}switch(Re=K?ta(K):window,e){case"focusin":(Hh(Re)||Re.contentEditable==="true")&&(cr=Re,zl=K,da=null);break;case"focusout":da=zl=cr=null;break;case"mousedown":Bl=!0;break;case"contextmenu":case"mouseup":case"dragend":Bl=!1,tp(ce,i,oe);break;case"selectionchange":if(Iv)break;case"keydown":case"keyup":tp(ce,i,oe)}var Te;if(Dl)e:{switch(e){case"compositionstart":var Ce="onCompositionStart";break e;case"compositionend":Ce="onCompositionEnd";break e;case"compositionupdate":Ce="onCompositionUpdate";break e}Ce=void 0}else lr?Fh(e,i)&&(Ce="onCompositionEnd"):e==="keydown"&&i.keyCode===229&&(Ce="onCompositionStart");Ce&&(Uh&&i.locale!=="ko"&&(lr||Ce!=="onCompositionStart"?Ce==="onCompositionEnd"&&lr&&(Te=Bh()):(qn=oe,Tl="value"in qn?qn.value:qn.textContent,lr=!0)),Re=vs(K,Ce),0<Re.length&&(Ce=new Nh(Ce,e,null,i,oe),ce.push({event:Ce,listeners:Re}),Te?Ce.data=Te:(Te=Wh(i),Te!==null&&(Ce.data=Te)))),(Te=_v?Mv(e,i):Rv(e,i))&&(Ce=vs(K,"onBeforeInput"),0<Ce.length&&(Re=new Nh("onBeforeInput","beforeinput",null,i,oe),ce.push({event:Re,listeners:Ce}),Re.data=Te)),kb(ce,e,K,i,oe)}Cg(ce,t)})}function Pa(e,t,i){return{instance:e,listener:t,currentTarget:i}}function vs(e,t){for(var i=t+"Capture",a=[];e!==null;){var c=e,h=c.stateNode;if(c=c.tag,c!==5&&c!==26&&c!==27||h===null||(c=na(e,i),c!=null&&a.unshift(Pa(e,c,h)),c=na(e,t),c!=null&&a.push(Pa(e,c,h))),e.tag===3)return a;e=e.return}return[]}function zr(e){if(e===null)return null;do e=e.return;while(e&&e.tag!==5&&e.tag!==27);return e||null}function Eg(e,t,i,a,c){for(var h=t._reactName,k=[];i!==null&&i!==a;){var E=i,O=E.alternate,K=E.stateNode;if(E=E.tag,O!==null&&O===a)break;E!==5&&E!==26&&E!==27||K===null||(O=K,c?(K=na(i,h),K!=null&&k.unshift(Pa(i,K,O))):c||(K=na(i,h),K!=null&&k.push(Pa(i,K,O)))),i=i.return}k.length!==0&&e.push({event:t,listeners:k})}var Cb=/\r\n?/g,jb=/\u0000|\uFFFD/g;function Dg(e){return(typeof e=="string"?e:""+e).replace(Cb,`
34`).replace(jb,"")}function _g(e,t){return t=Dg(t),Dg(e)===t}function bs(){}function He(e,t,i,a,c,h){switch(i){case"children":typeof a=="string"?t==="body"||t==="textarea"&&a===""||ar(e,a):(typeof a=="number"||typeof a=="bigint")&&t!=="body"&&ar(e,""+a);break;case"className":To(e,"class",a);break;case"tabIndex":To(e,"tabindex",a);break;case"dir":case"role":case"viewBox":case"width":case"height":To(e,i,a);break;case"style":Mh(e,a,h);break;case"data":if(t!=="object"){To(e,"data",a);break}case"src":case"href":if(a===""&&(t!=="a"||i!=="href")){e.removeAttribute(i);break}if(a==null||typeof a=="function"||typeof a=="symbol"||typeof a=="boolean"){e.removeAttribute(i);break}a=jo(""+a),e.setAttribute(i,a);break;case"action":case"formAction":if(typeof a=="function"){e.setAttribute(i,"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}else typeof h=="function"&&(i==="formAction"?(t!=="input"&&He(e,t,"name",c.name,c,null),He(e,t,"formEncType",c.formEncType,c,null),He(e,t,"formMethod",c.formMethod,c,null),He(e,t,"formTarget",c.formTarget,c,null)):(He(e,t,"encType",c.encType,c,null),He(e,t,"method",c.method,c,null),He(e,t,"target",c.target,c,null)));if(a==null||typeof a=="symbol"||typeof a=="boolean"){e.removeAttribute(i);break}a=jo(""+a),e.setAttribute(i,a);break;case"onClick":a!=null&&(e.onclick=bs);break;case"onScroll":a!=null&&Le("scroll",e);break;case"onScrollEnd":a!=null&&Le("scrollend",e);break;case"dangerouslySetInnerHTML":if(a!=null){if(typeof a!="object"||!("__html"in a))throw Error(l(61));if(i=a.__html,i!=null){if(c.children!=null)throw Error(l(60));e.innerHTML=i}}break;case"multiple":e.multiple=a&&typeof a!="function"&&typeof a!="symbol";break;case"muted":e.muted=a&&typeof a!="function"&&typeof a!="symbol";break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":break;case"autoFocus":break;case"xlinkHref":if(a==null||typeof a=="function"||typeof a=="boolean"||typeof a=="symbol"){e.removeAttribute("xlink:href");break}i=jo(""+a),e.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",i);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":a!=null&&typeof a!="function"&&typeof a!="symbol"?e.setAttribute(i,""+a):e.removeAttribute(i);break;case"inert":case"allowFullScreen":case"async":case"autoPlay":case"controls":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":a&&typeof a!="function"&&typeof a!="symbol"?e.setAttribute(i,""):e.removeAttribute(i);break;case"capture":case"download":a===!0?e.setAttribute(i,""):a!==!1&&a!=null&&typeof a!="function"&&typeof a!="symbol"?e.setAttribute(i,a):e.removeAttribute(i);break;case"cols":case"rows":case"size":case"span":a!=null&&typeof a!="function"&&typeof a!="symbol"&&!isNaN(a)&&1<=a?e.setAttribute(i,a):e.removeAttribute(i);break;case"rowSpan":case"start":a==null||typeof a=="function"||typeof a=="symbol"||isNaN(a)?e.removeAttribute(i):e.setAttribute(i,a);break;case"popover":Le("beforetoggle",e),Le("toggle",e),So(e,"popover",a);break;case"xlinkActuate":jn(e,"http://www.w3.org/1999/xlink","xlink:actuate",a);break;case"xlinkArcrole":jn(e,"http://www.w3.org/1999/xlink","xlink:arcrole",a);break;case"xlinkRole":jn(e,"http://www.w3.org/1999/xlink","xlink:role",a);break;case"xlinkShow":jn(e,"http://www.w3.org/1999/xlink","xlink:show",a);break;case"xlinkTitle":jn(e,"http://www.w3.org/1999/xlink","xlink:title",a);break;case"xlinkType":jn(e,"http://www.w3.org/1999/xlink","xlink:type",a);break;case"xmlBase":jn(e,"http://www.w3.org/XML/1998/namespace","xml:base",a);break;case"xmlLang":jn(e,"http://www.w3.org/XML/1998/namespace","xml:lang",a);break;case"xmlSpace":jn(e,"http://www.w3.org/XML/1998/namespace","xml:space",a);break;case"is":So(e,"is",a);break;case"innerText":case"textContent":break;default:(!(2<i.length)||i[0]!=="o"&&i[0]!=="O"||i[1]!=="n"&&i[1]!=="N")&&(i=iv.get(i)||i,So(e,i,a))}}function id(e,t,i,a,c,h){switch(i){case"style":Mh(e,a,h);break;case"dangerouslySetInnerHTML":if(a!=null){if(typeof a!="object"||!("__html"in a))throw Error(l(61));if(i=a.__html,i!=null){if(c.children!=null)throw Error(l(60));e.innerHTML=i}}break;case"children":typeof a=="string"?ar(e,a):(typeof a=="number"||typeof a=="bigint")&&ar(e,""+a);break;case"onScroll":a!=null&&Le("scroll",e);break;case"onScrollEnd":a!=null&&Le("scrollend",e);break;case"onClick":a!=null&&(e.onclick=bs);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"innerHTML":case"ref":break;case"innerText":case"textContent":break;default:if(!xh.hasOwnProperty(i))e:{if(i[0]==="o"&&i[1]==="n"&&(c=i.endsWith("Capture"),t=i.slice(2,c?i.length-7:void 0),h=e[zt]||null,h=h!=null?h[i]:null,typeof h=="function"&&e.removeEventListener(t,h,c),typeof a=="function")){typeof h!="function"&&h!==null&&(i in e?e[i]=null:e.hasAttribute(i)&&e.removeAttribute(i)),e.addEventListener(t,a,c);break e}i in e?e[i]=a:a===!0?e.setAttribute(i,""):So(e,i,a)}}}function wt(e,t,i){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"img":Le("error",e),Le("load",e);var a=!1,c=!1,h;for(h in i)if(i.hasOwnProperty(h)){var k=i[h];if(k!=null)switch(h){case"src":a=!0;break;case"srcSet":c=!0;break;case"children":case"dangerouslySetInnerHTML":throw Error(l(137,t));default:He(e,t,h,k,i,null)}}c&&He(e,t,"srcSet",i.srcSet,i,null),a&&He(e,t,"src",i.src,i,null);return;case"input":Le("invalid",e);var E=h=k=c=null,O=null,K=null;for(a in i)if(i.hasOwnProperty(a)){var oe=i[a];if(oe!=null)switch(a){case"name":c=oe;break;case"type":k=oe;break;case"checked":O=oe;break;case"defaultChecked":K=oe;break;case"value":h=oe;break;case"defaultValue":E=oe;break;case"children":case"dangerouslySetInnerHTML":if(oe!=null)throw Error(l(137,t));break;default:He(e,t,a,oe,i,null)}}jh(e,h,E,O,K,k,c,!1),Ao(e);return;case"select":Le("invalid",e),a=k=h=null;for(c in i)if(i.hasOwnProperty(c)&&(E=i[c],E!=null))switch(c){case"value":h=E;break;case"defaultValue":k=E;break;case"multiple":a=E;default:He(e,t,c,E,i,null)}t=h,i=k,e.multiple=!!a,t!=null?rr(e,!!a,t,!1):i!=null&&rr(e,!!a,i,!0);return;case"textarea":Le("invalid",e),h=c=a=null;for(k in i)if(i.hasOwnProperty(k)&&(E=i[k],E!=null))switch(k){case"value":a=E;break;case"defaultValue":c=E;break;case"children":h=E;break;case"dangerouslySetInnerHTML":if(E!=null)throw Error(l(91));break;default:He(e,t,k,E,i,null)}Dh(e,a,c,h),Ao(e);return;case"option":for(O in i)if(i.hasOwnProperty(O)&&(a=i[O],a!=null))switch(O){case"selected":e.selected=a&&typeof a!="function"&&typeof a!="symbol";break;default:He(e,t,O,a,i,null)}return;case"dialog":Le("beforetoggle",e),Le("toggle",e),Le("cancel",e),Le("close",e);break;case"iframe":case"object":Le("load",e);break;case"video":case"audio":for(a=0;a<Na.length;a++)Le(Na[a],e);break;case"image":Le("error",e),Le("load",e);break;case"details":Le("toggle",e);break;case"embed":case"source":case"link":Le("error",e),Le("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(K in i)if(i.hasOwnProperty(K)&&(a=i[K],a!=null))switch(K){case"children":case"dangerouslySetInnerHTML":throw Error(l(137,t));default:He(e,t,K,a,i,null)}return;default:if(bl(t)){for(oe in i)i.hasOwnProperty(oe)&&(a=i[oe],a!==void 0&&id(e,t,oe,a,i,void 0));return}}for(E in i)i.hasOwnProperty(E)&&(a=i[E],a!=null&&He(e,t,E,a,i,null))}function Eb(e,t,i,a){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var c=null,h=null,k=null,E=null,O=null,K=null,oe=null;for($ in i){var ce=i[$];if(i.hasOwnProperty($)&&ce!=null)switch($){case"checked":break;case"value":break;case"defaultValue":O=ce;default:a.hasOwnProperty($)||He(e,t,$,null,a,ce)}}for(var J in a){var $=a[J];if(ce=i[J],a.hasOwnProperty(J)&&($!=null||ce!=null))switch(J){case"type":h=$;break;case"name":c=$;break;case"checked":K=$;break;case"defaultChecked":oe=$;break;case"value":k=$;break;case"defaultValue":E=$;break;case"children":case"dangerouslySetInnerHTML":if($!=null)throw Error(l(137,t));break;default:$!==ce&&He(e,t,J,$,a,ce)}}yl(e,k,E,O,K,oe,h,c);return;case"select":$=k=E=J=null;for(h in i)if(O=i[h],i.hasOwnProperty(h)&&O!=null)switch(h){case"value":break;case"multiple":$=O;default:a.hasOwnProperty(h)||He(e,t,h,null,a,O)}for(c in a)if(h=a[c],O=i[c],a.hasOwnProperty(c)&&(h!=null||O!=null))switch(c){case"value":J=h;break;case"defaultValue":E=h;break;case"multiple":k=h;default:h!==O&&He(e,t,c,h,a,O)}t=E,i=k,a=$,J!=null?rr(e,!!i,J,!1):!!a!=!!i&&(t!=null?rr(e,!!i,t,!0):rr(e,!!i,i?[]:"",!1));return;case"textarea":$=J=null;for(E in i)if(c=i[E],i.hasOwnProperty(E)&&c!=null&&!a.hasOwnProperty(E))switch(E){case"value":break;case"children":break;default:He(e,t,E,null,a,c)}for(k in a)if(c=a[k],h=i[k],a.hasOwnProperty(k)&&(c!=null||h!=null))switch(k){case"value":J=c;break;case"defaultValue":$=c;break;case"children":break;case"dangerouslySetInnerHTML":if(c!=null)throw Error(l(91));break;default:c!==h&&He(e,t,k,c,a,h)}Eh(e,J,$);return;case"option":for(var je in i)if(J=i[je],i.hasOwnProperty(je)&&J!=null&&!a.hasOwnProperty(je))switch(je){case"selected":e.selected=!1;break;default:He(e,t,je,null,a,J)}for(O in a)if(J=a[O],$=i[O],a.hasOwnProperty(O)&&J!==$&&(J!=null||$!=null))switch(O){case"selected":e.selected=J&&typeof J!="function"&&typeof J!="symbol";break;default:He(e,t,O,J,a,$)}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 Ae in i)J=i[Ae],i.hasOwnProperty(Ae)&&J!=null&&!a.hasOwnProperty(Ae)&&He(e,t,Ae,null,a,J);for(K in a)if(J=a[K],$=i[K],a.hasOwnProperty(K)&&J!==$&&(J!=null||$!=null))switch(K){case"children":case"dangerouslySetInnerHTML":if(J!=null)throw Error(l(137,t));break;default:He(e,t,K,J,a,$)}return;default:if(bl(t)){for(var Ge in i)J=i[Ge],i.hasOwnProperty(Ge)&&J!==void 0&&!a.hasOwnProperty(Ge)&&id(e,t,Ge,void 0,a,J);for(oe in a)J=a[oe],$=i[oe],!a.hasOwnProperty(oe)||J===$||J===void 0&&$===void 0||id(e,t,oe,J,a,$);return}}for(var q in i)J=i[q],i.hasOwnProperty(q)&&J!=null&&!a.hasOwnProperty(q)&&He(e,t,q,null,a,J);for(ce in a)J=a[ce],$=i[ce],!a.hasOwnProperty(ce)||J===$||J==null&&$==null||He(e,t,ce,J,a,$)}var rd=null,ad=null;function xs(e){return e.nodeType===9?e:e.ownerDocument}function Mg(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 Rg(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 od(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 sd=null;function Db(){var e=window.event;return e&&e.type==="popstate"?e===sd?!1:(sd=e,!0):(sd=null,!1)}var zg=typeof setTimeout=="function"?setTimeout:void 0,_b=typeof clearTimeout=="function"?clearTimeout:void 0,Bg=typeof Promise=="function"?Promise:void 0,Mb=typeof queueMicrotask=="function"?queueMicrotask:typeof Bg<"u"?function(e){return Bg.resolve(null).then(e).catch(Rb)}:zg;function Rb(e){setTimeout(function(){throw e})}function li(e){return e==="head"}function Lg(e,t){var i=t,a=0,c=0;do{var h=i.nextSibling;if(e.removeChild(i),h&&h.nodeType===8)if(i=h.data,i==="/$"){if(0<a&&8>a){i=a;var k=e.ownerDocument;if(i&1&&Ua(k.documentElement),i&2&&Ua(k.body),i&4)for(i=k.head,Ua(i),k=i.firstChild;k;){var E=k.nextSibling,O=k.nodeName;k[ea]||O==="SCRIPT"||O==="STYLE"||O==="LINK"&&k.rel.toLowerCase()==="stylesheet"||i.removeChild(k),k=E}}if(c===0){e.removeChild(h),Ya(t);return}c--}else i==="$"||i==="$?"||i==="$!"?c++:a=i.charCodeAt(0)-48;else a=0;i=h}while(i);Ya(t)}function ld(e){var t=e.firstChild;for(t&&t.nodeType===10&&(t=t.nextSibling);t;){var i=t;switch(t=t.nextSibling,i.nodeName){case"HTML":case"HEAD":case"BODY":ld(i),pl(i);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if(i.rel.toLowerCase()==="stylesheet")continue}e.removeChild(i)}}function zb(e,t,i,a){for(;e.nodeType===1;){var c=i;if(e.nodeName.toLowerCase()!==t.toLowerCase()){if(!a&&(e.nodeName!=="INPUT"||e.type!=="hidden"))break}else if(a){if(!e[ea])switch(t){case"meta":if(!e.hasAttribute("itemprop"))break;return e;case"link":if(h=e.getAttribute("rel"),h==="stylesheet"&&e.hasAttribute("data-precedence"))break;if(h!==c.rel||e.getAttribute("href")!==(c.href==null||c.href===""?null:c.href)||e.getAttribute("crossorigin")!==(c.crossOrigin==null?null:c.crossOrigin)||e.getAttribute("title")!==(c.title==null?null:c.title))break;return e;case"style":if(e.hasAttribute("data-precedence"))break;return e;case"script":if(h=e.getAttribute("src"),(h!==(c.src==null?null:c.src)||e.getAttribute("type")!==(c.type==null?null:c.type)||e.getAttribute("crossorigin")!==(c.crossOrigin==null?null:c.crossOrigin))&&h&&e.hasAttribute("async")&&!e.hasAttribute("itemprop"))break;return e;default:return e}}else if(t==="input"&&e.type==="hidden"){var h=c.name==null?null:""+c.name;if(c.type==="hidden"&&e.getAttribute("name")===h)return e}else return e;if(e=un(e.nextSibling),e===null)break}return null}function Bb(e,t,i){if(t==="")return null;for(;e.nodeType!==3;)if((e.nodeType!==1||e.nodeName!=="INPUT"||e.type!=="hidden")&&!i||(e=un(e.nextSibling),e===null))return null;return e}function cd(e){return e.data==="$!"||e.data==="$?"&&e.ownerDocument.readyState==="complete"}function Lb(e,t){var i=e.ownerDocument;if(e.data!=="$?"||i.readyState==="complete")t();else{var a=function(){t(),i.removeEventListener("DOMContentLoaded",a)};i.addEventListener("DOMContentLoaded",a),e._reactRetry=a}}function un(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==="F!"||t==="F")break;if(t==="/$")return null}}return e}var dd=null;function Og(e){e=e.previousSibling;for(var t=0;e;){if(e.nodeType===8){var i=e.data;if(i==="$"||i==="$!"||i==="$?"){if(t===0)return e;t--}else i==="/$"&&t++}e=e.previousSibling}return null}function Ng(e,t,i){switch(t=xs(i),e){case"html":if(e=t.documentElement,!e)throw Error(l(452));return e;case"head":if(e=t.head,!e)throw Error(l(453));return e;case"body":if(e=t.body,!e)throw Error(l(454));return e;default:throw Error(l(451))}}function Ua(e){for(var t=e.attributes;t.length;)e.removeAttributeNode(t[0]);pl(e)}var en=new Map,Pg=new Set;function ws(e){return typeof e.getRootNode=="function"?e.getRootNode():e.nodeType===9?e:e.ownerDocument}var Vn=U.d;U.d={f:Ob,r:Nb,D:Pb,C:Ub,L:Ib,m:Vb,X:Wb,S:Fb,M:Hb};function Ob(){var e=Vn.f(),t=hs();return e||t}function Nb(e){var t=er(e);t!==null&&t.tag===5&&t.type==="form"?rf(t):Vn.r(e)}var Br=typeof document>"u"?null:document;function Ug(e,t,i){var a=Br;if(a&&typeof t=="string"&&t){var c=Yt(t);c='link[rel="'+e+'"][href="'+c+'"]',typeof i=="string"&&(c+='[crossorigin="'+i+'"]'),Pg.has(c)||(Pg.add(c),e={rel:e,crossOrigin:i,href:t},a.querySelector(c)===null&&(t=a.createElement("link"),wt(t,"link",e),gt(t),a.head.appendChild(t)))}}function Pb(e){Vn.D(e),Ug("dns-prefetch",e,null)}function Ub(e,t){Vn.C(e,t),Ug("preconnect",e,t)}function Ib(e,t,i){Vn.L(e,t,i);var a=Br;if(a&&e&&t){var c='link[rel="preload"][as="'+Yt(t)+'"]';t==="image"&&i&&i.imageSrcSet?(c+='[imagesrcset="'+Yt(i.imageSrcSet)+'"]',typeof i.imageSizes=="string"&&(c+='[imagesizes="'+Yt(i.imageSizes)+'"]')):c+='[href="'+Yt(e)+'"]';var h=c;switch(t){case"style":h=Lr(e);break;case"script":h=Or(e)}en.has(h)||(e=m({rel:"preload",href:t==="image"&&i&&i.imageSrcSet?void 0:e,as:t},i),en.set(h,e),a.querySelector(c)!==null||t==="style"&&a.querySelector(Ia(h))||t==="script"&&a.querySelector(Va(h))||(t=a.createElement("link"),wt(t,"link",e),gt(t),a.head.appendChild(t)))}}function Vb(e,t){Vn.m(e,t);var i=Br;if(i&&e){var a=t&&typeof t.as=="string"?t.as:"script",c='link[rel="modulepreload"][as="'+Yt(a)+'"][href="'+Yt(e)+'"]',h=c;switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":h=Or(e)}if(!en.has(h)&&(e=m({rel:"modulepreload",href:e},t),en.set(h,e),i.querySelector(c)===null)){switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(i.querySelector(Va(h)))return}a=i.createElement("link"),wt(a,"link",e),gt(a),i.head.appendChild(a)}}}function Fb(e,t,i){Vn.S(e,t,i);var a=Br;if(a&&e){var c=tr(a).hoistableStyles,h=Lr(e);t=t||"default";var k=c.get(h);if(!k){var E={loading:0,preload:null};if(k=a.querySelector(Ia(h)))E.loading=5;else{e=m({rel:"stylesheet",href:e,"data-precedence":t},i),(i=en.get(h))&&ud(e,i);var O=k=a.createElement("link");gt(O),wt(O,"link",e),O._p=new Promise(function(K,oe){O.onload=K,O.onerror=oe}),O.addEventListener("load",function(){E.loading|=1}),O.addEventListener("error",function(){E.loading|=2}),E.loading|=4,ks(k,t,a)}k={type:"stylesheet",instance:k,count:1,state:E},c.set(h,k)}}}function Wb(e,t){Vn.X(e,t);var i=Br;if(i&&e){var a=tr(i).hoistableScripts,c=Or(e),h=a.get(c);h||(h=i.querySelector(Va(c)),h||(e=m({src:e,async:!0},t),(t=en.get(c))&&hd(e,t),h=i.createElement("script"),gt(h),wt(h,"link",e),i.head.appendChild(h)),h={type:"script",instance:h,count:1,state:null},a.set(c,h))}}function Hb(e,t){Vn.M(e,t);var i=Br;if(i&&e){var a=tr(i).hoistableScripts,c=Or(e),h=a.get(c);h||(h=i.querySelector(Va(c)),h||(e=m({src:e,async:!0,type:"module"},t),(t=en.get(c))&&hd(e,t),h=i.createElement("script"),gt(h),wt(h,"link",e),i.head.appendChild(h)),h={type:"script",instance:h,count:1,state:null},a.set(c,h))}}function Ig(e,t,i,a){var c=(c=Pe.current)?ws(c):null;if(!c)throw Error(l(446));switch(e){case"meta":case"title":return null;case"style":return typeof i.precedence=="string"&&typeof i.href=="string"?(t=Lr(i.href),i=tr(c).hoistableStyles,a=i.get(t),a||(a={type:"style",instance:null,count:0,state:null},i.set(t,a)),a):{type:"void",instance:null,count:0,state:null};case"link":if(i.rel==="stylesheet"&&typeof i.href=="string"&&typeof i.precedence=="string"){e=Lr(i.href);var h=tr(c).hoistableStyles,k=h.get(e);if(k||(c=c.ownerDocument||c,k={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},h.set(e,k),(h=c.querySelector(Ia(e)))&&!h._p&&(k.instance=h,k.state.loading=5),en.has(e)||(i={rel:"preload",as:"style",href:i.href,crossOrigin:i.crossOrigin,integrity:i.integrity,media:i.media,hrefLang:i.hrefLang,referrerPolicy:i.referrerPolicy},en.set(e,i),h||Gb(c,e,i,k.state))),t&&a===null)throw Error(l(528,""));return k}if(t&&a!==null)throw Error(l(529,""));return null;case"script":return t=i.async,i=i.src,typeof i=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=Or(i),i=tr(c).hoistableScripts,a=i.get(t),a||(a={type:"script",instance:null,count:0,state:null},i.set(t,a)),a):{type:"void",instance:null,count:0,state:null};default:throw Error(l(444,e))}}function Lr(e){return'href="'+Yt(e)+'"'}function Ia(e){return'link[rel="stylesheet"]['+e+"]"}function Vg(e){return m({},e,{"data-precedence":e.precedence,precedence:null})}function Gb(e,t,i,a){e.querySelector('link[rel="preload"][as="style"]['+t+"]")?a.loading=1:(t=e.createElement("link"),a.preload=t,t.addEventListener("load",function(){return a.loading|=1}),t.addEventListener("error",function(){return a.loading|=2}),wt(t,"link",i),gt(t),e.head.appendChild(t))}function Or(e){return'[src="'+Yt(e)+'"]'}function Va(e){return"script[async]"+e}function Fg(e,t,i){if(t.count++,t.instance===null)switch(t.type){case"style":var a=e.querySelector('style[data-href~="'+Yt(i.href)+'"]');if(a)return t.instance=a,gt(a),a;var c=m({},i,{"data-href":i.href,"data-precedence":i.precedence,href:null,precedence:null});return a=(e.ownerDocument||e).createElement("style"),gt(a),wt(a,"style",c),ks(a,i.precedence,e),t.instance=a;case"stylesheet":c=Lr(i.href);var h=e.querySelector(Ia(c));if(h)return t.state.loading|=4,t.instance=h,gt(h),h;a=Vg(i),(c=en.get(c))&&ud(a,c),h=(e.ownerDocument||e).createElement("link"),gt(h);var k=h;return k._p=new Promise(function(E,O){k.onload=E,k.onerror=O}),wt(h,"link",a),t.state.loading|=4,ks(h,i.precedence,e),t.instance=h;case"script":return h=Or(i.src),(c=e.querySelector(Va(h)))?(t.instance=c,gt(c),c):(a=i,(c=en.get(h))&&(a=m({},i),hd(a,c)),e=e.ownerDocument||e,c=e.createElement("script"),gt(c),wt(c,"link",a),e.head.appendChild(c),t.instance=c);case"void":return null;default:throw Error(l(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(a=t.instance,t.state.loading|=4,ks(a,i.precedence,e));return t.instance}function ks(e,t,i){for(var a=i.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),c=a.length?a[a.length-1]:null,h=c,k=0;k<a.length;k++){var E=a[k];if(E.dataset.precedence===t)h=E;else if(h!==c)break}h?h.parentNode.insertBefore(e,h.nextSibling):(t=i.nodeType===9?i.head:i,t.insertBefore(e,t.firstChild))}function ud(e,t){e.crossOrigin==null&&(e.crossOrigin=t.crossOrigin),e.referrerPolicy==null&&(e.referrerPolicy=t.referrerPolicy),e.title==null&&(e.title=t.title)}function hd(e,t){e.crossOrigin==null&&(e.crossOrigin=t.crossOrigin),e.referrerPolicy==null&&(e.referrerPolicy=t.referrerPolicy),e.integrity==null&&(e.integrity=t.integrity)}var Ss=null;function Wg(e,t,i){if(Ss===null){var a=new Map,c=Ss=new Map;c.set(i,a)}else c=Ss,a=c.get(i),a||(a=new Map,c.set(i,a));if(a.has(e))return a;for(a.set(e,null),i=i.getElementsByTagName(e),c=0;c<i.length;c++){var h=i[c];if(!(h[ea]||h[St]||e==="link"&&h.getAttribute("rel")==="stylesheet")&&h.namespaceURI!=="http://www.w3.org/2000/svg"){var k=h.getAttribute(t)||"";k=e+k;var E=a.get(k);E?E.push(h):a.set(k,[h])}}return a}function Hg(e,t,i){e=e.ownerDocument||e,e.head.insertBefore(i,t==="title"?e.querySelector("head > title"):null)}function qb(e,t,i){if(i===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 Gg(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}var Fa=null;function Yb(){}function Zb(e,t,i){if(Fa===null)throw Error(l(475));var a=Fa;if(t.type==="stylesheet"&&(typeof i.media!="string"||matchMedia(i.media).matches!==!1)&&(t.state.loading&4)===0){if(t.instance===null){var c=Lr(i.href),h=e.querySelector(Ia(c));if(h){e=h._p,e!==null&&typeof e=="object"&&typeof e.then=="function"&&(a.count++,a=Ts.bind(a),e.then(a,a)),t.state.loading|=4,t.instance=h,gt(h);return}h=e.ownerDocument||e,i=Vg(i),(c=en.get(c))&&ud(i,c),h=h.createElement("link"),gt(h);var k=h;k._p=new Promise(function(E,O){k.onload=E,k.onerror=O}),wt(h,"link",i),t.instance=h}a.stylesheets===null&&(a.stylesheets=new Map),a.stylesheets.set(t,e),(e=t.state.preload)&&(t.state.loading&3)===0&&(a.count++,t=Ts.bind(a),e.addEventListener("load",t),e.addEventListener("error",t))}}function Xb(){if(Fa===null)throw Error(l(475));var e=Fa;return e.stylesheets&&e.count===0&&pd(e,e.stylesheets),0<e.count?function(t){var i=setTimeout(function(){if(e.stylesheets&&pd(e,e.stylesheets),e.unsuspend){var a=e.unsuspend;e.unsuspend=null,a()}},6e4);return e.unsuspend=t,function(){e.unsuspend=null,clearTimeout(i)}}:null}function Ts(){if(this.count--,this.count===0){if(this.stylesheets)pd(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var As=null;function pd(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,As=new Map,t.forEach(Kb,e),As=null,Ts.call(e))}function Kb(e,t){if(!(t.state.loading&4)){var i=As.get(e);if(i)var a=i.get(null);else{i=new Map,As.set(e,i);for(var c=e.querySelectorAll("link[data-precedence],style[data-precedence]"),h=0;h<c.length;h++){var k=c[h];(k.nodeName==="LINK"||k.getAttribute("media")!=="not all")&&(i.set(k.dataset.precedence,k),a=k)}a&&i.set(null,a)}c=t.instance,k=c.getAttribute("data-precedence"),h=i.get(k)||a,h===a&&i.set(null,c),i.set(k,c),this.count++,a=Ts.bind(this),c.addEventListener("load",a),c.addEventListener("error",a),h?h.parentNode.insertBefore(c,h.nextSibling):(e=e.nodeType===9?e.head:e,e.insertBefore(c,e.firstChild)),t.state.loading|=4}}var Wa={$$typeof:_,Provider:null,Consumer:null,_currentValue:ee,_currentValue2:ee,_threadCount:0};function Qb(e,t,i,a,c,h,k,E){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=Ki(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ki(0),this.hiddenUpdates=Ki(null),this.identifierPrefix=a,this.onUncaughtError=c,this.onCaughtError=h,this.onRecoverableError=k,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=E,this.incompleteTransitions=new Map}function qg(e,t,i,a,c,h,k,E,O,K,oe,ce){return e=new Qb(e,t,i,k,E,O,K,ce),t=1,h===!0&&(t|=24),h=Ut(3,null,null,t),e.current=h,h.stateNode=e,t=Zl(),t.refCount++,e.pooledCache=t,t.refCount++,h.memoizedState={element:a,isDehydrated:i,cache:t},Jl(h),e}function Yg(e){return e?(e=pr,e):pr}function Zg(e,t,i,a,c,h){c=Yg(c),a.context===null?a.context=c:a.pendingContext=c,a=Xn(t),a.payload={element:i},h=h===void 0?null:h,h!==null&&(a.callback=h),i=Kn(e,a,t),i!==null&&(Ht(i,e,t),ba(i,e,t))}function Xg(e,t){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var i=e.retryLane;e.retryLane=i!==0&&i<t?i:t}}function fd(e,t){Xg(e,t),(e=e.alternate)&&Xg(e,t)}function Kg(e){if(e.tag===13){var t=hr(e,67108864);t!==null&&Ht(t,e,67108864),fd(e,67108864)}}var Cs=!0;function Jb(e,t,i,a){var c=F.T;F.T=null;var h=U.p;try{U.p=2,gd(e,t,i,a)}finally{U.p=h,F.T=c}}function $b(e,t,i,a){var c=F.T;F.T=null;var h=U.p;try{U.p=8,gd(e,t,i,a)}finally{U.p=h,F.T=c}}function gd(e,t,i,a){if(Cs){var c=md(a);if(c===null)nd(e,t,a,js,i),Jg(e,a);else if(t2(c,e,t,i,a))a.stopPropagation();else if(Jg(e,a),t&4&&-1<e2.indexOf(e)){for(;c!==null;){var h=er(c);if(h!==null)switch(h.tag){case 3:if(h=h.stateNode,h.current.memoizedState.isDehydrated){var k=sn(h.pendingLanes);if(k!==0){var E=h;for(E.pendingLanes|=2,E.entangledLanes|=2;k;){var O=1<<31-Ze(k);E.entanglements[1]|=O,k&=~O}wn(h),(Ve&6)===0&&(ds=R()+500,Oa(0))}}break;case 13:E=hr(h,2),E!==null&&Ht(E,h,2),hs(),fd(h,2)}if(h=md(a),h===null&&nd(e,t,a,js,i),h===c)break;c=h}c!==null&&a.stopPropagation()}else nd(e,t,a,null,i)}}function md(e){return e=wl(e),yd(e)}var js=null;function yd(e){if(js=null,e=$i(e),e!==null){var t=p(e);if(t===null)e=null;else{var i=t.tag;if(i===13){if(e=u(t),e!==null)return e;e=null}else if(i===3){if(t.stateNode.current.memoizedState.isDehydrated)return t.tag===3?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null)}}return js=e,null}function Qg(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":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":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"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"scroll":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 8;case"message":switch(M()){case G:return 2;case de:return 8;case ue:case Q:return 32;case ge:return 268435456;default:return 32}default:return 32}}var vd=!1,ci=null,di=null,ui=null,Ha=new Map,Ga=new Map,hi=[],e2="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 Jg(e,t){switch(e){case"focusin":case"focusout":ci=null;break;case"dragenter":case"dragleave":di=null;break;case"mouseover":case"mouseout":ui=null;break;case"pointerover":case"pointerout":Ha.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":Ga.delete(t.pointerId)}}function qa(e,t,i,a,c,h){return e===null||e.nativeEvent!==h?(e={blockedOn:t,domEventName:i,eventSystemFlags:a,nativeEvent:h,targetContainers:[c]},t!==null&&(t=er(t),t!==null&&Kg(t)),e):(e.eventSystemFlags|=a,t=e.targetContainers,c!==null&&t.indexOf(c)===-1&&t.push(c),e)}function t2(e,t,i,a,c){switch(t){case"focusin":return ci=qa(ci,e,t,i,a,c),!0;case"dragenter":return di=qa(di,e,t,i,a,c),!0;case"mouseover":return ui=qa(ui,e,t,i,a,c),!0;case"pointerover":var h=c.pointerId;return Ha.set(h,qa(Ha.get(h)||null,e,t,i,a,c)),!0;case"gotpointercapture":return h=c.pointerId,Ga.set(h,qa(Ga.get(h)||null,e,t,i,a,c)),!0}return!1}function $g(e){var t=$i(e.target);if(t!==null){var i=p(t);if(i!==null){if(t=i.tag,t===13){if(t=u(i),t!==null){e.blockedOn=t,Z0(e.priority,function(){if(i.tag===13){var a=Wt();a=dl(a);var c=hr(i,a);c!==null&&Ht(c,i,a),fd(i,a)}});return}}else if(t===3&&i.stateNode.current.memoizedState.isDehydrated){e.blockedOn=i.tag===3?i.stateNode.containerInfo:null;return}}}e.blockedOn=null}function Es(e){if(e.blockedOn!==null)return!1;for(var t=e.targetContainers;0<t.length;){var i=md(e.nativeEvent);if(i===null){i=e.nativeEvent;var a=new i.constructor(i.type,i);xl=a,i.target.dispatchEvent(a),xl=null}else return t=er(i),t!==null&&Kg(t),e.blockedOn=i,!1;t.shift()}return!0}function em(e,t,i){Es(e)&&i.delete(t)}function n2(){vd=!1,ci!==null&&Es(ci)&&(ci=null),di!==null&&Es(di)&&(di=null),ui!==null&&Es(ui)&&(ui=null),Ha.forEach(em),Ga.forEach(em)}function Ds(e,t){e.blockedOn===t&&(e.blockedOn=null,vd||(vd=!0,n.unstable_scheduleCallback(n.unstable_NormalPriority,n2)))}var _s=null;function tm(e){_s!==e&&(_s=e,n.unstable_scheduleCallback(n.unstable_NormalPriority,function(){_s===e&&(_s=null);for(var t=0;t<e.length;t+=3){var i=e[t],a=e[t+1],c=e[t+2];if(typeof a!="function"){if(yd(a||i)===null)continue;break}var h=er(i);h!==null&&(e.splice(t,3),t-=3,yc(h,{pending:!0,data:c,method:i.method,action:a},a,c))}}))}function Ya(e){function t(O){return Ds(O,e)}ci!==null&&Ds(ci,e),di!==null&&Ds(di,e),ui!==null&&Ds(ui,e),Ha.forEach(t),Ga.forEach(t);for(var i=0;i<hi.length;i++){var a=hi[i];a.blockedOn===e&&(a.blockedOn=null)}for(;0<hi.length&&(i=hi[0],i.blockedOn===null);)$g(i),i.blockedOn===null&&hi.shift();if(i=(e.ownerDocument||e).$$reactFormReplay,i!=null)for(a=0;a<i.length;a+=3){var c=i[a],h=i[a+1],k=c[zt]||null;if(typeof h=="function")k||tm(i);else if(k){var E=null;if(h&&h.hasAttribute("formAction")){if(c=h,k=h[zt]||null)E=k.formAction;else if(yd(c)!==null)continue}else E=k.action;typeof E=="function"?i[a+1]=E:(i.splice(a,3),a-=3),tm(i)}}}function bd(e){this._internalRoot=e}Ms.prototype.render=bd.prototype.render=function(e){var t=this._internalRoot;if(t===null)throw Error(l(409));var i=t.current,a=Wt();Zg(i,a,e,t,null,null)},Ms.prototype.unmount=bd.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var t=e.containerInfo;Zg(e.current,2,null,e,null,null),hs(),t[Ji]=null}};function Ms(e){this._internalRoot=e}Ms.prototype.unstable_scheduleHydration=function(e){if(e){var t=yh();e={blockedOn:null,target:e,priority:t};for(var i=0;i<hi.length&&t!==0&&t<hi[i].priority;i++);hi.splice(i,0,e),i===0&&$g(e)}};var nm=r.version;if(nm!=="19.1.0")throw Error(l(527,nm,"19.1.0"));U.findDOMNode=function(e){var t=e._reactInternals;if(t===void 0)throw typeof e.render=="function"?Error(l(188)):(e=Object.keys(e).join(","),Error(l(268,e)));return e=g(t),e=e!==null?y(e):null,e=e===null?null:e.stateNode,e};var i2={bundleType:0,version:"19.1.0",rendererPackageName:"react-dom",currentDispatcherRef:F,reconcilerVersion:"19.1.0"};
vendor: 120,943 bytes, lines 34-42
34if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){var Rs=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!Rs.isDisabled&&Rs.supportsFiber)try{Se=Rs.inject(i2),De=Rs}catch{}}return Xa.createRoot=function(e,t){if(!d(e))throw Error(l(299));var i=!1,a="",c=vf,h=bf,k=xf,E=null;return t!=null&&(t.unstable_strictMode===!0&&(i=!0),t.identifierPrefix!==void 0&&(a=t.identifierPrefix),t.onUncaughtError!==void 0&&(c=t.onUncaughtError),t.onCaughtError!==void 0&&(h=t.onCaughtError),t.onRecoverableError!==void 0&&(k=t.onRecoverableError),t.unstable_transitionCallbacks!==void 0&&(E=t.unstable_transitionCallbacks)),t=qg(e,1,!1,null,null,i,a,c,h,k,E,null),e[Ji]=t.current,td(e),new bd(t)},Xa.hydrateRoot=function(e,t,i){if(!d(e))throw Error(l(299));var a=!1,c="",h=vf,k=bf,E=xf,O=null,K=null;return i!=null&&(i.unstable_strictMode===!0&&(a=!0),i.identifierPrefix!==void 0&&(c=i.identifierPrefix),i.onUncaughtError!==void 0&&(h=i.onUncaughtError),i.onCaughtError!==void 0&&(k=i.onCaughtError),i.onRecoverableError!==void 0&&(E=i.onRecoverableError),i.unstable_transitionCallbacks!==void 0&&(O=i.unstable_transitionCallbacks),i.formState!==void 0&&(K=i.formState)),t=qg(e,1,!0,t,i??null,a,c,h,k,E,O,K),t.context=Yg(null),i=t.current,a=Wt(),a=dl(a),c=Xn(a),c.callback=null,Kn(i,c,a),i=a,t.current.lanes=i,ln(t,i),wn(t),e[Ji]=t.current,td(e),new Ms(t)},Xa.version="19.1.0",Xa}var lm;function p2(){if(lm)return wd.exports;lm=1;function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(r){console.error(r)}}return n(),wd.exports=h2(),wd.exports}var f2=p2();const g2=Ly(f2),Fr={isNativePlatform:()=>!1,getPlatform:()=>"web",isPluginAvailable:n=>!1};const Eu=V.createContext({});function Du(n){const r=V.useRef(null);return r.current===null&&(r.current=n()),r.current}const Oy=typeof window<"u",Ny=Oy?V.useLayoutEffect:V.useEffect,el=V.createContext(null);function _u(n,r){n.indexOf(r)===-1&&n.push(r)}function Mu(n,r){const o=n.indexOf(r);o>-1&&n.splice(o,1)}const An=(n,r,o)=>o>r?r:o<n?n:o;let Ru=()=>{};const Wn={},Py=n=>/^-?(?:\d+(?:\.\d+)?|\.\d+)$/u.test(n);function Uy(n){return typeof n=="object"&&n!==null}const Iy=n=>/^0[^.\s]+$/u.test(n);function zu(n){let r;return()=>(r===void 0&&(r=n()),r)}const rn=n=>n,m2=(n,r)=>o=>r(n(o)),po=(...n)=>n.reduce(m2),oo=(n,r,o)=>{const l=r-n;return l===0?1:(o-n)/l};class Bu{constructor(){this.subscriptions=[]}add(r){return _u(this.subscriptions,r),()=>Mu(this.subscriptions,r)}notify(r,o,l){const d=this.subscriptions.length;if(d)if(d===1)this.subscriptions[0](r,o,l);else for(let p=0;p<d;p++){const u=this.subscriptions[p];u&&u(r,o,l)}}getSize(){return this.subscriptions.length}clear(){this.subscriptions.length=0}}const Fn=n=>n*1e3,nn=n=>n/1e3;function Vy(n,r){return r?n*(1e3/r):0}const Fy=(n,r,o)=>(((1-3*o+3*r)*n+(3*o-6*r))*n+3*r)*n,y2=1e-7,v2=12;function b2(n,r,o,l,d){let p,u,f=0;do u=r+(o-r)/2,p=Fy(u,l,d)-n,p>0?o=u:r=u;while(Math.abs(p)>y2&&++f<v2);return u}function fo(n,r,o,l){if(n===r&&o===l)return rn;const d=p=>b2(p,0,1,n,o);return p=>p===0||p===1?p:Fy(d(p),r,l)}const Wy=n=>r=>r<=.5?n(2*r)/2:(2-n(2*(1-r)))/2,Hy=n=>r=>1-n(1-r),Gy=fo(.33,1.53,.69,.99),Lu=Hy(Gy),qy=Wy(Lu),Yy=n=>(n*=2)<1?.5*Lu(n):.5*(2-Math.pow(2,-10*(n-1))),Ou=n=>1-Math.sin(Math.acos(n)),Zy=Hy(Ou),Xy=Wy(Ou),x2=fo(.42,0,1,1),w2=fo(0,0,.58,1),Ky=fo(.42,0,.58,1),k2=n=>Array.isArray(n)&&typeof n[0]!="number",Qy=n=>Array.isArray(n)&&typeof n[0]=="number",S2={linear:rn,easeIn:x2,easeInOut:Ky,easeOut:w2,circIn:Ou,circInOut:Xy,circOut:Zy,backIn:Lu,backInOut:qy,backOut:Gy,anticipate:Yy},T2=n=>typeof n=="string",cm=n=>{if(Qy(n)){Ru(n.length===4);const[r,o,l,d]=n;return fo(r,o,l,d)}else if(T2(n))return S2[n];return n},Bs=["setup","read","resolveKeyframes","preUpdate","update","preRender","render","postRender"];function A2(n,r){let o=new Set,l=new Set,d=!1,p=!1;const u=new WeakSet;let f={delta:0,timestamp:0,isProcessing:!1};function g(m){u.has(m)&&(y.schedule(m),n()),m(f)}const y={schedule:(m,v=!1,w=!1)=>{const A=w&&d?o:l;return v&&u.add(m),A.has(m)||A.add(m),m},cancel:m=>{l.delete(m),u.delete(m)},process:m=>{if(f=m,d){p=!0;return}d=!0,[o,l]=[l,o],o.forEach(g),o.clear(),d=!1,p&&(p=!1,y.process(m))}};return y}const C2=40;function Jy(n,r){let o=!1,l=!0;const d={delta:0,timestamp:0,isProcessing:!1},p=()=>o=!0,u=Bs.reduce((_,L)=>(_[L]=A2(p),_),{}),{setup:f,read:g,resolveKeyframes:y,preUpdate:m,update:v,preRender:w,render:b,postRender:A}=u,x=()=>{const _=Wn.useManualTiming?d.timestamp:performance.now();o=!1,Wn.useManualTiming||(d.delta=l?1e3/60:Math.max(Math.min(_-d.timestamp,C2),1)),d.timestamp=_,d.isProcessing=!0,f.process(d),g.process(d),y.process(d),m.process(d),v.process(d),w.process(d),b.process(d),A.process(d),d.isProcessing=!1,o&&r&&(l=!1,n(x))},j=()=>{o=!0,l=!0,d.isProcessing||n(x)};return{schedule:Bs.reduce((_,L)=>{const B=u[L];return _[L]=(P,z=!1,W=!1)=>(o||j(),B.schedule(P,z,W)),_},{}),cancel:_=>{for(let L=0;L<Bs.length;L++)u[Bs[L]].cancel(_)},state:d,steps:u}}const{schedule:Je,cancel:vi,state:kt,steps:Td}=Jy(typeof requestAnimationFrame<"u"?requestAnimationFrame:rn,!0);let Vs;function j2(){Vs=void 0}const Dt={now:()=>(Vs===void 0&&Dt.set(kt.isProcessing||Wn.useManualTiming?kt.timestamp:performance.now()),Vs),set:n=>{Vs=n,queueMicrotask(j2)}},$y=n=>r=>typeof r=="string"&&r.startsWith(n),e1=$y("--"),E2=$y("var(--"),Nu=n=>E2(n)?D2.test(n.split("/*")[0].trim()):!1,D2=/var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu;function dm(n){return typeof n!="string"?!1:n.split("/*")[0].includes("var(--")}const Kr={test:n=>typeof n=="number",parse:parseFloat,transform:n=>n},so={...Kr,transform:n=>An(0,1,n)},Ls={...Kr,default:1},eo=n=>Math.round(n*1e5)/1e5,Pu=/-?(?:\d+(?:\.\d+)?|\.\d+)/gu;function _2(n){return n==null}const M2=/^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu,Uu=(n,r)=>o=>!!(typeof o=="string"&&M2.test(o)&&o.startsWith(n)||r&&!_2(o)&&Object.prototype.hasOwnProperty.call(o,r)),t1=(n,r,o)=>l=>{if(typeof l!="string")return l;const[d,p,u,f]=l.match(Pu);return{[n]:parseFloat(d),[r]:parseFloat(p),[o]:parseFloat(u),alpha:f!==void 0?parseFloat(f):1}},R2=n=>An(0,255,n),Ad={...Kr,transform:n=>Math.round(R2(n))},Fi={test:Uu("rgb","red"),parse:t1("red","green","blue"),transform:({red:n,green:r,blue:o,alpha:l=1})=>"rgba("+Ad.transform(n)+", "+Ad.transform(r)+", "+Ad.transform(o)+", "+eo(so.transform(l))+")"};function z2(n){let r="",o="",l="",d="";return n.length>5?(r=n.substring(1,3),o=n.substring(3,5),l=n.substring(5,7),d=n.substring(7,9)):(r=n.substring(1,2),o=n.substring(2,3),l=n.substring(3,4),d=n.substring(4,5),r+=r,o+=o,l+=l,d+=d),{red:parseInt(r,16),green:parseInt(o,16),blue:parseInt(l,16),alpha:d?parseInt(d,16)/255:1}}const Xd={test:Uu("#"),parse:z2,transform:Fi.transform},go=n=>({test:r=>typeof r=="string"&&r.endsWith(n)&&r.split(" ").length===1,parse:parseFloat,transform:r=>`${r}${n}`}),gi=go("deg"),kn=go("%"),we=go("px"),B2=go("vh"),L2=go("vw"),um={...kn,parse:n=>kn.parse(n)/100,transform:n=>kn.transform(n*100)},Pr={test:Uu("hsl","hue"),parse:t1("hue","saturation","lightness"),transform:({hue:n,saturation:r,lightness:o,alpha:l=1})=>"hsla("+Math.round(n)+", "+kn.transform(eo(r))+", "+kn.transform(eo(o))+", "+eo(so.transform(l))+")"},ut={test:n=>Fi.test(n)||Xd.test(n)||Pr.test(n),parse:n=>Fi.test(n)?Fi.parse(n):Pr.test(n)?Pr.parse(n):Xd.parse(n),transform:n=>typeof n=="string"?n:n.hasOwnProperty("red")?Fi.transform(n):Pr.transform(n),getAnimatableNone:n=>{const r=ut.parse(n);return r.alpha=0,ut.transform(r)}},O2=/(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu;function N2(n){return isNaN(n)&&typeof n=="string"&&(n.match(Pu)?.length||0)+(n.match(O2)?.length||0)>0}const n1="number",i1="color",P2="var",U2="var(",hm="${}",I2=/var\s*\(\s*--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)|#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\)|-?(?:\d+(?:\.\d+)?|\.\d+)/giu;function lo(n){const r=n.toString(),o=[],l={color:[],number:[],var:[]},d=[];let p=0;const f=r.replace(I2,g=>(ut.test(g)?(l.color.push(p),d.push(i1),o.push(ut.parse(g))):g.startsWith(U2)?(l.var.push(p),d.push(P2),o.push(g)):(l.number.push(p),d.push(n1),o.push(parseFloat(g))),++p,hm)).split(hm);return{values:o,split:f,indexes:l,types:d}}function r1(n){return lo(n).values}function a1(n){const{split:r,types:o}=lo(n),l=r.length;return d=>{let p="";for(let u=0;u<l;u++)if(p+=r[u],d[u]!==void 0){const f=o[u];f===n1?p+=eo(d[u]):f===i1?p+=ut.transform(d[u]):p+=d[u]}return p}}const V2=n=>typeof n=="number"?0:ut.test(n)?ut.getAnimatableNone(n):n;function F2(n){const r=r1(n);return a1(n)(r.map(V2))}const bi={test:N2,parse:r1,createTransformer:a1,getAnimatableNone:F2};function Cd(n,r,o){return o<0&&(o+=1),o>1&&(o-=1),o<1/6?n+(r-n)*6*o:o<1/2?r:o<2/3?n+(r-n)*(2/3-o)*6:n}function W2({hue:n,saturation:r,lightness:o,alpha:l}){n/=360,r/=100,o/=100;let d=0,p=0,u=0;if(!r)d=p=u=o;else{const f=o<.5?o*(1+r):o+r-o*r,g=2*o-f;d=Cd(g,f,n+1/3),p=Cd(g,f,n),u=Cd(g,f,n-1/3)}return{red:Math.round(d*255),green:Math.round(p*255),blue:Math.round(u*255),alpha:l}}function qs(n,r){return o=>o>0?r:n}const tt=(n,r,o)=>n+(r-n)*o,jd=(n,r,o)=>{const l=n*n,d=o*(r*r-l)+l;return d<0?0:Math.sqrt(d)},H2=[Xd,Fi,Pr],G2=n=>H2.find(r=>r.test(n));function pm(n){const r=G2(n);if(!r)return!1;let o=r.parse(n);return r===Pr&&(o=W2(o)),o}const fm=(n,r)=>{const o=pm(n),l=pm(r);if(!o||!l)return qs(n,r);const d={...o};return p=>(d.red=jd(o.red,l.red,p),d.green=jd(o.green,l.green,p),d.blue=jd(o.blue,l.blue,p),d.alpha=tt(o.alpha,l.alpha,p),Fi.transform(d))},Kd=new Set(["none","hidden"]);function q2(n,r){return Kd.has(n)?o=>o<=0?n:r:o=>o>=1?r:n}function Y2(n,r){return o=>tt(n,r,o)}function Iu(n){return typeof n=="number"?Y2:typeof n=="string"?Nu(n)?qs:ut.test(n)?fm:K2:Array.isArray(n)?o1:typeof n=="object"?ut.test(n)?fm:Z2:qs}function o1(n,r){const o=[...n],l=o.length,d=n.map((p,u)=>Iu(p)(p,r[u]));return p=>{for(let u=0;u<l;u++)o[u]=d[u](p);return o}}function Z2(n,r){const o={...n,...r},l={};for(const d in o)n[d]!==void 0&&r[d]!==void 0&&(l[d]=Iu(n[d])(n[d],r[d]));return d=>{for(const p in l)o[p]=l[p](d);return o}}function X2(n,r){const o=[],l={color:0,var:0,number:0};for(let d=0;d<r.values.length;d++){const p=r.types[d],u=n.indexes[p][l[p]],f=n.values[u]??0;o[d]=f,l[p]++}return o}const K2=(n,r)=>{const o=bi.createTransformer(r),l=lo(n),d=lo(r);return l.indexes.var.length===d.indexes.var.length&&l.indexes.color.length===d.indexes.color.length&&l.indexes.number.length>=d.indexes.number.length?Kd.has(n)&&!d.values.length||Kd.has(r)&&!l.values.length?q2(n,r):po(o1(X2(l,d),d.values),o):qs(n,r)};function s1(n,r,o){return typeof n=="number"&&typeof r=="number"&&typeof o=="number"?tt(n,r,o):Iu(n)(n,r)}const Q2=n=>{const r=({timestamp:o})=>n(o);return{start:(o=!0)=>Je.update(r,o),stop:()=>vi(r),now:()=>kt.isProcessing?kt.timestamp:Dt.now()}},l1=(n,r,o=10)=>{let l="";const d=Math.max(Math.round(r/o),2);for(let p=0;p<d;p++)l+=Math.round(n(p/(d-1))*1e4)/1e4+", ";return`linear(${l.substring(0,l.length-2)})`},Ys=2e4;function Vu(n){let r=0;const o=50;let l=n.next(r);for(;!l.done&&r<Ys;)r+=o,l=n.next(r);return r>=Ys?1/0:r}function J2(n,r=100,o){const l=o({...n,keyframes:[0,r]}),d=Math.min(Vu(l),Ys);return{type:"keyframes",ease:p=>l.next(d*p).value/r,duration:nn(d)}}const $2=5;function c1(n,r,o){const l=Math.max(r-$2,0);return Vy(o-n(l),r-l)}const at={stiffness:100,damping:10,mass:1,velocity:0,duration:800,bounce:.3,visualDuration:.3,restSpeed:{granular:.01,default:2},restDelta:{granular:.005,default:.5},minDuration:.01,maxDuration:10,minDamping:.05,maxDamping:1},Ed=.001;function ex({duration:n=at.duration,bounce:r=at.bounce,velocity:o=at.velocity,mass:l=at.mass}){let d,p,u=1-r;u=An(at.minDamping,at.maxDamping,u),n=An(at.minDuration,at.maxDuration,nn(n)),u<1?(d=y=>{const m=y*u,v=m*n,w=m-o,b=Qd(y,u),A=Math.exp(-v);return Ed-w/b*A},p=y=>{const v=y*u*n,w=v*o+o,b=Math.pow(u,2)*Math.pow(y,2)*n,A=Math.exp(-v),x=Qd(Math.pow(y,2),u);return(-d(y)+Ed>0?-1:1)*((w-b)*A)/x}):(d=y=>{const m=Math.exp(-y*n),v=(y-o)*n+1;return-Ed+m*v},p=y=>{const m=Math.exp(-y*n),v=(o-y)*(n*n);return m*v});const f=5/n,g=nx(d,p,f);if(n=Fn(n),isNaN(g))return{stiffness:at.stiffness,damping:at.damping,duration:n};{const y=Math.pow(g,2)*l;return{stiffness:y,damping:u*2*Math.sqrt(l*y),duration:n}}}const tx=12;function nx(n,r,o){let l=o;for(let d=1;d<tx;d++)l=l-n(l)/r(l);return l}function Qd(n,r){return n*Math.sqrt(1-r*r)}const ix=["duration","bounce"],rx=["stiffness","damping","mass"];function gm(n,r){return r.some(o=>n[o]!==void 0)}function ax(n){let r={velocity:at.velocity,stiffness:at.stiffness,damping:at.damping,mass:at.mass,isResolvedFromDuration:!1,...n};if(!gm(n,rx)&&gm(n,ix))if(n.visualDuration){const o=n.visualDuration,l=2*Math.PI/(o*1.2),d=l*l,p=2*An(.05,1,1-(n.bounce||0))*Math.sqrt(d);r={...r,mass:at.mass,stiffness:d,damping:p}}else{const o=ex(n);r={...r,...o,mass:at.mass},r.isResolvedFromDuration=!0}return r}function Zs(n=at.visualDuration,r=at.bounce){const o=typeof n!="object"?{visualDuration:n,keyframes:[0,1],bounce:r}:n;let{restSpeed:l,restDelta:d}=o;const p=o.keyframes[0],u=o.keyframes[o.keyframes.length-1],f={done:!1,value:p},{stiffness:g,damping:y,mass:m,duration:v,velocity:w,isResolvedFromDuration:b}=ax({...o,velocity:-nn(o.velocity||0)}),A=w||0,x=y/(2*Math.sqrt(g*m)),j=u-p,T=nn(Math.sqrt(g/m)),D=Math.abs(j)<5;l||(l=D?at.restSpeed.granular:at.restSpeed.default),d||(d=D?at.restDelta.granular:at.restDelta.default);let _;if(x<1){const B=Qd(T,x);_=P=>{const z=Math.exp(-x*T*P);return u-z*((A+x*T*j)/B*Math.sin(B*P)+j*Math.cos(B*P))}}else if(x===1)_=B=>u-Math.exp(-T*B)*(j+(A+T*j)*B);else{const B=T*Math.sqrt(x*x-1);_=P=>{const z=Math.exp(-x*T*P),W=Math.min(B*P,300);return u-z*((A+x*T*j)*Math.sinh(W)+B*j*Math.cosh(W))/B}}const L={calculatedDuration:b&&v||null,next:B=>{const P=_(B);if(b)f.done=B>=v;else{let z=B===0?A:0;x<1&&(z=B===0?Fn(A):c1(_,B,P));const W=Math.abs(z)<=l,H=Math.abs(u-P)<=d;f.done=W&&H}return f.value=f.done?u:P,f},toString:()=>{const B=Math.min(Vu(L),Ys),P=l1(z=>L.next(B*z).value,B,30);return B+"ms "+P},toTransition:()=>{}};return L}Zs.applyToOptions=n=>{const r=J2(n,100,Zs);return n.ease=r.ease,n.duration=Fn(r.duration),n.type="keyframes",n};function Jd({keyframes:n,velocity:r=0,power:o=.8,timeConstant:l=325,bounceDamping:d=10,bounceStiffness:p=500,modifyTarget:u,min:f,max:g,restDelta:y=.5,restSpeed:m}){const v=n[0],w={done:!1,value:v},b=W=>f!==void 0&&W<f||g!==void 0&&W>g,A=W=>f===void 0?g:g===void 0||Math.abs(f-W)<Math.abs(g-W)?f:g;let x=o*r;const j=v+x,T=u===void 0?j:u(j);T!==j&&(x=T-v);const D=W=>-x*Math.exp(-W/l),_=W=>T+D(W),L=W=>{const H=D(W),ae=_(W);w.done=Math.abs(H)<=y,w.value=w.done?T:ae};let B,P;const z=W=>{b(w.value)&&(B=W,P=Zs({keyframes:[w.value,A(w.value)],velocity:c1(_,W,w.value),damping:d,stiffness:p,restDelta:y,restSpeed:m}))};return z(0),{calculatedDuration:null,next:W=>{let H=!1;return!P&&B===void 0&&(H=!0,L(W),z(W)),B!==void 0&&W>=B?P.next(W-B):(!H&&L(W),w)}}}function ox(n,r,o){const l=[],d=o||Wn.mix||s1,p=n.length-1;for(let u=0;u<p;u++){let f=d(n[u],n[u+1]);if(r){const g=Array.isArray(r)?r[u]||rn:r;f=po(g,f)}l.push(f)}return l}function sx(n,r,{clamp:o=!0,ease:l,mixer:d}={}){const p=n.length;if(Ru(p===r.length),p===1)return()=>r[0];if(p===2&&r[0]===r[1])return()=>r[1];const u=n[0]===n[1];n[0]>n[p-1]&&(n=[...n].reverse(),r=[...r].reverse());const f=ox(r,l,d),g=f.length,y=m=>{if(u&&m<n[0])return r[0];let v=0;if(g>1)for(;v<n.length-2&&!(m<n[v+1]);v++);const w=oo(n[v],n[v+1],m);return f[v](w)};return o?m=>y(An(n[0],n[p-1],m)):y}function lx(n,r){const o=n[n.length-1];for(let l=1;l<=r;l++){const d=oo(0,r,l);n.push(tt(o,1,d))}}function cx(n){const r=[0];return lx(r,n.length-1),r}function dx(n,r){return n.map(o=>o*r)}function ux(n,r){return n.map(()=>r||Ky).splice(0,n.length-1)}function to({duration:n=300,keyframes:r,times:o,ease:l="easeInOut"}){const d=k2(l)?l.map(cm):cm(l),p={done:!1,value:r[0]},u=dx(o&&o.length===r.length?o:cx(r),n),f=sx(u,r,{ease:Array.isArray(d)?d:ux(r,d)});return{calculatedDuration:n,next:g=>(p.value=f(g),p.done=g>=n,p)}}const hx=n=>n!==null;function Fu(n,{repeat:r,repeatType:o="loop"},l,d=1){const p=n.filter(hx),f=d<0||r&&o!=="loop"&&r%2===1?0:p.length-1;return!f||l===void 0?p[f]:l}const px={decay:Jd,inertia:Jd,tween:to,keyframes:to,spring:Zs};function d1(n){typeof n.type=="string"&&(n.type=px[n.type])}class Wu{constructor(){this.updateFinished()}get finished(){return this._finished}updateFinished(){this._finished=new Promise(r=>{this.resolve=r})}notifyFinished(){this.resolve()}then(r,o){return this.finished.then(r,o)}}const fx=n=>n/100;class Hu extends Wu{constructor(r){super(),this.state="idle",this.startTime=null,this.isStopped=!1,this.currentTime=0,this.holdTime=null,this.playbackSpeed=1,this.stop=()=>{const{motionValue:o}=this.options;o&&o.updatedAt!==Dt.now()&&this.tick(Dt.now()),this.isStopped=!0,this.state!=="idle"&&(this.teardown(),this.options.onStop?.())},this.options=r,this.initAnimation(),this.play(),r.autoplay===!1&&this.pause()}initAnimation(){const{options:r}=this;d1(r);const{type:o=to,repeat:l=0,repeatDelay:d=0,repeatType:p,velocity:u=0}=r;let{keyframes:f}=r;const g=o||to;g!==to&&typeof f[0]!="number"&&(this.mixKeyframes=po(fx,s1(f[0],f[1])),f=[0,100]);const y=g({...r,keyframes:f});p==="mirror"&&(this.mirroredGenerator=g({...r,keyframes:[...f].reverse(),velocity:-u})),y.calculatedDuration===null&&(y.calculatedDuration=Vu(y));const{calculatedDuration:m}=y;this.calculatedDuration=m,this.resolvedDuration=m+d,this.totalDuration=this.resolvedDuration*(l+1)-d,this.generator=y}updateTime(r){const o=Math.round(r-this.startTime)*this.playbackSpeed;this.holdTime!==null?this.currentTime=this.holdTime:this.currentTime=o}tick(r,o=!1){const{generator:l,totalDuration:d,mixKeyframes:p,mirroredGenerator:u,resolvedDuration:f,calculatedDuration:g}=this;if(this.startTime===null)return l.next(0);const{delay:y=0,keyframes:m,repeat:v,repeatType:w,repeatDelay:b,type:A,onUpdate:x,finalKeyframe:j}=this.options;this.speed>0?this.startTime=Math.min(this.startTime,r):this.speed<0&&(this.startTime=Math.min(r-d/this.speed,this.startTime)),o?this.currentTime=r:this.updateTime(r);const T=this.currentTime-y*(this.playbackSpeed>=0?1:-1),D=this.playbackSpeed>=0?T<0:T>d;this.currentTime=Math.max(T,0),this.state==="finished"&&this.holdTime===null&&(this.currentTime=d);let _=this.currentTime,L=l;if(v){const W=Math.min(this.currentTime,d)/f;let H=Math.floor(W),ae=W%1;!ae&&W>=1&&(ae=1),ae===1&&H--,H=Math.min(H,v+1),!!(H%2)&&(w==="reverse"?(ae=1-ae,b&&(ae-=b/f)):w==="mirror"&&(L=u)),_=An(0,1,ae)*f}const B=D?{done:!1,value:m[0]}:L.next(_);p&&(B.value=p(B.value));let{done:P}=B;!D&&g!==null&&(P=this.playbackSpeed>=0?this.currentTime>=d:this.currentTime<=0);const z=this.holdTime===null&&(this.state==="finished"||this.state==="running"&&P);return z&&A!==Jd&&(B.value=Fu(m,this.options,j,this.speed)),x&&x(B.value),z&&this.finish(),B}then(r,o){return this.finished.then(r,o)}get duration(){return nn(this.calculatedDuration)}get iterationDuration(){const{delay:r=0}=this.options||{};return this.duration+nn(r)}get time(){return nn(this.currentTime)}set time(r){r=Fn(r),this.currentTime=r,this.startTime===null||this.holdTime!==null||this.playbackSpeed===0?this.holdTime=r:this.driver&&(this.startTime=this.driver.now()-r/this.playbackSpeed),this.driver?.start(!1)}get speed(){return this.playbackSpeed}set speed(r){this.updateTime(Dt.now());const o=this.playbackSpeed!==r;this.playbackSpeed=r,o&&(this.time=nn(this.currentTime))}play(){if(this.isStopped)return;const{driver:r=Q2,startTime:o}=this.options;this.driver||(this.driver=r(d=>this.tick(d))),this.options.onPlay?.();const l=this.driver.now();this.state==="finished"?(this.updateFinished(),this.startTime=l):this.holdTime!==null?this.startTime=l-this.holdTime:this.startTime||(this.startTime=o??l),this.state==="finished"&&this.speed<0&&(this.startTime+=this.calculatedDuration),this.holdTime=null,this.state="running",this.driver.start()}pause(){this.state="paused",this.updateTime(Dt.now()),this.holdTime=this.currentTime}complete(){this.state!=="running"&&this.play(),this.state="finished",this.holdTime=null}finish(){this.notifyFinished(),this.teardown(),this.state="finished",this.options.onComplete?.()}cancel(){this.holdTime=null,this.startTime=0,this.tick(0),this.teardown(),this.options.onCancel?.()}teardown(){this.state="idle",this.stopDriver(),this.startTime=this.holdTime=null}stopDriver(){this.driver&&(this.driver.stop(),this.driver=void 0)}sample(r){return this.startTime=0,this.tick(r,!0)}attachTimeline(r){return this.options.allowFlatten&&(this.options.type="keyframes",this.options.ease="linear",this.initAnimation()),this.driver?.stop(),r.observe(this)}}function gx(n){for(let r=1;r<n.length;r++)n[r]??(n[r]=n[r-1])}const Wi=n=>n*180/Math.PI,$d=n=>{const r=Wi(Math.atan2(n[1],n[0]));return eu(r)},mx={x:4,y:5,translateX:4,translateY:5,scaleX:0,scaleY:3,scale:n=>(Math.abs(n[0])+Math.abs(n[3]))/2,rotate:$d,rotateZ:$d,skewX:n=>Wi(Math.atan(n[1])),skewY:n=>Wi(Math.atan(n[2])),skew:n=>(Math.abs(n[1])+Math.abs(n[2]))/2},eu=n=>(n=n%360,n<0&&(n+=360),n),mm=$d,ym=n=>Math.sqrt(n[0]*n[0]+n[1]*n[1]),vm=n=>Math.sqrt(n[4]*n[4]+n[5]*n[5]),yx={x:12,y:13,z:14,translateX:12,translateY:13,translateZ:14,scaleX:ym,scaleY:vm,scale:n=>(ym(n)+vm(n))/2,rotateX:n=>eu(Wi(Math.atan2(n[6],n[5]))),rotateY:n=>eu(Wi(Math.atan2(-n[2],n[0]))),rotateZ:mm,rotate:mm,skewX:n=>Wi(Math.atan(n[4])),skewY:n=>Wi(Math.atan(n[1])),skew:n=>(Math.abs(n[1])+Math.abs(n[4]))/2};function tu(n){return n.includes("scale")?1:0}function nu(n,r){if(!n||n==="none")return tu(r);const o=n.match(/^matrix3d\(([-\d.e\s,]+)\)$/u);let l,d;if(o)l=yx,d=o;else{const f=n.match(/^matrix\(([-\d.e\s,]+)\)$/u);l=mx,d=f}if(!d)return tu(r);const p=l[r],u=d[1].split(",").map(bx);return typeof p=="function"?p(u):u[p]}const vx=(n,r)=>{const{transform:o="none"}=getComputedStyle(n);return nu(o,r)};function bx(n){return parseFloat(n.trim())}const Qr=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],Jr=new Set(Qr),bm=n=>n===Kr||n===we,xx=new Set(["x","y","z"]),wx=Qr.filter(n=>!xx.has(n));function kx(n){const r=[];return wx.forEach(o=>{const l=n.getValue(o);l!==void 0&&(r.push([o,l.get()]),l.set(o.startsWith("scale")?1:0))}),r}const mi={width:({x:n},{paddingLeft:r="0",paddingRight:o="0"})=>n.max-n.min-parseFloat(r)-parseFloat(o),height:({y:n},{paddingTop:r="0",paddingBottom:o="0"})=>n.max-n.min-parseFloat(r)-parseFloat(o),top:(n,{top:r})=>parseFloat(r),left:(n,{left:r})=>parseFloat(r),bottom:({y:n},{top:r})=>parseFloat(r)+(n.max-n.min),right:({x:n},{left:r})=>parseFloat(r)+(n.max-n.min),x:(n,{transform:r})=>nu(r,"x"),y:(n,{transform:r})=>nu(r,"y")};mi.translateX=mi.x;mi.translateY=mi.y;const Gi=new Set;let iu=!1,ru=!1,au=!1;function u1(){if(ru){const n=Array.from(Gi).filter(l=>l.needsMeasurement),r=new Set(n.map(l=>l.element)),o=new Map;r.forEach(l=>{const d=kx(l);d.length&&(o.set(l,d),l.render())}),n.forEach(l=>l.measureInitialState()),r.forEach(l=>{l.render();const d=o.get(l);d&&d.forEach(([p,u])=>{l.getValue(p)?.set(u)})}),n.forEach(l=>l.measureEndState()),n.forEach(l=>{l.suspendedScrollY!==void 0&&window.scrollTo(0,l.suspendedScrollY)})}ru=!1,iu=!1,Gi.forEach(n=>n.complete(au)),Gi.clear()}function h1(){Gi.forEach(n=>{n.readKeyframes(),n.needsMeasurement&&(ru=!0)})}function Sx(){au=!0,h1(),u1(),au=!1}class Gu{constructor(r,o,l,d,p,u=!1){this.state="pending",this.isAsync=!1,this.needsMeasurement=!1,this.unresolvedKeyframes=[...r],this.onComplete=o,this.name=l,this.motionValue=d,this.element=p,this.isAsync=u}scheduleResolve(){this.state="scheduled",this.isAsync?(Gi.add(this),iu||(iu=!0,Je.read(h1),Je.resolveKeyframes(u1))):(this.readKeyframes(),this.complete())}readKeyframes(){const{unresolvedKeyframes:r,name:o,element:l,motionValue:d}=this;if(r[0]===null){const p=d?.get(),u=r[r.length-1];if(p!==void 0)r[0]=p;else if(l&&o){const f=l.readValue(o,u);f!=null&&(r[0]=f)}r[0]===void 0&&(r[0]=u),d&&p===void 0&&d.set(r[0])}gx(r)}setFinalKeyframe(){}measureInitialState(){}renderEndStyles(){}measureEndState(){}complete(r=!1){this.state="complete",this.onComplete(this.unresolvedKeyframes,this.finalKeyframe,r),Gi.delete(this)}cancel(){this.state==="scheduled"&&(Gi.delete(this),this.state="pending")}resume(){this.state==="pending"&&this.scheduleResolve()}}const Tx=n=>n.startsWith("--");function Ax(n,r,o){Tx(r)?n.style.setProperty(r,o):n.style[r]=o}const Cx=zu(()=>window.ScrollTimeline!==void 0),jx={};function Ex(n,r){const o=zu(n);return()=>jx[r]??o()}const p1=Ex(()=>{try{document.createElement("div").animate({opacity:0},{easing:"linear(0, 1)"})}catch{return!1}return!0},"linearEasing"),Ja=([n,r,o,l])=>`cubic-bezier(${n}, ${r}, ${o}, ${l})`,xm={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:Ja([0,.65,.55,1]),circOut:Ja([.55,0,1,.45]),backIn:Ja([.31,.01,.66,-.59]),backOut:Ja([.33,1.53,.69,.99])};function f1(n,r){if(n)return typeof n=="function"?p1()?l1(n,r):"ease-out":Qy(n)?Ja(n):Array.isArray(n)?n.map(o=>f1(o,r)||xm.easeOut):xm[n]}function Dx(n,r,o,{delay:l=0,duration:d=300,repeat:p=0,repeatType:u="loop",ease:f="easeOut",times:g}={},y=void 0){const m={[r]:o};g&&(m.offset=g);const v=f1(f,d);Array.isArray(v)&&(m.easing=v);const w={delay:l,duration:d,easing:Array.isArray(v)?"linear":v,fill:"both",iterations:p+1,direction:u==="reverse"?"alternate":"normal"};return y&&(w.pseudoElement=y),n.animate(m,w)}function g1(n){return typeof n=="function"&&"applyToOptions"in n}function _x({type:n,...r}){return g1(n)&&p1()?n.applyToOptions(r):(r.duration??(r.duration=300),r.ease??(r.ease="easeOut"),r)}class Mx extends Wu{constructor(r){if(super(),this.finishedTime=null,this.isStopped=!1,this.manualStartTime=null,!r)return;const{element:o,name:l,keyframes:d,pseudoElement:p,allowFlatten:u=!1,finalKeyframe:f,onComplete:g}=r;this.isPseudoElement=!!p,this.allowFlatten=u,this.options=r,Ru(typeof r.type!="string");const y=_x(r);this.animation=Dx(o,l,d,y,p),y.autoplay===!1&&this.animation.pause(),this.animation.onfinish=()=>{if(this.finishedTime=this.time,!p){const m=Fu(d,this.options,f,this.speed);this.updateMotionValue?this.updateMotionValue(m):Ax(o,l,m),this.animation.cancel()}g?.(),this.notifyFinished()}}play(){this.isStopped||(this.manualStartTime=null,this.animation.play(),this.state==="finished"&&this.updateFinished())}pause(){this.animation.pause()}complete(){this.animation.finish?.()}cancel(){try{this.animation.cancel()}catch{}}stop(){if(this.isStopped)return;this.isStopped=!0;const{state:r}=this;r==="idle"||r==="finished"||(this.updateMotionValue?this.updateMotionValue():this.commitStyles(),this.isPseudoElement||this.cancel())}commitStyles(){this.isPseudoElement||this.animation.commitStyles?.()}get duration(){const r=this.animation.effect?.getComputedTiming?.().duration||0;return nn(Number(r))}get iterationDuration(){const{delay:r=0}=this.options||{};return this.duration+nn(r)}get time(){return nn(Number(this.animation.currentTime)||0)}set time(r){this.manualStartTime=null,this.finishedTime=null,this.animation.currentTime=Fn(r)}get speed(){return this.animation.playbackRate}set speed(r){r<0&&(this.finishedTime=null),this.animation.playbackRate=r}get state(){return this.finishedTime!==null?"finished":this.animation.playState}get startTime(){return this.manualStartTime??Number(this.animation.startTime)}set startTime(r){this.manualStartTime=this.animation.startTime=r}attachTimeline({timeline:r,observe:o}){return this.allowFlatten&&this.animation.effect?.updateTiming({easing:"linear"}),this.animation.onfinish=null,r&&Cx()?(this.animation.timeline=r,rn):o(this)}}const m1={anticipate:Yy,backInOut:qy,circInOut:Xy};function Rx(n){return n in m1}function zx(n){typeof n.ease=="string"&&Rx(n.ease)&&(n.ease=m1[n.ease])}const Dd=10;class Bx extends Mx{constructor(r){zx(r),d1(r),super(r),r.startTime!==void 0&&(this.startTime=r.startTime),this.options=r}updateMotionValue(r){const{motionValue:o,onUpdate:l,onComplete:d,element:p,...u}=this.options;if(!o)return;if(r!==void 0){o.set(r);return}const f=new Hu({...u,autoplay:!1}),g=Math.max(Dd,Dt.now()-this.startTime),y=An(0,Dd,g-Dd);o.setWithVelocity(f.sample(Math.max(0,g-y)).value,f.sample(g).value,y),f.stop()}}const wm=(n,r)=>r==="zIndex"?!1:!!(typeof n=="number"||Array.isArray(n)||typeof n=="string"&&(bi.test(n)||n==="0")&&!n.startsWith("url("));function Lx(n){const r=n[0];if(n.length===1)return!0;for(let o=0;o<n.length;o++)if(n[o]!==r)return!0}function Ox(n,r,o,l){const d=n[0];if(d===null)return!1;if(r==="display"||r==="visibility")return!0;const p=n[n.length-1],u=wm(d,r),f=wm(p,r);return!u||!f?!1:Lx(n)||(o==="spring"||g1(o))&&l}function ou(n){n.duration=0,n.type="keyframes"}const Nx=new Set(["opacity","clipPath","filter","transform"]),Px=zu(()=>Object.hasOwnProperty.call(Element.prototype,"animate"));function Ux(n){const{motionValue:r,name:o,repeatDelay:l,repeatType:d,damping:p,type:u}=n;if(!(r?.owner?.current instanceof HTMLElement))return!1;const{onUpdate:g,transformTemplate:y}=r.owner.getProps();return Px()&&o&&Nx.has(o)&&(o!=="transform"||!y)&&!g&&!l&&d!=="mirror"&&p!==0&&u!=="inertia"}const Ix=40;class Vx extends Wu{constructor({autoplay:r=!0,delay:o=0,type:l="keyframes",repeat:d=0,repeatDelay:p=0,repeatType:u="loop",keyframes:f,name:g,motionValue:y,element:m,...v}){super(),this.stop=()=>{this._animation&&(this._animation.stop(),this.stopTimeline?.()),this.keyframeResolver?.cancel()},this.createdAt=Dt.now();const w={autoplay:r,delay:o,type:l,repeat:d,repeatDelay:p,repeatType:u,name:g,motionValue:y,element:m,...v},b=m?.KeyframeResolver||Gu;this.keyframeResolver=new b(f,(A,x,j)=>this.onKeyframesResolved(A,x,w,!j),g,y,m),this.keyframeResolver?.scheduleResolve()}onKeyframesResolved(r,o,l,d){this.keyframeResolver=void 0;const{name:p,type:u,velocity:f,delay:g,isHandoff:y,onUpdate:m}=l;this.resolvedAt=Dt.now(),Ox(r,p,u,f)||((Wn.instantAnimations||!g)&&m?.(Fu(r,l,o)),r[0]=r[r.length-1],ou(l),l.repeat=0);const w={startTime:d?this.resolvedAt?this.resolvedAt-this.createdAt>Ix?this.resolvedAt:this.createdAt:this.createdAt:void 0,finalKeyframe:o,...l,keyframes:r},b=!y&&Ux(w),A=w.motionValue?.owner?.current,x=b?new Bx({...w,element:A}):new Hu(w);x.finished.then(()=>{this.notifyFinished()}).catch(rn),this.pendingTimeline&&(this.stopTimeline=x.attachTimeline(this.pendingTimeline),this.pendingTimeline=void 0),this._animation=x}get finished(){return this._animation?this.animation.finished:this._finished}then(r,o){return this.finished.finally(r).then(()=>{})}get animation(){return this._animation||(this.keyframeResolver?.resume(),Sx()),this._animation}get duration(){return this.animation.duration}get iterationDuration(){return this.animation.iterationDuration}get time(){return this.animation.time}set time(r){this.animation.time=r}get speed(){return this.animation.speed}get state(){return this.animation.state}set speed(r){this.animation.speed=r}get startTime(){return this.animation.startTime}attachTimeline(r){return this._animation?this.stopTimeline=this.animation.attachTimeline(r):this.pendingTimeline=r,()=>this.stop()}play(){this.animation.play()}pause(){this.animation.pause()}complete(){this.animation.complete()}cancel(){this._animation&&this.animation.cancel(),this.keyframeResolver?.cancel()}}function y1(n,r,o,l=0,d=1){const p=Array.from(n).sort((y,m)=>y.sortNodePosition(m)).indexOf(r),u=n.size,f=(u-1)*l;return typeof o=="function"?o(p,u):d===1?p*l:f-p*l}const Fx=/^var\(--(?:([\w-]+)|([\w-]+), ?([a-zA-Z\d ()%#.,-]+))\)/u;function Wx(n){const r=Fx.exec(n);if(!r)return[,];const[,o,l,d]=r;return[`--${o??l}`,d]}function v1(n,r,o=1){const[l,d]=Wx(n);if(!l)return;const p=window.getComputedStyle(r).getPropertyValue(l);if(p){const u=p.trim();return Py(u)?parseFloat(u):u}return Nu(d)?v1(d,r,o+1):d}const Hx={type:"spring",stiffness:500,damping:25,restSpeed:10},Gx=n=>({type:"spring",stiffness:550,damping:n===0?2*Math.sqrt(550):30,restSpeed:10}),qx={type:"keyframes",duration:.8},Yx={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},Zx=(n,{keyframes:r})=>r.length>2?qx:Jr.has(n)?n.startsWith("scale")?Gx(r[1]):Hx:Yx,Xx=n=>n!==null;function Kx(n,{repeat:r,repeatType:o="loop"},l){const d=n.filter(Xx),p=r&&o!=="loop"&&r%2===1?0:d.length-1;return d[p]}function qu(n,r){return n?.[r]??n?.default??n}function Qx({when:n,delay:r,delayChildren:o,staggerChildren:l,staggerDirection:d,repeat:p,repeatType:u,repeatDelay:f,from:g,elapsed:y,...m}){return!!Object.keys(m).length}const Yu=(n,r,o,l={},d,p)=>u=>{const f=qu(l,n)||{},g=f.delay||l.delay||0;let{elapsed:y=0}=l;y=y-Fn(g);const m={keyframes:Array.isArray(o)?o:[null,o],ease:"easeOut",velocity:r.getVelocity(),...f,delay:-y,onUpdate:w=>{r.set(w),f.onUpdate&&f.onUpdate(w)},onComplete:()=>{u(),f.onComplete&&f.onComplete()},name:n,motionValue:r,element:p?void 0:d};Qx(f)||Object.assign(m,Zx(n,m)),m.duration&&(m.duration=Fn(m.duration)),m.repeatDelay&&(m.repeatDelay=Fn(m.repeatDelay)),m.from!==void 0&&(m.keyframes[0]=m.from);let v=!1;if((m.type===!1||m.duration===0&&!m.repeatDelay)&&(ou(m),m.delay===0&&(v=!0)),(Wn.instantAnimations||Wn.skipAnimations)&&(v=!0,ou(m),m.delay=0),m.allowFlatten=!f.type&&!f.ease,v&&!p&&r.get()!==void 0){const w=Kx(m.keyframes,f);if(w!==void 0){Je.update(()=>{m.onUpdate(w),m.onComplete()});return}}return f.isSync?new Hu(m):new Vx(m)};function km(n){const r=[{},{}];return n?.values.forEach((o,l)=>{r[0][l]=o.get(),r[1][l]=o.getVelocity()}),r}function Zu(n,r,o,l){if(typeof r=="function"){const[d,p]=km(l);r=r(o!==void 0?o:n.custom,d,p)}if(typeof r=="string"&&(r=n.variants&&n.variants[r]),typeof r=="function"){const[d,p]=km(l);r=r(o!==void 0?o:n.custom,d,p)}return r}function Wr(n,r,o){const l=n.getProps();return Zu(l,r,o!==void 0?o:l.custom,n)}const b1=new Set(["width","height","top","left","right","bottom",...Qr]),Sm=30,Jx=n=>!isNaN(parseFloat(n));class $x{constructor(r,o={}){this.canTrackVelocity=null,this.events={},this.updateAndNotify=l=>{const d=Dt.now();if(this.updatedAt!==d&&this.setPrevFrameValue(),this.prev=this.current,this.setCurrent(l),this.current!==this.prev&&(this.events.change?.notify(this.current),this.dependents))for(const p of this.dependents)p.dirty()},this.hasAnimated=!1,this.setCurrent(r),this.owner=o.owner}setCurrent(r){this.current=r,this.updatedAt=Dt.now(),this.canTrackVelocity===null&&r!==void 0&&(this.canTrackVelocity=Jx(this.current))}setPrevFrameValue(r=this.current){this.prevFrameValue=r,this.prevUpdatedAt=this.updatedAt}onChange(r){return this.on("change",r)}on(r,o){this.events[r]||(this.events[r]=new Bu);const l=this.events[r].add(o);return r==="change"?()=>{l(),Je.read(()=>{this.events.change.getSize()||this.stop()})}:l}clearListeners(){for(const r in this.events)this.events[r].clear()}attach(r,o){this.passiveEffect=r,this.stopPassiveEffect=o}set(r){this.passiveEffect?this.passiveEffect(r,this.updateAndNotify):this.updateAndNotify(r)}setWithVelocity(r,o,l){this.set(o),this.prev=void 0,this.prevFrameValue=r,this.prevUpdatedAt=this.updatedAt-l}jump(r,o=!0){this.updateAndNotify(r),this.prev=r,this.prevUpdatedAt=this.prevFrameValue=void 0,o&&this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}dirty(){this.events.change?.notify(this.current)}addDependent(r){this.dependents||(this.dependents=new Set),this.dependents.add(r)}removeDependent(r){this.dependents&&this.dependents.delete(r)}get(){return this.current}getPrevious(){return this.prev}getVelocity(){const r=Dt.now();if(!this.canTrackVelocity||this.prevFrameValue===void 0||r-this.updatedAt>Sm)return 0;const o=Math.min(this.updatedAt-this.prevUpdatedAt,Sm);return Vy(parseFloat(this.current)-parseFloat(this.prevFrameValue),o)}start(r){return this.stop(),new Promise(o=>{this.hasAnimated=!0,this.animation=r(o),this.events.animationStart&&this.events.animationStart.notify()}).then(()=>{this.events.animationComplete&&this.events.animationComplete.notify(),this.clearAnimation()})}stop(){this.animation&&(this.animation.stop(),this.events.animationCancel&&this.events.animationCancel.notify()),this.clearAnimation()}isAnimating(){return!!this.animation}clearAnimation(){delete this.animation}destroy(){this.dependents?.clear(),this.events.destroy?.notify(),this.clearListeners(),this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}}function Gr(n,r){return new $x(n,r)}const su=n=>Array.isArray(n);function ew(n,r,o){n.hasValue(r)?n.getValue(r).set(o):n.addValue(r,Gr(o))}function tw(n){return su(n)?n[n.length-1]||0:n}function nw(n,r){const o=Wr(n,r);let{transitionEnd:l={},transition:d={},...p}=o||{};p={...p,...l};for(const u in p){const f=tw(p[u]);ew(n,u,f)}}const At=n=>!!(n&&n.getVelocity);function iw(n){return!!(At(n)&&n.add)}function lu(n,r){const o=n.getValue("willChange");if(iw(o))return o.add(r);if(!o&&Wn.WillChange){const l=new Wn.WillChange("auto");n.addValue("willChange",l),l.add(r)}}function Xu(n){return n.replace(/([A-Z])/g,r=>`-${r.toLowerCase()}`)}const rw="framerAppearId",x1="data-"+Xu(rw);function w1(n){return n.props[x1]}function aw({protectedKeys:n,needsAnimating:r},o){const l=n.hasOwnProperty(o)&&r[o]!==!0;return r[o]=!1,l}function k1(n,r,{delay:o=0,transitionOverride:l,type:d}={}){let{transition:p=n.getDefaultTransition(),transitionEnd:u,...f}=r;l&&(p=l);const g=[],y=d&&n.animationState&&n.animationState.getState()[d];for(const m in f){const v=n.getValue(m,n.latestValues[m]??null),w=f[m];if(w===void 0||y&&aw(y,m))continue;const b={delay:o,...qu(p||{},m)},A=v.get();if(A!==void 0&&!v.isAnimating&&!Array.isArray(w)&&w===A&&!b.velocity)continue;let x=!1;if(window.MotionHandoffAnimation){const T=w1(n);if(T){const D=window.MotionHandoffAnimation(T,m,Je);D!==null&&(b.startTime=D,x=!0)}}lu(n,m),v.start(Yu(m,v,w,n.shouldReduceMotion&&b1.has(m)?{type:!1}:b,n,x));const j=v.animation;j&&g.push(j)}return u&&Promise.all(g).then(()=>{Je.update(()=>{u&&nw(n,u)})}),g}function cu(n,r,o={}){const l=Wr(n,r,o.type==="exit"?n.presenceContext?.custom:void 0);let{transition:d=n.getDefaultTransition()||{}}=l||{};o.transitionOverride&&(d=o.transitionOverride);const p=l?()=>Promise.all(k1(n,l,o)):()=>Promise.resolve(),u=n.variantChildren&&n.variantChildren.size?(g=0)=>{const{delayChildren:y=0,staggerChildren:m,staggerDirection:v}=d;return ow(n,r,g,y,m,v,o)}:()=>Promise.resolve(),{when:f}=d;if(f){const[g,y]=f==="beforeChildren"?[p,u]:[u,p];return g().then(()=>y())}else return Promise.all([p(),u(o.delay)])}function ow(n,r,o=0,l=0,d=0,p=1,u){const f=[];for(const g of n.variantChildren)g.notify("AnimationStart",r),f.push(cu(g,r,{...u,delay:o+(typeof l=="function"?0:l)+y1(n.variantChildren,g,l,d,p)}).then(()=>g.notify("AnimationComplete",r)));return Promise.all(f)}function sw(n,r,o={}){n.notify("AnimationStart",r);let l;if(Array.isArray(r)){const d=r.map(p=>cu(n,p,o));l=Promise.all(d)}else if(typeof r=="string")l=cu(n,r,o);else{const d=typeof r=="function"?Wr(n,r,o.custom):r;l=Promise.all(k1(n,d,o))}return l.then(()=>{n.notify("AnimationComplete",r)})}const lw={test:n=>n==="auto",parse:n=>n},S1=n=>r=>r.test(n),T1=[Kr,we,kn,gi,L2,B2,lw],Tm=n=>T1.find(S1(n));function cw(n){return typeof n=="number"?n===0:n!==null?n==="none"||n==="0"||Iy(n):!0}const dw=new Set(["brightness","contrast","saturate","opacity"]);function uw(n){const[r,o]=n.slice(0,-1).split("(");if(r==="drop-shadow")return n;const[l]=o.match(Pu)||[];if(!l)return n;const d=o.replace(l,"");let p=dw.has(r)?1:0;return l!==o&&(p*=100),r+"("+p+d+")"}const hw=/\b([a-z-]*)\(.*?\)/gu,du={...bi,getAnimatableNone:n=>{const r=n.match(hw);return r?r.map(uw).join(" "):n}},Am={...Kr,transform:Math.round},pw={rotate:gi,rotateX:gi,rotateY:gi,rotateZ:gi,scale:Ls,scaleX:Ls,scaleY:Ls,scaleZ:Ls,skew:gi,skewX:gi,skewY:gi,distance:we,translateX:we,translateY:we,translateZ:we,x:we,y:we,z:we,perspective:we,transformPerspective:we,opacity:so,originX:um,originY:um,originZ:we},Ku={borderWidth:we,borderTopWidth:we,borderRightWidth:we,borderBottomWidth:we,borderLeftWidth:we,borderRadius:we,radius:we,borderTopLeftRadius:we,borderTopRightRadius:we,borderBottomRightRadius:we,borderBottomLeftRadius:we,width:we,maxWidth:we,height:we,maxHeight:we,top:we,right:we,bottom:we,left:we,inset:we,insetBlock:we,insetBlockStart:we,insetBlockEnd:we,insetInline:we,insetInlineStart:we,insetInlineEnd:we,padding:we,paddingTop:we,paddingRight:we,paddingBottom:we,paddingLeft:we,paddingBlock:we,paddingBlockStart:we,paddingBlockEnd:we,paddingInline:we,paddingInlineStart:we,paddingInlineEnd:we,margin:we,marginTop:we,marginRight:we,marginBottom:we,marginLeft:we,marginBlock:we,marginBlockStart:we,marginBlockEnd:we,marginInline:we,marginInlineStart:we,marginInlineEnd:we,backgroundPositionX:we,backgroundPositionY:we,...pw,zIndex:Am,fillOpacity:so,strokeOpacity:so,numOctaves:Am},fw={...Ku,color:ut,backgroundColor:ut,outlineColor:ut,fill:ut,stroke:ut,borderColor:ut,borderTopColor:ut,borderRightColor:ut,borderBottomColor:ut,borderLeftColor:ut,filter:du,WebkitFilter:du},A1=n=>fw[n];function C1(n,r){let o=A1(n);return o!==du&&(o=bi),o.getAnimatableNone?o.getAnimatableNone(r):void 0}const gw=new Set(["auto","none","0"]);function mw(n,r,o){let l=0,d;for(;l<n.length&&!d;){const p=n[l];typeof p=="string"&&!gw.has(p)&&lo(p).values.length&&(d=n[l]),l++}if(d&&o)for(const p of r)n[p]=C1(o,d)}class yw extends Gu{constructor(r,o,l,d,p){super(r,o,l,d,p,!0)}readKeyframes(){const{unresolvedKeyframes:r,element:o,name:l}=this;if(!o||!o.current)return;super.readKeyframes();for(let m=0;m<r.length;m++){let v=r[m];if(typeof v=="string"&&(v=v.trim(),Nu(v))){const w=v1(v,o.current);w!==void 0&&(r[m]=w),m===r.length-1&&(this.finalKeyframe=v)}}if(this.resolveNoneKeyframes(),!b1.has(l)||r.length!==2)return;const[d,p]=r,u=Tm(d),f=Tm(p),g=dm(d),y=dm(p);if(g!==y&&mi[l]){this.needsMeasurement=!0;return}if(u!==f)if(bm(u)&&bm(f))for(let m=0;m<r.length;m++){const v=r[m];typeof v=="string"&&(r[m]=parseFloat(v))}else mi[l]&&(this.needsMeasurement=!0)}resolveNoneKeyframes(){const{unresolvedKeyframes:r,name:o}=this,l=[];for(let d=0;d<r.length;d++)(r[d]===null||cw(r[d]))&&l.push(d);l.length&&mw(r,l,o)}measureInitialState(){const{element:r,unresolvedKeyframes:o,name:l}=this;if(!r||!r.current)return;l==="height"&&(this.suspendedScrollY=window.pageYOffset),this.measuredOrigin=mi[l](r.measureViewportBox(),window.getComputedStyle(r.current)),o[0]=this.measuredOrigin;const d=o[o.length-1];d!==void 0&&r.getValue(l,d).jump(d,!1)}measureEndState(){const{element:r,name:o,unresolvedKeyframes:l}=this;if(!r||!r.current)return;const d=r.getValue(o);d&&d.jump(this.measuredOrigin,!1);const p=l.length-1,u=l[p];l[p]=mi[o](r.measureViewportBox(),window.getComputedStyle(r.current)),u!==null&&this.finalKeyframe===void 0&&(this.finalKeyframe=u),this.removedTransforms?.length&&this.removedTransforms.forEach(([f,g])=>{r.getValue(f).set(g)}),this.resolveNoneKeyframes()}}function vw(n,r,o){if(n==null)return[];if(n instanceof EventTarget)return[n];if(typeof n=="string"){let l=document;const d=o?.[n]??l.querySelectorAll(n);return d?Array.from(d):[]}return Array.from(n).filter(l=>l!=null)}const j1=(n,r)=>r&&typeof n=="number"?r.transform(n):n;function uu(n){return Uy(n)&&"offsetHeight"in n}const{schedule:Qu}=Jy(queueMicrotask,!1),pn={x:!1,y:!1};function E1(){return pn.x||pn.y}function bw(n){return n==="x"||n==="y"?pn[n]?null:(pn[n]=!0,()=>{pn[n]=!1}):pn.x||pn.y?null:(pn.x=pn.y=!0,()=>{pn.x=pn.y=!1})}function D1(n,r){const o=vw(n),l=new AbortController,d={passive:!0,...r,signal:l.signal};return[o,d,()=>l.abort()]}function Cm(n){return!(n.pointerType==="touch"||E1())}function xw(n,r,o={}){const[l,d,p]=D1(n,o),u=f=>{if(!Cm(f))return;const{target:g}=f,y=r(g,f);if(typeof y!="function"||!g)return;const m=v=>{Cm(v)&&(y(v),g.removeEventListener("pointerleave",m))};g.addEventListener("pointerleave",m,d)};return l.forEach(f=>{f.addEventListener("pointerenter",u,d)}),p}const _1=(n,r)=>r?n===r?!0:_1(n,r.parentElement):!1,Ju=n=>n.pointerType==="mouse"?typeof n.button!="number"||n.button<=0:n.isPrimary!==!1,ww=new Set(["BUTTON","INPUT","SELECT","TEXTAREA","A"]);function M1(n){return ww.has(n.tagName)||n.isContentEditable===!0}const Fs=new WeakSet;function jm(n){return r=>{r.key==="Enter"&&n(r)}}function _d(n,r){n.dispatchEvent(new PointerEvent("pointer"+r,{isPrimary:!0,bubbles:!0}))}const kw=(n,r)=>{const o=n.currentTarget;if(!o)return;const l=jm(()=>{if(Fs.has(o))return;_d(o,"down");const d=jm(()=>{_d(o,"up")}),p=()=>_d(o,"cancel");o.addEventListener("keyup",d,r),o.addEventListener("blur",p,r)});o.addEventListener("keydown",l,r),o.addEventListener("blur",()=>o.removeEventListener("keydown",l),r)};function Em(n){return Ju(n)&&!E1()}function Sw(n,r,o={}){const[l,d,p]=D1(n,o),u=f=>{const g=f.currentTarget;if(!Em(f))return;Fs.add(g);const y=r(g,f),m=(b,A)=>{window.removeEventListener("pointerup",v),window.removeEventListener("pointercancel",w),Fs.has(g)&&Fs.delete(g),Em(b)&&typeof y=="function"&&y(b,{success:A})},v=b=>{m(b,g===window||g===document||o.useGlobalTarget||_1(g,b.target))},w=b=>{m(b,!1)};window.addEventListener("pointerup",v,d),window.addEventListener("pointercancel",w,d)};return l.forEach(f=>{(o.useGlobalTarget?window:f).addEventListener("pointerdown",u,d),uu(f)&&(f.addEventListener("focus",y=>kw(y,d)),!M1(f)&&!f.hasAttribute("tabindex")&&(f.tabIndex=0))}),p}function R1(n){return Uy(n)&&"ownerSVGElement"in n}function Tw(n){return R1(n)&&n.tagName==="svg"}const Aw=[...T1,ut,bi],Cw=n=>Aw.find(S1(n)),Dm=()=>({translate:0,scale:1,origin:0,originPoint:0}),Ur=()=>({x:Dm(),y:Dm()}),_m=()=>({min:0,max:0}),ft=()=>({x:_m(),y:_m()}),hu={current:null},z1={current:!1},jw=typeof window<"u";function Ew(){if(z1.current=!0,!!jw)if(window.matchMedia){const n=window.matchMedia("(prefers-reduced-motion)"),r=()=>hu.current=n.matches;n.addEventListener("change",r),r()}else hu.current=!1}const Dw=new WeakMap;function tl(n){return n!==null&&typeof n=="object"&&typeof n.start=="function"}function co(n){return typeof n=="string"||Array.isArray(n)}const $u=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],eh=["initial",...$u];function nl(n){return tl(n.animate)||eh.some(r=>co(n[r]))}function B1(n){return!!(nl(n)||n.variants)}function _w(n,r,o){for(const l in r){const d=r[l],p=o[l];if(At(d))n.addValue(l,d);else if(At(p))n.addValue(l,Gr(d,{owner:n}));else if(p!==d)if(n.hasValue(l)){const u=n.getValue(l);u.liveStyle===!0?u.jump(d):u.hasAnimated||u.set(d)}else{const u=n.getStaticValue(l);n.addValue(l,Gr(u!==void 0?u:d,{owner:n}))}}for(const l in o)r[l]===void 0&&n.removeValue(l);return r}const Mm=["AnimationStart","AnimationComplete","Update","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"];let Xs={};function L1(n){Xs=n}function Mw(){return Xs}class Rw{scrapeMotionValuesFromProps(r,o,l){return{}}constructor({parent:r,props:o,presenceContext:l,reducedMotionConfig:d,blockInitialAnimation:p,visualState:u},f={}){this.current=null,this.children=new Set,this.isVariantNode=!1,this.isControllingVariants=!1,this.shouldReduceMotion=null,this.values=new Map,this.KeyframeResolver=Gu,this.features={},this.valueSubscriptions=new Map,this.prevMotionValues={},this.events={},this.propEventSubscriptions={},this.notifyUpdate=()=>this.notify("Update",this.latestValues),this.render=()=>{this.current&&(this.triggerBuild(),this.renderInstance(this.current,this.renderState,this.props.style,this.projection))},this.renderScheduledAt=0,this.scheduleRender=()=>{const w=Dt.now();this.renderScheduledAt<w&&(this.renderScheduledAt=w,Je.render(this.render,!1,!0))};const{latestValues:g,renderState:y}=u;this.latestValues=g,this.baseTarget={...g},this.initialValues=o.initial?{...g}:{},this.renderState=y,this.parent=r,this.props=o,this.presenceContext=l,this.depth=r?r.depth+1:0,this.reducedMotionConfig=d,this.options=f,this.blockInitialAnimation=!!p,this.isControllingVariants=nl(o),this.isVariantNode=B1(o),this.isVariantNode&&(this.variantChildren=new Set),this.manuallyAnimateOnMount=!!(r&&r.current);const{willChange:m,...v}=this.scrapeMotionValuesFromProps(o,{},this);for(const w in v){const b=v[w];g[w]!==void 0&&At(b)&&b.set(g[w])}}mount(r){this.current=r,Dw.set(r,this),this.projection&&!this.projection.instance&&this.projection.mount(r),this.parent&&this.isVariantNode&&!this.isControllingVariants&&(this.removeFromVariantTree=this.parent.addVariantChild(this)),this.values.forEach((o,l)=>this.bindToMotionValue(l,o)),this.reducedMotionConfig==="never"?this.shouldReduceMotion=!1:this.reducedMotionConfig==="always"?this.shouldReduceMotion=!0:(z1.current||Ew(),this.shouldReduceMotion=hu.current),this.parent?.addChild(this),this.update(this.props,this.presenceContext)}unmount(){this.projection&&this.projection.unmount(),vi(this.notifyUpdate),vi(this.render),this.valueSubscriptions.forEach(r=>r()),this.valueSubscriptions.clear(),this.removeFromVariantTree&&this.removeFromVariantTree(),this.parent?.removeChild(this);for(const r in this.events)this.events[r].clear();for(const r in this.features){const o=this.features[r];o&&(o.unmount(),o.isMounted=!1)}this.current=null}addChild(r){this.children.add(r),this.enteringChildren??(this.enteringChildren=new Set),this.enteringChildren.add(r)}removeChild(r){this.children.delete(r),this.enteringChildren&&this.enteringChildren.delete(r)}bindToMotionValue(r,o){this.valueSubscriptions.has(r)&&this.valueSubscriptions.get(r)();const l=Jr.has(r);l&&this.onBindTransform&&this.onBindTransform();const d=o.on("change",u=>{this.latestValues[r]=u,this.props.onUpdate&&Je.preRender(this.notifyUpdate),l&&this.projection&&(this.projection.isTransformDirty=!0),this.scheduleRender()});let p;typeof window<"u"&&window.MotionCheckAppearSync&&(p=window.MotionCheckAppearSync(this,r,o)),this.valueSubscriptions.set(r,()=>{d(),p&&p(),o.owner&&o.stop()})}sortNodePosition(r){return!this.current||!this.sortInstanceNodePosition||this.type!==r.type?0:this.sortInstanceNodePosition(this.current,r.current)}updateFeatures(){let r="animation";for(r in Xs){const o=Xs[r];if(!o)continue;const{isEnabled:l,Feature:d}=o;if(!this.features[r]&&d&&l(this.props)&&(this.features[r]=new d(this)),this.features[r]){const p=this.features[r];p.isMounted?p.update():(p.mount(),p.isMounted=!0)}}}triggerBuild(){this.build(this.renderState,this.latestValues,this.props)}measureViewportBox(){return this.current?this.measureInstanceViewportBox(this.current,this.props):ft()}getStaticValue(r){return this.latestValues[r]}setStaticValue(r,o){this.latestValues[r]=o}update(r,o){(r.transformTemplate||this.props.transformTemplate)&&this.scheduleRender(),this.prevProps=this.props,this.props=r,this.prevPresenceContext=this.presenceContext,this.presenceContext=o;for(let l=0;l<Mm.length;l++){const d=Mm[l];this.propEventSubscriptions[d]&&(this.propEventSubscriptions[d](),delete this.propEventSubscriptions[d]);const p="on"+d,u=r[p];u&&(this.propEventSubscriptions[d]=this.on(d,u))}this.prevMotionValues=_w(this,this.scrapeMotionValuesFromProps(r,this.prevProps||{},this),this.prevMotionValues),this.handleChildMotionValue&&this.handleChildMotionValue()}getProps(){return this.props}getVariant(r){return this.props.variants?this.props.variants[r]:void 0}getDefaultTransition(){return this.props.transition}getTransformPagePoint(){return this.props.transformPagePoint}getClosestVariantNode(){return this.isVariantNode?this:this.parent?this.parent.getClosestVariantNode():void 0}addVariantChild(r){const o=this.getClosestVariantNode();if(o)return o.variantChildren&&o.variantChildren.add(r),()=>o.variantChildren.delete(r)}addValue(r,o){const l=this.values.get(r);o!==l&&(l&&this.removeValue(r),this.bindToMotionValue(r,o),this.values.set(r,o),this.latestValues[r]=o.get())}removeValue(r){this.values.delete(r);const o=this.valueSubscriptions.get(r);o&&(o(),this.valueSubscriptions.delete(r)),delete this.latestValues[r],this.removeValueFromRenderState(r,this.renderState)}hasValue(r){return this.values.has(r)}getValue(r,o){if(this.props.values&&this.props.values[r])return this.props.values[r];let l=this.values.get(r);return l===void 0&&o!==void 0&&(l=Gr(o===null?void 0:o,{owner:this}),this.addValue(r,l)),l}readValue(r,o){let l=this.latestValues[r]!==void 0||!this.current?this.latestValues[r]:this.getBaseTargetFromProps(this.props,r)??this.readValueFromInstance(this.current,r,this.options);return l!=null&&(typeof l=="string"&&(Py(l)||Iy(l))?l=parseFloat(l):!Cw(l)&&bi.test(o)&&(l=C1(r,o)),this.setBaseTarget(r,At(l)?l.get():l)),At(l)?l.get():l}setBaseTarget(r,o){this.baseTarget[r]=o}getBaseTarget(r){const{initial:o}=this.props;let l;if(typeof o=="string"||typeof o=="object"){const p=Zu(this.props,o,this.presenceContext?.custom);p&&(l=p[r])}if(o&&l!==void 0)return l;const d=this.getBaseTargetFromProps(this.props,r);return d!==void 0&&!At(d)?d:this.initialValues[r]!==void 0&&l===void 0?void 0:this.baseTarget[r]}on(r,o){return this.events[r]||(this.events[r]=new Bu),this.events[r].add(o)}notify(r,...o){this.events[r]&&this.events[r].notify(...o)}scheduleRenderMicrotask(){Qu.render(this.render)}}class O1 extends Rw{constructor(){super(...arguments),this.KeyframeResolver=yw}sortInstanceNodePosition(r,o){return r.compareDocumentPosition(o)&2?1:-1}getBaseTargetFromProps(r,o){const l=r.style;return l?l[o]:void 0}removeValueFromRenderState(r,{vars:o,style:l}){delete o[r],delete l[r]}handleChildMotionValue(){this.childSubscription&&(this.childSubscription(),delete this.childSubscription);const{children:r}=this.props;At(r)&&(this.childSubscription=r.on("change",o=>{this.current&&(this.current.textContent=`${o}`)}))}}class xi{constructor(r){this.isMounted=!1,this.node=r}update(){}}function N1({top:n,left:r,right:o,bottom:l}){return{x:{min:r,max:o},y:{min:n,max:l}}}function zw({x:n,y:r}){return{top:r.min,right:n.max,bottom:r.max,left:n.min}}function Bw(n,r){if(!r)return n;const o=r({x:n.left,y:n.top}),l=r({x:n.right,y:n.bottom});return{top:o.y,left:o.x,bottom:l.y,right:l.x}}function Md(n){return n===void 0||n===1}function pu({scale:n,scaleX:r,scaleY:o}){return!Md(n)||!Md(r)||!Md(o)}function Vi(n){return pu(n)||P1(n)||n.z||n.rotate||n.rotateX||n.rotateY||n.skewX||n.skewY}function P1(n){return Rm(n.x)||Rm(n.y)}function Rm(n){return n&&n!=="0%"}function Ks(n,r,o){const l=n-o,d=r*l;return o+d}function zm(n,r,o,l,d){return d!==void 0&&(n=Ks(n,d,l)),Ks(n,o,l)+r}function fu(n,r=0,o=1,l,d){n.min=zm(n.min,r,o,l,d),n.max=zm(n.max,r,o,l,d)}function U1(n,{x:r,y:o}){fu(n.x,r.translate,r.scale,r.originPoint),fu(n.y,o.translate,o.scale,o.originPoint)}const Bm=.999999999999,Lm=1.0000000000001;function Lw(n,r,o,l=!1){const d=o.length;if(!d)return;r.x=r.y=1;let p,u;for(let f=0;f<d;f++){p=o[f],u=p.projectionDelta;const{visualElement:g}=p.options;g&&g.props.style&&g.props.style.display==="contents"||(l&&p.options.layoutScroll&&p.scroll&&p!==p.root&&Vr(n,{x:-p.scroll.offset.x,y:-p.scroll.offset.y}),u&&(r.x*=u.x.scale,r.y*=u.y.scale,U1(n,u)),l&&Vi(p.latestValues)&&Vr(n,p.latestValues))}r.x<Lm&&r.x>Bm&&(r.x=1),r.y<Lm&&r.y>Bm&&(r.y=1)}function Ir(n,r){n.min=n.min+r,n.max=n.max+r}function Om(n,r,o,l,d=.5){const p=tt(n.min,n.max,d);fu(n,r,o,p,l)}function Vr(n,r){Om(n.x,r.x,r.scaleX,r.scale,r.originX),Om(n.y,r.y,r.scaleY,r.scale,r.originY)}function I1(n,r){return N1(Bw(n.getBoundingClientRect(),r))}function Ow(n,r,o){const l=I1(n,o),{scroll:d}=r;return d&&(Ir(l.x,d.offset.x),Ir(l.y,d.offset.y)),l}const Nw={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},Pw=Qr.length;function Uw(n,r,o){let l="",d=!0;for(let p=0;p<Pw;p++){const u=Qr[p],f=n[u];if(f===void 0)continue;let g=!0;if(typeof f=="number")g=f===(u.startsWith("scale")?1:0);else{const y=parseFloat(f);g=u.startsWith("scale")?y===1:y===0}if(!g||o){const y=j1(f,Ku[u]);if(!g){d=!1;const m=Nw[u]||u;l+=`${m}(${y}) `}o&&(r[u]=y)}}return l=l.trim(),o?l=o(r,d?"":l):d&&(l="none"),l}function th(n,r,o){const{style:l,vars:d,transformOrigin:p}=n;let u=!1,f=!1;for(const g in r){const y=r[g];if(Jr.has(g)){u=!0;continue}else if(e1(g)){d[g]=y;continue}else{const m=j1(y,Ku[g]);g.startsWith("origin")?(f=!0,p[g]=m):l[g]=m}}if(r.transform||(u||o?l.transform=Uw(r,n.transform,o):l.transform&&(l.transform="none")),f){const{originX:g="50%",originY:y="50%",originZ:m=0}=p;l.transformOrigin=`${g} ${y} ${m}`}}function V1(n,{style:r,vars:o},l,d){const p=n.style;let u;for(u in r)p[u]=r[u];d?.applyProjectionStyles(p,l);for(u in o)p.setProperty(u,o[u])}function Nm(n,r){return r.max===r.min?0:n/(r.max-r.min)*100}const Ka={correct:(n,r)=>{if(!r.target)return n;if(typeof n=="string")if(we.test(n))n=parseFloat(n);else return n;const o=Nm(n,r.target.x),l=Nm(n,r.target.y);return`${o}% ${l}%`}},Iw={correct:(n,{treeScale:r,projectionDelta:o})=>{const l=n,d=bi.parse(n);if(d.length>5)return l;const p=bi.createTransformer(n),u=typeof d[0]!="number"?1:0,f=o.x.scale*r.x,g=o.y.scale*r.y;d[0+u]/=f,d[1+u]/=g;const y=tt(f,g,.5);return typeof d[2+u]=="number"&&(d[2+u]/=y),typeof d[3+u]=="number"&&(d[3+u]/=y),p(d)}},gu={borderRadius:{...Ka,applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]},borderTopLeftRadius:Ka,borderTopRightRadius:Ka,borderBottomLeftRadius:Ka,borderBottomRightRadius:Ka,boxShadow:Iw};function F1(n,{layout:r,layoutId:o}){return Jr.has(n)||n.startsWith("origin")||(r||o!==void 0)&&(!!gu[n]||n==="opacity")}function nh(n,r,o){const l=n.style,d=r?.style,p={};if(!l)return p;for(const u in l)(At(l[u])||d&&At(d[u])||F1(u,n)||o?.getValue(u)?.liveStyle!==void 0)&&(p[u]=l[u]);return p}function Vw(n){return window.getComputedStyle(n)}class Fw extends O1{constructor(){super(...arguments),this.type="html",this.renderInstance=V1}readValueFromInstance(r,o){if(Jr.has(o))return this.projection?.isProjecting?tu(o):vx(r,o);{const l=Vw(r),d=(e1(o)?l.getPropertyValue(o):l[o])||0;return typeof d=="string"?d.trim():d}}measureInstanceViewportBox(r,{transformPagePoint:o}){return I1(r,o)}build(r,o,l){th(r,o,l.transformTemplate)}scrapeMotionValuesFromProps(r,o,l){return nh(r,o,l)}}const Ww={offset:"stroke-dashoffset",array:"stroke-dasharray"},Hw={offset:"strokeDashoffset",array:"strokeDasharray"};function Gw(n,r,o=1,l=0,d=!0){n.pathLength=1;const p=d?Ww:Hw;n[p.offset]=`${-l}`,n[p.array]=`${r} ${o}`}const qw=["offsetDistance","offsetPath","offsetRotate","offsetAnchor"];function W1(n,{attrX:r,attrY:o,attrScale:l,pathLength:d,pathSpacing:p=1,pathOffset:u=0,...f},g,y,m){if(th(n,f,y),g){n.style.viewBox&&(n.attrs.viewBox=n.style.viewBox);return}n.attrs=n.style,n.style={};const{attrs:v,style:w}=n;v.transform&&(w.transform=v.transform,delete v.transform),(w.transform||v.transformOrigin)&&(w.transformOrigin=v.transformOrigin??"50% 50%",delete v.transformOrigin),w.transform&&(w.transformBox=m?.transformBox??"fill-box",delete v.transformBox);for(const b of qw)v[b]!==void 0&&(w[b]=v[b],delete v[b]);r!==void 0&&(v.x=r),o!==void 0&&(v.y=o),l!==void 0&&(v.scale=l),d!==void 0&&Gw(v,d,p,u,!1)}const H1=new Set(["baseFrequency","diffuseConstant","kernelMatrix","kernelUnitLength","keySplines","keyTimes","limitingConeAngle","markerHeight","markerWidth","numOctaves","targetX","targetY","surfaceScale","specularConstant","specularExponent","stdDeviation","tableValues","viewBox","gradientTransform","pathLength","startOffset","textLength","lengthAdjust"]),G1=n=>typeof n=="string"&&n.toLowerCase()==="svg";function Yw(n,r,o,l){V1(n,r,void 0,l);for(const d in r.attrs)n.setAttribute(H1.has(d)?d:Xu(d),r.attrs[d])}function q1(n,r,o){const l=nh(n,r,o);for(const d in n)if(At(n[d])||At(r[d])){const p=Qr.indexOf(d)!==-1?"attr"+d.charAt(0).toUpperCase()+d.substring(1):d;l[p]=n[d]}return l}class Zw extends O1{constructor(){super(...arguments),this.type="svg",this.isSVGTag=!1,this.measureInstanceViewportBox=ft}getBaseTargetFromProps(r,o){return r[o]}readValueFromInstance(r,o){if(Jr.has(o)){const l=A1(o);return l&&l.default||0}return o=H1.has(o)?o:Xu(o),r.getAttribute(o)}scrapeMotionValuesFromProps(r,o,l){return q1(r,o,l)}build(r,o,l){W1(r,o,this.isSVGTag,l.transformTemplate,l.style)}renderInstance(r,o,l,d){Yw(r,o,l,d)}mount(r){this.isSVGTag=G1(r.tagName),super.mount(r)}}const Xw=eh.length;function Y1(n){if(!n)return;if(!n.isControllingVariants){const o=n.parent?Y1(n.parent)||{}:{};return n.props.initial!==void 0&&(o.initial=n.props.initial),o}const r={};for(let o=0;o<Xw;o++){const l=eh[o],d=n.props[l];(co(d)||d===!1)&&(r[l]=d)}return r}function Z1(n,r){if(!Array.isArray(r))return!1;const o=r.length;if(o!==n.length)return!1;for(let l=0;l<o;l++)if(r[l]!==n[l])return!1;return!0}const Kw=[...$u].reverse(),Qw=$u.length;function Jw(n){return r=>Promise.all(r.map(({animation:o,options:l})=>sw(n,o,l)))}function $w(n){let r=Jw(n),o=Pm(),l=!0;const d=g=>(y,m)=>{const v=Wr(n,m,g==="exit"?n.presenceContext?.custom:void 0);if(v){const{transition:w,transitionEnd:b,...A}=v;y={...y,...A,...b}}return y};function p(g){r=g(n)}function u(g){const{props:y}=n,m=Y1(n.parent)||{},v=[],w=new Set;let b={},A=1/0;for(let j=0;j<Qw;j++){const T=Kw[j],D=o[T],_=y[T]!==void 0?y[T]:m[T],L=co(_),B=T===g?D.isActive:null;B===!1&&(A=j);let P=_===m[T]&&_!==y[T]&&L;if(P&&l&&n.manuallyAnimateOnMount&&(P=!1),D.protectedKeys={...b},!D.isActive&&B===null||!_&&!D.prevProp||tl(_)||typeof _=="boolean")continue;const z=e3(D.prevProp,_);let W=z||T===g&&D.isActive&&!P&&L||j>A&&L,H=!1;const ae=Array.isArray(_)?_:[_];let ve=ae.reduce(d(T),{});B===!1&&(ve={});const{prevResolvedValues:N={}}=D,ie={...N,...ve},C=U=>{W=!0,w.has(U)&&(H=!0,w.delete(U)),D.needsAnimating[U]=!0;const ee=n.getValue(U);ee&&(ee.liveStyle=!1)};for(const U in ie){const ee=ve[U],te=N[U];if(b.hasOwnProperty(U))continue;let me=!1;su(ee)&&su(te)?me=!Z1(ee,te):me=ee!==te,me?ee!=null?C(U):w.add(U):ee!==void 0&&w.has(U)?C(U):D.protectedKeys[U]=!0}D.prevProp=_,D.prevResolvedValues=ve,D.isActive&&(b={...b,...ve}),l&&n.blockInitialAnimation&&(W=!1);const re=P&&z;W&&(!re||H)&&v.push(...ae.map(U=>{const ee={type:T};if(typeof U=="string"&&l&&!re&&n.manuallyAnimateOnMount&&n.parent){const{parent:te}=n,me=Wr(te,U);if(te.enteringChildren&&me){const{delayChildren:Z}=me.transition||{};ee.delay=y1(te.enteringChildren,n,Z)}}return{animation:U,options:ee}}))}if(w.size){const j={};if(typeof y.initial!="boolean"){const T=Wr(n,Array.isArray(y.initial)?y.initial[0]:y.initial);T&&T.transition&&(j.transition=T.transition)}w.forEach(T=>{const D=n.getBaseTarget(T),_=n.getValue(T);_&&(_.liveStyle=!0),j[T]=D??null}),v.push({animation:j})}let x=!!v.length;return l&&(y.initial===!1||y.initial===y.animate)&&!n.manuallyAnimateOnMount&&(x=!1),l=!1,x?r(v):Promise.resolve()}function f(g,y){if(o[g].isActive===y)return Promise.resolve();n.variantChildren?.forEach(v=>v.animationState?.setActive(g,y)),o[g].isActive=y;const m=u(g);for(const v in o)o[v].protectedKeys={};return m}return{animateChanges:u,setActive:f,setAnimateFunction:p,getState:()=>o,reset:()=>{o=Pm()}}}function e3(n,r){return typeof r=="string"?r!==n:Array.isArray(r)?!Z1(r,n):!1}function Ii(n=!1){return{isActive:n,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function Pm(){return{animate:Ii(!0),whileInView:Ii(),whileHover:Ii(),whileTap:Ii(),whileDrag:Ii(),whileFocus:Ii(),exit:Ii()}}function Um(n,r){n.min=r.min,n.max=r.max}function hn(n,r){Um(n.x,r.x),Um(n.y,r.y)}function Im(n,r){n.translate=r.translate,n.scale=r.scale,n.originPoint=r.originPoint,n.origin=r.origin}const X1=1e-4,t3=1-X1,n3=1+X1,K1=.01,i3=0-K1,r3=0+K1;function _t(n){return n.max-n.min}function a3(n,r,o){return Math.abs(n-r)<=o}function Vm(n,r,o,l=.5){n.origin=l,n.originPoint=tt(r.min,r.max,n.origin),n.scale=_t(o)/_t(r),n.translate=tt(o.min,o.max,n.origin)-n.originPoint,(n.scale>=t3&&n.scale<=n3||isNaN(n.scale))&&(n.scale=1),(n.translate>=i3&&n.translate<=r3||isNaN(n.translate))&&(n.translate=0)}function no(n,r,o,l){Vm(n.x,r.x,o.x,l?l.originX:void 0),Vm(n.y,r.y,o.y,l?l.originY:void 0)}function Fm(n,r,o){n.min=o.min+r.min,n.max=n.min+_t(r)}function o3(n,r,o){Fm(n.x,r.x,o.x),Fm(n.y,r.y,o.y)}function Wm(n,r,o){n.min=r.min-o.min,n.max=n.min+_t(r)}function Qs(n,r,o){Wm(n.x,r.x,o.x),Wm(n.y,r.y,o.y)}function Hm(n,r,o,l,d){return n-=r,n=Ks(n,1/o,l),d!==void 0&&(n=Ks(n,1/d,l)),n}function s3(n,r=0,o=1,l=.5,d,p=n,u=n){if(kn.test(r)&&(r=parseFloat(r),r=tt(u.min,u.max,r/100)-u.min),typeof r!="number")return;let f=tt(p.min,p.max,l);n===p&&(f-=r),n.min=Hm(n.min,r,o,f,d),n.max=Hm(n.max,r,o,f,d)}function Gm(n,r,[o,l,d],p,u){s3(n,r[o],r[l],r[d],r.scale,p,u)}const l3=["x","scaleX","originX"],c3=["y","scaleY","originY"];function qm(n,r,o,l){Gm(n.x,r,l3,o?o.x:void 0,l?l.x:void 0),Gm(n.y,r,c3,o?o.y:void 0,l?l.y:void 0)}function Ym(n){return n.translate===0&&n.scale===1}function Q1(n){return Ym(n.x)&&Ym(n.y)}function Zm(n,r){return n.min===r.min&&n.max===r.max}function d3(n,r){return Zm(n.x,r.x)&&Zm(n.y,r.y)}function Xm(n,r){return Math.round(n.min)===Math.round(r.min)&&Math.round(n.max)===Math.round(r.max)}function J1(n,r){return Xm(n.x,r.x)&&Xm(n.y,r.y)}function Km(n){return _t(n.x)/_t(n.y)}function Qm(n,r){return n.translate===r.translate&&n.scale===r.scale&&n.originPoint===r.originPoint}function tn(n){return[n("x"),n("y")]}function u3(n,r,o){let l="";const d=n.x.translate/r.x,p=n.y.translate/r.y,u=o?.z||0;if((d||p||u)&&(l=`translate3d(${d}px, ${p}px, ${u}px) `),(r.x!==1||r.y!==1)&&(l+=`scale(${1/r.x}, ${1/r.y}) `),o){const{transformPerspective:y,rotate:m,rotateX:v,rotateY:w,skewX:b,skewY:A}=o;y&&(l=`perspective(${y}px) ${l}`),m&&(l+=`rotate(${m}deg) `),v&&(l+=`rotateX(${v}deg) `),w&&(l+=`rotateY(${w}deg) `),b&&(l+=`skewX(${b}deg) `),A&&(l+=`skewY(${A}deg) `)}const f=n.x.scale*r.x,g=n.y.scale*r.y;return(f!==1||g!==1)&&(l+=`scale(${f}, ${g})`),l||"none"}const $1=["TopLeft","TopRight","BottomLeft","BottomRight"],h3=$1.length,Jm=n=>typeof n=="string"?parseFloat(n):n,$m=n=>typeof n=="number"||we.test(n);function p3(n,r,o,l,d,p){d?(n.opacity=tt(0,o.opacity??1,f3(l)),n.opacityExit=tt(r.opacity??1,0,g3(l))):p&&(n.opacity=tt(r.opacity??1,o.opacity??1,l));for(let u=0;u<h3;u++){const f=`border${$1[u]}Radius`;let g=ey(r,f),y=ey(o,f);if(g===void 0&&y===void 0)continue;g||(g=0),y||(y=0),g===0||y===0||$m(g)===$m(y)?(n[f]=Math.max(tt(Jm(g),Jm(y),l),0),(kn.test(y)||kn.test(g))&&(n[f]+="%")):n[f]=y}(r.rotate||o.rotate)&&(n.rotate=tt(r.rotate||0,o.rotate||0,l))}function ey(n,r){return n[r]!==void 0?n[r]:n.borderRadius}const f3=e0(0,.5,Zy),g3=e0(.5,.95,rn);function e0(n,r,o){return l=>l<n?0:l>r?1:o(oo(n,r,l))}function m3(n,r,o){const l=At(n)?n:Gr(n);return l.start(Yu("",l,r,o)),l.animation}function uo(n,r,o,l={passive:!0}){return n.addEventListener(r,o,l),()=>n.removeEventListener(r,o)}const y3=(n,r)=>n.depth-r.depth;class v3{constructor(){this.children=[],this.isDirty=!1}add(r){_u(this.children,r),this.isDirty=!0}remove(r){Mu(this.children,r),this.isDirty=!0}forEach(r){this.isDirty&&this.children.sort(y3),this.isDirty=!1,this.children.forEach(r)}}function b3(n,r){const o=Dt.now(),l=({timestamp:d})=>{const p=d-o;p>=r&&(vi(l),n(p-r))};return Je.setup(l,!0),()=>vi(l)}function Ws(n){return At(n)?n.get():n}class x3{constructor(){this.members=[]}add(r){_u(this.members,r),r.scheduleRender()}remove(r){if(Mu(this.members,r),r===this.prevLead&&(this.prevLead=void 0),r===this.lead){const o=this.members[this.members.length-1];o&&this.promote(o)}}relegate(r){const o=this.members.findIndex(d=>r===d);if(o===0)return!1;let l;for(let d=o;d>=0;d--){const p=this.members[d];if(p.isPresent!==!1){l=p;break}}return l?(this.promote(l),!0):!1}promote(r,o){const l=this.lead;if(r!==l&&(this.prevLead=l,this.lead=r,r.show(),l)){l.instance&&l.scheduleRender(),r.scheduleRender(),r.resumeFrom=l,o&&(r.resumeFrom.preserveOpacity=!0),l.snapshot&&(r.snapshot=l.snapshot,r.snapshot.latestValues=l.animationValues||l.latestValues),r.root&&r.root.isUpdating&&(r.isLayoutDirty=!0);const{crossfade:d}=r.options;d===!1&&l.hide()}}exitAnimationComplete(){this.members.forEach(r=>{const{options:o,resumingFrom:l}=r;o.onExitComplete&&o.onExitComplete(),l&&l.options.onExitComplete&&l.options.onExitComplete()})}scheduleRender(){this.members.forEach(r=>{r.instance&&r.scheduleRender(!1)})}removeLeadSnapshot(){this.lead&&this.lead.snapshot&&(this.lead.snapshot=void 0)}}const Hs={hasAnimatedSinceResize:!0,hasEverUpdated:!1},Rd=["","X","Y","Z"],w3=1e3;let k3=0;function zd(n,r,o,l){const{latestValues:d}=r;d[n]&&(o[n]=d[n],r.setStaticValue(n,0),l&&(l[n]=0))}function t0(n){if(n.hasCheckedOptimisedAppear=!0,n.root===n)return;const{visualElement:r}=n.options;if(!r)return;const o=w1(r);if(window.MotionHasOptimisedAnimation(o,"transform")){const{layout:d,layoutId:p}=n.options;window.MotionCancelOptimisedAnimation(o,"transform",Je,!(d||p))}const{parent:l}=n;l&&!l.hasCheckedOptimisedAppear&&t0(l)}function n0({attachResizeListener:n,defaultParent:r,measureScroll:o,checkIsScrollRoot:l,resetTransform:d}){return class{constructor(u={},f=r?.()){this.id=k3++,this.animationId=0,this.animationCommitId=0,this.children=new Set,this.options={},this.isTreeAnimating=!1,this.isAnimationBlocked=!1,this.isLayoutDirty=!1,this.isProjectionDirty=!1,this.isSharedProjectionDirty=!1,this.isTransformDirty=!1,this.updateManuallyBlocked=!1,this.updateBlockedByResize=!1,this.isUpdating=!1,this.isSVG=!1,this.needsReset=!1,this.shouldResetTransform=!1,this.hasCheckedOptimisedAppear=!1,this.treeScale={x:1,y:1},this.eventHandlers=new Map,this.hasTreeAnimated=!1,this.layoutVersion=0,this.updateScheduled=!1,this.scheduleUpdate=()=>this.update(),this.projectionUpdateScheduled=!1,this.checkUpdateFailed=()=>{this.isUpdating&&(this.isUpdating=!1,this.clearAllSnapshots())},this.updateProjection=()=>{this.projectionUpdateScheduled=!1,this.nodes.forEach(A3),this.nodes.forEach(D3),this.nodes.forEach(_3),this.nodes.forEach(C3)},this.resolvedRelativeTargetAt=0,this.linkedParentVersion=0,this.hasProjected=!1,this.isVisible=!0,this.animationProgress=0,this.sharedNodes=new Map,this.latestValues=u,this.root=f?f.root||f:this,this.path=f?[...f.path,f]:[],this.parent=f,this.depth=f?f.depth+1:0;for(let g=0;g<this.path.length;g++)this.path[g].shouldResetTransform=!0;this.root===this&&(this.nodes=new v3)}addEventListener(u,f){return this.eventHandlers.has(u)||this.eventHandlers.set(u,new Bu),this.eventHandlers.get(u).add(f)}notifyListeners(u,...f){const g=this.eventHandlers.get(u);g&&g.notify(...f)}hasListeners(u){return this.eventHandlers.has(u)}mount(u){if(this.instance)return;this.isSVG=R1(u)&&!Tw(u),this.instance=u;const{layoutId:f,layout:g,visualElement:y}=this.options;if(y&&!y.current&&y.mount(u),this.root.nodes.add(this),this.parent&&this.parent.children.add(this),this.root.hasTreeAnimated&&(g||f)&&(this.isLayoutDirty=!0),n){let m,v=0;const w=()=>this.root.updateBlockedByResize=!1;Je.read(()=>{v=window.innerWidth}),n(u,()=>{const b=window.innerWidth;b!==v&&(v=b,this.root.updateBlockedByResize=!0,m&&m(),m=b3(w,250),Hs.hasAnimatedSinceResize&&(Hs.hasAnimatedSinceResize=!1,this.nodes.forEach(iy)))})}f&&this.root.registerSharedNode(f,this),this.options.animate!==!1&&y&&(f||g)&&this.addEventListener("didUpdate",({delta:m,hasLayoutChanged:v,hasRelativeLayoutChanged:w,layout:b})=>{if(this.isTreeAnimationBlocked()){this.target=void 0,this.relativeTarget=void 0;return}const A=this.options.transition||y.getDefaultTransition()||L3,{onLayoutAnimationStart:x,onLayoutAnimationComplete:j}=y.getProps(),T=!this.targetLayout||!J1(this.targetLayout,b),D=!v&&w;if(this.options.layoutRoot||this.resumeFrom||D||v&&(T||!this.currentAnimation)){this.resumeFrom&&(this.resumingFrom=this.resumeFrom,this.resumingFrom.resumingFrom=void 0);const _={...qu(A,"layout"),onPlay:x,onComplete:j};(y.shouldReduceMotion||this.options.layoutRoot)&&(_.delay=0,_.type=!1),this.startAnimation(_),this.setAnimationOrigin(m,D)}else v||iy(this),this.isLead()&&this.options.onExitComplete&&this.options.onExitComplete();this.targetLayout=b})}unmount(){this.options.layoutId&&this.willUpdate(),this.root.nodes.remove(this);const u=this.getStack();u&&u.remove(this),this.parent&&this.parent.children.delete(this),this.instance=void 0,this.eventHandlers.clear(),vi(this.updateProjection)}blockUpdate(){this.updateManuallyBlocked=!0}unblockUpdate(){this.updateManuallyBlocked=!1}isUpdateBlocked(){return this.updateManuallyBlocked||this.updateBlockedByResize}isTreeAnimationBlocked(){return this.isAnimationBlocked||this.parent&&this.parent.isTreeAnimationBlocked()||!1}startUpdate(){this.isUpdateBlocked()||(this.isUpdating=!0,this.nodes&&this.nodes.forEach(M3),this.animationId++)}getTransformTemplate(){const{visualElement:u}=this.options;return u&&u.getProps().transformTemplate}willUpdate(u=!0){if(this.root.hasTreeAnimated=!0,this.root.isUpdateBlocked()){this.options.onExitComplete&&this.options.onExitComplete();return}if(window.MotionCancelOptimisedAnimation&&!this.hasCheckedOptimisedAppear&&t0(this),!this.root.isUpdating&&this.root.startUpdate(),this.isLayoutDirty)return;this.isLayoutDirty=!0;for(let m=0;m<this.path.length;m++){const v=this.path[m];v.shouldResetTransform=!0,v.updateScroll("snapshot"),v.options.layoutRoot&&v.willUpdate(!1)}const{layoutId:f,layout:g}=this.options;if(f===void 0&&!g)return;const y=this.getTransformTemplate();this.prevTransformTemplateValue=y?y(this.latestValues,""):void 0,this.updateSnapshot(),u&&this.notifyListeners("willUpdate")}update(){if(this.updateScheduled=!1,this.isUpdateBlocked()){this.unblockUpdate(),this.clearAllSnapshots(),this.nodes.forEach(ty);return}if(this.animationId<=this.animationCommitId){this.nodes.forEach(ny);return}this.animationCommitId=this.animationId,this.isUpdating?(this.isUpdating=!1,this.nodes.forEach(E3),this.nodes.forEach(S3),this.nodes.forEach(T3)):this.nodes.forEach(ny),this.clearAllSnapshots();const f=Dt.now();kt.delta=An(0,1e3/60,f-kt.timestamp),kt.timestamp=f,kt.isProcessing=!0,Td.update.process(kt),Td.preRender.process(kt),Td.render.process(kt),kt.isProcessing=!1}didUpdate(){this.updateScheduled||(this.updateScheduled=!0,Qu.read(this.scheduleUpdate))}clearAllSnapshots(){this.nodes.forEach(j3),this.sharedNodes.forEach(R3)}scheduleUpdateProjection(){this.projectionUpdateScheduled||(this.projectionUpdateScheduled=!0,Je.preRender(this.updateProjection,!1,!0))}scheduleCheckAfterUnmount(){Je.postRender(()=>{this.isLayoutDirty?this.root.didUpdate():this.root.checkUpdateFailed()})}updateSnapshot(){this.snapshot||!this.instance||(this.snapshot=this.measure(),this.snapshot&&!_t(this.snapshot.measuredBox.x)&&!_t(this.snapshot.measuredBox.y)&&(this.snapshot=void 0))}updateLayout(){if(!this.instance||(this.updateScroll(),!(this.options.alwaysMeasureLayout&&this.isLead())&&!this.isLayoutDirty))return;if(this.resumeFrom&&!this.resumeFrom.instance)for(let g=0;g<this.path.length;g++)this.path[g].updateScroll();const u=this.layout;this.layout=this.measure(!1),this.layoutVersion++,this.layoutCorrected=ft(),this.isLayoutDirty=!1,this.projectionDelta=void 0,this.notifyListeners("measure",this.layout.layoutBox);const{visualElement:f}=this.options;f&&f.notify("LayoutMeasure",this.layout.layoutBox,u?u.layoutBox:void 0)}updateScroll(u="measure"){let f=!!(this.options.layoutScroll&&this.instance);if(this.scroll&&this.scroll.animationId===this.root.animationId&&this.scroll.phase===u&&(f=!1),f&&this.instance){const g=l(this.instance);this.scroll={animationId:this.root.animationId,phase:u,isRoot:g,offset:o(this.instance),wasRoot:this.scroll?this.scroll.isRoot:g}}}resetTransform(){if(!d)return;const u=this.isLayoutDirty||this.shouldResetTransform||this.options.alwaysMeasureLayout,f=this.projectionDelta&&!Q1(this.projectionDelta),g=this.getTransformTemplate(),y=g?g(this.latestValues,""):void 0,m=y!==this.prevTransformTemplateValue;u&&this.instance&&(f||Vi(this.latestValues)||m)&&(d(this.instance,y),this.shouldResetTransform=!1,this.scheduleRender())}measure(u=!0){const f=this.measurePageBox();let g=this.removeElementScroll(f);return u&&(g=this.removeTransform(g)),O3(g),{animationId:this.root.animationId,measuredBox:f,layoutBox:g,latestValues:{},source:this.id}}measurePageBox(){const{visualElement:u}=this.options;if(!u)return ft();const f=u.measureViewportBox();if(!(this.scroll?.wasRoot||this.path.some(N3))){const{scroll:y}=this.root;y&&(Ir(f.x,y.offset.x),Ir(f.y,y.offset.y))}return f}removeElementScroll(u){const f=ft();if(hn(f,u),this.scroll?.wasRoot)return f;for(let g=0;g<this.path.length;g++){const y=this.path[g],{scroll:m,options:v}=y;y!==this.root&&m&&v.layoutScroll&&(m.wasRoot&&hn(f,u),Ir(f.x,m.offset.x),Ir(f.y,m.offset.y))}return f}applyTransform(u,f=!1){const g=ft();hn(g,u);for(let y=0;y<this.path.length;y++){const m=this.path[y];!f&&m.options.layoutScroll&&m.scroll&&m!==m.root&&Vr(g,{x:-m.scroll.offset.x,y:-m.scroll.offset.y}),Vi(m.latestValues)&&Vr(g,m.latestValues)}return Vi(this.latestValues)&&Vr(g,this.latestValues),g}removeTransform(u){const f=ft();hn(f,u);for(let g=0;g<this.path.length;g++){const y=this.path[g];if(!y.instance||!Vi(y.latestValues))continue;pu(y.latestValues)&&y.updateSnapshot();const m=ft(),v=y.measurePageBox();hn(m,v),qm(f,y.latestValues,y.snapshot?y.snapshot.layoutBox:void 0,m)}return Vi(this.latestValues)&&qm(f,this.latestValues),f}setTargetDelta(u){this.targetDelta=u,this.root.scheduleUpdateProjection(),this.isProjectionDirty=!0}setOptions(u){this.options={...this.options,...u,crossfade:u.crossfade!==void 0?u.crossfade:!0}}clearMeasurements(){this.scroll=void 0,this.layout=void 0,this.snapshot=void 0,this.prevTransformTemplateValue=void 0,this.targetDelta=void 0,this.target=void 0,this.isLayoutDirty=!1}forceRelativeParentToResolveTarget(){this.relativeParent&&this.relativeParent.resolvedRelativeTargetAt!==kt.timestamp&&this.relativeParent.resolveTargetDelta(!0)}resolveTargetDelta(u=!1){const f=this.getLead();this.isProjectionDirty||(this.isProjectionDirty=f.isProjectionDirty),this.isTransformDirty||(this.isTransformDirty=f.isTransformDirty),this.isSharedProjectionDirty||(this.isSharedProjectionDirty=f.isSharedProjectionDirty);const g=!!this.resumingFrom||this!==f;if(!(u||g&&this.isSharedProjectionDirty||this.isProjectionDirty||this.parent?.isProjectionDirty||this.attemptToResolveRelativeTarget||this.root.updateBlockedByResize))return;const{layout:m,layoutId:v}=this.options;if(!this.layout||!(m||v))return;this.resolvedRelativeTargetAt=kt.timestamp;const w=this.getClosestProjectingParent();w&&this.linkedParentVersion!==w.layoutVersion&&!w.options.layoutRoot&&this.removeRelativeTarget(),!this.targetDelta&&!this.relativeTarget&&(w&&w.layout?this.createRelativeTarget(w,this.layout.layoutBox,w.layout.layoutBox):this.removeRelativeTarget()),!(!this.relativeTarget&&!this.targetDelta)&&(this.target||(this.target=ft(),this.targetWithTransforms=ft()),this.relativeTarget&&this.relativeTargetOrigin&&this.relativeParent&&this.relativeParent.target?(this.forceRelativeParentToResolveTarget(),o3(this.target,this.relativeTarget,this.relativeParent.target)):this.targetDelta?(this.resumingFrom?this.target=this.applyTransform(this.layout.layoutBox):hn(this.target,this.layout.layoutBox),U1(this.target,this.targetDelta)):hn(this.target,this.layout.layoutBox),this.attemptToResolveRelativeTarget&&(this.attemptToResolveRelativeTarget=!1,w&&!!w.resumingFrom==!!this.resumingFrom&&!w.options.layoutScroll&&w.target&&this.animationProgress!==1?this.createRelativeTarget(w,this.target,w.target):this.relativeParent=this.relativeTarget=void 0))}getClosestProjectingParent(){if(!(!this.parent||pu(this.parent.latestValues)||P1(this.parent.latestValues)))return this.parent.isProjecting()?this.parent:this.parent.getClosestProjectingParent()}isProjecting(){return!!((this.relativeTarget||this.targetDelta||this.options.layoutRoot)&&this.layout)}createRelativeTarget(u,f,g){this.relativeParent=u,this.linkedParentVersion=u.layoutVersion,this.forceRelativeParentToResolveTarget(),this.relativeTarget=ft(),this.relativeTargetOrigin=ft(),Qs(this.relativeTargetOrigin,f,g),hn(this.relativeTarget,this.relativeTargetOrigin)}removeRelativeTarget(){this.relativeParent=this.relativeTarget=void 0}calcProjection(){const u=this.getLead(),f=!!this.resumingFrom||this!==u;let g=!0;if((this.isProjectionDirty||this.parent?.isProjectionDirty)&&(g=!1),f&&(this.isSharedProjectionDirty||this.isTransformDirty)&&(g=!1),this.resolvedRelativeTargetAt===kt.timestamp&&(g=!1),g)return;const{layout:y,layoutId:m}=this.options;if(this.isTreeAnimating=!!(this.parent&&this.parent.isTreeAnimating||this.currentAnimation||this.pendingAnimation),this.isTreeAnimating||(this.targetDelta=this.relativeTarget=void 0),!this.layout||!(y||m))return;hn(this.layoutCorrected,this.layout.layoutBox);const v=this.treeScale.x,w=this.treeScale.y;Lw(this.layoutCorrected,this.treeScale,this.path,f),u.layout&&!u.target&&(this.treeScale.x!==1||this.treeScale.y!==1)&&(u.target=u.layout.layoutBox,u.targetWithTransforms=ft());const{target:b}=u;if(!b){this.prevProjectionDelta&&(this.createProjectionDeltas(),this.scheduleRender());return}!this.projectionDelta||!this.prevProjectionDelta?this.createProjectionDeltas():(Im(this.prevProjectionDelta.x,this.projectionDelta.x),Im(this.prevProjectionDelta.y,this.projectionDelta.y)),no(this.projectionDelta,this.layoutCorrected,b,this.latestValues),(this.treeScale.x!==v||this.treeScale.y!==w||!Qm(this.projectionDelta.x,this.prevProjectionDelta.x)||!Qm(this.projectionDelta.y,this.prevProjectionDelta.y))&&(this.hasProjected=!0,this.scheduleRender(),this.notifyListeners("projectionUpdate",b))}hide(){this.isVisible=!1}show(){this.isVisible=!0}scheduleRender(u=!0){if(this.options.visualElement?.scheduleRender(),u){const f=this.getStack();f&&f.scheduleRender()}this.resumingFrom&&!this.resumingFrom.instance&&(this.resumingFrom=void 0)}createProjectionDeltas(){this.prevProjectionDelta=Ur(),this.projectionDelta=Ur(),this.projectionDeltaWithTransform=Ur()}setAnimationOrigin(u,f=!1){const g=this.snapshot,y=g?g.latestValues:{},m={...this.latestValues},v=Ur();(!this.relativeParent||!this.relativeParent.options.layoutRoot)&&(this.relativeTarget=this.relativeTargetOrigin=void 0),this.attemptToResolveRelativeTarget=!f;const w=ft(),b=g?g.source:void 0,A=this.layout?this.layout.source:void 0,x=b!==A,j=this.getStack(),T=!j||j.members.length<=1,D=!!(x&&!T&&this.options.crossfade===!0&&!this.path.some(B3));this.animationProgress=0;let _;this.mixTargetDelta=L=>{const B=L/1e3;ry(v.x,u.x,B),ry(v.y,u.y,B),this.setTargetDelta(v),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&this.relativeParent&&this.relativeParent.layout&&(Qs(w,this.layout.layoutBox,this.relativeParent.layout.layoutBox),z3(this.relativeTarget,this.relativeTargetOrigin,w,B),_&&d3(this.relativeTarget,_)&&(this.isProjectionDirty=!1),_||(_=ft()),hn(_,this.relativeTarget)),x&&(this.animationValues=m,p3(m,y,this.latestValues,B,D,T)),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=B},this.mixTargetDelta(this.options.layoutRoot?1e3:0)}startAnimation(u){this.notifyListeners("animationStart"),this.currentAnimation?.stop(),this.resumingFrom?.currentAnimation?.stop(),this.pendingAnimation&&(vi(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=Je.update(()=>{Hs.hasAnimatedSinceResize=!0,this.motionValue||(this.motionValue=Gr(0)),this.currentAnimation=m3(this.motionValue,[0,1e3],{...u,velocity:0,isSync:!0,onUpdate:f=>{this.mixTargetDelta(f),u.onUpdate&&u.onUpdate(f)},onStop:()=>{},onComplete:()=>{u.onComplete&&u.onComplete(),this.completeAnimation()}}),this.resumingFrom&&(this.resumingFrom.currentAnimation=this.currentAnimation),this.pendingAnimation=void 0})}completeAnimation(){this.resumingFrom&&(this.resumingFrom.currentAnimation=void 0,this.resumingFrom.preserveOpacity=void 0);const u=this.getStack();u&&u.exitAnimationComplete(),this.resumingFrom=this.currentAnimation=this.animationValues=void 0,this.notifyListeners("animationComplete")}finishAnimation(){this.currentAnimation&&(this.mixTargetDelta&&this.mixTargetDelta(w3),this.currentAnimation.stop()),this.completeAnimation()}applyTransformsToTarget(){const u=this.getLead();let{targetWithTransforms:f,target:g,layout:y,latestValues:m}=u;if(!(!f||!g||!y)){if(this!==u&&this.layout&&y&&i0(this.options.animationType,this.layout.layoutBox,y.layoutBox)){g=this.target||ft();const v=_t(this.layout.layoutBox.x);g.x.min=u.target.x.min,g.x.max=g.x.min+v;const w=_t(this.layout.layoutBox.y);g.y.min=u.target.y.min,g.y.max=g.y.min+w}hn(f,g),Vr(f,m),no(this.projectionDeltaWithTransform,this.layoutCorrected,f,m)}}registerSharedNode(u,f){this.sharedNodes.has(u)||this.sharedNodes.set(u,new x3),this.sharedNodes.get(u).add(f);const y=f.options.initialPromotionConfig;f.promote({transition:y?y.transition:void 0,preserveFollowOpacity:y&&y.shouldPreserveFollowOpacity?y.shouldPreserveFollowOpacity(f):void 0})}isLead(){const u=this.getStack();return u?u.lead===this:!0}getLead(){const{layoutId:u}=this.options;return u?this.getStack()?.lead||this:this}getPrevLead(){const{layoutId:u}=this.options;return u?this.getStack()?.prevLead:void 0}getStack(){const{layoutId:u}=this.options;if(u)return this.root.sharedNodes.get(u)}promote({needsReset:u,transition:f,preserveFollowOpacity:g}={}){const y=this.getStack();y&&y.promote(this,g),u&&(this.projectionDelta=void 0,this.needsReset=!0),f&&this.setOptions({transition:f})}relegate(){const u=this.getStack();return u?u.relegate(this):!1}resetSkewAndRotation(){const{visualElement:u}=this.options;if(!u)return;let f=!1;const{latestValues:g}=u;if((g.z||g.rotate||g.rotateX||g.rotateY||g.rotateZ||g.skewX||g.skewY)&&(f=!0),!f)return;const y={};g.z&&zd("z",u,y,this.animationValues);for(let m=0;m<Rd.length;m++)zd(`rotate${Rd[m]}`,u,y,this.animationValues),zd(`skew${Rd[m]}`,u,y,this.animationValues);u.render();for(const m in y)u.setStaticValue(m,y[m]),this.animationValues&&(this.animationValues[m]=y[m]);u.scheduleRender()}applyProjectionStyles(u,f){if(!this.instance||this.isSVG)return;if(!this.isVisible){u.visibility="hidden";return}const g=this.getTransformTemplate();if(this.needsReset){this.needsReset=!1,u.visibility="",u.opacity="",u.pointerEvents=Ws(f?.pointerEvents)||"",u.transform=g?g(this.latestValues,""):"none";return}const y=this.getLead();if(!this.projectionDelta||!this.layout||!y.target){this.options.layoutId&&(u.opacity=this.latestValues.opacity!==void 0?this.latestValues.opacity:1,u.pointerEvents=Ws(f?.pointerEvents)||""),this.hasProjected&&!Vi(this.latestValues)&&(u.transform=g?g({},""):"none",this.hasProjected=!1);return}u.visibility="";const m=y.animationValues||y.latestValues;this.applyTransformsToTarget();let v=u3(this.projectionDeltaWithTransform,this.treeScale,m);g&&(v=g(m,v)),u.transform=v;const{x:w,y:b}=this.projectionDelta;u.transformOrigin=`${w.origin*100}% ${b.origin*100}% 0`,y.animationValues?u.opacity=y===this?m.opacity??this.latestValues.opacity??1:this.preserveOpacity?this.latestValues.opacity:m.opacityExit:u.opacity=y===this?m.opacity!==void 0?m.opacity:"":m.opacityExit!==void 0?m.opacityExit:0;for(const A in gu){if(m[A]===void 0)continue;const{correct:x,applyTo:j,isCSSVariable:T}=gu[A],D=v==="none"?m[A]:x(m[A],y);if(j){const _=j.length;for(let L=0;L<_;L++)u[j[L]]=D}else T?this.options.visualElement.renderState.vars[A]=D:u[A]=D}this.options.layoutId&&(u.pointerEvents=y===this?Ws(f?.pointerEvents)||"":"none")}clearSnapshot(){this.resumeFrom=this.snapshot=void 0}resetTree(){this.root.nodes.forEach(u=>u.currentAnimation?.stop()),this.root.nodes.forEach(ty),this.root.sharedNodes.clear()}}}function S3(n){n.updateLayout()}function T3(n){const r=n.resumeFrom?.snapshot||n.snapshot;if(n.isLead()&&n.layout&&r&&n.hasListeners("didUpdate")){const{layoutBox:o,measuredBox:l}=n.layout,{animationType:d}=n.options,p=r.source!==n.layout.source;d==="size"?tn(m=>{const v=p?r.measuredBox[m]:r.layoutBox[m],w=_t(v);v.min=o[m].min,v.max=v.min+w}):i0(d,r.layoutBox,o)&&tn(m=>{const v=p?r.measuredBox[m]:r.layoutBox[m],w=_t(o[m]);v.max=v.min+w,n.relativeTarget&&!n.currentAnimation&&(n.isProjectionDirty=!0,n.relativeTarget[m].max=n.relativeTarget[m].min+w)});const u=Ur();no(u,o,r.layoutBox);const f=Ur();p?no(f,n.applyTransform(l,!0),r.measuredBox):no(f,o,r.layoutBox);const g=!Q1(u);let y=!1;if(!n.resumeFrom){const m=n.getClosestProjectingParent();if(m&&!m.resumeFrom){const{snapshot:v,layout:w}=m;if(v&&w){const b=ft();Qs(b,r.layoutBox,v.layoutBox);const A=ft();Qs(A,o,w.layoutBox),J1(b,A)||(y=!0),m.options.layoutRoot&&(n.relativeTarget=A,n.relativeTargetOrigin=b,n.relativeParent=m)}}}n.notifyListeners("didUpdate",{layout:o,snapshot:r,delta:f,layoutDelta:u,hasLayoutChanged:g,hasRelativeLayoutChanged:y})}else if(n.isLead()){const{onExitComplete:o}=n.options;o&&o()}n.options.transition=void 0}function A3(n){n.parent&&(n.isProjecting()||(n.isProjectionDirty=n.parent.isProjectionDirty),n.isSharedProjectionDirty||(n.isSharedProjectionDirty=!!(n.isProjectionDirty||n.parent.isProjectionDirty||n.parent.isSharedProjectionDirty)),n.isTransformDirty||(n.isTransformDirty=n.parent.isTransformDirty))}function C3(n){n.isProjectionDirty=n.isSharedProjectionDirty=n.isTransformDirty=!1}function j3(n){n.clearSnapshot()}function ty(n){n.clearMeasurements()}function ny(n){n.isLayoutDirty=!1}function E3(n){const{visualElement:r}=n.options;r&&r.getProps().onBeforeLayoutMeasure&&r.notify("BeforeLayoutMeasure"),n.resetTransform()}function iy(n){n.finishAnimation(),n.targetDelta=n.relativeTarget=n.target=void 0,n.isProjectionDirty=!0}function D3(n){n.resolveTargetDelta()}function _3(n){n.calcProjection()}function M3(n){n.resetSkewAndRotation()}function R3(n){n.removeLeadSnapshot()}function ry(n,r,o){n.translate=tt(r.translate,0,o),n.scale=tt(r.scale,1,o),n.origin=r.origin,n.originPoint=r.originPoint}function ay(n,r,o,l){n.min=tt(r.min,o.min,l),n.max=tt(r.max,o.max,l)}function z3(n,r,o,l){ay(n.x,r.x,o.x,l),ay(n.y,r.y,o.y,l)}function B3(n){return n.animationValues&&n.animationValues.opacityExit!==void 0}const L3={duration:.45,ease:[.4,0,.1,1]},oy=n=>typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes(n),sy=oy("applewebkit/")&&!oy("chrome/")?Math.round:rn;function ly(n){n.min=sy(n.min),n.max=sy(n.max)}function O3(n){ly(n.x),ly(n.y)}function i0(n,r,o){return n==="position"||n==="preserve-aspect"&&!a3(Km(r),Km(o),.2)}function N3(n){return n!==n.root&&n.scroll?.wasRoot}const P3=n0({attachResizeListener:(n,r)=>uo(n,"resize",r),measureScroll:()=>({x:document.documentElement.scrollLeft||document.body?.scrollLeft||0,y:document.documentElement.scrollTop||document.body?.scrollTop||0}),checkIsScrollRoot:()=>!0}),Bd={current:void 0},r0=n0({measureScroll:n=>({x:n.scrollLeft,y:n.scrollTop}),defaultParent:()=>{if(!Bd.current){const n=new P3({});n.mount(window),n.setOptions({layoutScroll:!0}),Bd.current=n}return Bd.current},resetTransform:(n,r)=>{n.style.transform=r!==void 0?r:"none"},checkIsScrollRoot:n=>window.getComputedStyle(n).position==="fixed"}),ih=V.createContext({transformPagePoint:n=>n,isStatic:!1,reducedMotion:"never"});function cy(n,r){if(typeof n=="function")return n(r);n!=null&&(n.current=r)}function U3(...n){return r=>{let o=!1;const l=n.map(d=>{const p=cy(d,r);return!o&&typeof p=="function"&&(o=!0),p});if(o)return()=>{for(let d=0;d<l.length;d++){const p=l[d];typeof p=="function"?p():cy(n[d],null)}}}}function I3(...n){return V.useCallback(U3(...n),n)}class V3 extends V.Component{getSnapshotBeforeUpdate(r){const o=this.props.childRef.current;if(o&&r.isPresent&&!this.props.isPresent){const l=o.offsetParent,d=uu(l)&&l.offsetWidth||0,p=uu(l)&&l.offsetHeight||0,u=this.props.sizeRef.current;u.height=o.offsetHeight||0,u.width=o.offsetWidth||0,u.top=o.offsetTop,u.left=o.offsetLeft,u.right=d-u.width-u.left,u.bottom=p-u.height-u.top}return null}componentDidUpdate(){}render(){return this.props.children}}function F3({children:n,isPresent:r,anchorX:o,anchorY:l,root:d}){const p=V.useId(),u=V.useRef(null),f=V.useRef({width:0,height:0,top:0,left:0,right:0,bottom:0}),{nonce:g}=V.useContext(ih),y=n.props?.ref??n?.ref,m=I3(u,y);return V.useInsertionEffect(()=>{const{width:v,height:w,top:b,left:A,right:x,bottom:j}=f.current;if(r||!u.current||!v||!w)return;const T=o==="left"?`left: ${A}`:`right: ${x}`,D=l==="bottom"?`bottom: ${j}`:`top: ${b}`;u.current.dataset.motionPopId=p;const _=document.createElement("style");g&&(_.nonce=g);const L=d??document.head;return L.appendChild(_),_.sheet&&_.sheet.insertRule(`
35          [data-motion-pop-id="${p}"] {
36            position: absolute !important;
37            width: ${v}px !important;
38            height: ${w}px !important;
39            ${T}px !important;
40            ${D}px !important;
41          }
42        `),()=>{L.contains(_)&&L.removeChild(_)}},[r]),s.jsx(V3,{isPresent:r,childRef:u,sizeRef:f,children:V.cloneElement(n,{ref:m})})}const W3=({children:n,initial:r,isPresent:o,onExitComplete:l,custom:d,presenceAffectsLayout:p,mode:u,anchorX:f,anchorY:g,root:y})=>{const m=Du(H3),v=V.useId();let w=!0,b=V.useMemo(()=>(w=!1,{id:v,initial:r,isPresent:o,custom:d,onExitComplete:A=>{m.set(A,!0);for(const x of m.values())if(!x)return;l&&l()},register:A=>(m.set(A,!1),()=>m.delete(A))}),[o,m,l]);return p&&w&&(b={...b}),V.useMemo(()=>{m.forEach((A,x)=>m.set(x,!1))},[o]),V.useEffect(()=>{!o&&!m.size&&l&&l()},[o]),u==="popLayout"&&(n=s.jsx(F3,{isPresent:o,anchorX:f,anchorY:g,root:y,children:n})),s.jsx(el.Provider,{value:b,children:n})};function H3(){return new Map}function a0(n=!0){const r=V.useContext(el);if(r===null)return[!0,null];const{isPresent:o,onExitComplete:l,register:d}=r,p=V.useId();V.useEffect(()=>{if(n)return d(p)},[n]);const u=V.useCallback(()=>n&&l&&l(p),[p,l,n]);return!o&&l?[!1,u]:[!0]}const Os=n=>n.key||"";function dy(n){const r=[];return V.Children.forEach(n,o=>{V.isValidElement(o)&&r.push(o)}),r}const an=({children:n,custom:r,initial:o=!0,onExitComplete:l,presenceAffectsLayout:d=!0,mode:p="sync",propagate:u=!1,anchorX:f="left",anchorY:g="top",root:y})=>{const[m,v]=a0(u),w=V.useMemo(()=>dy(n),[n]),b=u&&!m?[]:w.map(Os),A=V.useRef(!0),x=V.useRef(w),j=Du(()=>new Map),T=V.useRef(new Set),[D,_]=V.useState(w),[L,B]=V.useState(w);Ny(()=>{A.current=!1,x.current=w;for(let W=0;W<L.length;W++){const H=Os(L[W]);b.includes(H)?(j.delete(H),T.current.delete(H)):j.get(H)!==!0&&j.set(H,!1)}},[L,b.length,b.join("-")]);const P=[];if(w!==D){let W=[...w];for(let H=0;H<L.length;H++){const ae=L[H],ve=Os(ae);b.includes(ve)||(W.splice(H,0,ae),P.push(ae))}return p==="wait"&&P.length&&(W=P),B(dy(W)),_(w),null}const{forceRender:z}=V.useContext(Eu);return s.jsx(s.Fragment,{children:L.map(W=>{const H=Os(W),ae=u&&!m?!1:w===L||b.includes(H),ve=()=>{if(T.current.has(H))return;if(T.current.add(H),j.has(H))j.set(H,!0);else return;let N=!0;j.forEach(ie=>{ie||(N=!1)}),N&&(z?.(),B(x.current),u&&v?.(),l&&l())};return s.jsx(W3,{isPresent:ae,initial:!A.current||o?void 0:!1,custom:r,presenceAffectsLayout:d,mode:p,root:y,onExitComplete:ae?void 0:ve,anchorX:f,anchorY:g,children:W},H)})})},o0=V.createContext({strict:!1}),uy={animation:["animate","variants","whileHover","whileTap","exit","whileInView","whileFocus","whileDrag"],exit:["exit"],drag:["drag","dragControls"],focus:["whileFocus"],hover:["whileHover","onHoverStart","onHoverEnd"],tap:["whileTap","onTap","onTapStart","onTapCancel"],pan:["onPan","onPanStart","onPanSessionStart","onPanEnd"],inView:["whileInView","onViewportEnter","onViewportLeave"],layout:["layout","layoutId"]};let hy=!1;function G3(){if(hy)return;const n={};for(const r in uy)n[r]={isEnabled:o=>uy[r].some(l=>!!o[l])};L1(n),hy=!0}function s0(){return G3(),Mw()}function q3(n){const r=s0();for(const o in n)r[o]={...r[o],...n[o]};L1(r)}const Y3=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","custom","inherit","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","globalTapTarget","ignoreStrict","viewport"]);function Js(n){return n.startsWith("while")||n.startsWith("drag")&&n!=="draggable"||n.startsWith("layout")||n.startsWith("onTap")||n.startsWith("onPan")||n.startsWith("onLayout")||Y3.has(n)}let l0=n=>!Js(n);function Z3(n){typeof n=="function"&&(l0=r=>r.startsWith("on")?!Js(r):n(r))}try{Z3(require("@emotion/is-prop-valid").default)}catch{}function X3(n,r,o){const l={};for(const d in n)d==="values"&&typeof n.values=="object"||(l0(d)||o===!0&&Js(d)||!r&&!Js(d)||n.draggable&&d.startsWith("onDrag"))&&(l[d]=n[d]);return l}const il=V.createContext({});function K3(n,r){if(nl(n)){const{initial:o,animate:l}=n;return{initial:o===!1||co(o)?o:void 0,animate:co(l)?l:void 0}}return n.inherit!==!1?r:{}}function Q3(n){const{initial:r,animate:o}=K3(n,V.useContext(il));return V.useMemo(()=>({initial:r,animate:o}),[py(r),py(o)])}function py(n){return Array.isArray(n)?n.join(" "):n}const rh=()=>({style:{},transform:{},transformOrigin:{},vars:{}});function c0(n,r,o){for(const l in r)!At(r[l])&&!F1(l,o)&&(n[l]=r[l])}function J3({transformTemplate:n},r){return V.useMemo(()=>{const o=rh();return th(o,r,n),Object.assign({},o.vars,o.style)},[r])}function $3(n,r){const o=n.style||{},l={};return c0(l,o,n),Object.assign(l,J3(n,r)),l}function e5(n,r){const o={},l=$3(n,r);return n.drag&&n.dragListener!==!1&&(o.draggable=!1,l.userSelect=l.WebkitUserSelect=l.WebkitTouchCallout="none",l.touchAction=n.drag===!0?"none":`pan-${n.drag==="x"?"y":"x"}`),n.tabIndex===void 0&&(n.onTap||n.onTapStart||n.whileTap)&&(o.tabIndex=0),o.style=l,o}const d0=()=>({...rh(),attrs:{}});function t5(n,r,o,l){const d=V.useMemo(()=>{const p=d0();return W1(p,r,G1(l),n.transformTemplate,n.style),{...p.attrs,style:{...p.style}}},[r]);if(n.style){const p={};c0(p,n.style,n),d.style={...p,...d.style}}return d}const n5=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function ah(n){return typeof n!="string"||n.includes("-")?!1:!!(n5.indexOf(n)>-1||/[A-Z]/u.test(n))}function i5(n,r,o,{latestValues:l},d,p=!1,u){const g=(u??ah(n)?t5:e5)(r,l,d,n),y=X3(r,typeof n=="string",p),m=n!==V.Fragment?{...y,...g,ref:o}:{},{children:v}=r,w=V.useMemo(()=>At(v)?v.get():v,[v]);return V.createElement(n,{...m,children:w})}function r5({scrapeMotionValuesFromProps:n,createRenderState:r},o,l,d){return{latestValues:a5(o,l,d,n),renderState:r()}}function a5(n,r,o,l){const d={},p=l(n,{});for(const w in p)d[w]=Ws(p[w]);let{initial:u,animate:f}=n;const g=nl(n),y=B1(n);r&&y&&!g&&n.inherit!==!1&&(u===void 0&&(u=r.initial),f===void 0&&(f=r.animate));let m=o?o.initial===!1:!1;m=m||u===!1;const v=m?f:u;if(v&&typeof v!="boolean"&&!tl(v)){const w=Array.isArray(v)?v:[v];for(let b=0;b<w.length;b++){const A=Zu(n,w[b]);if(A){const{transitionEnd:x,transition:j,...T}=A;for(const D in T){let _=T[D];if(Array.isArray(_)){const L=m?_.length-1:0;_=_[L]}_!==null&&(d[D]=_)}for(const D in x)d[D]=x[D]}}}return d}const u0=n=>(r,o)=>{const l=V.useContext(il),d=V.useContext(el),p=()=>r5(n,r,l,d);return o?p():Du(p)},o5=u0({scrapeMotionValuesFromProps:nh,createRenderState:rh}),s5=u0({scrapeMotionValuesFromProps:q1,createRenderState:d0}),l5=Symbol.for("motionComponentSymbol");function c5(n,r,o){const l=V.useRef(o);V.useInsertionEffect(()=>{l.current=o});const d=V.useRef(null);return V.useCallback(p=>{p&&n.onMount?.(p),r&&(p?r.mount(p):r.unmount());const u=l.current;if(typeof u=="function")if(p){const f=u(p);typeof f=="function"&&(d.current=f)}else d.current?(d.current(),d.current=null):u(p);else u&&(u.current=p)},[r])}const h0=V.createContext({});function $a(n){return n&&typeof n=="object"&&Object.prototype.hasOwnProperty.call(n,"current")}function d5(n,r,o,l,d,p){const{visualElement:u}=V.useContext(il),f=V.useContext(o0),g=V.useContext(el),y=V.useContext(ih).reducedMotion,m=V.useRef(null);l=l||f.renderer,!m.current&&l&&(m.current=l(n,{visualState:r,parent:u,props:o,presenceContext:g,blockInitialAnimation:g?g.initial===!1:!1,reducedMotionConfig:y,isSVG:p}));const v=m.current,w=V.useContext(h0);v&&!v.projection&&d&&(v.type==="html"||v.type==="svg")&&u5(m.current,o,d,w);const b=V.useRef(!1);V.useInsertionEffect(()=>{v&&b.current&&v.update(o,g)});const A=o[x1],x=V.useRef(!!A&&!window.MotionHandoffIsComplete?.(A)&&window.MotionHasOptimisedAnimation?.(A));return Ny(()=>{v&&(b.current=!0,window.MotionIsMounted=!0,v.updateFeatures(),v.scheduleRenderMicrotask(),x.current&&v.animationState&&v.animationState.animateChanges())}),V.useEffect(()=>{v&&(!x.current&&v.animationState&&v.animationState.animateChanges(),x.current&&(queueMicrotask(()=>{window.MotionHandoffMarkAsComplete?.(A)}),x.current=!1),v.enteringChildren=void 0)}),v}function u5(n,r,o,l){const{layoutId:d,layout:p,drag:u,dragConstraints:f,layoutScroll:g,layoutRoot:y,layoutCrossfade:m}=r;n.projection=new o(n.latestValues,r["data-framer-portal-id"]?void 0:p0(n.parent)),n.projection.setOptions({layoutId:d,layout:p,alwaysMeasureLayout:!!u||f&&$a(f),visualElement:n,animationType:typeof p=="string"?p:"both",initialPromotionConfig:l,crossfade:m,layoutScroll:g,layoutRoot:y})}function p0(n){if(n)return n.options.allowProjection!==!1?n.projection:p0(n.parent)}function Ld(n,{forwardMotionProps:r=!1,type:o}={},l,d){l&&q3(l);const p=o?o==="svg":ah(n),u=p?s5:o5;function f(y,m){let v;const w={...V.useContext(ih),...y,layoutId:h5(y)},{isStatic:b}=w,A=Q3(y),x=u(y,b);if(!b&&Oy){p5();const j=f5(w);v=j.MeasureLayout,A.visualElement=d5(n,x,w,d,j.ProjectionNode,p)}return s.jsxs(il.Provider,{value:A,children:[v&&A.visualElement?s.jsx(v,{visualElement:A.visualElement,...w}):null,i5(n,y,c5(x,A.visualElement,m),x,b,r,p)]})}f.displayName=`motion.${typeof n=="string"?n:`create(${n.displayName??n.name??""})`}`;const g=V.forwardRef(f);return g[l5]=n,g}function h5({layoutId:n}){const r=V.useContext(Eu).id;return r&&n!==void 0?r+"-"+n:n}function p5(n,r){V.useContext(o0).strict}function f5(n){const r=s0(),{drag:o,layout:l}=r;if(!o&&!l)return{};const d={...o,...l};return{MeasureLayout:o?.isEnabled(n)||l?.isEnabled(n)?d.MeasureLayout:void 0,ProjectionNode:d.ProjectionNode}}function g5(n,r){if(typeof Proxy>"u")return Ld;const o=new Map,l=(p,u)=>Ld(p,u,n,r),d=(p,u)=>l(p,u);return new Proxy(d,{get:(p,u)=>u==="create"?l:(o.has(u)||o.set(u,Ld(u,void 0,n,r)),o.get(u))})}const m5=(n,r)=>r.isSVG??ah(n)?new Zw(r):new Fw(r,{allowProjection:n!==V.Fragment});class y5 extends xi{constructor(r){super(r),r.animationState||(r.animationState=$w(r))}updateAnimationControlsSubscription(){const{animate:r}=this.node.getProps();tl(r)&&(this.unmountControls=r.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){const{animate:r}=this.node.getProps(),{animate:o}=this.node.prevProps||{};r!==o&&this.updateAnimationControlsSubscription()}unmount(){this.node.animationState.reset(),this.unmountControls?.()}}let v5=0;class b5 extends xi{constructor(){super(...arguments),this.id=v5++}update(){if(!this.node.presenceContext)return;const{isPresent:r,onExitComplete:o}=this.node.presenceContext,{isPresent:l}=this.node.prevPresenceContext||{};if(!this.node.animationState||r===l)return;const d=this.node.animationState.setActive("exit",!r);o&&!r&&d.then(()=>{o(this.id)})}mount(){const{register:r,onExitComplete:o}=this.node.presenceContext||{};o&&o(this.id),r&&(this.unmount=r(this.id))}unmount(){}}const x5={animation:{Feature:y5},exit:{Feature:b5}};function mo(n){return{point:{x:n.pageX,y:n.pageY}}}const w5=n=>r=>Ju(r)&&n(r,mo(r));function io(n,r,o,l){return uo(n,r,w5(o),l)}const f0=({current:n})=>n?n.ownerDocument.defaultView:null,fy=(n,r)=>Math.abs(n-r);function k5(n,r){const o=fy(n.x,r.x),l=fy(n.y,r.y);return Math.sqrt(o**2+l**2)}const gy=new Set(["auto","scroll"]);class g0{constructor(r,o,{transformPagePoint:l,contextWindow:d=window,dragSnapToOrigin:p=!1,distanceThreshold:u=3,element:f}={}){if(this.startEvent=null,this.lastMoveEvent=null,this.lastMoveEventInfo=null,this.handlers={},this.contextWindow=window,this.scrollPositions=new Map,this.removeScrollListeners=null,this.onElementScroll=b=>{this.handleScroll(b.target)},this.onWindowScroll=()=>{this.handleScroll(window)},this.updatePoint=()=>{if(!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const b=Nd(this.lastMoveEventInfo,this.history),A=this.startEvent!==null,x=k5(b.offset,{x:0,y:0})>=this.distanceThreshold;if(!A&&!x)return;const{point:j}=b,{timestamp:T}=kt;this.history.push({...j,timestamp:T});const{onStart:D,onMove:_}=this.handlers;A||(D&&D(this.lastMoveEvent,b),this.startEvent=this.lastMoveEvent),_&&_(this.lastMoveEvent,b)},this.handlePointerMove=(b,A)=>{this.lastMoveEvent=b,this.lastMoveEventInfo=Od(A,this.transformPagePoint),Je.update(this.updatePoint,!0)},this.handlePointerUp=(b,A)=>{this.end();const{onEnd:x,onSessionEnd:j,resumeAnimation:T}=this.handlers;if((this.dragSnapToOrigin||!this.startEvent)&&T&&T(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const D=Nd(b.type==="pointercancel"?this.lastMoveEventInfo:Od(A,this.transformPagePoint),this.history);this.startEvent&&x&&x(b,D),j&&j(b,D)},!Ju(r))return;this.dragSnapToOrigin=p,this.handlers=o,this.transformPagePoint=l,this.distanceThreshold=u,this.contextWindow=d||window;const g=mo(r),y=Od(g,this.transformPagePoint),{point:m}=y,{timestamp:v}=kt;this.history=[{...m,timestamp:v}];const{onSessionStart:w}=o;w&&w(r,Nd(y,this.history)),this.removeListeners=po(io(this.contextWindow,"pointermove",this.handlePointerMove),io(this.contextWindow,"pointerup",this.handlePointerUp),io(this.contextWindow,"pointercancel",this.handlePointerUp)),f&&this.startScrollTracking(f)}startScrollTracking(r){let o=r.parentElement;for(;o;){const l=getComputedStyle(o);(gy.has(l.overflowX)||gy.has(l.overflowY))&&this.scrollPositions.set(o,{x:o.scrollLeft,y:o.scrollTop}),o=o.parentElement}this.scrollPositions.set(window,{x:window.scrollX,y:window.scrollY}),window.addEventListener("scroll",this.onElementScroll,{capture:!0,passive:!0}),window.addEventListener("scroll",this.onWindowScroll,{passive:!0}),this.removeScrollListeners=()=>{window.removeEventListener("scroll",this.onElementScroll,{capture:!0}),window.removeEventListener("scroll",this.onWindowScroll)}}handleScroll(r){const o=this.scrollPositions.get(r);if(!o)return;const l=r===window,d=l?{x:window.scrollX,y:window.scrollY}:{x:r.scrollLeft,y:r.scrollTop},p={x:d.x-o.x,y:d.y-o.y};p.x===0&&p.y===0||(l?this.lastMoveEventInfo&&(this.lastMoveEventInfo.point.x+=p.x,this.lastMoveEventInfo.point.y+=p.y):this.history.length>0&&(this.history[0].x-=p.x,this.history[0].y-=p.y),this.scrollPositions.set(r,d),Je.update(this.updatePoint,!0))}updateHandlers(r){this.handlers=r}end(){this.removeListeners&&this.removeListeners(),this.removeScrollListeners&&this.removeScrollListeners(),this.scrollPositions.clear(),vi(this.updatePoint)}}function Od(n,r){return r?{point:r(n.point)}:n}function my(n,r){return{x:n.x-r.x,y:n.y-r.y}}function Nd({point:n},r){return{point:n,delta:my(n,m0(r)),offset:my(n,S5(r)),velocity:T5(r,.1)}}function S5(n){return n[0]}function m0(n){return n[n.length-1]}function T5(n,r){if(n.length<2)return{x:0,y:0};let o=n.length-1,l=null;const d=m0(n);for(;o>=0&&(l=n[o],!(d.timestamp-l.timestamp>Fn(r)));)o--;if(!l)return{x:0,y:0};const p=nn(d.timestamp-l.timestamp);if(p===0)return{x:0,y:0};const u={x:(d.x-l.x)/p,y:(d.y-l.y)/p};return u.x===1/0&&(u.x=0),u.y===1/0&&(u.y=0),u}function A5(n,{min:r,max:o},l){return r!==void 0&&n<r?n=l?tt(r,n,l.min):Math.max(n,r):o!==void 0&&n>o&&(n=l?tt(o,n,l.max):Math.min(n,o)),n}function yy(n,r,o){return{min:r!==void 0?n.min+r:void 0,max:o!==void 0?n.max+o-(n.max-n.min):void 0}}function C5(n,{top:r,left:o,bottom:l,right:d}){return{x:yy(n.x,o,d),y:yy(n.y,r,l)}}function vy(n,r){let o=r.min-n.min,l=r.max-n.max;return r.max-r.min<n.max-n.min&&([o,l]=[l,o]),{min:o,max:l}}function j5(n,r){return{x:vy(n.x,r.x),y:vy(n.y,r.y)}}function E5(n,r){let o=.5;const l=_t(n),d=_t(r);return d>l?o=oo(r.min,r.max-l,n.min):l>d&&(o=oo(n.min,n.max-d,r.min)),An(0,1,o)}function D5(n,r){const o={};return r.min!==void 0&&(o.min=r.min-n.min),r.max!==void 0&&(o.max=r.max-n.min),o}const mu=.35;function _5(n=mu){return n===!1?n=0:n===!0&&(n=mu),{x:by(n,"left","right"),y:by(n,"top","bottom")}}function by(n,r,o){return{min:xy(n,r),max:xy(n,o)}}function xy(n,r){return typeof n=="number"?n:n[r]||0}const M5=new WeakMap;class R5{constructor(r){this.openDragLock=null,this.isDragging=!1,this.currentDirection=null,this.originPoint={x:0,y:0},this.constraints=!1,this.hasMutatedConstraints=!1,this.elastic=ft(),this.latestPointerEvent=null,this.latestPanInfo=null,this.visualElement=r}start(r,{snapToCursor:o=!1,distanceThreshold:l}={}){const{presenceContext:d}=this.visualElement;if(d&&d.isPresent===!1)return;const p=v=>{o?(this.stopAnimation(),this.snapToCursor(mo(v).point)):this.pauseAnimation()},u=(v,w)=>{this.stopAnimation();const{drag:b,dragPropagation:A,onDragStart:x}=this.getProps();if(b&&!A&&(this.openDragLock&&this.openDragLock(),this.openDragLock=bw(b),!this.openDragLock))return;this.latestPointerEvent=v,this.latestPanInfo=w,this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),tn(T=>{let D=this.getAxisMotionValue(T).get()||0;if(kn.test(D)){const{projection:_}=this.visualElement;if(_&&_.layout){const L=_.layout.layoutBox[T];L&&(D=_t(L)*(parseFloat(D)/100))}}this.originPoint[T]=D}),x&&Je.postRender(()=>x(v,w)),lu(this.visualElement,"transform");const{animationState:j}=this.visualElement;j&&j.setActive("whileDrag",!0)},f=(v,w)=>{this.latestPointerEvent=v,this.latestPanInfo=w;const{dragPropagation:b,dragDirectionLock:A,onDirectionLock:x,onDrag:j}=this.getProps();if(!b&&!this.openDragLock)return;const{offset:T}=w;if(A&&this.currentDirection===null){this.currentDirection=z5(T),this.currentDirection!==null&&x&&x(this.currentDirection);return}this.updateAxis("x",w.point,T),this.updateAxis("y",w.point,T),this.visualElement.render(),j&&j(v,w)},g=(v,w)=>{this.latestPointerEvent=v,this.latestPanInfo=w,this.stop(v,w),this.latestPointerEvent=null,this.latestPanInfo=null},y=()=>tn(v=>this.getAnimationState(v)==="paused"&&this.getAxisMotionValue(v).animation?.play()),{dragSnapToOrigin:m}=this.getProps();this.panSession=new g0(r,{onSessionStart:p,onStart:u,onMove:f,onSessionEnd:g,resumeAnimation:y},{transformPagePoint:this.visualElement.getTransformPagePoint(),dragSnapToOrigin:m,distanceThreshold:l,contextWindow:f0(this.visualElement),element:this.visualElement.current})}stop(r,o){const l=r||this.latestPointerEvent,d=o||this.latestPanInfo,p=this.isDragging;if(this.cancel(),!p||!d||!l)return;const{velocity:u}=d;this.startAnimation(u);const{onDragEnd:f}=this.getProps();f&&Je.postRender(()=>f(l,d))}cancel(){this.isDragging=!1;const{projection:r,animationState:o}=this.visualElement;r&&(r.isAnimationBlocked=!1),this.endPanSession();const{dragPropagation:l}=this.getProps();!l&&this.openDragLock&&(this.openDragLock(),this.openDragLock=null),o&&o.setActive("whileDrag",!1)}endPanSession(){this.panSession&&this.panSession.end(),this.panSession=void 0}updateAxis(r,o,l){const{drag:d}=this.getProps();if(!l||!Ns(r,d,this.currentDirection))return;const p=this.getAxisMotionValue(r);let u=this.originPoint[r]+l[r];this.constraints&&this.constraints[r]&&(u=A5(u,this.constraints[r],this.elastic[r])),p.set(u)}resolveConstraints(){const{dragConstraints:r,dragElastic:o}=this.getProps(),l=this.visualElement.projection&&!this.visualElement.projection.layout?this.visualElement.projection.measure(!1):this.visualElement.projection?.layout,d=this.constraints;r&&$a(r)?this.constraints||(this.constraints=this.resolveRefConstraints()):r&&l?this.constraints=C5(l.layoutBox,r):this.constraints=!1,this.elastic=_5(o),d!==this.constraints&&l&&this.constraints&&!this.hasMutatedConstraints&&tn(p=>{this.constraints!==!1&&this.getAxisMotionValue(p)&&(this.constraints[p]=D5(l.layoutBox[p],this.constraints[p]))})}resolveRefConstraints(){const{dragConstraints:r,onMeasureDragConstraints:o}=this.getProps();if(!r||!$a(r))return!1;const l=r.current,{projection:d}=this.visualElement;if(!d||!d.layout)return!1;const p=Ow(l,d.root,this.visualElement.getTransformPagePoint());let u=j5(d.layout.layoutBox,p);if(o){const f=o(zw(u));this.hasMutatedConstraints=!!f,f&&(u=N1(f))}return u}startAnimation(r){const{drag:o,dragMomentum:l,dragElastic:d,dragTransition:p,dragSnapToOrigin:u,onDragTransitionEnd:f}=this.getProps(),g=this.constraints||{},y=tn(m=>{if(!Ns(m,o,this.currentDirection))return;let v=g&&g[m]||{};u&&(v={min:0,max:0});const w=d?200:1e6,b=d?40:1e7,A={type:"inertia",velocity:l?r[m]:0,bounceStiffness:w,bounceDamping:b,timeConstant:750,restDelta:1,restSpeed:10,...p,...v};return this.startAxisValueAnimation(m,A)});return Promise.all(y).then(f)}startAxisValueAnimation(r,o){const l=this.getAxisMotionValue(r);return lu(this.visualElement,r),l.start(Yu(r,l,0,o,this.visualElement,!1))}stopAnimation(){tn(r=>this.getAxisMotionValue(r).stop())}pauseAnimation(){tn(r=>this.getAxisMotionValue(r).animation?.pause())}getAnimationState(r){return this.getAxisMotionValue(r).animation?.state}getAxisMotionValue(r){const o=`_drag${r.toUpperCase()}`,l=this.visualElement.getProps(),d=l[o];return d||this.visualElement.getValue(r,(l.initial?l.initial[r]:void 0)||0)}snapToCursor(r){tn(o=>{const{drag:l}=this.getProps();if(!Ns(o,l,this.currentDirection))return;const{projection:d}=this.visualElement,p=this.getAxisMotionValue(o);if(d&&d.layout){const{min:u,max:f}=d.layout.layoutBox[o],g=p.get()||0;p.set(r[o]-tt(u,f,.5)+g)}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:r,dragConstraints:o}=this.getProps(),{projection:l}=this.visualElement;if(!$a(o)||!l||!this.constraints)return;this.stopAnimation();const d={x:0,y:0};tn(u=>{const f=this.getAxisMotionValue(u);if(f&&this.constraints!==!1){const g=f.get();d[u]=E5({min:g,max:g},this.constraints[u])}});const{transformTemplate:p}=this.visualElement.getProps();this.visualElement.current.style.transform=p?p({},""):"none",l.root&&l.root.updateScroll(),l.updateLayout(),this.resolveConstraints(),tn(u=>{if(!Ns(u,r,null))return;const f=this.getAxisMotionValue(u),{min:g,max:y}=this.constraints[u];f.set(tt(g,y,d[u]))})}addListeners(){if(!this.visualElement.current)return;M5.set(this.visualElement,this);const r=this.visualElement.current,o=io(r,"pointerdown",g=>{const{drag:y,dragListener:m=!0}=this.getProps(),v=g.target,w=v!==r&&M1(v);y&&m&&!w&&this.start(g)}),l=()=>{const{dragConstraints:g}=this.getProps();$a(g)&&g.current&&(this.constraints=this.resolveRefConstraints())},{projection:d}=this.visualElement,p=d.addEventListener("measure",l);d&&!d.layout&&(d.root&&d.root.updateScroll(),d.updateLayout()),Je.read(l);const u=uo(window,"resize",()=>this.scalePositionWithinConstraints()),f=d.addEventListener("didUpdate",({delta:g,hasLayoutChanged:y})=>{this.isDragging&&y&&(tn(m=>{const v=this.getAxisMotionValue(m);v&&(this.originPoint[m]+=g[m].translate,v.set(v.get()+g[m].translate))}),this.visualElement.render())});return()=>{u(),o(),p(),f&&f()}}getProps(){const r=this.visualElement.getProps(),{drag:o=!1,dragDirectionLock:l=!1,dragPropagation:d=!1,dragConstraints:p=!1,dragElastic:u=mu,dragMomentum:f=!0}=r;return{...r,drag:o,dragDirectionLock:l,dragPropagation:d,dragConstraints:p,dragElastic:u,dragMomentum:f}}}function Ns(n,r,o){return(r===!0||r===n)&&(o===null||o===n)}function z5(n,r=10){let o=null;return Math.abs(n.y)>r?o="y":Math.abs(n.x)>r&&(o="x"),o}class B5 extends xi{constructor(r){super(r),this.removeGroupControls=rn,this.removeListeners=rn,this.controls=new R5(r)}mount(){const{dragControls:r}=this.node.getProps();r&&(this.removeGroupControls=r.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||rn}update(){const{dragControls:r}=this.node.getProps(),{dragControls:o}=this.node.prevProps||{};r!==o&&(this.removeGroupControls(),r&&(this.removeGroupControls=r.subscribe(this.controls)))}unmount(){this.removeGroupControls(),this.removeListeners(),this.controls.endPanSession()}}const wy=n=>(r,o)=>{n&&Je.postRender(()=>n(r,o))};class L5 extends xi{constructor(){super(...arguments),this.removePointerDownListener=rn}onPointerDown(r){this.session=new g0(r,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint(),contextWindow:f0(this.node)})}createPanHandlers(){const{onPanSessionStart:r,onPanStart:o,onPan:l,onPanEnd:d}=this.node.getProps();return{onSessionStart:wy(r),onStart:wy(o),onMove:l,onEnd:(p,u)=>{delete this.session,d&&Je.postRender(()=>d(p,u))}}}mount(){this.removePointerDownListener=io(this.node.current,"pointerdown",r=>this.onPointerDown(r))}update(){this.session&&this.session.updateHandlers(this.createPanHandlers())}unmount(){this.removePointerDownListener(),this.session&&this.session.end()}}let Pd=!1;class O5 extends V.Component{componentDidMount(){const{visualElement:r,layoutGroup:o,switchLayoutGroup:l,layoutId:d}=this.props,{projection:p}=r;p&&(o.group&&o.group.add(p),l&&l.register&&d&&l.register(p),Pd&&p.root.didUpdate(),p.addEventListener("animationComplete",()=>{this.safeToRemove()}),p.setOptions({...p.options,onExitComplete:()=>this.safeToRemove()})),Hs.hasEverUpdated=!0}getSnapshotBeforeUpdate(r){const{layoutDependency:o,visualElement:l,drag:d,isPresent:p}=this.props,{projection:u}=l;return u&&(u.isPresent=p,Pd=!0,d||r.layoutDependency!==o||o===void 0||r.isPresent!==p?u.willUpdate():this.safeToRemove(),r.isPresent!==p&&(p?u.promote():u.relegate()||Je.postRender(()=>{const f=u.getStack();(!f||!f.members.length)&&this.safeToRemove()}))),null}componentDidUpdate(){const{projection:r}=this.props.visualElement;r&&(r.root.didUpdate(),Qu.postRender(()=>{!r.currentAnimation&&r.isLead()&&this.safeToRemove()}))}componentWillUnmount(){const{visualElement:r,layoutGroup:o,switchLayoutGroup:l}=this.props,{projection:d}=r;Pd=!0,d&&(d.scheduleCheckAfterUnmount(),o&&o.group&&o.group.remove(d),l&&l.deregister&&l.deregister(d))}safeToRemove(){const{safeToRemove:r}=this.props;r&&r()}render(){return null}}function y0(n){const[r,o]=a0(),l=V.useContext(Eu);return s.jsx(O5,{...n,layoutGroup:l,switchLayoutGroup:V.useContext(h0),isPresent:r,safeToRemove:o})}const N5={pan:{Feature:L5},drag:{Feature:B5,ProjectionNode:r0,MeasureLayout:y0}};function ky(n,r,o){const{props:l}=n;n.animationState&&l.whileHover&&n.animationState.setActive("whileHover",o==="Start");const d="onHover"+o,p=l[d];p&&Je.postRender(()=>p(r,mo(r)))}class P5 extends xi{mount(){const{current:r}=this.node;r&&(this.unmount=xw(r,(o,l)=>(ky(this.node,l,"Start"),d=>ky(this.node,d,"End"))))}unmount(){}}class U5 extends xi{constructor(){super(...arguments),this.isActive=!1}onFocus(){let r=!1;try{r=this.node.current.matches(":focus-visible")}catch{r=!0}!r||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!0),this.isActive=!0)}onBlur(){!this.isActive||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!1),this.isActive=!1)}mount(){this.unmount=po(uo(this.node.current,"focus",()=>this.onFocus()),uo(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}function Sy(n,r,o){const{props:l}=n;if(n.current instanceof HTMLButtonElement&&n.current.disabled)return;n.animationState&&l.whileTap&&n.animationState.setActive("whileTap",o==="Start");const d="onTap"+(o==="End"?"":o),p=l[d];p&&Je.postRender(()=>p(r,mo(r)))}class I5 extends xi{mount(){const{current:r}=this.node;r&&(this.unmount=Sw(r,(o,l)=>(Sy(this.node,l,"Start"),(d,{success:p})=>Sy(this.node,d,p?"End":"Cancel")),{useGlobalTarget:this.node.props.globalTapTarget}))}unmount(){}}const yu=new WeakMap,Ud=new WeakMap,V5=n=>{const r=yu.get(n.target);r&&r(n)},F5=n=>{n.forEach(V5)};function W5({root:n,...r}){const o=n||document;Ud.has(o)||Ud.set(o,{});const l=Ud.get(o),d=JSON.stringify(r);return l[d]||(l[d]=new IntersectionObserver(F5,{root:n,...r})),l[d]}function H5(n,r,o){const l=W5(r);return yu.set(n,o),l.observe(n),()=>{yu.delete(n),l.unobserve(n)}}const G5={some:0,all:1};class q5 extends xi{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){this.unmount();const{viewport:r={}}=this.node.getProps(),{root:o,margin:l,amount:d="some",once:p}=r,u={root:o?o.current:void 0,rootMargin:l,threshold:typeof d=="number"?d:G5[d]},f=g=>{const{isIntersecting:y}=g;if(this.isInView===y||(this.isInView=y,p&&!y&&this.hasEnteredView))return;y&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",y);const{onViewportEnter:m,onViewportLeave:v}=this.node.getProps(),w=y?m:v;w&&w(g)};return H5(this.node.current,u,f)}mount(){this.startObserver()}update(){if(typeof IntersectionObserver>"u")return;const{props:r,prevProps:o}=this.node;["amount","margin","root"].some(Y5(r,o))&&this.startObserver()}unmount(){}}function Y5({viewport:n={}},{viewport:r={}}={}){return o=>n[o]!==r[o]}const Z5={inView:{Feature:q5},tap:{Feature:I5},focus:{Feature:U5},hover:{Feature:P5}},X5={layout:{ProjectionNode:r0,MeasureLayout:y0}},K5={...x5,...Z5,...N5,...X5},ke=g5(K5,m5),oh={initialize:async n=>{},requestTrackingAuthorization:async()=>({status:"notDetermined"}),trackingAuthorizationStatus:async()=>({status:"notDetermined"}
42),showBanner:async n=>{},hideBanner:async()=>{},resumeBanner:async()=>{},removeBanner:async()=>{},prepareInterstitial:async n=>{},showInterstitial:async()=>{},prepareRewardVideoAd:async()=>{},showRewardVideoAd:async()=>{},addListener:(n,r)=>({remove:async()=>{}}),removeAllListeners:async()=>{}},vu=!1,Q5={interstitialAdUnitId:"ca-app-pub-7143783115370529/4373291286"},J5=n=>Q5.interstitialAdUnitId,$5=async()=>{if(window.__ADMOB_INITIALIZED)return!0;if(window.__ADMOB_INIT_FAILED)return!1;try{console.warn("🚀 ADMOB: Initializing SDK..."),await Promise.race([oh.initialize({testingDevices:[],initializeForTesting:vu}),new Promise((n,r)=>setTimeout(()=>r(new Error("AdMob init timeout")),1e4))]),window.__ADMOB_INITIALIZED=!0,window.__ADMOB_CAN_SHOW_ADS=!0;try{window.dispatchEvent(new Event("admob:ready"))}catch{}return console.warn(`✅ ADMOB: Ready — ${vu?"TEST":"PRODUCTION"} mode`),sh()&&qi().catch(()=>{}),!0}catch(n){console.error("❌ ADMOB: Init failed —",n?.message||n),window.__ADMOB_INIT_FAILED=!0;try{window.dispatchEvent(new Event("admob:ready"))}catch{}return!1}},e6=2,v0=()=>{try{const n=localStorage.getItem("interstitial_ad_tracker");if(n){const r=JSON.parse(n),o=new Date().toDateString();if(r.date===o)return{count:r.count,date:o}}}catch{}return{count:0,date:new Date().toDateString()}},t6=()=>{const n=new Date().toDateString(),r=v0();localStorage.setItem("interstitial_ad_tracker",JSON.stringify({count:r.count+1,date:n}))},sh=()=>{const{count:n}=v0();return n<e6},qi=async()=>{if(!(!window.__ADMOB_INITIALIZED||window.__ADMOB_CAN_SHOW_ADS===!1||!sh()))try{const n={adId:J5("interstitial"),isTesting:vu};await oh.prepareInterstitial(n),window.__ADMOB_INTERSTITIAL_READY=!0,console.log("✅ Interstitial ad pre-loaded and ready")}catch(n){window.__ADMOB_INTERSTITIAL_READY=!1,console.error("❌ Failed to prepare interstitial:",n)}},n6=async()=>{if(!(!window.__ADMOB_INITIALIZED||window.__ADMOB_CAN_SHOW_ADS===!1||!sh()))try{if(!window.__ADMOB_INTERSTITIAL_READY){console.warn("⚠️ Interstitial not pre-loaded, loading on-demand..."),await qi();for(let n=0;n<16&&!window.__ADMOB_INTERSTITIAL_READY;n++)await new Promise(r=>setTimeout(r,500));if(!window.__ADMOB_INTERSTITIAL_READY){console.warn("⚠️ Interstitial still not ready after wait, skipping.");return}}window.__ADMOB_INTERSTITIAL_READY=!1,await oh.showInterstitial(),t6(),console.log("🎬 Interstitial ad shown"),setTimeout(()=>{qi().catch(()=>{})},5e3)}catch(n){window.__ADMOB_INTERSTITIAL_READY=!1,console.warn("⚠️ Interstitial failed to show:",n),qi().catch(()=>{})}};const Hr=()=>Fr.isNativePlatform(),i6=()=>Fr.getPlatform()==="android",qr=async(n="light")=>{};const r6=async()=>{},on={bounce:{type:"spring",stiffness:600,damping:18,mass:.8},snap:{type:"spring",stiffness:500,damping:24},draw:{duration:.22,ease:[.34,1.56,.64,1]}};function Zi(n,r){return{xmlns:"http://www.w3.org/2000/svg",width:n,height:n,viewBox:"0 0 24 24",fill:"none",stroke:r,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"}}const Ty=({size:n=24,color:r="currentColor",style:o,className:l})=>s.jsx(ke.svg,{...Zi(n,r),style:o,className:l,initial:{scale:.7},animate:{scale:1},transition:on.bounce,children:s.jsx(ke.path,{d:"M20 6 9 17l-5-5",initial:{pathLength:0,opacity:0},animate:{pathLength:1,opacity:1},transition:on.draw})}),a6=({size:n=24,color:r="currentColor",style:o,className:l})=>s.jsxs(ke.svg,{...Zi(n,r),style:o,className:l,whileHover:"hover",whileTap:{scale:.78},initial:"rest",children:[s.jsx(ke.rect,{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",variants:{rest:{x:0,y:0},hover:{x:2,y:-2}},transition:on.snap}),s.jsx(ke.path,{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",variants:{rest:{x:0,y:0},hover:{x:-1,y:1}},transition:{...on.snap,delay:.03}})]}),o6=({size:n=24,color:r="currentColor",style:o,className:l})=>s.jsxs(ke.svg,{...Zi(n,r),style:o,className:l,whileHover:"hover",whileTap:{scale:.82},initial:"rest",children:[s.jsx("path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}),s.jsxs(ke.g,{variants:{rest:{x:0,y:0},hover:{x:3,y:-3}},transition:on.bounce,children:[s.jsx("path",{d:"M15 3h6v6"}),s.jsx("path",{d:"M10 14 21 3"})]})]}),bu=({size:n=24,color:r="currentColor",style:o,className:l})=>s.jsxs(ke.svg,{...Zi(n,r),style:o,className:l,whileHover:{rotate:90,scale:1.1},whileTap:{scale:.78,rotate:45},transition:on.bounce,children:[s.jsx("path",{d:"M18 6 6 18"}),s.jsx("path",{d:"m6 6 12 12"})]}),s6=({size:n=24,color:r="currentColor",style:o,className:l})=>s.jsxs(ke.svg,{...Zi(n,r),style:o,className:l,whileHover:"hover",whileTap:{scale:.82},initial:"rest",children:[s.jsx(ke.path,{d:"M3 6h18",variants:{rest:{rotate:0,y:0},hover:{rotate:-20,y:-2}},style:{transformOrigin:"4px 6px"},transition:on.bounce}),s.jsxs(ke.g,{variants:{rest:{y:0},hover:{y:1}},transition:on.snap,children:[s.jsx("path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"}
42),s.jsx("path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"})]}),s.jsx("line",{x1:"10",x2:"10",y1:"11",y2:"17"}),s.jsx("line",{x1:"14",x2:"14",y1:"11",y2:"17"})]}),xu=({size:n=24,color:r="currentColor",style:o,className:l})=>s.jsxs(ke.svg,{...Zi(n,r),style:o,className:l,whileHover:"hover",initial:"rest",children:[s.jsx("circle",{cx:"12",cy:"12",r:"10"}),s.jsx(ke.polyline,{points:"12 6 12 12 16 14",variants:{rest:{rotate:0},hover:{rotate:60}},style:{transformOrigin:"12px 12px"},transition:on.bounce})]}),l6=({size:n=24,color:r="currentColor",style:o,className:l})=>s.jsxs(ke.svg,{...Zi(n,r),style:o,className:l,whileHover:"hover",whileTap:{scale:.88},initial:"rest",children:[s.jsx(ke.line,{x1:"4",x2:"20",y1:"6",y2:"6",variants:{rest:{scaleX:1},hover:{scaleX:.6}},style:{transformOrigin:"4px 6px"},transition:on.bounce}),s.jsx(ke.line,{x1:"4",x2:"20",y1:"12",y2:"12",variants:{rest:{scaleX:1},hover:{scaleX:1.2}},style:{transformOrigin:"4px 12px"},transition:{...on.bounce,delay:.05}}),s.jsx(ke.line,{x1:"4",x2:"20",y1:"18",y2:"18",variants:{rest:{scaleX:1},hover:{scaleX:.75}},style:{transformOrigin:"4px 18px"},transition:{...on.bounce,delay:.1}})]}),Xi=({isDownloadPage:n=!1})=>s.jsxs("a",{href:"/",onClick:r=>{n||(r.preventDefault(),window.dispatchEvent(new CustomEvent("setpage",{detail:"home"})))},className:"logo",children:[s.jsx("img",{src:"/newFavicon.png",alt:"",width:32,height:32,style:{borderRadius:"6px",width:32,height:32,objectFit:"contain"}}),"SendVault"]}),c6={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none"},Oe=V.forwardRef(({color:n="currentColor",size:r=24,strokeWidth:o,absoluteStrokeWidth:l=!1,className:d="",altIcon:p,showAlt:u=!1,icon:f,primaryColor:g,secondaryColor:y,disableSecondaryOpacity:m=!1,...v},w)=>{const b=o!==void 0?l?Number(o)*24/Number(r):o:void 0,A=b!==void 0?{strokeWidth:b,stroke:"currentColor"}:{},x={ref:w,...c6,width:r,height:r,color:g||n,className:d,...A,...v},T=[...u&&p?p:f].sort(([,D],[,_])=>{const L=D.opacity!==void 0;return _.opacity!==void 0?1:L?-1:0}).map(([D,_])=>{const L=_.opacity!==void 0,B=L&&!m?_.opacity:void 0,P=y?{..._.stroke!==void 0?{stroke:L?y:g||n}:{fill:L?y:g||n}}:{};return V.createElement(D,{..._,...A,...P,opacity:B,key:_.key})});return V.createElement("svg",x,T)});Oe.displayName="HugeiconsIcon";const d6=[["path",{d:"M18 9.00005C18 9.00005 13.5811 15 12 15C10.4188 15 6 9 6 9",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"0"}]],u6=[["path",{d:"M15 6C15 6 9.00001 10.4189 9 12C8.99999 13.5812 15 18 15 18",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"0"}]],h6=[["path",{d:"M9.00005 6C9.00005 6 15 10.4189 15 12C15 13.5812 9 18 9 18",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"0"}]],p6=[["path",{d:"M9 6.65032C9 6.65032 15.9383 6.10759 16.9154 7.08463C17.8924 8.06167 17.3496 15 17.3496 15M16.5 7.5L6.5 17.5",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"0"}]],f6=[["path",{d:"M2.00127 8.5L1.99911 13.997C1.99782 17.2979 1.99717 18.9484 3.02235 19.974C4.04754 20.9996 5.69801 20.9996 8.99895 20.9997L15 20.9998C18.2994 20.9999 19.949 21 20.9741 19.9751C21.9992 18.9502 21.9996 17.3005 22.0002 14.0012L22.0013 8.5",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"0"}],["path",{d:"M8.49857 6.5C8.49857 5.09554 8.49857 4.39331 8.83563 3.88886C8.98154 3.67048 9.16904 3.48298 9.38743 3.33706C9.89
42187 3 10.5941 3 11.9986 3C13.403 3 14.1053 3 14.6097 3.33706C14.8281 3.48298 15.0156 3.67048 15.1615 3.88886C15.4986 4.39331 15.4986 5.09554 15.4986 6.5",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"1"}],["path",{d:"M19.998 6.50016L3.99885 6.5C2.8944 6.50007 1.99876 7.39568 1.99866 8.50013C1.99876 10.7091 3.79005 12.5004 5.99901 12.5006H17.9978C20.2068 12.5005 21.998 10.7093 21.9981 8.5003C21.998 7.39582 21.1024 6.50023 19.998 6.50016Z",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"2"}],["path",{d:"M9.99857 12.5V13.5C9.99857 13.965 9.99857 14.1975 10.0497 14.3882C10.1884 14.9059 10.5927 15.3102 11.1103 15.4489C11.3011 15.5 11.5336 15.5 11.9986 15.5C12.4636 15.5 12.696 15.5 12.8868 15.4489C13.4044 15.3102 13.8088 14.9059 13.9475 14.3882C13.9986 14.1975 13.9986 13.965 13.9986 13.5V12.5",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"3"}]],g6=[["path",{d:"M18 6L6.00081 17.9992M17.9992 18L6 6.00085",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"0"}]],m6=[["path",{d:"M22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22C17.5228 22 22 17.5228 22 12Z",stroke:"currentColor",strokeWidth:"1.5",key:"0"}],["path",{d:"M8 12.75C8 12.75 9.6 13.6625 10.4 15C10.4 15 12.8 9.75 16 8",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"1"}]],y6=[["circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"1.5",key:"0"}],["path",{d:"M12 8V12L14 14",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"1"}]],v6=[["path",{d:"M9 15C9 12.1716 9 10.7574 9.87868 9.87868C10.7574 9 12.1716 9 15 9L16 9C18.8284 9 20.2426 9 21.1213 9.87868C22 10.7574 22 12.1716 22 15V16C22 18.8284 22 20.2426 21.1213 21.1213C20.2426 22 18.8284 22 16 22H15C12.1716 22 10.7574 22 9.87868 21.1213C9 20.2426 9 18.8284 9 16L9 15Z",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"0"}],["path",{d:"M16.9999 9C16.9975 6.04291 16.9528 4.51121 16.092 3.46243C15.9258 3.25989 15.7401 3.07418 15.5376 2.90796C14.4312 2 12.7875 2 9.5 2C6.21252 2 4.56878 2 3.46243 2.90796C3.25989 3.07417 3.07418 3.25989 2.90796 3.46243C2 4.56878 2 6.21252 2 9.5C2 12.7875 2 14.4312 2.90796 15.5376C3.07417 15.7401 3.25989 15.9258 3.46243 16.092C4.51121 16.9528 6.04291 16.9975 9 16.9999",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"1"}]],b6=[["path",{d:"M19.5 5.5L18.8803 15.5251C18.7219 18.0864 18.6428 19.3671 18.0008 20.2879C17.6833 20.7431 17.2747 21.1273 16.8007 21.416C15.8421 22 14.559 22 11.9927 22C9.42312 22 8.1383 22 7.17905 21.4149C6.7048 21.1257 6.296 20.7408 5.97868 20.2848C5.33688 19.3626 5.25945 18.0801 5.10461 15.5152L4.5 5.5",stroke:"currentColor",strokeLinecap:"round",strokeWidth:"1.5",key:"0"}],["path",{d:"M3 5.5H21M16.0557 5.5L15.3731 4.09173C14.9196 3.15626 14.6928 2.68852 14.3017 2.39681C14.215 2.3321 14.1231 2.27454 14.027 2.2247C13.5939 2 13.0741 2 12.0345 2C10.9688 2 10.436 2 9.99568 2.23412C9.8981 2.28601 9.80498 2.3459 9.71729 2.41317C9.32164 2.7167 9.10063 3.20155 8.65861 4.17126L8.05292 5.5",stroke:"currentColor",strokeLinecap:"round",strokeWidth:"1.5",key:"1"}]],x6=[["path",{d:"M2.99969 17.0002C2.99969 17.9302 2.99969 18.3952 3.10192 18.7767C3.37932 19.8119 4.18796 20.6206 5.22324 20.898C5.60474 21.0002 6.06972 21.0002 6.99969 21.0002L16.9997 21.0002C17.9297 21.0002 18.3947 21.0002 18.7762 20.898C19.8114 20.6206 20.6201 19.8119 20.8975 18.7767C20.9997 18.3952 20.9997 17.9302 20.9997 17.0002",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"0"}],["path",{d:"M16.4998 11.5002C16.4998 11.5002 13.1856 16.0002 11.9997 16.0002C10.8139 16.0002 7.49976 11.5002 7.49976 11.5002M11.9997 15.0002V3.00016",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"1"}]],w6=[["path",{d:"M2 2L22 22",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"0"}],["path",{d:"M19.8478 14.9369C20 14.5694 20 14.1606 20 13.3431V10C20 6.22876 20 4.34315 18.8284 3.17157C17.6569 2 15.7712 2 12 2C9.33333 2 7.60948 2 6.41421 2.41421M4.41421 4.41421C4 5.60948 4 7.33333 4 10L4 14.5442C4 17.7892 4 19.4117 4.88607 20.5107C5.06508 20.7327 5.26731 20.9349 5.48933 21.1139C6.58831 22 8.21082 22 11.4558 22C12.1614 22 12.5141 22 12.8372 21.886C12.9044 21.8623 12.9702 21.835 13.0345 21.8043C13.3436 21.6564 13.593 21.407 14.0919 20.9081L17.5 17.5",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"1"}],["path",{d:"M13 21.5L13 20.7487C13 17.9203 13 16.5061 13.8787 15.6274C14.1785 15.3276 14.5406 15.1301 15 15",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"2"}]],k6=[["path",{d:"M12 22C16.1421 22 19.5 18.6421 19.5 14.5C19.5 13.5 19.5 11.5 17.5 9C17.5 9 17.4004 11.8536 15.4262 11.4408C12.2331 10.7732 16.3551 4.50296 10.5 2C10.5 7 4.5 8.5 4.5 14.5C4.5 18.6421 7.85786 22 12 22Z",stroke:"currentColor",strokeLinejoin:"round",strokeWidth:"1.5",key:"0"}],["path",{d:"M12 19.0011C13.933 19.0011 15.5 16.9864 15.5 14.5011C12.3 15.7011 11.1667 12.9379 11 11C9.55426 11.5532 8.5 13.8256 8.5 15C8.5 17.4853 10.067 19.0011 12 19.0011Z",stroke:"currentColor",strokeLinejoin:"round",strokeWidth:"1.5",key:"1"}]],S6=[["path",{d:"M14 21L18 3",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"0"}],["path",{d:"M6 21L10 3",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"1"}],["path",{d:"M5 8H21",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"2"}],["path",{d:"M3 16H19",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"3"}]],T6=[["path",{d:"M13.5893 19.9677C12.6399 20.6776 11.3601 20.6776 10.4107 19.9677C7.58942 17.858 2 13.0348 2 8.69444C2 5.82563 4.10526 3.5 7 3.5C8.5 3.5 10 4 12 6C14 4 15.5 3.5 17 3.5C19.8947 3.5 22 5.82563 22 8.69444C22 9.78274 21.6486 10.9014 21.0775 12",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"0"}],["path",{d:"M14 16H17.5M17.5 16H21M17.5 16V12.5M17.5 16V19.5",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"1"}]],A6=[["path",{d:"M3 11.9896V14.5C3 17.7998 3 19.4497 4.02513 20.4749C5.05025 21.5 6.70017 21.5 10 21.5H14C17.2998 21.5 18.9497 21.5 19.9749 20.4749C21 19.4497 21 17.7998 21 14.5V11.9896C21 10.3083 21 9.46773 20.6441 8.74005C20.2882 8.01237 19.6247 7.49628 18.2976 6.46411L16.2976 4.90855C14.2331 3.30285 13.2009 2.5 12 2.5C10.7991 2.5 9.76689 3.30285 7.70242 4.90855L5.70241 6.46411C4.37533 7.49628 3.71179 8.01237 3.3559 8.74005C3 9.46773 3 10.3083 3 11.9896Z",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"0"}],["path",{d:"M15.0002 17C14.2007 17.6224 13.1504 18 12.0002 18C10.8499 18 9.79971 17.6224 9.00018 17",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"1"}]],C6=[["path",{d:"M2.5 12C2.5 7.52166 2.5 5.28249 3.89124 3.89124C5.28249 2.5 7.52166 2.5 12 2.5C16.4783 2.5 18.7175 2.5 20.1088 3.89124C21.5 5.28249 21.5 7.52166 21.5 12C21.5 16.4783 21.5 18.7175 20.1088 20.1088C18.7175 21.5 16.4783 21.5 12 21.5C7.52166 21.5 5.28249 21.5 3.89124 20.1088C2.5 18.7175 2.5 16.4783 2.5 12Z",stroke:"currentColor",strokeLinejoin:"round",strokeWidth:"1.5",key:"0"}],["path",{d:"M16.5 12C16.5 14.4853 14.4853 16.5 12 16.5C9.51472 16.5 7.5 14.4853 7.5 12C7.5 9.51472 9.51472 7.5 12 7.5C14.4853 7.5 16.5 9.51472 16.5 12Z",stroke:"currentColor",strokeWidth:"1.5",key:"1"}],["path",{d:"M17.5078 6.5L17.4988 6.5",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",key:"2"}]],j6=[["path",{d:"M3.89124 20.1088C2.5 18.7175 2.5 16.4783 2.5 12C2.5 7.52166 2.5 5.28249 3.89124 3.89124C5.28248 2.5 7.52166 2.5 12 2.5C16.4783 2.5 18.7175 2.5 20.1088 3.89124C21.5 5.28248 21.5 7.52166 21.5 12C21.5 16.4783 21.5 18.7175 20.1088 20.1088C18.7175 21.5 16.4783 21.5 12 21.5C7.52166 21.5 5.28249 21.5 3.89124 20.1088Z",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"0"}],["path",{d:"M2.5 9L21.5 9",stroke:"currentColor",strokeWidth:"1.5",key:"1"}],["path",{d:"M8 21.5L8 9",stroke:"currentColor",strokeWidth:"1.5",key:"2"}]],E6=[["path",{d:"M4.26781 18.8447C4.49269 20.515 5.87613 21.8235 7.55966 21.9009C8.97627 21.966 10.4153 22 12 22C13.5847 22 15.0237 21.966 16.4403 21.9009C18.1239 21.8235 19.5073 20.515 19.7322 18.8447C19.879 17.7547 20 16.6376 20 15.5C20 14.3624 19.879 13.2453 19.7322 12.1553C19.5073 10.485 18.1239 9.17649 16.4403 9.09909C15.0237 9.03397 13.5847 9 12 9C10.4153 9 8.97627 9.03397 7.55966 9.09909C5.87613 9.17649 4.49269 10.485 4.26781 12.1553C4.12105 13.2453 4 14.3624 4 15.5C4 16.6376 4.12105 17.7547 4.26781 18.8447Z",stroke:"currentColor",strokeWidth:"1.5",key:"0"}],["path",{d:"M7.5 9V6.5C7.5 4.01472 9.51472 2 12 2C14.4853 2 16.5 4.01472 16.5 6.5V9",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"1"}],["path",{d:"M16 15.49V15.5",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",key:"2"}],["path",{d:"M12 15.49V15.5",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",key:"3"}],["path",{d:"M8 15.49V15.5",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",key:"4"}]],D6=[["path",{d:"M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z",stroke:"currentColor",strokeWidth:"1.5",key:"0"}],["path",{d:"M12 13C13.1046 13 14 12.1046 14 11C14 9.89543 13.1046 9 12 9C10.8954 9 10 9.89543 10 11C10 12.1046 10.8954 13 12 13ZM12 13L12 16",stroke:"currentColor",strokeLinecap:"round",strokeWidth:"1.5",key:"1"}]],_6=[["path",{d:"M2 6L8.91302 9.91697C11.4616 11.361 12.5384 11.361 15.087 9.91697L22 6",stroke:"currentColor",strokeLinejoin:"round",strokeWidth:"1.5",key:"0"}],["path",{d:"M2.01577 13.4756C2.08114 16.5412 2.11383 18.0739 3.24496 19.2094C4.37608 20.3448 5.95033 20.3843 9.09883 20.4634C11.0393 20.5122 12.9607 20.5122 14.9012 20.4634C18.0497 20.3843 19.6239 20.3448 20.7551 19.2094C21.8862 18.0739 21.9189 16.5412 21.9842 13.4756C22.0053 
4212.4899 22.0053 11.5101 21.9842 10.5244C21.9189 7.45886 21.8862 5.92609 20.7551 4.79066C19.6239 3.65523 18.0497 3.61568 14.9012 3.53657C12.9607 3.48781 11.0393 3.48781 9.09882 3.53656C5.95033 3.61566 4.37608 3.65521 3.24495 4.79065C2.11382 5.92608 2.08114 7.45885 2.01576 10.5244C1.99474 11.5101 1.99475 12.4899 2.01577 13.4756Z",stroke:"currentColor",strokeLinejoin:"round",strokeWidth:"1.5",key:"1"}]],M6=[["circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"0"}],["path",{d:"M6.5 20.5L7.90613 15.227C8.19164 14.1564 8.33439 13.621 8.73856 13.3105C9.14274 13 9.69677 13 10.8048 13H13.1952C14.3032 13 14.8573 13 15.2614 13.3105C15.6656 13.621 15.8084 14.1564 16.0939 15.227L17.5 20.5",stroke:"currentColor",strokeLinejoin:"round",strokeWidth:"1.5",key:"1"}],["path",{d:"M9.5 13L11.0769 9.36095C11.4701 8.45365 11.6667 8 12 8C12.3333 8 12.5299 8.45365 12.9231 9.36095L14.5 13",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"2"}]],R6=[["path",{d:"M17.9405 12.4311C17.7073 13.3831 16.4665 14.0669 13.9848 15.4344C11.2857 16.9217 9.93612 17.6654 8.84297 17.3789C8.47274 17.2819 8.13174 17.1112 7.84541 16.8797C7 16.1963 7 14.7773 7 11.9394C7 9.10157 7 7.68264 7.84541 6.99915C8.13174 6.76766 8.47274 6.59704 8.84297 6.5C9.93612 6.21349 11.2857 6.95715 13.9848 8.44448C16.4665 9.81199 17.7073 10.4957 17.9405 11.4478C18.0198 11.7717 18.0198 12.1072 17.9405 12.4311Z",stroke:"currentColor",strokeLinejoin:"round",strokeWidth:"1.5",key:"0"}],["path",{d:"M8 17L16 9.61432M8 7L16 14.3857",stroke:"currentColor",strokeLinejoin:"round",strokeWidth:"1.5",key:"1"}],["path",{d:"M2.5 12C2.5 7.52166 2.5 5.28249 3.89124 3.89124C5.28249 2.5 7.52166 2.5 12 2.5C16.4783 2.5 18.7175 2.5 20.1088 3.89124C21.5 5.28249 21.5 7.52166 21.5 12C21.5 16.4783 21.5 18.7175 20.1088 20.1088C18.7175 21.5 16.4783 21.5 12 21.5C7.52166 21.5 5.28249 21.5 3.89124 20.1088C2.5 18.7175 2.5 16.4783 2.5 12Z",stroke:"currentColor",strokeLinejoin:"round",strokeWidth:"1.5",key:"2"}]],z6=[["path",{d:"M18.7088 3.49534C16.8165 2.55382 14.5009 2 12 2C9.4991 2 7.1835 2.55382 5.29116 3.49534C4.36318 3.95706 3.89919 4.18792 3.4496 4.91378C3 5.63965 3 6.34248 3 7.74814V11.2371C3 16.9205 7.54236 20.0804 10.173 21.4338C10.9067 21.8113 11.2735 22 12 22C12.7265 22 13.0933 21.8113 13.8269 21.4338C16.4576 20.0804 21 16.9205 21 11.2371L21 7.74814C21 6.34249 21 5.63966 20.5504 4.91378C20.1008 4.18791 19.6368 3.95706 18.7088 3.49534Z",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"0"}],["path",{d:"M9 11.5C9 11.5 10.4079 11.7519 11 13.5C11 13.5 12.5 10.5 15 9.5",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"1"}]],B6=[["path",{d:"M21.3175 7.14139L20.8239 6.28479C20.4506 5.63696 20.264 5.31305 19.9464 5.18388C19.6288 5.05472 19.2696 5.15664 18.5513 5.36048L17.3311 5.70418C16.8725 5.80994 16.3913 5.74994 15.9726 5.53479L15.6357 5.34042C15.2766 5.11043 15.0004 4.77133 14.8475 4.37274L14.5136 3.37536C14.294 2.71534 14.1842 2.38533 13.9228 2.19657C13.6615 2.00781 13.3143 2.00781 12.6199 2.00781H11.5051C10.8108 2.00781 10.4636 2.00781 10.2022 2.19657C9.94085 2.38533 9.83106 2.71534 9.61149 3.37536L9.27753 4.37274C9.12465 4.77133 8.84845 5.11043 8.48937 5.34042L8.15249 5.53479C7.73374 5.74994 7.25259 5.80994 6.79398 5.70418L5.57375 5.36048C4.85541 5.15664 4.49625 5.05472 4.17867 5.18388C3.86109 5.31305 3.67445 5.63696 3.30115 6.28479L2.80757 7.14139C2.45766 7.74864 2.2827 8.05227 2.31666 8.37549C2.35061 8.69871 2.58483 8.95918 3.05326 9.48012L4.0843 10.6328C4.3363 10.9518 4.51521 11.5078 4.51521 12.0077C4.51521 12.5078 4.33636 13.0636 4.08433 13.3827L3.05326 14.5354C2.58483 15.0564 2.35062 15.3168 2.31666 15.6401C2.2827 15.9633 2.45766 16.2669 2.80757 16.8741L3.30114 17.7307C3.67443 18.3785 3.86109 18.7025 4.17867 18.8316C4.49625 18.9608 4.85542 18.8589 5.57377 18.655L6.79394 18.3113C7.25263 18.2055 7.73387 18.2656 8.15267 18.4808L8.4895 18.6752C8.84851 18.9052 9.12464 19.2442 9.2775 19.6428L9.61149 20.6403C9.83106 21.3003 9.94085 21.6303 10.2022 21.8191C10.4636 22.0078 10.8108 22.0078 11.5051 22.0078H12.6199C13.3143 22.0078 13.6615 22.0078 13.9228 21.8191C14.1842 21.6303 14.294 21.3003 14.5136 20.6403L14.8476 19.6428C15.0004 19.2442 15.2765 18.9052 15.6356 18.6752L15.9724 18.4808C16.3912 18.2656 16.8724 18.2055 17.3311 18.3113L18.5513 18.655C19.2696 18.8589 19.6288 18.9608 19.9464 18.8316C20.264 18.7025 20.4506 18.3785 20.8239 17.7307L21.3175 16.8741C21.6674 16.2669 21.8423 15.9633 21.8084 15.6401C21.7744 15.3168 21.5402 15.0564 21.0718 14.5354L20.0407 13.3827C19.7887 13.0636 19.6098 12.5078 19.6098 12.0077C19.6098 11.5078 19.7888 10.9518 20.0407 10.6328L21.0718 9.48012C21.5402 8.95918 21.7744 8.69871 21.8084 8.37549C21.8423 8.05227 21.6674 7.74864 21.3175 7.14139Z",stroke:"currentColor",strokeLinecap:"round",strokeWidth:"1.5",key:"0"}],["path",{d:"M15.5195 12C15.5195 13.933 13.9525 15.5 12.0195 15.5C10.0865 15.5 8.51953 13.933 8.51953 12C8.51953 10.067 10.0865 8.5 12.0195 8.5C13.9525 8.5 15.5195 10.067 15.5195 12Z",stroke:"currentColor",strokeWidth:"1.5",key:"1"}]],L6=[["path",{d:"M9.39584 4.5H8.35417C5.40789 4.5 3.93475 4.5 3.01946 5.37868C2.10417 6.25736 2.10417 7.67157 2.10417 10.5V14.5C2.10417 17.3284 2.10417 18.7426 3.01946 19.6213C3.93475 20.5 5.40789 20.5 8.35417 20.5H12.5608C15.5071 20.5 16.9802 20.5 17.8955 19.6213C18.4885 19.052 18.6973 18.2579 18.7708 17",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"0"}],["path",{d:"M16.1667 7V3.85355C16.1667 3.65829 16.3316 3.5 16.535 3.5C16.6326 3.5 16.7263 3.53725 16.7954 3.60355L21.5275 8.14645C21.7634 8.37282 21.8958 8.67986 21.8958 9C21.8958 9.32014 21.7634 9.62718 21.5275 9.85355L16.7954 14.3964C16.7263 14.4628 16.6326 14.5 16.535 14.5C16.3316 14.5 16.1667 14.3417 16.1667 14.1464V11H13.1157C8.875 11 7.3125 14.5 7.3125 14.5V12C7.3125 9.23858 9.64435 7 12.5208 7H16.1667Z",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"1"}]],O6=[["path",{d:"M18.7088 3.49534C16.8165 2.55382 14.5009 2 12 2C9.4991 2 7.1835 2.55382 5.29116 3.49534C4.3
426318 3.95706 3.89919 4.18792 3.4496 4.91378C3 5.63965 3 6.34248 3 7.74814V11.2371C3 16.9205 7.54236 20.0804 10.173 21.4338C10.9067 21.8113 11.2735 22 12 22C12.7265 22 13.0933 21.8113 13.8269 21.4338C16.4576 20.0804 21 16.9205 21 11.2371L21 7.74814C21 6.34249 21 5.63966 20.5504 4.91378C20.1008 4.18791 19.6368 3.95706 18.7088 3.49534Z",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"0"}]],N6=[["path",{d:"M12 19H12.01",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",key:"0"}],["path",{d:"M13.5 2H10.5C8.14298 2 6.96447 2 6.23223 2.73223C5.5 3.46447 5.5 4.64298 5.5 7V17C5.5 19.357 5.5 20.5355 6.23223 21.2678C6.96447 22 8.14298 22 10.5 22H13.5C15.857 22 17.0355 22 17.7678 21.2678C18.5 20.5355 18.5 19.357 18.5 17V7C18.5 4.64298 18.5 3.46447 17.7678 2.73223C17.0355 2 15.857 2 13.5 2Z",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"1"}]],P6=[["circle",{cx:"1.5",cy:"1.5",r:"1.5",transform:"matrix(1 0 0 -1 16 8.00024)",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"0"}],["path",{d:"M2.77423 11.1439C1.77108 12.2643 1.7495 13.9546 2.67016 15.1437C4.49711 17.5033 6.49674 19.5029 8.85633 21.3298C10.0454 22.2505 11.7357 22.2289 12.8561 21.2258C15.8979 18.5022 18.6835 15.6559 21.3719 12.5279C21.6377 12.2187 21.8039 11.8397 21.8412 11.4336C22.0062 9.63798 22.3452 4.46467 20.9403 3.05974C19.5353 1.65481 14.362 1.99377 12.5664 2.15876C12.1603 2.19608 11.7813 2.36233 11.472 2.62811C8.34412 5.31646 5.49781 8.10211 2.77423 11.1439Z",stroke:"currentColor",strokeWidth:"1.5",key:"1"}],["path",{d:"M7.00002 14.0002L10 17.0002",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"2"}]],U6=[["path",{d:"M5 14.5C5 14.5 6.5 14.5 8.5 18C8.5 18 14.0588 8.83333 19 7",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"0"}]],I6=[["path",{d:"M2.99994 17C2.99994 17.93 2.99994 18.395 3.10216 18.7765C3.37956 19.8117 4.18821 20.6204 5.22348 20.8978C5.60498 21 6.06997 21 6.99994 21L16.9999 21C17.9299 21 18.3949 21 18.7764 20.8978C19.8117 20.6204 20.6203 19.8117 20.8977 18.7765C20.9999 18.395 20.9999 17.93 20.9999 17",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"0"}],["path",{d:"M16.5 7.49993C16.5 7.49993 13.1858 2.99997 12 2.99996C10.8141 2.99995 7.50002 7.49996 7.50002 7.49996M12 3.99996V16",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"1"}]],V6=[["path",{d:"M5.25 21H18.75C18.9822 21 19.0983 21 19.196 20.9904C20.1456 20.8968 20.8968 20.1456 20.9904 19.196C21 19.0983 21 18.9822 21 18.75C21 18.5178 21 18.4017 20.9904 18.304C20.8968 17.3544 20.1456 16.6032 19.196 16.5096C19.0983 16.5 18.9822 16.5 18.75 16.5H17.0607C16.8324 16.5 16.7182 16.5 16.6087 16.5121C16.2317 16.5538 15.8742 16.7018 15.5781 16.939C15.4921 17.0079 15.4114 17.0886 15.25 17.25C15.0886 17.4114 15.0079 17.4921 14.9219 17.561C14.6258 17.7982 14.2683 17.9462 13.8913 17.9879C13.7818 18 13.6676 18 13.4393 18H10.5607C10.3324 18 10.2182 18 10.1087 17.9879C9.73165 17.9462 9.37423 17.7982 9.07814 17.561C8.99213 17.4921 8.91142 17.4114 8.75 17.25C8.58858 17.0886 8.50787 17.0079 8.42186 16.939C8.12577 16.7018 7.76835 16.5538 7.3913 16.5121C7.28177 16.5 7.16763 16.5 6.93934 16.5H5.25C5.01783 16.5 4.90175 16.5 4.80397 16.5096C3.85441 16.6032 3.10315 17.3544 3.00963 18.304C3 18.4017 3 18.5178 3 18.75C3 18.9822 3 19.0983 3.00963 19.196C3.10315 20.1456 3.85441 20.8968 4.80397 20.9904C4.90175 21 5.01783 21 5.25 21Z",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"0"}],["path",{d:"M16.5 7.49996C16.5 7.49996 13.1858 3.00001 12 3C10.8141 2.99999 7.5 7.5 7.5 7.5M12 4V15",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"1"}]],F6=[["path",{d:"M8.5 14.5C9.62137 13.3944 10.9643 12.887 12.5 13.0212",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"0"}],["path",{d:"M18.5 11.5C17.0073 10.1794 15.2848 9.27433 13.5 9.00012",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"1"}],["path",{d:"M5.5 11.4999C6.59299 10.5891 7.778 9.91296 9 9.49989",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"2"}],["path",{d:"M22 8.49989C18.0717 5.18273 13.7362 3.92879 9.5 4.73808",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"3"}],["path",{d:"M2 8.5C3.22409 7.46632 4.5 6.5 5.5 6",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"4"}],["circle",{cx:"12",cy:"18",r:"1.5",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.5",key:"5"}],["path",{d:"M2 2L22 22",stroke:"currentColor",strokeLinecap:"round",strokeWidth:"1.5",key:"6"}]],W6=[["path",{d:"M8.62814 12.6736H8.16918C6.68545 12.6736 5.94358 12.6736 5.62736 12.1844C5.31114 11.6953 5.61244 11.0138 6.21504 9.65083L8.02668 5.55323C8.57457 4.3
4214 8.84852 3.69438 9.37997 3.34719C9.91142 3 10.5859 3 11.935 3H14.0244C15.6632 3 16.4826 3 16.7916 3.53535C17.1007 4.0707 16.6942 4.78588 15.8811 6.21623L14.8092 8.10188C14.405 8.81295 14.2029 9.16849 14.2057 9.45952C14.2094 9.83775 14.4105 10.1862 14.7354 10.377C14.9854 10.5239 15.3927 10.5239 16.2074 10.5239C17.2373 10.5239 17.7523 10.5239 18.0205 10.7022C18.3689 10.9338 18.5513 11.3482 18.4874 11.7632C18.4382 12.0826 18.0918 12.4656 17.399 13.2317L11.8639 19.3523C10.7767 20.5545 10.2331 21.1556 9.86807 20.9654C9.50303 20.7751 9.67833 19.9822 10.0289 18.3962L10.7157 15.2896C10.9826 14.082 11.1161 13.4782 10.7951 13.0759C10.4741 12.6736 9.85877 12.6736 8.62814 12.6736Z",stroke:"currentColor",strokeLinejoin:"round",strokeWidth:"1.5",key:"0"}]];/**
43 * @license hugeicons-react v0.4.0
44 *
45 * See the LICENSE file in the root directory of this source tree.
46 */const Yr=n=>s.jsx(Oe,{icon:d6,...n});Yr.displayName="ArrowDown01Icon";/**
47 * @license hugeicons-react v0.4.0
48 *
49 * See the LICENSE file in the root directory of this source tree.
50 */const lh=n=>s.jsx(Oe,{icon:u6,...n});lh.displayName="ArrowLeft01Icon";/**
51 * @license hugeicons-react v0.4.0
52 *
53 * See the LICENSE file in the root directory of this source tree.
54 */const Zr=n=>s.jsx(Oe,{icon:h6,...n});Zr.displayName="ArrowRight01Icon";/**
55 * @license hugeicons-react v0.4.0
56 *
57 * See the LICENSE file in the root directory of this source tree.
58 */const Sn=n=>s.jsx(Oe,{icon:p6,...n});Sn.displayName="ArrowUpRight01Icon";/**
59 * @license hugeicons-react v0.4.0
60 *
61 * See the LICENSE file in the root directory of this source tree.
62 */const b0=n=>s.jsx(Oe,{icon:f6,...n});b0.displayName="Briefcase01Icon";/**
63 * @license hugeicons-react v0.4.0
64 *
65 * See the LICENSE file in the root directory of this source tree.
66 */const x0=n=>s.jsx(Oe,{icon:g6,...n});x0.displayName="Cancel01Icon";/**
67 * @license hugeicons-react v0.4.0
68 *
69 * See the LICENSE file in the root directory of this source tree.
70 */const rl=n=>s.jsx(Oe,{icon:m6,...n});rl.displayName="CheckmarkCircle01Icon";/**
71 * @license hugeicons-react v0.4.0
72 *
73 * See the LICENSE file in the root directory of this source tree.
74 */const Tn=n=>s.jsx(Oe,{icon:y6,...n});Tn.displayName="Clock01Icon";/**
75 * @license hugeicons-react v0.4.0
76 *
77 * See the LICENSE file in the root directory of this source tree.
78 */const w0=n=>s.jsx(Oe,{icon:v6,...n});w0.displayName="Copy01Icon";/**
79 * @license hugeicons-react v0.4.0
80 *
81 * See the LICENSE file in the root directory of this source tree.
82 */const $s=n=>s.jsx(Oe,{icon:b6,...n});$s.displayName="Delete01Icon";/**
83 * @license hugeicons-react v0.4.0
84 *
85 * See the LICENSE file in the root directory of this source tree.
86 */const yo=n=>s.jsx(Oe,{icon:x6,...n});yo.displayName="Download01Icon";/**
87 * @license hugeicons-react v0.4.0
88 *
89 * See the LICENSE file in the root directory of this source tree.
90 */const ch=n=>s.jsx(Oe,{icon:w6,...n});ch.displayName="FileNotFoundIcon";/**
91 * @license hugeicons-react v0.4.0
92 *
93 * See the LICENSE file in the root directory of this source tree.
94 */const k0=n=>s.jsx(Oe,{icon:k6,...n});k0.displayName="Fire02Icon";/**
95 * @license hugeicons-react v0.4.0
96 *
97 * See the LICENSE file in the root directory of this source tree.
98 */const S0=n=>s.jsx(Oe,{icon:S6,...n});S0.displayName="HashtagIcon";/**
99 * @license hugeicons-react v0.4.0
100 *
101 * See the LICENSE file in the root directory of this source tree.
102 */const T0=n=>s.jsx(Oe,{icon:T6,...n});T0.displayName="HeartAddIcon";/**
103 * @license hugeicons-react v0.4.0
104 *
105 * See the LICENSE file in the root directory of this source tree.
106 */const A0=n=>s.jsx(Oe,{icon:A6,...n});A0.displayName="Home01Icon";/**
107 * @license hugeicons-react v0.4.0
108 *
109 * See the LICENSE file in the root directory of this source tree.
110 */const C0=n=>s.jsx(Oe,{icon:C6,...n});C0.displayName="InstagramIcon";/**
111 * @license hugeicons-react v0.4.0
112 *
113 * See the LICENSE file in the root directory of this source tree.
114 */const j0=n=>s.jsx(Oe,{icon:j6,...n});j0.displayName="Layout01Icon";/**
115 * @license hugeicons-react v0.4.0
116 *
117 * See the LICENSE file in the root directory of this source tree.
118 */const E0=n=>s.jsx(Oe,{icon:D6,...n});E0.displayName="LockIcon";/**
119 * @license hugeicons-react v0.4.0
120 *
121 * See the LICENSE file in the root directory of this source tree.
122 */const Gs=n=>s.jsx(Oe,{icon:E6,...n});Gs.displayName="LockPasswordIcon";/**
123 * @license hugeicons-react v0.4.0
124 *
125 * See the LICENSE file in the root directory of this source tree.
126 */const al=n=>s.jsx(Oe,{icon:_6,...n});al.displayName="Mail01Icon";/**
127 * @license hugeicons-react v0.4.0
128 *
129 * See the LICENSE file in the root directory of this source tree.
130 */const D0=n=>s.jsx(Oe,{icon:M6,...n});D0.displayName="PenTool01Icon";/**
131 * @license hugeicons-react v0.4.0
132 *
133 * See the LICENSE file in the root directory of this source tree.
134 */const _0=n=>s.jsx(Oe,{icon:R6,...n});_0.displayName="PlayStoreIcon";/**
135 * @license hugeicons-react v0.4.0
136 *
137 * See the LICENSE file in the root directory of this source tree.
138 */const M0=n=>
138s.jsx(Oe,{icon:z6,...n});M0.displayName="SecurityCheckIcon";/**
139 * @license hugeicons-react v0.4.0
140 *
141 * See the LICENSE file in the root directory of this source tree.
142 */const R0=n=>s.jsx(Oe,{icon:B6,...n});R0.displayName="Settings01Icon";/**
143 * @license hugeicons-react v0.4.0
144 *
145 * See the LICENSE file in the root directory of this source tree.
146 */const z0=n=>s.jsx(Oe,{icon:L6,...n});z0.displayName="Share01Icon";/**
147 * @license hugeicons-react v0.4.0
148 *
149 * See the LICENSE file in the root directory of this source tree.
150 */const Yi=n=>s.jsx(Oe,{icon:O6,...n});Yi.displayName="Shield01Icon";/**
151 * @license hugeicons-react v0.4.0
152 *
153 * See the LICENSE file in the root directory of this source tree.
154 */const dh=n=>s.jsx(Oe,{icon:N6,...n});dh.displayName="SmartPhone01Icon";/**
155 * @license hugeicons-react v0.4.0
156 *
157 * See the LICENSE file in the root directory of this source tree.
158 */const B0=n=>s.jsx(Oe,{icon:P6,...n});B0.displayName="Tag01Icon";/**
159 * @license hugeicons-react v0.4.0
160 *
161 * See the LICENSE file in the root directory of this source tree.
162 */const ol=n=>s.jsx(Oe,{icon:U6,...n});ol.displayName="Tick01Icon";/**
163 * @license hugeicons-react v0.4.0
164 *
165 * See the LICENSE file in the root directory of this source tree.
166 */const L0=n=>s.jsx(Oe,{icon:I6,...n});L0.displayName="Upload01Icon";/**
167 * @license hugeicons-react v0.4.0
168 *
169 * See the LICENSE file in the root directory of this source tree.
170 */const uh=n=>s.jsx(Oe,{icon:V6,...n});uh.displayName="Upload04Icon";/**
171 * @license hugeicons-react v0.4.0
172 *
173 * See the LICENSE file in the root directory of this source tree.
174 */const O0=n=>s.jsx(Oe,{icon:F6,...n});O0.displayName="WifiOff01Icon";/**
175 * @license hugeicons-react v0.4.0
176 *
177 * See the LICENSE file in the root directory of this source tree.
178 */const sl=n=>s.jsx(Oe,{icon:W6,...n});sl.displayName="ZapIcon";function H6(){const[n,r]=V.useState(null),[o,l]=V.useState(!1);return V.useEffect(()=>{const p=f=>{f.preventDefault(),r(f),l(!0)};return window.addEventListener("beforeinstallprompt",p),window.matchMedia("(display-mode: standalone)").matches&&l(!1),()=>{window.removeEventListener("beforeinstallprompt",p)}},[]),{isInstallable:o,installApp:async()=>{if(!n)return;n.prompt(),(await n.userChoice).outcome==="accepted"&&l(!1),r(null)}}}const G6=n=>s.jsx(yo,{...n}),q6=n=>s.jsx(sl,{...n}),Y6=n=>s.jsx(j0,{...n}),Z6=n=>s.jsx(L0,{...n}),X6=n=>s.jsx(x0,{...n}),K6=({isOpen:n,onClose:r,onInstall:o})=>{const l=/Android/i.test(navigator.userAgent);return n?s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"modal-backdrop",style:{position:"fixed",inset:0,background:"rgba(0, 0, 0, 0.7)",backdropFilter:"blur(5px)",zIndex:9998,animation:"fadeIn 0.2s ease-out"},onClick:r}),s.jsxs("div",{className:"install-modal",style:{position:"fixed",bottom:"50%",left:"50%",transform:"translate(-50%, 50%)",width:"90%",maxWidth:"420px",background:"var(--bg, #18181b)",borderRadius:"1.5rem",padding:"2rem",zIndex:9999,animation:"scaleIn 0.3s cubic-bezier(0.16, 1, 0.3, 1)",boxShadow:"0 25px 50px -12px rgba(0, 0, 0, 0.5)",border:"1px solid var(--border)",display:"flex",flexDirection:"column",alignItems:"center",textAlign:"center"},role:"dialog","aria-modal":"true","aria-labelledby":"install-title",children:[s.jsx("button",{onClick:r,style:{position:"absolute",top:"1rem",right:"1rem",background:"transparent",border:"none",color:"var(--fg-muted)",cursor:"pointer",padding:"0.5rem",borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",transition:"all 0.2s"},"aria-label":"Close",children:s.jsx(X6,{size:20})}),s.jsx("div",{style:{marginBottom:"1.5rem",transform:"scale(1.2)"},children:s.jsx(Xi,{})}),s.jsx("h3",{id:"install-title",style:{fontSize:"1.5rem",fontWeight:700,color:"var(--fg)",marginBottom:"0.5rem",fontFamily:"var(--font-display)"},children:l?"Get the Android App":"Install SendVault"}),s.jsx("p",{style:{color:"var(--fg-medium)",marginBottom:"2rem",lineHeight:1.5},children:l?"Download our official native app from the Google Play Store for faster uploads and a better experience.":"Get the full experience with better performance and easier access."}),s.jsxs("div",{style:{display:"grid",gridTemplateColumns:"1fr",gap:"1rem",width:"100%",marginBottom:"2rem",textAlign:"left"},children:[s.jsxs("div",{style:Id,children:[s.jsx("div",{style:Vd,children:s.jsx(q6,{size:18,color:"var(--brand)"})}),s.jsxs("div",{children:[s.jsx("strong",{style:Fd,children:"Instant Access"}),s.jsx("div",{style:Wd,children:"Launch directly from taskbar"})]})]}),s.jsxs("div",{style:Id,children:[s.jsx("div",{style:Vd,children:s.jsx(Y6,{size:18,color:"var(--brand)"})}),s.jsxs("div",{children:[s.jsx("strong",{style:Fd,children:"Focus Mode"}),s.jsx("div",{style:Wd,children:"No browser distractions"})]})]}),s.jsxs("div",{style:Id,children:[s.jsx("div",{style:Vd,children:s.jsx(Z6,{size:18,color:"var(--brand)"})}),s.jsxs("div",{children:[s.jsx("strong",{style:Fd,children:"Drag & Drop"}),s.jsx("div",{style:Wd,children:"Share files faster"})]})]})]}),s.jsxs("div",{style:{width:"100%",display:"flex",flexDirection:"column",gap:"0.75rem"},children:[s.jsxs("button",{onClick:o,className:"btn",style:{width:"100%",justifyContent:"center",fontSize:"1rem",padding:"0.875rem"},children:[s.jsx(G6,{size:18}),l?"Download from Google Play":"Install App"]}),s.jsx("button",{onClick:r,style:{background:"transparent",border:"none",color:"var(--fg-muted)",fontSize:"0.9rem",cursor:"pointer",padding:"0.5rem"},children:"Maybe later"})]})]}),s.jsx("style",{children:`
179        .install-modal {
180            background-color: var(--bg);
181        }
182        @media (max-width: 640px) {
183            .install-modal {
184                transform: none;
185                top: auto;
186                bottom: 0;
187                left: 0;
188                right: 0;
189                width: 100%;
190                max-width: 100%;
191                border-radius: 1.5rem 1.5rem 0 0;
192                border-bottom: none;
193                animation: slideUp 0.3s cubic-bezier(0.16, 1, 0.3, 1);
194            }
195        }
196        @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
197        @keyframes scaleIn { 
198            from { opacity: 0; transform: translate(-50%, 60%) scale(0.95); } 
199            to { opacity: 1; transform: translate(-50%, 50%) scale(1); } 
200        }
201        @keyframes slideUp { 
202            from { transform: translateY(100%); } 
203            to { transform: translateY(0); } 
204        }
205      `})]}):null},Id={display:"flex",alignItems:"center",gap:"1rem",background:"var(--bg-muted)",padding:"0.75rem 1rem",borderRadius:"0.75rem",border:"1px solid var(--border)"}
205,Vd={width:"36px",height:"36px",borderRadius:"10px",background:"rgba(163, 230, 53, 0.1)",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0},Fd={display:"block",fontSize:"0.95rem",color:"var(--fg)",marginBottom:"0.1rem"},Wd={fontSize:"0.8rem",color:"var(--fg-muted)"},Q6=1073741824,ro="https://sendvault.online",J6="com.sendvault.app",vo=`https://play.google.com/store/apps/details?id=${J6}`,$6=n=>s.jsx(dh,{...n}),ek=()=>{const{isInstallable:n,installApp:r}=H6(),[o,l]=V.useState(!1);if(!n)return null;const d=()=>{/Android/i.test(navigator.userAgent)?window.open(vo,"_blank"):r(),l(!1)};return s.jsxs(s.Fragment,{children:[s.jsxs("button",{onClick:()=>l(!0),className:"install-app-btn sv-header__ghost-btn",children:[s.jsx($6,{size:16}),s.jsx("span",{children:"Install"})]}),s.jsx(K6,{isOpen:o,onClose:()=>l(!1),onInstall:d})]})};const hh="sv_share_history",tk=20,nk=()=>Fr.isNativePlatform();async function ik(){return localStorage.getItem(hh)}async function rk(n){localStorage.setItem(hh,n)}async function ak(){localStorage.removeItem(hh)}async function ok(n){try{const o=(await ll()).filter(d=>d.code!==n.code),l=[n,...o].slice(0,tk);await rk(JSON.stringify(l)),window.dispatchEvent(new CustomEvent("sv:share-saved"))}catch{}}async function ll(){try{const n=await ik();return nk(),n?JSON.parse(n):[]}catch{return[]}}async function N0(){try{await ak(),window.dispatchEvent(new CustomEvent("sv:share-saved"))}catch{}}const sk=n=>s.jsx(Tn,{...n});function lk(n){const r=new Date(n).getTime()-Date.now();if(r<=0)return{label:"Expired",color:"var(--error)",expired:!0};const o=r/(1e3*60*60);return o<1?{label:`${Math.ceil(o*60)}m left`,color:"#f59e0b",expired:!1}:o<24?{label:`${Math.floor(o)}h left`,color:"#f59e0b",expired:!1}:{label:`${Math.floor(o/24)}d left`,color:"#A3E635",expired:!1}}const ck=({item:n})=>{const[r,o]=V.useState(!1),[l,d]=V.useState(!1),[p,u]=V.useState(!1),f=lk(n.expiresAt),g=async(y,m)=>{try{await navigator.clipboard.writeText(y)}catch{const v=document.createElement("textarea");v.value=y,document.body.appendChild(v),v.select(),document.execCommand("copy"),document.body.removeChild(v)}qr("light"),m(!0),setTimeout(()=>m(!1),2e3)};return s.jsx("div",{onMouseEnter:()=>u(!0),onMouseLeave:()=>u(!1),style:{borderRadius:"0.875rem",border:`1px solid ${p&&!f.expired?"var(--border-hover)":"var(--border)"}`,background:"var(--bg)",overflow:"hidden",opacity:f.expired?.45:1,transition:"border-color 0.2s, opacity 0.2s",minHeight:"72px"},children:s.jsxs("div",{style:{padding:"0.625rem 0.75rem",display:"flex",alignItems:"center",gap:"0.625rem"},children:[s.jsxs("div",{style:{flex:1,minWidth:0},children:[s.jsx("span",{style:{fontFamily:"monospace",fontWeight:800,fontSize:"1rem",letterSpacing:"0.15em",color:f.expired?"var(--fg-muted)":"var(--fg)",lineHeight:1},children:n.code}),s.jsxs("p",{style:{fontSize:"0.7rem",color:"var(--fg-muted)",margin:"0.175rem 0 0",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",lineHeight:1.2},children:[n.title||"Untitled"," · ",f.label]})]}),s.jsxs("div",{style:{display:"flex",gap:"0.3rem",flexShrink:0},children:[s.jsxs("button",{onClick:()=>g(n.code,o),title:"Copy code",style:{background:r?"color-mix(in srgb, var(--brand) 14%, transparent)":"var(--bg-muted)",border:`1px solid ${r?"color-mix(in srgb, var(--brand) 35%, transparent)":"var(--border)"}`,borderRadius:"0.5rem",padding:"0.35rem 0.55rem",cursor:"pointer",color:r?"var(--brand)":"var(--fg-muted)",display:"flex",alignItems:"center",gap:"0.25rem",fontSize:"0.7rem",fontWeight:700,transition:"all 0.15s",whiteSpace:"nowrap"},children:[r?s.jsx(Ty,{size:11}):s.jsx(a6,{size:11}),!r&&"Code"]}),s.jsxs("button",{onClick:()=>g(n.link,d),title:"Copy link",style:{background:l?"color-mix(in srgb, var(--brand) 14%, transparent)":"var(--bg-muted)",border:`1px solid ${l?"color-mix(in srgb, var(--brand) 35%, transparent)":"var(--border)"}`,borderRadius:"0.5rem",padding:"0.35rem 0.55rem",cursor:"pointer",color:l?"var(--brand)":"var(--fg-muted)",display:"flex",alignItems:"center",gap:"0.25rem",fontSize:"0.7rem",fontWeight:700,transition:"all 0.15s",whiteSpace:"nowrap"},children:[l?s.jsx(Ty,{size:11}):s.jsx(o6,{size:11}),!l&&"Link"]})]})]})})},dk=({onClose:n})=>{const[r,o]=V.useState([]),[l,d]=V.useState(!1),p=V.useCallback(async()=>{o(await ll())},[]);V.useEffect(()=>{p(),requestAnimationFrame(()=>d(!0));const g=()=>p();return window.addEventListener("sv:share-saved",g),()=>window.removeEventListener("sv:share-saved",g)},[p]),V.useEffect(()=>{const g=window.innerWidth-document.documentElement.clientWidth;return document.body.style.overflow="hidden",document.body.style.paddingRight=`${g}px`,()=>{document.body.style.overflow="",document.body.style.paddingRight=""}},[]);const u=async()=>{await N0(),o([])},f=()=>{d(!1),setTimeout(n,250)};return s.jsxs(s.Fragment,{children:[s.jsx("div",{onClick:f,style:{position:"fixed",inset:0,background:"rgba(0,0,0,0.6)",zIndex:1010,opacity:l?1:0,transition:"opacity 0.25s ease"}}),s.jsxs("div",{style:{position:"fixed",top:0,right:0,bottom:0,width:"min(380px, 92vw)",background:"var(--bg-page)",borderLeft:"1px solid var(--border)",zIndex:1011,display:"flex",flexDirection:"column",transform:l?"translateX(0)":"translateX(100%)",transition:"transform 0.25s cubic-bezier(0.4,0,0.2,1)",boxShadow:"-8px 0 40px rgba(0,0,0,0.4)"},children:[s.jsxs("div",{style:{display:"flex",alignItems:"center",padding:"1rem 1.25rem",borderBottom:"1px solid var(--border)",gap:"0.75rem",flexShrink:0},children:[s.jsx(xu,{size:18,style:{color:"#A3E635"}}),s.jsx("span",{style:{fontWeight:700,fontSize:"1rem",color:"var(--fg)",flex:1},children:"Recent Shares"}),r.length>0&&s.jsx("button",{onClick:u,title:"Clear all history",style:{background:"transparent",border:"none",cursor:"pointer",color:"var(--fg-muted)",padding:"0.3rem",borderRadius:"0.4rem",display:"flex",alignItems:"center"},children:s.jsx(s6,{size:16})}),s.jsx("button",{onClick:f,"aria-label":"Close panel",style:{background:"var(--bg-muted)",border:"none",cursor:"pointer",color:"var(--fg)",padding:"0.35rem",borderRadius:"0.5rem",display:"flex",alignItems:"center"},children:s.jsx(bu,{size:18})})]}),s.jsx("div",{style:{flex:1,overflowY:"auto",padding:"1rem",display:"flex",flexDirection:"column",gap:"0.75rem"},children:r.length===0?s.jsxs("div",{style:{flex:1,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",color:"var(--fg-muted)",textAlign:"center",gap:"0.75rem",paddingTop:"3rem"},children:[s.jsx(sk,{size:40,style:{opacity:.3}}),s.jsx("p",{style:{fontSize:"0.9rem",margin:0},children:"No recent shares yet."}),s.jsx("p",{style:{fontSize:"0.8rem",margin:0,opacity:.7},children:"Your uploaded files will appear here with their codes and expiry times."})]}):r.map((g,y)=>s.jsx(ck,{item:g},g.code||y))}),r.length>0&&s.jsx("div",{style:{padding:"0.75rem 1.25rem",borderTop:"1px solid var(--border)",fontSize:"0.7rem",color:"var(--fg-muted)",textAlign:"center",flexShrink:0},children:"Stored locally on this device only · Auto-expires after 7 days"})]})]})},Ay=[{id:"blog",label:"Blog"},{id:"usecases",label:"Use Cases",children:[{label:"For Creatives",hash:"#use-case-creatives"},{label:"For Teams",hash:"#use-case-teams"},{label:"For Personal Use",hash:"#use-case-personal"}]},{id:"how-it-works",label:"How It Works"},{id:"contact",label:"Contact"}],uk=({setPage:n,page:r,isMenuOpen:o,toggleMenu:l,closeMenu:d})=>{const[p,u]=V.useState(!1),[f,g]=V.useState(0),[y,m]=V.useState(!1);V.useEffect(()=>{const A=async()=>g((await ll()).length);return A(),window.addEventListener("sv:share-saved",A),()=>window.removeEventListener("sv:share-saved",A)},[]),V.useEffect(()=>{o||m(!1)},[o]),V.useEffect(()=>(document.body.style.overflow=o?"hidden":"",()=>{document.body.style.overflow=""}),[o]);const v=(A,x)=>{n(A,x),d(),m(!1)},w=A=>r===A,b=(A,x=!1)=>
205{if("children"in A&&A.children)return x?s.jsxs("div",{className:"sv-header__drawer-group",children:[s.jsxs("button",{type:"button",className:`sv-header__drawer-link sv-header__drawer-link--toggle${w(A.id)?" is-active":""}`,onClick:()=>m(T=>!T),"aria-expanded":y,children:[A.label,s.jsx(Yr,{size:18,className:y?"is-flipped":""})]}),y&&s.jsx("div",{className:"sv-header__drawer-sub",children:A.children.map(T=>s.jsx("a",{href:`/usecases${T.hash}`,className:"sv-header__drawer-sublink",onClick:D=>{D.preventDefault(),v(A.id,T.hash)},children:T.label},T.hash))})]},A.id):s.jsxs("div",{className:"sv-header__nav-item",onMouseEnter:()=>m(!0),onMouseLeave:()=>m(!1),children:[s.jsxs("button",{type:"button",className:`sv-header__nav-link${w(A.id)?" is-active":""}`,onClick:()=>v(A.id),"aria-expanded":y,children:[A.label,s.jsx(Yr,{size:14,"aria-hidden":!0})]}),s.jsx("div",{className:`sv-header__dropdown${y?" is-open":""}`,children:A.children.map(T=>s.jsx("a",{href:`/usecases${T.hash}`,className:"sv-header__dropdown-link",onClick:D=>{D.preventDefault(),v(A.id,T.hash)},children:T.label},T.hash))})]},A.id);const j=x?"sv-header__drawer-link":"sv-header__nav-link";return s.jsx("button",{type:"button",className:`${j}${w(A.id)?" is-active":""}`,onClick:()=>v(A.id),children:A.label},A.id)};return s.jsxs(s.Fragment,{children:[s.jsxs("header",{className:`sv-header${o?" is-menu-open":""}`,children:[s.jsx("div",{className:"sv-header__wrap main-content",children:s.jsxs("div",{className:"sv-header__bar",children:[s.jsx("div",{className:"sv-header__brand",children:s.jsx(Xi,{})}),s.jsx("nav",{className:"sv-header__nav","aria-label":"Main navigation",children:Ay.map(A=>b(A))}),s.jsxs("div",{className:"sv-header__actions",children:[s.jsxs("button",{type:"button",onClick:()=>u(!0),className:"sv-header__icon-btn sv-header__icon-btn--desktop","aria-label":"Recent shares",title:"Recent shares",children:[s.jsx(xu,{size:18}),f>0&&s.jsx("span",{className:"sv-header__badge",children:f>9?"9+":f})]}),s.jsx("button",{type:"button",className:"sv-header__cta",onClick:()=>v("home"),children:"Send Files"}),s.jsxs("button",{type:"button",onClick:()=>u(!0),className:"sv-header__icon-btn sv-header__icon-btn--mobile","aria-label":"Recent shares",children:[s.jsx(xu,{size:20}),f>0&&s.jsx("span",{className:"sv-header__badge",children:f>9?"9+":f})]}),s.jsx("button",{type:"button",onClick:l,className:"sv-header__menu-btn","aria-label":o?"Close menu":"Open menu","aria-expanded":o,children:o?s.jsx(bu,{size:22}):s.jsx(l6,{size:22})})]})]})}),s.jsx("div",{className:`sv-header__backdrop${o?" is-open":""}`,onClick:d,"aria-hidden":!o}),s.jsxs("aside",{className:`sv-header__drawer${o?" is-open":""}`,"aria-hidden":!o,children:[s.jsxs("div",{className:"sv-header__drawer-head",children:[s.jsx("span",{className:"sv-header__drawer-label",children:"Menu"}),s.jsx("button",{type:"button",className:"sv-header__drawer-close",onClick:d,"aria-label":"Close menu",children:s.jsx(bu,{size:22})})]}),s.jsx("nav",{className:"sv-header__drawer-nav","aria-label":"Mobile navigation",children:Ay.map(A=>b(A,!0))}),s.jsxs("div",{className:"sv-header__drawer-foot",children:[s.jsx(ek,{}),s.jsx("button",{type:"button",className:"sv-header__cta sv-header__cta--full",onClick:()=>v("home"),children:"Send Files"}),s.jsx("button",{type:"button",className:"sv-header__drawer-secondary",onClick:()=>v("download"),children:"Download App"})]})]})]}),p&&s.jsx(dk,{onClose:()=>u(!1)})]})},hk={home:"/","how-it-works":"/how-it-works",about:"/about",usecases:"/usecases",contact:"/contact",download:"/download",blog:"/blog",terms:"/terms",privacy:"/privacy","wetransfer-alternative":"/wetransfer-alternative","whatsapp-alternative":"/whatsapp-alternative","secure-file-sharing":"/secure-file-sharing"},pk={"/use-cases":"/usecases","/share-files-without-whatsapp":"/whatsapp-alternative","/v2":"/"},fk={"":"home","how-it-works":"how-it-works",about:"about",usecases:"usecases",contact:"contact",download:"download",blog:"blog",terms:"terms",privacy:"privacy","wetransfer-alternative":"wetransfer-alternative","whatsapp-alternative":"whatsapp-alternative","secure-file-sharing":"secure-file-sharing"};function gk(n){let r=n||"/";return r.startsWith("/")||(r=`/${r}`),r.replace(/\/+$/,"")||"/"}function wu(n,r){const o=gk(n),l=o.match(/^\/transfer\/([^/]+)$/);if(l)return{page:"transfer",isTransfer:!0,transferId:l[1]};const d=pk[o];if(d)return{...wu(d,r),redirectTo:d};if(o==="/blog"||o.startsWith("/blog/"))return{page:"blog",isTransfer:!1};const p=o==="/"?"":o.slice(1);if(r?.blockLegalOnNative&&(p==="terms"||p==="privacy"))return{page:"home",redirectTo:"/",isTransfer:!1};const u=fk[p];return u?{page:u,isTransfer:!1}:{page:"not-found",isTransfer:!1}}function ph(n,r){const o=hk[n]??(n==="home"?"/":`/${n}`);return r?`${o}${r}`:o}const Cy="sv-organization-schema",mk=()=>(V.useEffect(()=>{if(typeof document>"u"||document.getElementById(Cy))return;const n={"@context":"https://schema.org","@type":"Organization","@id":`${ro}/#organization`,name:"SendVault",url:ro,logo:{"@type":"ImageObject",url:`${ro}/favicon-512.png`,width:512,height:512},description:"SendVault is a free, no-account file sharing service. Upload up to 1GB, get a 6-character share code, and send with end-to-e
205nd encryption. Built as a privacy-first alternative to WeTransfer and WhatsApp.",sameAs:["https://play.google.com/store/apps/details?id=com.sendvault.app","https://instagram.com/sendvault"],contactPoint:{"@type":"ContactPoint",email:"[email protected]",contactType:"customer support",availableLanguage:"English"}},r=document.createElement("script");r.type="application/ld+json",r.id=Cy,r.text=JSON.stringify(n),document.head.appendChild(r)},[]),null),Ps=({onClick:n,href:r,page:o,children:l})=>s.jsx("a",{onClick:d=>{n&&(d.preventDefault(),n())},href:r??(o?ph(o):"#"),target:r?.startsWith("http")?"_blank":void 0,rel:r?.startsWith("http")?"noopener noreferrer":void 0,className:"sv-footer__link",children:l}),yk=[{label:"Instagram",href:"https://instagram.com/sendvault",icon:C0},{label:"Play Store",href:vo,icon:_0},{label:"Email",href:"mailto:[email protected]",icon:al}],vk=[{title:"Product",links:[{label:"Send a File",page:"home"},{label:"How It Works",page:"how-it-works"},{label:"Use Cases",page:"usecases"},{label:"Download App",page:"download"}]},{title:"Resources",links:[{label:"Blog",page:"blog"},{label:"WeTransfer Alternative",page:"wetransfer-alternative"},{label:"WhatsApp Alternative",page:"whatsapp-alternative"},{label:"Secure File Sharing",page:"secure-file-sharing"}]},{title:"Company",links:[{label:"About",page:"about"},{label:"Contact",page:"contact"},{label:"Privacy Policy",page:"privacy"},{label:"Terms of Service",page:"terms"}]}],bk=({setPage:n})=>{const r=new Date().getFullYear();return s.jsxs("footer",{className:"sv-footer",children:[s.jsxs("div",{className:"sv-footer__wrap",children:[s.jsxs("div",{className:"sv-footer__grid",children:[s.jsxs("div",{className:"sv-footer__brand",children:[s.jsx(Xi,{}),s.jsx("p",{className:"sv-footer__tagline",children:"Upload up to 1 GB, share with a 6-character code. No login, no compression. Fast, private transfers."}),s.jsx("div",{className:"sv-footer__social",children:yk.map(o=>{const l=o.icon;return s.jsxs("a",{href:o.href,target:o.href.startsWith("http")?"_blank":void 0,rel:o.href.startsWith("http")?"noopener noreferrer":void 0,className:"sv-footer__social-link",children:[s.jsx(l,{size:15,"aria-hidden":!0,className:"sv-footer__social-icon"}),o.label]},o.label)})})]}),s.jsx("div",{className:"sv-footer__columns",children:vk.map(o=>s.jsxs("div",{className:"sv-footer__col",children:[s.jsx("h3",{className:"sv-footer__col-title",children:o.title}),s.jsx("nav",{className:"sv-footer__nav","aria-label":o.title,children:o.links.map(l=>s.jsx(Ps,{page:l.page,onClick:()=>n(l.page),children:l.label},l.label))})]},o.title))})]}),s.jsxs("div",{className:"sv-footer__bar",children:[s.jsxs("p",{className:"sv-footer__copy",children:["© ",r," SendVault. All rights reserved."]}),s.jsxs("div",{className:"sv-footer__bar-end",children:[s.jsxs("div",{className:"sv-footer__bar-links",children:[s.jsx(Ps,{onClick:()=>n("privacy"),children:"Privacy"}),s.jsx(Ps,{onClick:()=>n("terms"),children:"Terms"}),s.jsx(Ps,{onClick:()=>n("contact"),children:"Contact"}),s.jsx("button",{type:"button",className:"sv-footer__link",onClick:()=>window.dispatchEvent(new CustomEvent("cookie-prefs:open")),children:"Cookie settings"})]}),s.jsxs("button",{type:"button",className:"sv-footer__cta",onClick:()=>n("home"),children:["Send Files",s.jsx(Zr,{size:16,"aria-hidden":!0})]})]})]})]}),s.jsx(mk,{})]})},xk=({onAccept:n,onReject:r})=>{const[o,l]=V.useState(!1);return s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"cookie-consent-banner",children:[s.jsxs("div",{className:"cookie-consent-content",children:[s.jsxs("div",{className:"cookie-header",children:[s.jsx("div",{className:"cookie-icon",children:s.jsx("svg",{width:"32",height:"32",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:s.jsx("path",{d:"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"})})}),s.jsx("h2",{children:"Cookie Consent"})]}),s.jsx("div",{className:"cookie-text",children:o?s.jsxs("div",{className:"cookie-details",children:[s.jsxs("p",{children:[s.jsx("strong",{children:"Essential cookies:"})," Required for core functionality (always active). These store things like your cookie-consent choice, your recent share codes, and your theme preference."]}),s.jsxs("p",{children:[s.jsx("strong",{children:"Analytics cookies (optional):"})," Help us understand which pages are most useful. We use Google Analytics in aggregate form only — no individual profiles."]}),s.jsxs("p",{children:[s.jsx("strong",{children:"Advertising (web only):"})," The web version shows Google AdSense ads on blog posts. The Android app currently serves n
205on-personalized ads."]}),s.jsxs("p",{children:["By accepting, you opt in to optional cookies. You can change your mind any time",s.jsxs(s.Fragment,{children:[" ","— see our"," ",s.jsx("a",{href:"/privacy",onClick:d=>{d.preventDefault(),window.dispatchEvent(new CustomEvent("setpage",{detail:"privacy"}))},children:"Privacy Policy"})]}),"."]}),s.jsx("button",{className:"cookie-learn-more",onClick:()=>l(!1),children:"Show less"})]}):s.jsxs("p",{children:["We use cookies for essential site functions (saving your theme, storing your share codes, remembering you accepted this banner). Optional cookies help us understand how the site is used.",s.jsx("button",{className:"cookie-learn-more",onClick:()=>l(!0),children:"Learn more"})]})}),s.jsxs("div",{className:"cookie-actions",children:[s.jsx("button",{className:"cookie-btn cookie-btn-reject",onClick:r,children:"Reject Non-Essential"}),s.jsx("button",{className:"cookie-btn cookie-btn-accept",onClick:n,children:"Accept All"})]})]}),s.jsxs("div",{className:"cookie-footer",children:[s.jsxs("a",{href:"/privacy",className:"cookie-privacy-link",onClick:d=>{d.preventDefault(),window.dispatchEvent(new CustomEvent("setpage",{detail:"privacy"}))},children:[s.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[s.jsx("circle",{cx:"12",cy:"12",r:"10"}),s.jsx("path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"}),s.jsx("line",{x1:"12",y1:"17",x2:"12.01",y2:"17"})]}),"Privacy Policy"]}),s.jsx("span",{className:"cookie-required",children:"Essential cookies always active"})]})]}),s.jsx("style",{children:`
206                    .cookie-consent-banner {
207                        position: fixed;
208                        bottom: 1.5rem;
209                        left: 50%;
210                        transform: translateX(-50%);
211                        max-width: 600px;
212                        width: calc(100% - 2rem);
213                        background: var(--bg, #101014);
214                        border: 1px solid var(--border, #27272a);
215                        border-radius: 0.75rem;
216                        padding: 1.5rem;
217                        box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.3);
218                        z-index: 9999;
219                        animation: slideUp 0.3s ease-out;
220                    }
221
222                    .cookie-consent-content {
223                        display: flex;
224                        flex-direction: column;
225                        gap: 1rem;
226                    }
227
228                    .cookie-header {
229                        display: flex;
230                        align-items: center;
231                        gap: 0.75rem;
232                    }
233
234                    .cookie-icon {
235                        color: var(--brand, #a3e635);
236                        display: flex;
237                        align-items: center;
238                        justify-content: center;
239                        flex-shrink: 0;
240                    }
241
242                    .cookie-header h3 {
243                        margin: 0;
244                        font-size: 1.125rem;
245                        font-weight: 600;
246                        color: var(--fg, #fff);
247                    }
248
249                    .cookie-text p {
250                        margin: 0;
251                        font-size: 0.875rem;
252                        line-height: 1.5;
253                        color: rgba(255, 255, 255, 0.8);
254                    }
255
256                    .cookie-details {
257                        display: flex;
258                        flex-direction: column;
259                        gap: 0.5rem;
260                    }
261
262                    .cookie-details p {
263                        margin: 0;
264                        font-size: 0.8125rem;
265                    }
266
267                    .cookie-details a {
268                        color: var(--brand, #a3e635);
269                        text-decoration: none;
270                        font-weight: 500;
271                    }
272
273                    .cookie-details a:hover {
274                        text-decoration: underline;
275                    }
276
277                    .cookie-learn-more {
278                        background: none;
279                        border: none;
280                        color: var(--brand, #a3e635);
281                        font-size: 0.875rem;
282                        font-weight: 500;
283                        cursor: pointer;
284                        padding: 0;
285                        margin-top: 0.25rem;
286                        display: inline;
287                        text-decoration: underline;
288                    }
289
290                    .cookie-learn-more:hover {
291                        opacity: 0.8;
292                    }
293
294                    .cookie-actions {
295                        display: flex;
296                        gap: 0.75rem;
297                        flex-wrap: wrap;
298                    }
299
300                    .cookie-btn {
301                        flex: 1;
302                        min-width: 140px;
303                        padding: 0.75rem 1.5rem;
304                        border-radius: 0.5rem;
305                        font-weight: 500;
306                        font-size: 0.875rem;
307                        cursor: pointer;
308                        transition: all 0.2s;
309                        border: none;
310                    }
311
312                    .cookie-btn-reject {
313                        background: transparent;
314                        border: 1px solid var(--border, #27272a);
315                        color: var(--fg, #fff);
316                    }
317
318                    .cookie-btn-reject:hover {
319                        background: rgba(255, 255, 255, 0.05);
320                    }
321
322                    .cookie-btn-accept {
323                        background: linear-gradient(135deg, var(--brand, #a3e635) 0%, #84cc16 100%);
324                        color: #000;
325                        box-shadow: 0 4px 6px -1px rgba(163, 230, 53, 0.3);
326                    }
327
328                    .cookie-btn-accept:hover {
329                        box-shadow: 0 6px 8px -1px rgba(163, 230, 53, 0.4);
330                        transform: translateY(-1px);
331                    }
332
333                    .cookie-footer {
334                        display: flex;
335                        align-items: center;
336                        justify-content: space-between;
337                        margin-top: 1rem;
338                        padding-top: 1rem;
339                        border-top: 1px solid var(--border, #27272a);
340                        font-size: 0.75rem;
341                        color: rgba(255, 255, 255, 0.6);
342                        flex-wrap: wrap;
343                        gap: 0.75rem;
344                    }
345
346                    .cookie-privacy-link {
347                        display: flex;
348                        align-items: center;
349                        gap: 0.375rem;
350                        color: rgba(255, 255, 255, 0.7);
351                        text-decoration: none;
352                        transition: color 0.2s;
353                    }
354
355                    .cookie-privacy-link:hover {
356                        color: var(--brand, #a3e635);
357                    }
358
359                    .cookie-required {
360                        color: rgba(255, 255, 255, 0.5);
361                    }
362
363                    @keyframes fadeIn {
364                        from {
365                            opacity: 0;
366                        }
367                        to {
368                            opacity: 1;
369                        }
370                    }
371
372                    @keyframes slideUp {
373                        from {
374                            opacity: 0;
375                            transform: translate(-50%, 20px);
376                        }
377                        to {
378                            opacity: 1;
379                            transform: translate(-50%, 0);
380                        }
381                    }
382
383                    @media (max-width: 640px) {
384                        .cookie-consent-banner {
385                            bottom: 0;
386                            left: 0;
387                            transform: none;
388                            max-width: 100%;
389                            width: 100%;
390                            border-radius: 0.75rem 0.75rem 0 0;
391                            padding: 1.25rem;
392                        }
393
394                        .cookie-actions {
395                            flex-direction: column;
396                        }
397
398                        .cookie-btn {
399                            width: 100%;
400                        }
401
402                        .cookie-footer {
403                            flex-direction: column;
404                            align-items: flex-start;
405                        }
406
407                        @keyframes slideUp {
408                            from {
409                                opacity: 0;
410                                transform: translateY(100%);
411                            }
412                            to {
413                                opacity: 1;
414                                transform: translateY(0);
415                            }
416                        }
417                    }
418                `})]})};class Hd extends V.Component{constructor(r){super(r),this.retry=()=>{this.setState({hasError:!1,error:void 0,errorInfo:void 0})},this.state={hasError:!1}}static getDerivedStateFromError(r){return console.error("🚨 Error Boundary caught error:",r),{hasError:!0,error:r}}componentDidCatch(r,o){console.error("🚨 Error Boundary - Full error details:",{error:r.message,stack:r.stack,componentStack:o.componentStack}),this.setState({error:r,errorInfo:o})}
418render(){if(this.state.hasError){const r=this.props.fallback||wk;return s.jsx(r,{error:this.state.error,retry:this.retry})}return this.props.children}}const wk=({error:n,retry:r})=>s.jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",padding:"2rem",textAlign:"center",minHeight:"50vh",background:"var(--bg, #101014)",color:"var(--fg, #fff)"},children:[s.jsx("div",{style:{fontSize:"3rem",marginBottom:"1rem"},children:"😵"}),s.jsx("h2",{style:{fontSize:"1.5rem",fontWeight:"600",marginBottom:"1rem",color:"var(--fg, #fff)"},children:"Oops! Something went wrong"}),s.jsx("p",{style:{fontSize:"1rem",color:"rgba(255, 255, 255, 0.7)",marginBottom:"2rem",maxWidth:"400px"},children:"SendVault encountered an unexpected error. Don't worry, your files are safe!"}),n&&s.jsxs("details",{style:{marginBottom:"2rem",padding:"1rem",background:"rgba(255, 255, 255, 0.05)",borderRadius:"0.5rem",maxWidth:"500px",fontSize:"0.875rem",color:"rgba(255, 255, 255, 0.6)"},children:[s.jsx("summary",{style:{cursor:"pointer",marginBottom:"0.5rem"},children:"Technical Details"}),s.jsx("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-word",margin:0,fontSize:"0.75rem"},children:n.message})]}),s.jsxs("div",{style:{display:"flex",gap:"1rem",flexWrap:"wrap"},children:[s.jsx("button",{onClick:r,style:{background:"linear-gradient(135deg, var(--brand, #a3e635) 0%, #84cc16 100%)",color:"#000",border:"none",padding:"0.75rem 1.5rem",borderRadius:"0.5rem",fontWeight:"500",cursor:"pointer",fontSize:"1rem"},children:"Try Again"}),s.jsx("button",{onClick:()=>window.location.reload(),style:{background:"transparent",color:"var(--fg, #fff)",border:"1px solid rgba(255, 255, 255, 0.2)",padding:"0.75rem 1.5rem",borderRadius:"0.5rem",fontWeight:"500",cursor:"pointer",fontSize:"1rem"},children:"Reload App"})]})]}),kk="sv:onboarding:done",Gd=[{bg:"/screens-bg/screen-01.png",headline:`One Code.
419Zero Friction.`,body:"Forget messy links and login screens. Just remember a simple 6-digit code to access your files on any device, instantly.",cta:"Continue"},{bg:"/screens-bg/screen-02.png",headline:`Your Choice:
420Code or Link`,body:"Need to send it to a friend? Use a secure link. Moving files to your own laptop? Just type the code. It's sharing, your way.",cta:"Continue"},{bg:"/screens-bg/screen-03.png",headline:`Full Quality,
421No Compromise`,body:"Whether it's 4K video or RAW photos, we send your files exactly as they are. No compression, no quality loss, just speed.",cta:"Continue"},{bg:"/screens-bg/screen-04.png",headline:`Encrypted.
422Secure. Deleted.`,body:"Your files are protected with end-to-end encryption and automatically wiped from our servers once the transfer is complete.",cta:"Start Sending"}],Sk=({onComplete:n})=>{const[r,o]=V.useState(0),[l,d]=V.useState(!1),p=()=>{qr("light"),r<Gd.length-1?(d(!0),setTimeout(()=>{o(m=>m+1),d(!1)},250)):(localStorage.setItem(kk,"1"),n())},u=V.useRef(0),f=m=>{u.current=m.touches[0].clientX},g=m=>{u.current-m.changedTouches[0].clientX>50&&p()},y=Gd[r];return s.jsxs("div",{onTouchStart:f,onTouchEnd:g,style:{position:"fixed",inset:0,zIndex:9999,background:"#000",display:"flex",flexDirection:"column",fontFamily:"'Inter', sans-serif"},children:[s.jsx("div",{style:{position:"absolute",inset:0,backgroundImage:`url(${y.bg})`,backgroundSize:"cover",backgroundPosition:"center top",opacity:l?0:1,transition:"opacity 0.25s ease"}}),s.jsxs("div",{style:{position:"absolute",bottom:0,left:0,right:0,background:"linear-gradient(to bottom, transparent 0%, rgba(5,5,5,0.7) 20%, #050505 50%)",paddingBottom:52,paddingTop:100,paddingLeft:28,paddingRight:28,opacity:l?0:1,transition:"opacity 0.25s ease"},children:[s.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:22},children:[s.jsx("img",{src:"/newFavicon.png",alt:"Sendvault",width:26,height:26,style:{borderRadius:6,objectFit:"contain"}}),s.jsx("span",{style:{color:"#fff",fontWeight:600,fontSize:15,letterSpacing:"-0.03em"},children:"Sendvault"})]}),s.jsx("h2",{style:{fontWeight:500,fontSize:40,letterSpacing:"-0.05em",lineHeight:1.05,color:"#fff",margin:"0 0 14px",whiteSpace:"pre-line"},children:y.headline}),s.jsx("p",{style:{fontWeight:400,fontSize:13.5,lineHeight:1.65,color:"rgba(255,255,255,0.55)",margin:"0 0 30px",maxWidth:320},children:y.body}),s.jsxs("button",{onClick:p,style:{background:"none",border:"none",padding:0,fontFamily:"'Inter', sans-serif",fontWeight:500,fontSize:15,color:"#fff",cursor:"pointer",display:"flex",alignItems:"center",gap:8,marginBottom:36,letterSpacing:"-0.01em"},children:[y.cta,s.jsx("span",{style:{fontSize:16,marginTop:-1},children:"→"})]}),s.jsx("div",{style:{display:"flex",gap:6,alignItems:"center"},children:Gd.map((m,v)=>s.jsx("div",{style:{height:4,borderRadius:2,width:v===r?32:16,background:v===r?"#A3E635":"rgba(255,255,255,0.2)",transition:"width 0.3s ease, background 0.3s ease"}},v))})]})]})},Tk={DEV:!1},ao=Tk??{},Ak=ao.VITE_SUPABASE_URL??"https://vmsyxbjutfeoeevxlohr.supabase.co",Ck=ao.VITE_SUPABASE_ANON_KEY??"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InZtc3l4Ymp1dGZlb2Vldnhsb2hyIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzEwNjY2MzIsImV4cCI6MjA4NjY0MjYzMn0.aYLKwF1B5UJB66gp1b9d1XKV9OVzc6rV6CVGFScSozA";
422typeof window<"u"&&!(ao.VITE_SUPABASE_URL&&ao.VITE_SUPABASE_ANON_KEY)&&ao.DEV&&console.warn("[sendvault] VITE_SUPABASE_URL / VITE_SUPABASE_ANON_KEY not set — falling back to checked-in defaults. See .env.example.");const gn=a2(Ak,Ck,{auth:{persistSession:!1}}),jk={jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",gif:"image/gif",webp:"image/webp",svg:"image/svg+xml",bmp:"image/bmp",ico:"image/x-icon",tiff:"image/tiff",tif:"image/tiff",heic:"image/heic",heif:"image/heif",avif:"image/avif",mp4:"video/mp4",mov:"video/quicktime",avi:"video/x-msvideo",mkv:"video/x-matroska",webm:"video/webm",flv:"video/x-flv",wmv:"video/x-ms-wmv","3gp":"video/3gpp",m4v:"video/x-m4v",mts:"video/mp2t",mp3:"audio/mpeg",wav:"audio/wav",ogg:"audio/ogg",flac:"audio/flac",aac:"audio/aac",m4a:"audio/mp4",wma:"audio/x-ms-wma",opus:"audio/opus",aiff:"audio/aiff",aif:"audio/aiff",pdf:"application/pdf",doc:"application/msword",docx:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",xls:"application/vnd.ms-excel",xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",ppt:"application/vnd.ms-powerpoint",pptx:"application/vnd.openxmlformats-officedocument.presentationml.presentation",odt:"application/vnd.oasis.opendocument.text",ods:"application/vnd.oasis.opendocument.spreadsheet",odp:"application/vnd.oasis.opendocument.presentation",txt:"text/plain",rtf:"application/rtf",csv:"text/csv",md:"text/markdown",zip:"application/zip",rar:"application/vnd.rar","7z":"application/x-7z-compressed",tar:"application/x-tar",gz:"application/gzip",bz2:"application/x-bzip2",js:"application/javascript",ts:"text/typescript",json:"application/json",html:"text/html",css:"text/css",xml:"application/xml",yaml:"application/yaml",yml:"application/yaml",py:"text/x-python",java:"text/x-java-source",c:"text/x-c",cpp:"text/x-c++src",php:"application/x-phppage",sh:"application/x-sh",sql:"application/sql",psd:"image/vnd.adobe.photoshop",ai:"application/postscript",eps:"application/postscript",indd:"application/x-indesign",fig:"application/figma",xd:"application/vnd.adobe.xd",sketch:"application/sketch",ttf:"font/ttf",otf:"font/otf",woff:"font/woff",woff2:"font/woff2",apk:"application/vnd.android.package-archive",ipa:"application/octet-stream",exe:"application/x-msdownload",dmg:"application/x-apple-diskimage"},P0=n=>{if(n.type&&n.type!=="")return n.type;const r=n.name.split(".").pop()?.toLowerCase()||"";return jk[r]||"application/octet-stream"},U0=()=>window.__OriginalXHR||XMLHttpRequest;function I0(n){const r=n,o=r?.context?.status;return o===404?'Backend function "upload-file" is not deployed. Run: npx supabase functions deploy upload-file':o===401||o===403?"Backend rejected the upload request. Check that R2_* secrets are set in Edge Function secrets.":o&&o>=500?`Backend failed to issue an upload URL (HTTP ${o}). Check the upload-file logs in Supabase. ${r?.message??""}`:r?.name==="FunctionsFetchError"?"Could not reach the backend. Check your network and VITE_SUPABASE_URL.":`Failed to get upload URL: ${r?.message??"unknown error"}`}const Ek=async(n,r,o,l)=>{const d=P0(n);let p=null,u=null;try{const y=await gn.functions.invoke("upload-file",{body:{filename:n.name,contentType:d,transferId:r,size:n.size}});p=y.data,u=y.error}catch(y){u=y}if(u||!p)throw new Error(I0(u));const{url:f,key:g}=p;if(!f||!g)throw new Error("Invalid response from upload function (missing url or key)");return new Promise((y,m)=>{const v=U0(),w=new v;if(w.open("PUT",f,!0),w.setRequestHeader("Content-Type",d),l){if(l.aborted){m(new Error("Upload cancelled"));return}l.addEventListener("abort",()=>{w.abort(),m(new Error("Upload cancelled"))})}w.upload.onprogress=b=>{b.lengthComputable&&o&&o(b.loaded,b.total)},w.onload=()=>{w.status===200||w.status===201?y({key:g}):m(new Error(`Upload to R2 failed (HTTP ${w.status}). This usually means the R2 bucket CORS policy does not allow PUT from this origin, or the presigned URL has expired. Server response: ${(w.responseText??"").slice(0,200)}`))},w.onerror=()=>m(new Error("Network error while uploading to R2. If you are running on a non-localhost origin, check the R2 bucket CORS policy (allowed origins must include your site).")),w.ontimeout=()=>m(new Error("Upload timed out before reaching R2.")),w.send(n)})},jy=async(n,r,o)=>{const{data:l,error:d}=await gn.functions.invoke("download-file",{body:{key:n,transferId:r,passwordHash:o}});if(d)throw new Error(I0(d));if(!l?.url)throw new Error("Invalid response from download-file (missing url)");return l},Dk=async(n,r)=>new Promise((o,l)=>{const d=U0(),p=new d;p.open("GET",n,!0),p.responseType="blob",p.onprogress=u=>{u.lengthComputable&&r&&r(u.loaded,u.total)},p.onload=()=>{p.status===200?o(p.response):l(new Error(`Download failed with status ${p.status}`))},p.onerror=()=>l(new Error("Network error during download. Please check your connection.")),p.send()}),yi=n=>{if(n===0)return"0 Bytes";const r=1024,o=["Bytes","KB","MB","GB","TB"],l=Math.floor(Math.log(n)/Math.log(r));return parseFloat((n/Math.pow(r,l)).toFixed(2))+" "+o[l]},V0=async n=>{if(!n)return"";const o=new TextEncoder().encode(n),l=await window.crypto.subtle.digest("SHA-256",o);return Array.from(new Uint8Array(l)).map(u=>u.toString(16).padStart(2,"0")).join("")},Ey=n=>{const r=new Date,l=new Date(n).getTime()-r.getTime();if(l<=0)return{days:0,hours:0,minutes:0,seconds:0,expired:!0};const d=Math.floor(l/1e3),p=Math.floor(d/(3600*24)),u=Math.floor(d%(3600*24)/3600),f=Math.floor(d%3600/60),g=d%60;return{days:p,hours:u,minutes:f,seconds:g,expired:!1}},_k=async(n,r)=>{try{const{data:o,error:l}=await gn.functions.invoke("create-share-code",{body:{transferId:n}});if(l||!o){const d=l?.context?.status;return console.error("Error creating share code:",l),d===404?{code:null,error:'Backend function "create-share-code" is not deployed. Run: npx supabase functions deploy create-share-code'}:{code:null,error:"Failed to create share code."}}return{code:o.code,error:null}}catch(o){return console.error("Unexpected error creating share code:",o),{co
422de:null,error:"An unexpected error occurred."}}},Mk=async n=>{const r=n?.context;if(r){if(typeof r.clone=="function")try{return await r.clone().json()}catch{return}return r.body}},Rk=async n=>{try{if(!n||n.length!==6)return{transferId:null,error:"Invalid code format.",errorCode:"invalid_code"};const{data:r,error:o}=await gn.functions.invoke("lookup-transfer",{body:{code:n.toUpperCase()}});if(o){const l=o.context?.status;if(l===404){const d=await Mk(o);return(typeof d=="string"?d.includes('"error"'):typeof d=="object"&&d!==null&&!!d.error)?{transferId:null,error:"Invalid or expired code.",errorCode:"not_found"}:{transferId:null,error:"Backend offline. Deploy the lookup-transfer Edge Function.",errorCode:"server"}}return l===410?{transferId:null,error:"This code has expired.",errorCode:"expired"}:l===429?{transferId:null,error:"Too many attempts. Please wait a moment.",errorCode:"rate_limited"}:(console.error("Share code lookup failed:",o),{transferId:null,error:"Server error. Please try again.",errorCode:"server"})}return r?.transfer?.id?{transferId:r.transfer.id,error:null,errorCode:null}:{transferId:null,error:"Invalid or expired code.",errorCode:"not_found"}}catch(r){return console.error("Unexpected error using share code:",r),{transferId:null,error:"An unexpected error occurred.",errorCode:"unexpected"}}};function Xr(n,r){const o=r,l=o?.context?.status;return l===404?`Backend function "${n}" is not deployed. Run: npx supabase functions deploy ${n}`:l===401||l===403?`Backend function "${n}" rejected the request (HTTP ${l}). Check that the anon key matches the project and that the function allows anonymous calls.`:l===429?"Too many requests. Please wait a minute and try again.":l&&l>=500?`Backend function "${n}" failed (HTTP ${l}). Check the function logs in the Supabase dashboard. Original error: ${o?.message??"unknown"}`:o?.name==="FunctionsFetchError"?`Could not reach backend function "${n}". Check your network connection and that VITE_SUPABASE_URL is set correctly.`:`${n} failed: ${o?.message??"unknown error"}`}async function zk(n){const{data:r,error:o}=await gn.functions.invoke("create-transfer",{body:n});if(o||!r)throw new Error(Xr("create-transfer",o));return r}async function Bk(n){const{data:r,error:o}=await gn.functions.invoke("record-file",{body:n});if(o||!r)throw new Error(Xr("record-file",o));return r}async function Dy(n){const{data:r,error:o}=await gn.functions.invoke("lookup-transfer",{body:n});if(o){const l=o?.context?.status;throw l===404&&Lk(o)?new F0:l===410?new W0:l&&l>=500?new Error(Xr("lookup-transfer",o)):new Error(Xr("lookup-transfer",o))}if(!r)throw new Error("Lookup returned no data.");return r}function Lk(n){const o=n?.context?.body;if(typeof o=="string")try{return!!JSON.parse(o)?.error}catch{return!1}return o&&typeof o=="object"?!!o.error:!1}async function Ok(n,r){const{error:o}=await gn.functions.invoke("delete-transfer",{body:{transferId:n,ownerToken:r}});o&&console.warn("delete-transfer failed (will be cleaned up by cron):",Xr("delete-transfer",o))}async function _y(n,r){const{error:o}=await gn.functions.invoke("delete-transfer",{body:{transferId:n,burnToken:r}});if(o)throw new Error(Xr("delete-transfer",o))}
422class F0 extends Error{constructor(){super("Transfer not found"),this.name="TransferNotFoundError"}}class W0 extends Error{constructor(){super("Transfer expired"),this.name="TransferExpiredError"}}function Nk(n){return n<10*1024*1024?"0-10MB":n<100*1024*1024?"10-100MB":n<500*1024*1024?"100-500MB":"500MB-1GB"}function Us(n){const r=new Set(n.map(l=>l.type?.split("/")[0]||"other")),o=n.reduce((l,d)=>l+d.size,0);return{file_count:n.length,total_size_bucket:Nk(o),file_type_group:Array.from(r).sort().join(",")}}function Hi(n,r={}){if(typeof window>"u"||localStorage.getItem("cookieConsent")!=="accepted")return;const o=Object.fromEntries(Object.entries(r).filter(([,p])=>p!==void 0)),l=window.gtag;if(typeof l=="function"){l("event",n,o);return}window.dataLayer?.push({event:n,...o})}const Pk=()=>s.jsxs("svg",{width:"22",height:"22",viewBox:"0 0 74 74",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[s.jsx("defs",{children:s.jsxs("linearGradient",{id:"ua",x1:"36.834",y1:"31.332",x2:"36.834",y2:"56.999",gradientUnits:"userSpaceOnUse",children:[s.jsx("stop",{stopColor:"#A3E635"}),s.jsx("stop",{offset:"1",stopColor:"#999999"})]})}),s.jsx("path",{d:"M2 16.6667V42.3333C2 56.1612 2 63.0751 6.29577 67.3709C10.5915 71.6667 17.5055 71.6667 31.3333 71.6667H42.3333C56.1612 71.6667 63.0751 71.6667 67.3709 67.3709C71.6667 63.0751 71.6667 56.1612 71.6667 42.3333V16.6667M2 16.6667H71.6667M2 16.6667L4.2 13.7333C8.51827 7.97565 10.6774 5.0968 13.7742 3.5484C16.871 2 20.4696 2 27.6667 2H46C53.1971 2 56.7957 2 59.8925 3.5484C62.9893 5.0968 65.1484 7.97565 69.4667 13.7333L71.6667 16.6667M47.8333 42.3332C47.8333 42.3332 39.732 31.3334 36.8332 31.3333C33.9345 31.3333 25.8333 42.3333 25.8333 42.3333M36.8332 33.1666L36.8333 56.9999",stroke:"url(#ua)",strokeWidth:"4",strokeLinecap:"round",strokeLinejoin:"round"})]}),Uk=()=>s.jsxs("svg",{width:"22",height:"22",viewBox:"0 0 74 74",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[s.jsx("defs",{children:s.jsxs("linearGradient",{id:"ui",x1:"36.834",y1:"31.332",x2:"36.834",y2:"56.999",gradientUnits:"userSpaceOnUse",children:[s.jsx("stop",{stopColor:"white"}),s.jsx("stop",{offset:"1",stopColor:"#999999"})]})}),s.jsx("path",{d:"M2 16.6667V42.3333C2 56.1612 2 63.0751 6.29577 67.3709C10.5915 71.6667 17.5055 71.6667 31.3333 71.6667H42.3333C56.1612 71.6667 63.0751 71.6667 67.3709 67.3709C71.6667 63.0751 71.6667 56.1612 71.6667 42.3333V16.6667M2 16.6667H71.6667M2 16.6667L4.2 13.7333C8.51827 7.97565 10.6774 5.0968 13.7742 3.5484C16.871 2 20.4696 2 27.6667 2H46C53.1971 2 56.7957 2 59.8925 3.5484C62.9893 5.0968 65.1484 7.97565 69.4667 13.7333L71.6667 16.6667M47.8333 42.3332C47.8333 42.3332 39.732 31.3334 36.8332 31.3333C33.9345 31.3333 25.8333 42.3333 25.8333 42.3333M36.8332 33.1666L36.8333 56.9999",stroke:"url(#ui)",strokeWidth:"4",strokeLinecap:"round",strokeLinejoin:"round"})]}),Ik=()=>s.jsxs("svg",{width:"22",height:"22",viewBox:"0 0 74 74",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[s.jsx("defs",{children:s.jsxs("linearGradient",{id:"ra",x1:"36.834",y1:"31.332",x2:"36.834",y2:"56.999",gradientUnits:"userSpaceOnUse",children:[s.jsx("stop",{stopColor:"#A3E635"}),s.jsx("stop",{offset:"1",stopColor:"#999999"})]})}),s.jsx("path",{d:"M2 16.6667V42.3333C2 56.1612 2 63.0751 6.29577 67.3709C10.5915 71.6667 17.5055 71.6667 31.3333 71.6667H42.3333C56.1612 71.6667 63.0751 71.6667 67.3709 67.3709C71.6667 63.0751 71.6667 56.1612 71.6667 42.3333V16.6667M2 16.6667H71.6667M2 16.6667L4.2 13.7333C8.51827 7.97565 10.6774 5.0968 13.7742 3.5484C16.871 2 20.4696 2 27.6667 2H46C53.1971 2 56.7957 2 59.8925 3.5484C62.9893 5.0968 65.1484 7.97565 69.4667 13.7333L71.6667 16.6667M47.8333 46C47.8333 46 39.732 56.9999 36.8332 56.9999C33.9345 56.9999 25.8333 45.9999 25.8333 45.9999M36.8332 55.1667L36.8333 31.3333",stroke:"url(#ra)",strokeWidth:"4",strokeLinecap:"round",strokeLinejoin:"round"})]}),Vk=()=>s.jsxs("svg",{width:"22",height:"22",viewBox:"0 0 74 74",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[s.jsx("defs",{children:s.jsxs("linearGradient",{id:"ri",x1:"36.834",y1:"31.332",x2:"36.834",y2:"56.999",gradientUnits:"userSpaceOnUse",children:[s.jsx("stop",{stopColor:"white"}),s.jsx("stop",{offset:"1",stopColor:"#999999"})]})}),s.jsx("path",{d:"M2 16.6667V42.3333C2 56.1612 2 63.0751 6.29577 67.3709C10.5915 71.6667 17.5055 71.6667 31.3333 71.6667H42.3333C56.1612 71.6667 63.0751 71.6667 67.3709 67.3709C71.6667 63.0751 71.6667 56.1612 71.6667 42.3333V16.
4226667M2 16.6667H71.6667M2 16.6667L4.2 13.7333C8.51827 7.97565 10.6774 5.0968 13.7742 3.5484C16.871 2 20.4696 2 27.6667 2H46C53.1971 2 56.7957 2 59.8925 3.5484C62.9893 5.0968 65.1484 7.97565 69.4667 13.7333L71.6667 16.6667M47.8333 46C47.8333 46 39.732 56.9999 36.8332 56.9999C33.9345 56.9999 25.8333 45.9999 25.8333 45.9999M36.8332 55.1667L36.8333 31.3333",stroke:"url(#ri)",strokeWidth:"4",strokeLinecap:"round",strokeLinejoin:"round"})]}),Fk=()=>s.jsxs("svg",{width:"28",height:"28",viewBox:"0 0 74 74",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[s.jsxs("defs",{children:[s.jsxs("linearGradient",{id:"haa",x1:"37",y1:"2",x2:"37",y2:"72",gradientUnits:"userSpaceOnUse",children:[s.jsx("stop",{stopColor:"#A3E635"}),s.jsx("stop",{offset:"1",stopColor:"#999999"})]}),s.jsxs("linearGradient",{id:"hab",x1:"40.5",y1:"23",x2:"40.5",y2:"44",gradientUnits:"userSpaceOnUse",children:[s.jsx("stop",{stopColor:"#A3E635"}),s.jsx("stop",{offset:"1",stopColor:"#999999"})]})]}),s.jsx("circle",{cx:"37",cy:"37",r:"35",stroke:"url(#haa)",strokeWidth:"4"}),s.jsx("path",{d:"M37 23V37L44 44",stroke:"url(#hab)",strokeWidth:"4",strokeLinecap:"round",strokeLinejoin:"round"})]}),Wk=()=>s.jsxs("svg",{width:"28",height:"28",viewBox:"0 0 74 74",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[s.jsxs("defs",{children:[s.jsxs("linearGradient",{id:"hia",x1:"37",y1:"2",x2:"37",y2:"72",gradientUnits:"userSpaceOnUse",children:[s.jsx("stop",{stopColor:"white"}),s.jsx("stop",{offset:"1",stopColor:"#999999"})]}),s.jsxs("linearGradient",{id:"hib",x1:"40.5",y1:"23",x2:"40.5",y2:"44",gradientUnits:"userSpaceOnUse",children:[s.jsx("stop",{stopColor:"white"}),s.jsx("stop",{offset:"1",stopColor:"#999999"})]})]}),s.jsx("circle",{cx:"37",cy:"37",r:"35",stroke:"url(#hia)",strokeWidth:"4"}),s.jsx("path",{d:"M37 23V37L44 44",stroke:"url(#hib)",strokeWidth:"4",strokeLinecap:"round",strokeLinejoin:"round"})]}),Hk=({size:n=96})=>s.jsxs("svg",{width:n,height:n,viewBox:"0 0 111 111",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[s.jsxs("defs",{children:[s.jsxs("linearGradient",{id:"uid2a",x1:"55.5",y1:"83.832",x2:"55.5",y2:"106.499",gradientUnits:"userSpaceOnUse",children:[s.jsx("stop",{stopColor:"rgba(17,17,17,0.7)"}),s.jsx("stop",{offset:"1",stopColor:"rgba(17,17,17,0.5)"})]}),s.jsxs("linearGradient",{id:"uid2b",x1:"55.5",y1:"4.5",x2:"55.5",y2:"78.1667",gradientUnits:"userSpaceOnUse",children:[s.jsx("stop",{stopColor:"rgba(17,17,17,0.7)"}),s.jsx("stop",{offset:"1",stopColor:"rgba(17,17,17,0.5)"})]})]}),s.jsx("path",{d:"M4.5 83.832C4.5 89.1019 4.5 91.7368 5.07926 93.8986C6.6512 99.7652 11.2335 104.347 17.1001 105.919C19.2619 106.499 21.8968 106.499 27.1667 106.499L83.8333 106.499C89.1032 106.499 91.7381 106.499 93.8999 105.919C99.7665 104.347 104.349 99.7652 105.921 93.8986C106.5 91.7368 106.5 89.1019 106.5 83.832",stroke:"url(#uid2a)",strokeWidth:"9",strokeLinecap:"round",strokeLinejoin:"round"}),s.jsx("path",{d:"M81 29.9998C81 29.9998 62.2195 4.50005 55.4998 4.5C48.7801 4.49994 30 30 30 30M55.4998 10.1667V78.1667",stroke:"url(#uid2b)",strokeWidth:"9",strokeLinecap:"round",strokeLinejoin:"round"})]}),H0=({size:n=96})=>s.jsxs("svg",{width:n,height:n,viewBox:"0 0 111 111",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[s.jsxs("defs",{children:[s.jsxs("linearGradient",{id:"rid2a",x1:"55.5",y1:"83.832",x2:"55.5",y2:"106.499",gradientUnits:"userSpaceOnUse",children:[s.jsx("stop",{stopColor:"rgba(17,17,17,0.7)"}),s.jsx("stop",{offset:"1",stopColor:"rgba(17,17,17,0.5)"})]}),s.jsxs("linearGradient",{id:"rid2b",x1:"55.5",y1:"4.5",x2:"55.5",y2:"78.1667",gradientUnits:"userSpaceOnUse",children:[s.jsx("stop",{stopColor:"rgba(17,17,17,0.7)"}),s.jsx("stop",{offset:"1",stopColor:"rgba(17,17,17,0.5)"})]})]}),s.jsx("path",{d:"M4.5 83.832C4.5 89.1019 4.5 91.7368 5.07926 93.8986C6.6512 99.7652 11.2335 104.347 17.1001 105.919C19.2619 106.499 21.8968 106.499 27.1667 106.499L83.8333 106.499C89.1032 106.499 91.7381 106.499 93.8999 105.919C99.7665 104.347 104.349 99.7652 105.921 93.8986C106.5 91.7368 106.5 89.1019 106.5 83.832",stroke:"url(#rid2a)",strokeWidth:"9",strokeLinecap:"round",strokeLinejoin:"round"}),s.jsx("path",{d:"M81 52.6669C81 52.6669 62.2195 78.1666 55.4998 78.1667C48.7801 78.1667 30 52.6667 30 52.6667M55.4998 72.5V4.5",stroke:"url
422(#rid2b)",strokeWidth:"9",strokeLinecap:"round",strokeLinejoin:"round"})]}),fh=()=>s.jsxs("svg",{width:28,height:34,viewBox:"0 0 64 79",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[s.jsxs("defs",{children:[s.jsxs("linearGradient",{id:"ifh0",x1:"32",y1:"58.25",x2:"32",y2:"59.25",gradientUnits:"userSpaceOnUse",children:[s.jsx("stop",{stopColor:"#000000"}),s.jsx("stop",{offset:"1",stopColor:"#444444"})]}),s.jsxs("linearGradient",{id:"ifh1",x1:"24.5",y1:"43.25",x2:"24.5",y2:"44.25",gradientUnits:"userSpaceOnUse",children:[s.jsx("stop",{stopColor:"#000000"}),s.jsx("stop",{offset:"1",stopColor:"#444444"})]}),s.jsxs("linearGradient",{id:"ifh2",x1:"32",y1:"2",x2:"32",y2:"77",gradientUnits:"userSpaceOnUse",children:[s.jsx("stop",{stopColor:"#000000"}),s.jsx("stop",{offset:"1",stopColor:"#444444"})]})]}),s.jsx("path",{d:"M17 58.25H47",stroke:"url(#ifh0)",strokeWidth:"4",strokeLinecap:"round",strokeLinejoin:"round"}),s.jsx("path",{d:"M17 43.25H32",stroke:"url(#ifh1)",strokeWidth:"4",strokeLinecap:"round",strokeLinejoin:"round"}),s.jsx("path",{d:"M35.75 3.875V5.75C35.75 16.3566 35.75 21.6599 39.045 24.955C42.3401 28.25 47.6434 28.25 58.25 28.25H60.125M62 34.4632V47C62 61.1421 62 68.2132 57.6066 72.6066C53.2132 77 46.1421 77 32 77C17.8579 77 10.7868 77 6.3934 72.6066C2 68.2132 2 61.1421 2 47V29.9594C2 17.7906 2 11.7062 5.32278 7.58499C5.99405 6.75243 6.75243 5.99405 7.58499 5.32278C11.7062 2 17.7906 2 29.9594 2C32.6052 2 33.928 2 35.1394 2.42753C35.3914 2.51645 35.6384 2.61877 35.8794 2.73404C37.0383 3.28833 37.9737 4.22374 39.8446 6.09456L57.6066 23.8566C59.7743 26.0243 60.8582 27.1082 61.4291 28.4865C62 29.8648 62 31.3976 62 34.4632Z",stroke:"url(#ifh2)",strokeWidth:"4",strokeLinecap:"round",strokeLinejoin:"round"})]}),Gk={sm:{minHeight:36,padding:"8px 14px",fontSize:13,borderRadius:10},md:{minHeight:44,padding:"10px 18px",fontSize:14,borderRadius:12},lg:{minHeight:52,padding:"14px 22px",fontSize:15,borderRadius:14}},qk={primary:{background:"#111111",color:"#ffffff",border:"1px solid #111111"},secondary:{background:"rgba(17, 17, 17, 0.06)",color:"#111111",border:"1px solid rgba(17, 17, 17, 0.08)"},destructive:{background:"#EF4444",color:"#ffffff",border:"1px solid #EF4444"},ghost:{background:"transparent",color:"#111111",border:"1px solid transparent"}},Yk={primary:{background:"#1f1f1f",borderColor:"#1f1f1f"},secondary:{background:"rgba(17, 17, 17, 0.1)",borderColor:"rgba(17, 17, 17, 0.12)"},destructive:{background:"#DC2626",borderColor:"#DC2626"},ghost:{background:"rgba(17, 17, 17, 0.05)"}},Zk={primary:{background:"rgba(17, 17, 17, 0.4)",borderColor:"rgba(17, 17, 17, 0.4)",color:"rgba(255, 255, 255, 0.7)"},secondary:{background:"rgba(17, 17, 17, 0.03)",color:"rgba(17, 17, 17, 0.4)"},destructive:{background:"rgba(239, 68, 68, 0.5)",borderColor:"rgba(239, 68, 68, 0.5)"},ghost:{color:"rgba(17, 17, 17, 0.4)"}},Xk={primary:{color:"transparent"},secondary:{color:"transparent"},destructive:{color:"transparent"},ghost:{color:"transparent"}},fn=V.forwardRef(({variant:n="primary",size:r="md",loading:o=!1,fullWidth:l=!1,iconLeft:d,iconRight:p,disabled:u,children:f,style:g,onMouseEnter:y,onMouseLeave:m,onMouseDown:v,onMouseUp:w,...b},A)=>{const x=!!(u||o),[j,T]=V.useState(!1),[D,_]=V.useState(!1),L=n==="primary"||n==="destructive"?"rgba(255, 255, 255, 0.25)":"rgba(17, 17, 17, 0.15)",B=n==="secondary"||n==="ghost"?"#111111":"#ffffff",P={display:"inline-flex",alignItems:"center",justifyContent:"center",gap:8,fontWeight:600,fontFamily:"inherit",lineHeight:1.2,letterSpacing:"-0.01em",cursor:x?"not-allowed":"pointer",transition:"background 0.18s ease, border-color 0.18s ease, color 0.18s ease, transform 0.12s ease, opacity 0.18s ease",outline:"none",userSelect:"none",whiteSpace:"nowrap",opacity:x&&!o?.6:1,transform:D&&!x?"scale(0.985)":"scale(1)",position:"relative",width:l?"100%":"auto",...Gk[r],...qk[n],...j&&!x?Yk[n]:null,...x?Zk[n]:null,...o?Xk[n]:null,...g};return s.jsxs("button",{ref:A,disabled:x,"aria-busy":o||void 0,onMouseEnter:z=>{T(!0),y?.(z)},onMouseLeave:z=>{T(!1),_(!1),m?.(z)},onMouseDown:z=>{_(!0),v?.(z)},onMouseUp:z=>{_(!1),w?.(z)},style:P,...b,children:[o&&s.jsx("span",{"aria-hidden":!0,style:{position:"absolute",inset:0,display:"flex",alignItems:"center",justifyContent:"center"},children:s.jsx("span",{style:{width:18,height:18,borderRadius:"50%",border:`2px solid ${L}`,borderTopColor:B,animation:"sv-button-spin 0.7s linear infinite"}})}),!o&&d,!o&&f,!o&&p]})});fn.displayName="Button";
422const ku={view:"idle",files:[],title:"",password:"",expiry:"7d",deleteOnDownload:!1,link:null,shareCode:null,shareCodeExpiresAt:null,error:null,progress:0,uploadedBytes:0,totalBytes:0,currentFileIndex:0,fileProgresses:[],isPaused:!1,startedAt:0},Kk=(n,r)=>{switch(r.type){case"ADD_FILES":{const o=[...n.files,...r.payload],l=o.reduce((d,p)=>d+p.size,0);return{...n,view:"configuring",files:o,error:null,totalBytes:l,fileProgresses:o.map(()=>0)}}case"REMOVE_FILE":{const o=n.files.filter((d,p)=>p!==r.payload),l=o.reduce((d,p)=>d+p.size,0);return o.length===0?{...ku}:{...n,files:o,totalBytes:l,fileProgresses:o.map(()=>0)}}case"SET_TITLE":return{...n,title:r.payload};case"SET_PASSWORD":return{...n,password:r.payload};case"SET_EXPIRY":return{...n,expiry:r.payload};case"TOGGLE_BURN":return{...n,deleteOnDownload:r.payload};case"START_UPLOAD":return{...n,view:"uploading",error:null,progress:0,uploadedBytes:0,currentFileIndex:0,fileProgresses:n.files.map(()=>0),isPaused:!1,startedAt:Date.now()};case"SET_PROGRESS":return{...n,progress:r.payload};case"SET_UPLOAD_PROGRESS":return{...n,uploadedBytes:r.payload.uploadedBytes,progress:r.payload.progress,currentFileIndex:r.payload.currentFileIndex||n.currentFileIndex,fileProgresses:r.payload.fileProgresses||n.fileProgresses};case"SET_SIZE_ERROR":return{...n,error:r.payload};case"UPLOAD_SUCCESS":if(typeof window<"u"&&localStorage){const o=parseInt(localStorage.getItem("uploadCount")||"0");localStorage.setItem("uploadCount",String(o+1))}return{...n,view:"success",link:r.payload.link,shareCode:r.payload.shareCode,shareCodeExpiresAt:r.payload.shareCodeExpiresAt,progress:100,error:null,isPaused:!1};case"UPLOAD_FAILURE":return{...n,view:"uploading",error:r.payload,isPaused:!0};case"RESUME_UPLOAD":return{...n,error:null,startedAt:n.startedAt||Date.now(),isPaused:!1};case"RESET":return{...ku};default:return n}},Qk=()=>{const[n,r]=V.useReducer(Kk,ku),o=async u=>{if(u?.length>0){const f=u.find(g=>g.size>Q6);if(f){const g=(f.size/1073741824).toFixed(2);r({type:"SET_SIZE_ERROR",payload:`File "${f.name}" (${g}GB) exceeds the 1 GB per-file limit. Please select a smaller file.`});return}Hi("files_selected",Us(u)),r({type:"ADD_FILES",payload:u})}},l=V.useRef(null),d=async(u=!1)=>{if(n.files.length===0)return;u?r({type:"RESUME_UPLOAD"}):(r({type:"START_UPLOAD"}),Hi("upload_started",{...Us(n.files),expiry_option:n.expiry,has_password:!!n.password,delete_on_download:n.deleteOnDownload})),l.current=new AbortController;const f=l.current.signal;u||qi();let g=null,y=null;try{const m=n.password?await V0(n.password):null,{transferId:v,expiresAt:w,ownerToken:b}=await zk({title:n.title||null,passwordHash:m,expiryPreset:n.expiry,deleteOnDownload:n.deleteOnDownload,senderFcmToken:localStorage.getItem("fcm_token")||null});g=v,y=b;const A=n.files.reduce((B,P)=>B+P.size,0),x=u?[...n.fileProgresses]:n.files.map(()=>0);let j=0;for(let B=0;B<n.files.length;B++){if(u&&x[B]===100){j+=n.files[B].size;continue}if(f.aborted)throw new Error("Upload cancelled");const P=n.files[B],{key:z}=await Ek(P,v,(W,H)=>{const ae=W/H*100;x[B]=Math.min(100,ae);const ve=j+W;r({type:"SET_UPLOAD_PROGRESS",payload:{uploadedBytes:ve,progress:Math.round(ve/A*100),currentFileIndex:B,fileProgresses:[...x]}})},f);if(f.aborted)throw new Error("Upload cancelled");j+=P.size,x[B]=100,await Bk({transferId:v,name:P.name,size:P.size,mimeType:P0(P),storagePath:z}),r({type:"SET_UPLOAD_PROGRESS",payload:{uploadedBytes:j,progress:Math.round(j/A*100),currentFileIndex:B,fileProgresses:[...x]}})}r({type:"SET_PROGRESS",payload:100}),await new Promise(B=>setTimeout(B,500));const{code:T,error:D}=await _k(v,w);D&&console.error("Failed to create share code:",D);const _=T?`${ro}/transfer/${v}?code=${encodeURIComponent(T)}`:`${ro}/transfer/${v}`;await n6(),parseInt(localStorage.getItem("uploadCount")||"0")>=2&&r6(),await ok({code:T||"",link:_,title:n.title||(n.files[0]?.name??"Untitled Transfer"),expiresAt:w,createdAt:new Date().toISOString(),fileCount:n.files.length}),r({type:"UPLOAD_SUCCESS",payload:{link:_,shareCode:T,shareCodeExpiresAt:w}}),Hi("upload_completed",Us(n.files))}catch(m){if(m.message==="Upload cancelled"){console.log("Upload was cancelled.");return}if(g){console.warn(`Rolling back partial transfer ${g}:`,m?.message??m);try{y&&await Ok(g,y)}catch(v){console.warn("Rollback failed (will be GCd by cron):",v)}}console.error("Upload failed:",m),Hi("upload_failed",{...Us(n.files),resumed:u}),r({type:"UPLOAD_FAILURE",payload:m.message||"An unknown error occurred."})}},p=()=>{l.current&&l.current.abort(),r({type:"RESET"})};return s.jsxs(an,{mode:"wait",children:[n.view==="idle"&&s.jsx(Jk,{onFilesAdded:o},"idle"),n.view==="configuring"&&s.jsx($k,{state:n,dispatch:r,onUpload:()=>d(!1)},"configuring"),n.view==="uploading"&&s.jsx(aS,{state:n,onRetry:()=>d(!0),onCancel:p},"uploading"),n.view==="success"&&s.jsx(oS,{state:n,dispatch:r},"success")]})},Jk=({onFilesAdded:n})=>{const r=V.useRef(null),[o,l]=V.useState(!1),d=p=>{p.target.files&&p.target.files.length>0&&(qr("light"),n(Array.from(p.target.files)))};return s.jsxs(ke.div,{initial:{opacity:0,y:10}
422,animate:{opacity:1,y:0},exit:{opacity:0,y:-10},transition:{duration:.2},style:{flex:1,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:"20px",minHeight:"320px",position:"relative"},children:[s.jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",gap:"20px",transition:"transform 0.2s",transform:o?"scale(0.96)":"scale(1)"},children:[s.jsx(Hk,{size:70}),s.jsx("span",{style:{color:"rgba(17,17,17,0.6)",fontSize:"22px",fontWeight:600,letterSpacing:"-0.5px"},children:"Upload Files"})]}),s.jsx("input",{type:"file",multiple:!0,ref:r,onChange:d,onMouseEnter:()=>l(!0),onMouseLeave:()=>l(!1),style:{position:"absolute",top:0,left:0,right:0,bottom:0,opacity:0,cursor:"pointer"}})]})},$k=({state:n,dispatch:r,onUpload:o})=>{const[l,d]=V.useState(!1),p=V.useRef(null),u=f=>{f.target.files&&f.target.files.length>0&&r({type:"ADD_FILES",payload:Array.from(f.target.files)})};return s.jsxs(ke.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},exit:{opacity:0,y:-10},transition:{duration:.2},style:{flex:1,display:"flex",flexDirection:"column",minHeight:0},children:[s.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"16px"},children:[s.jsx("style",{children:`
423                    .title-input::placeholder {
424                        color: rgba(17,17,17,0.45);
425                    }
426                `}),s.jsx("input",{type:"text",className:"title-input",placeholder:"Title (Optional)",value:n.title,onChange:f=>r({type:"SET_TITLE",payload:f.target.value}),style:{background:"transparent",border:"none",outline:"none",fontSize:"24px",fontWeight:600,color:"#111111",letterSpacing:"-0.5px",width:"100%"}}),s.jsx("div",{onClick:()=>d(!l),style:{cursor:"pointer",padding:"8px",opacity:l?1:.6,transition:"opacity 0.2s",color:"rgba(17,17,17,0.5)"},children:s.jsx(R0,{size:24,strokeWidth:1.5})})]}),s.jsx(an,{children:l&&s.jsx(ke.div,{initial:{opacity:0,height:0,marginBottom:0},animate:{opacity:1,height:"auto",marginBottom:"16px"},exit:{opacity:0,height:0,marginBottom:0},style:{overflow:"hidden"},children:s.jsxs("div",{style:{padding:"16px",background:"rgba(17,17,17,0.04)",borderRadius:"16px",display:"flex",flexDirection:"column",gap:"12px"},children:[s.jsx("input",{type:"password",placeholder:"Password (Optional)",value:n.password,onChange:f=>r({type:"SET_PASSWORD",payload:f.target.value}),style:{background:"rgba(255,255,255,0.5)",border:"1px solid rgba(17,17,17,0.08)",borderRadius:"12px",padding:"12px 16px",fontSize:"14px",outline:"none"}}),s.jsx("div",{style:{display:"flex",gap:"8px"},children:["30m","1h","24h","7d"].map(f=>s.jsxs("button",{onClick:()=>r({type:"SET_EXPIRY",payload:f}),style:{flex:1,padding:"10px 0",borderRadius:"10px",border:"1px solid",borderColor:n.expiry===f?"transparent":"rgba(17,17,17,0.08)",background:n.expiry===f?"transparent":"rgba(255,255,255,0.5)",color:n.expiry===f?"#fff":"#111",fontSize:"13px",fontWeight:600,cursor:"pointer",position:"relative"},children:[n.expiry===f&&s.jsx(ke.div,{layoutId:"expiry-active-pill",style:{position:"absolute",inset:0,background:"#111111",borderRadius:"10px",zIndex:0,boxShadow:"0 0 0 2px #A3E635"},transition:{type:"spring",stiffness:500,damping:30}}),s.jsx("span",{style:{position:"relative",zIndex:1},children:f})]},f))}),s.jsxs("div",{onClick:()=>r({type:"TOGGLE_BURN",payload:!n.deleteOnDownload}),style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"12px 16px",background:"rgba(255,255,255,0.5)",border:"1px solid rgba(17,17,17,0.08)",borderRadius:"12px",cursor:"pointer"},children:[s.jsx("span",{style:{fontSize:"14px",fontWeight:600,color:"#111"},children:"Burn after download"}),s.jsx("div",{style:{width:"40px",height:"24px",borderRadius:"12px",background:n.deleteOnDownload?"#111111":"rgba(17,17,17,0.1)",position:"relative",transition:"background 0.2s"},children:s.jsx("div",{style:{width:"20px",height:"20px",borderRadius:"10px",background:"#fff",position:"absolute",top:"2px",left:n.deleteOnDownload?"18px":"2px",transition:"left 0.2s",boxShadow:"0 2px 4px rgba(0,0,0,0.1)"}})})]})]})})}),s.jsxs("div",{style:{flex:1,overflowY:"auto",display:"flex",flexDirection:"column",gap:"8px",minHeight:"150px"},children:[n.files.map((f,g)=>s.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"12px",padding:"12px 14px",background:"rgba(17,17,17,0.04)",borderRadius:"20px",border:"1px solid rgba(17,17,17,0.12)"},children:[s.jsx("div",{style:{width:"48px",height:"48px",borderRadius:"13px",background:"rgba(17,17,17,0.06)",display:"flex",alignItems:"center",justifyContent:"center"},children:s.jsx(fh,{})}),s.jsxs("div",{style:{flex:1,minWidth:0,display:"flex",flexDirection:"column",gap:"4px"},children:[s.jsx("span",{style:{fontSize:"14px",fontWeight:600,color:"#111",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",letterSpacing:"-0.3px"},children:f.name}),s.jsx("span",{style:{fontSize:"12px",color:"rgba(17,17,17,0.6)"},children:yi(f.size)})]}),s.jsx("div",{onClick:()=>r({type:"REMOVE_FILE",payload:g}),style:{padding:"8px",cursor:"pointer",opacity:.5,display:"flex",alignItems:"center",justifyContent:"center"},children:s.jsx($s,{size:20})})]},g)),s.jsx("div",{onClick:()=>p.current?.click(),style:{padding:"16px",border:"1px dashed rgba(17,17,17,0.25)",borderRadius:"20px",textAlign:"center",cursor:"pointer",fontSize:"14px",fontWeight:600,color:"rgba(17,17,17,0.6)"},children:"+ Add More Files"}),s.jsx("input",{type:"file",multiple:!0,ref:p,"aria-label":"Add more files",onChange:u,style:{display:"none"}})]}),n.error&&s.jsx("div",{style:{padding:"12px",color:"#EF4444",background:"rgba(239,68,68,0.1)",borderRadius:"12px",fontSize:"13px",marginTop:"16px"},children:n.error}),s.jsxs(fn,{onClick:o,variant:"primary",size:"lg",fullWidth:!0,style:{marginTop:"16px"},children:["Upload ",n.files.length," File",n.files.length!==1?"s":""]})]})},eS=({value:n})=>{const r=n.toString().padStart(3,"0"),o=3-n.toString().length;return s.jsxs("span",{style:{display:"flex",alignItems:"center",height:"1em",overflow:"hidden"},children:[r.split("").map((l,d)=>{const p=d<o;return s.jsx("span",{style:{display:"inline-block",height:"1em",overflow:"hidden",position:"relative",maxWidth:p?"0px":"1.2em",opacity:p?0:1,transition:"max-width 0.4s ease, opacity 0.4s ease"},children:s.jsx("span",{style:{display:"flex",flexDirection:"column",transition:"transform 0.5s cubic-bezier(0.22, 1, 0.36, 1)",transform:`translateY(-${parseInt(l)}em)`},children:[0,1,2,3,4,5,6,7,8,9].map(u=>s.jsx("span",{style:{height:"1em",display:"flex",alignItems:"center",justifyContent:"center"},children:u},u))})},d)}),s.jsx("span",{children:"%"})]})},tS=({expiresAt:n})=>{const[r,o]=V.useState(()=>Ey(n));V.useEffect(()=>{const d=setInterval(()=>{const p=Ey(n);o(p),p.expired&&clearInterval(d)},1e3);return()=>clearInterval(d)},[n]);const l=(d,p,u,f)=>d>0?`${d}d ${p}h`:p>0?`${p}h ${u}m`:u>0?`${u}m ${f}
426s`:`${f}s`;return r.expired?s.jsx("span",{children:"Expired"}):s.jsxs("span",{style:{fontVariantNumeric:"tabular-nums"},children:["Expires in ",l(r.days,r.hours,r.minutes,r.seconds)]})};function nS(n){const[r,o]=V.useState(()=>Date.now()),l=V.useRef([]);V.useEffect(()=>{if(n.progress>=100||n.startedAt===0)return;const m=setInterval(()=>{const v=Date.now();o(v);const w=l.current;w.push({t:v,b:n.uploadedBytes});const b=v-3e3;for(;w.length&&w[0].t<b;)w.shift()},500);return()=>clearInterval(m)},[n.progress,n.startedAt,n.uploadedBytes]);const d=n.startedAt?Math.max(.001,(r-n.startedAt)/1e3):0,p=n.uploadedBytes/d,u=l.current;let f=p;if(u.length>=2){const m=u[0],v=u[u.length-1],w=(v.t-m.t)/1e3;w>.5&&(f=(v.b-m.b)/w)}const g=Math.max(0,n.totalBytes-n.uploadedBytes),y=f>1024?g/f:null;return{elapsedSec:d,bytesPerSec:Math.max(0,f),etaSec:y}}function iS(n){return n<1?"— MB/s":n<1024?`${n.toFixed(0)} B/s`:n<1024*1024?`${(n/1024).toFixed(1)} KB/s`:`${(n/(1024*1024)).toFixed(1)} MB/s`}function rS(n){if(n==null||!isFinite(n))return"—";if(n<1)return"almost done";if(n<60)return`${Math.ceil(n)}s left`;if(n<3600){const l=Math.floor(n/60),d=Math.ceil(n%60);return`${l}m ${d.toString().padStart(2,"0")}s left`}const r=Math.floor(n/3600),o=Math.ceil(n%3600/60);return`${r}h ${o}m left`}const aS=({state:n,onRetry:r,onCancel:o})=>{const l=V.useRef(null),d=nS({uploadedBytes:n.uploadedBytes,totalBytes:n.totalBytes,startedAt:n.startedAt,progress:n.progress}),[p,u]=V.useState(!1);return V.useEffect(()=>{if(n.progress>=100){u(!1);return}d.elapsedSec>=6&&d.bytesPerSec<200*1024?u(!0):d.bytesPerSec>500*1024&&u(!1)},[d.elapsedSec,d.bytesPerSec,n.progress]),V.useEffect(()=>{l.current&&n.files.length>1&&l.current.children[n.currentFileIndex]?.scrollIntoView({behavior:"smooth",block:"nearest"})},[n.currentFileIndex,n.files.length]),s.jsxs(ke.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},exit:{opacity:0,y:-10},transition:{duration:.2},style:{flex:1,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",minHeight:"320px",paddingTop:"24px",position:"relative"},children:[s.jsxs("div",{style:{position:"relative",marginBottom:"16px",marginTop:0},children:[s.jsx("div",{style:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",width:"100px",height:"100px",background:"rgba(175, 128, 77, 0.4)",filter:"blur(32px)",borderRadius:"50%",zIndex:0}}),s.jsx("div",{style:{position:"relative",zIndex:1,fontSize:"clamp(64px, 15vw, 96px)",fontWeight:700,color:"#111111",letterSpacing:"-2px",fontVariantNumeric:"tabular-nums",lineHeight:1},children:s.jsx(eS,{value:Math.round(n.progress)})})]}),s.jsx("div",{style:{width:"100%",height:"8px",background:"rgba(17,17,17,0.06)",borderRadius:"4px",marginTop:"16px",overflow:"hidden"},children:s.jsx(ke.div,{initial:{width:0},animate:{width:`${n.progress}%`},transition:{ease:"linear",duration:.2},style:{height:"100%",background:"#111111",borderRadius:"4px",position:"relative",overflow:"hidden"},children:s.jsx(ke.div,{initial:{left:"-100%"},animate:{left:"200%"},transition:{repeat:1/0,duration:1.5,ease:"linear"},style:{position:"absolute",top:0,bottom:0,width:"50%",background:"linear-gradient(90deg, transparent, rgba(255,255,255,0.3), transparent)",transform:"skewX(-20deg)"}})})}),s.jsxs("div",{"aria-live":"polite",style:{display:"flex",justifyContent:"space-between",alignItems:"baseline",width:"100%",marginTop:"12px",fontSize:"13px",color:"rgba(17,17,17,0.6)",fontWeight:500,fontVariantNumeric:"tabular-nums",gap:"12px"},children:[s.jsxs("span",{style:{whiteSpace:"nowrap"},children:[yi(n.uploadedBytes)," / ",yi(n.totalBytes)]}),s.jsxs("span",{style:{display:"flex",gap:"10px",alignItems:"baseline",whiteSpace:"nowrap",fontSize:"12px",color:"rgba(17,17,17,0.5)"},children:[s.jsxs("span",{title:"Current upload speed (rolling 3s average)",style:{display:"inline-flex",alignItems:"center",gap:"4px"},children:[s.jsx("span",{"aria-hidden":!0,style:{display:"inline-block",width:6,height:6,borderRadius:"50%",background:p?"#D97706":"#A3E635",boxShadow:p?"0 0 6px rgba(217, 119, 6, 0.6)":"0 0 6px rgba(163, 230, 53, 0.6)"}}),iS(d.bytesPerSec)]}),s.jsx("span",{title:"Estimated time remaining at current speed",children:rS(d.etaSec)})]})]}),p&&n.progress<100&&s.jsxs("div",{role:"status",style:{marginTop:"12px",width:"100%",padding:"10px 12px",borderRadius:"12px",background:"rgba(254, 243, 199, 0.6)",border:"1px solid rgba(217, 119, 6, 0.25)",color:"#78350f",fontSize:"12px",lineHeight:1.4},children:[s.jsx("strong",{style:{display:"block",marginBottom:2},children:"Slower than expected?"}),"This upload is using your full available bandwidth. If it feels slow, your internet connection or VPN is likely the bottleneck."]}),s.jsx("div",{ref:l,style:{marginTop:"24px",width:"100%",maxHeight:"220px",overflowY:"auto",display:"flex",flexDirection:"column",gap:"8px",paddingRight:"4px",maskImage:"linear-gradient(to bottom, black 80%, transparent 100%)",WebkitMaskImage:"linear-gradient(to bottom, black 80%, transparent 100%)"},children:n.files.map((f,g)=>{const y=n.fileProgresses[g]||0,m=g===n.currentFileIndex&&n.progress<100,v=y===100;return s.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"12px",padding:"12px 14px",background:"rgba(17,17,17,0.04)",borderRadius:"20px",border:m?"1px solid rgba(163, 230, 53, 0.4)":"1px solid rgba(17,17,17,0.08)",opacity:v?.6:m?1:.4,transition:"all 0.3s ease"},children:[s.jsx("div",{style:{width:"40px",height:"40px",borderRadius:"12px",background:"rgba(17,17,17,0.06)",display:"flex",alignItems:"center",justifyContent:"center"},children:s.jsx(fh,{})}),s.jsxs("div",{style:{flex:1,minWidth:0,display:"flex",flexDirection:"column",gap:"4px"},children:[s.jsx("span",{style:{fontSize:"13px",fontWeight:600,color:"#111",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",letterSpacing:"-0.3px"},children:f.name}),s.jsx("span",{style:{fontSize:"11px",color:"rgba(17,17,17,0.6)"},children:yi(f.size)})]}),v&&s.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",width:"24px",height:"24px",borderRadius:"12px",background:"rgba(163, 230, 53, 0.2)"},children:s.jsx(ol,{size:14,color:"#65A30D"})}),m&&s.jsxs("div",{style:{fontSize:"12px",fontWeight:600,color:"#65A30D"},children:[Math.round(y),"%"]})]}
426,`${f.name}-${g}`)})}),n.error?s.jsxs("div",{style:{marginTop:"auto",display:"flex",gap:"12px",width:"100%",paddingTop:"24px"},children:[s.jsx(fn,{onClick:o,variant:"secondary",fullWidth:!0,children:"Cancel"}),s.jsx(fn,{onClick:r,variant:"destructive",fullWidth:!0,children:"Retry"})]}):s.jsx("div",{style:{marginTop:"auto",width:"100%",paddingTop:"24px"},children:s.jsx(fn,{onClick:o,variant:"ghost",fullWidth:!0,style:{color:"rgba(17,17,17,0.6)"},children:"Cancel"})})]})},oS=({state:n,dispatch:r})=>{const[o,l]=V.useState(!1),[d,p]=V.useState(!1),u=()=>{n.link&&(navigator.clipboard.writeText(n.link),l(!0),setTimeout(()=>l(!1),2e3),qr("medium"))},f=()=>{n.shareCode&&(navigator.clipboard.writeText(n.shareCode),p(!0),setTimeout(()=>p(!1),2e3),qr("light"))};return s.jsxs(ke.div,{initial:{opacity:0,scale:.95},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.95},transition:{duration:.3},style:{flex:1,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",minHeight:"320px"},children:[s.jsx("div",{style:{width:"80px",height:"80px",borderRadius:"40px",background:"#e3f3cf",display:"flex",alignItems:"center",justifyContent:"center",marginBottom:"24px"},children:s.jsx("svg",{width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:s.jsx("path",{d:"M5 13L9 17L19 7",stroke:"#65a30d",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round"})})}),s.jsx("h2",{style:{margin:0,fontSize:"24px",fontWeight:600,color:"#111111",letterSpacing:"-0.5px",textAlign:"center"},children:"Upload Complete!"}),s.jsxs("p",{style:{margin:"8px 0 32px 0",color:"rgba(17,17,17,0.6)",fontSize:"15px",textAlign:"center",lineHeight:"22px"},children:["Your files are secure and ready to share.",s.jsx("br",{}),s.jsx("span",{style:{fontSize:"13.5px",opacity:.8,fontWeight:500},children:n.shareCodeExpiresAt?s.jsx(tS,{expiresAt:n.shareCodeExpiresAt}):`Expires in ${n.expiry}`})]}),s.jsxs("div",{onClick:f,title:"Click to copy code",style:{background:"rgba(17,17,17,0.04)",border:"1px solid rgba(17,17,17,0.12)",borderRadius:"24px",padding:"24px",width:"100%",display:"flex",flexDirection:"column",alignItems:"center",cursor:"pointer",transition:"background 0.2s"},onMouseEnter:g=>g.currentTarget.style.background="rgba(17,17,17,0.06)",onMouseLeave:g=>g.currentTarget.style.background="rgba(17,17,17,0.04)",children:[s.jsx("span",{style:{fontSize:"13px",color:d?"#65A30D":"rgba(17,17,17,0.5)",fontWeight:600,textTransform:"uppercase",letterSpacing:"1px",marginBottom:"8px",transition:"color 0.2s"},children:d?"Copied":"Share Code"}),s.jsx("div",{style:{fontSize:"46px",fontWeight:700,color:"#111111",letterSpacing:"4px",fontFamily:"inherit"},children:n.shareCode})]}),s.jsx("p",{style:{margin:"16px 0 0 0",color:"rgba(17,17,17,0.5)",fontSize:"13px",textAlign:"center",lineHeight:"18px",maxWidth:"280px"},children:"Share this code with recipients to instantly download your files on the app or website."}),s.jsxs("div",{style:{display:"flex",gap:"12px",width:"100%",marginTop:"24px"},children:[s.jsx(fn,{onClick:()=>r({type:"RESET"}),variant:"secondary",fullWidth:!0,children:"Done"}),s.jsx(fn,{onClick:u,variant:"primary",fullWidth:!0,iconLeft:s.jsx("span",{style:{position:"relative",width:18,height:18,display:"inline-flex",alignItems:"center",justifyContent:"center"},children:s.jsx(an,{mode:"wait",initial:!1,children:o?s.jsx(ke.span,{initial:{opacity:0,scale:.5},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.5},transition:{duration:.15},style:{position:"absolute"},children:s.jsx(ol,{size:18,color:"#A3E635"})},"copied"):s.jsx(ke.span,{initial:{opacity:0,scale:.5},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.5},transition:{duration:.15},style:{position:"absolute"},children:s.jsx(w0,{size:18})},"copy")})}),children:o?"Copied":"Copy Link"})]})]})},sS=({onDismiss:n})=>{const[r,o]=V.useState(!1);return s.jsx("div",{role:"alert",style:{position:"fixed",bottom:16,left:16,right:16,maxWidth:720,margin:"0 auto",zIndex:1e4,background:"#fef3c7",color:"#78350f",border:"1px solid #fcd34d",borderRadius:12,padding:"12px 16px",boxShadow:"0 4px 16px rgba(0, 0, 0, 0.08)",fontFamily:"system-ui, -apple-system, sans-serif",fontSize:14,lineHeight:1.4},children:s.jsxs("div",{style:{display:"flex",alignItems:"flex-start",ga
426p:12},children:[s.jsxs("div",{style:{flex:1},children:[s.jsx("strong",{style:{display:"block",marginBottom:4},children:"⚠️ SendVault backend is not deployed"}),s.jsx("p",{style:{margin:0},children:"File uploads and share codes won't work until you deploy the Supabase Edge Functions and run the SQL migration. See the steps below."}),r&&s.jsx("pre",{style:{margin:"10px 0 0 0",padding:10,background:"rgba(120, 83, 15, 0.07)",borderRadius:6,fontSize:12,whiteSpace:"pre-wrap",overflowX:"auto",color:"#451a03"},children:`# 1. Link your project (one-time)
427npx supabase link --project-ref vmsyxbjutfeoeevxlohr
428
429# 2. Apply the SQL migration in the Supabase Dashboard SQL editor
430#    (paste the contents of backend_schema.sql)
431
432# 3. Deploy the Edge Functions
433npx supabase functions deploy create-transfer
434npx supabase functions deploy create-share-code
435npx supabase functions deploy lookup-transfer
436npx supabase functions deploy record-file
437npx supabase functions deploy delete-transfer
438npx supabase functions deploy upload-file
439npx supabase functions deploy download-file
440npx supabase functions deploy notify-download
441
442# 4. Set Edge Function secrets in the Supabase Dashboard
443#    (Project Settings → Edge Functions → Secrets):
444#    R2_ACCOUNT_ID, R2_ACCESS_KEY_ID, R2_SECRET_ACCESS_KEY, R2_BUCKET_NAME`})]}),s.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:4},children:[s.jsx("button",{type:"button",onClick:()=>o(l=>!l),style:{background:"transparent",border:"1px solid #b45309",color:"#78350f",padding:"4px 10px",borderRadius:6,fontSize:12,cursor:"pointer",fontWeight:500},children:r?"Hide steps":"Show steps"}),n&&s.jsx("button",{type:"button",onClick:n,"aria-label":"Dismiss",style:{background:"transparent",border:"none",color:"#78350f",fontSize:18,cursor:"pointer",lineHeight:1,padding:0},children:"×"})]})]})})},ho="https://sendvault.online",My=`${ho}/og-image.png`,lS={"/":{title:"SendVault — Secure File Sharing Up to 1GB | Free, No Login",description:"SendVault lets you securely send large files up to 1GB for free — password protection, 6-character share codes, and zero compression. No registration needed.",keywords:"secure file sharing no registration, free file sharing up to 1gb, WeTransfer alternative 6-digit code, send large files anonymously, temporary file sharing, send files online",ogType:"website",priority:1,changefreq:"weekly"},"/how-it-works":{title:"How SendVault Works — Simple 3-Step File Sharing",description:"Learn how SendVault works: upload files up to 1GB, get a 6-character share code, and let anyone download without an account.",keywords:"how sendvault works, file sharing guide, share code file transfer, send large files tutorial",ogType:"website",priority:.9,changefreq:"monthly",jsonLd:{"@context":"https://schema.org","@type":"FAQPage",mainEntity:[{"@type":"Question",name:"How do I send a file?",acceptedAnswer:{"@type":"Answer",text:"Simply upload your file on the homepage. You will instantly receive a 6-character code."}},{"@type":"Question",name:"How do I receive a file?",acceptedAnswer:{"@type":"Answer",text:"Go to SendVault and enter the 6-character code in the Receive panel."}}]}},"/about":{title:"About SendVault — Free Secure File Sharing",description:"SendVault is a free file sharing service built for people who need to send large files quickly without accounts, compression, or complexity.",keywords:"about sendvault, free file sharing service, secure file transfer",ogType:"website",priority:.8,changefreq:"monthly"},"/usecases":{title:"SendVault Use Cases — Creatives, Teams & Personal Sharing",description:"See how remote teams, designers, and businesses use SendVault for secure file transfer — 4K video, design assets, and confidential documents.",keywords:"file sharing use cases, creative file transfer, business file sharing, secure document transfer",ogType:"website",priority:.8,changefreq:"monthly"},"/contact":{title:"Contact SendVault — Support & Feedback",description:"Get in touch with the SendVault team for support, feedback, abuse reports, or business inquiries at [email protected].",keywords:"contact sendvault, file sharing support, report abuse",ogType:"website",priority:.6,changefreq:"monthly"},"/download":{title:"Download SendVault App — Android File Sharing",description:"Get the SendVault Android app for faster mobile uploads, built-in share history, and secure 6-character code file sharing.",keywords:"sendvault app, android file sharing app, download sendvault",ogType:"website",priority:.8,changefreq:"monthly"},"/blog":{title:"SendVault Blog — Secure File Sharing Tips & Guides",description:"Read the latest guides on secure file sharing, encryption, remote work productivity, and free alternatives to WeTransfer and WhatsApp.",keywords:"file sharing blog, secure transfer tips, wetransfer alternative guide",ogType:"website",priority:.9,changefreq:"weekly"},"/privacy":{title:"SendVault Privacy Policy | File Sharing Data Practices",description:"Read SendVault privacy practices for cookies, analytics, temporary file storage, file deleti
444on, and the information we collect when you use the service.",ogType:"website",priority:.3,changefreq:"yearly"},"/terms":{title:"SendVault Terms of Service | Acceptable Use Policy",description:"Read SendVault terms for acceptable use, file-sharing responsibilities, prohibited content, temporary transfers, service limits, and support contact details.",ogType:"website",priority:.3,changefreq:"yearly"},"/wetransfer-alternative":{title:"Best WeTransfer Alternative 2026 | Send Large Files Free",description:"SendVault is the #1 free WeTransfer alternative. Send files up to 1GB without compression, login, or email. The perfect private file transfer service.",keywords:"wetransfer alternative, free wetransfer alternative, send large files free, no account file sharing, peer to peer file sharing alternative",ogType:"website",priority:.9,changefreq:"monthly",jsonLd:{"@context":"https://schema.org","@type":"Article",headline:"Best WeTransfer Alternative 2026",description:"SendVault is the #1 free WeTransfer alternative. Send files up to 1GB without compression.",author:[{"@type":"Organization",name:"SendVault"}]}},"/whatsapp-alternative":{title:"Share Files Without WhatsApp | Send High Quality Video",description:"Need to share files without WhatsApp? SendVault lets you transfer full-quality photos and videos between devices instantly.",keywords:"share files without whatsapp, whatsapp alternative file sharing, send video without compression",ogType:"website",priority:.9,changefreq:"monthly",jsonLd:{"@context":"https://schema.org","@type":"Article",headline:"Share Files Without WhatsApp",description:"Need to share files without WhatsApp? SendVault lets you transfer full-quality photos and videos.",author:[{"@type":"Organization",name:"SendVault"}]}},"/secure-file-sharing":{title:"Best Secure File Sharing Services 2026 | Encrypted & Free",description:"Compare secure file sharing services in 2026. See how encryption, password protection, expiry, file limits, and no-account downloads affect private file transfers.",keywords:"secure file sharing services 2026, best encrypted file sharing services 2026, encrypted file transfer free, secure document sharing, burn after download file transfer",ogType:"website",priority:.9,changefreq:"monthly",jsonLd:{"@context":"https://schema.org","@type":"Article",headline:"Best Secure File Sharing Services 2026",description:"Compare the best secure file sharing services in 2026. SendVault offers encrypted transfers up to 1GB free.",author:[{"@type":"Organization",name:"SendVault"}]}}};function bo(n){const r=n==="/"?"/":n.replace(/\/$/,"");return`${ho}${r}`}function xo(n){return lS[n]}function Qe(n,r,o=!1){const l=o?"property":"name";let d=document.querySelector(`meta[${l}="${n}"]`);d||(d=document.createElement("meta"),d.setAttribute(l,n),document.head.appendChild(d)),d.setAttribute("content",r)}function cS(n,r){let o=document.querySelector(`link[rel="${n}"]`);o||(o=document.createElement("link"),o.setAttribute(n,n),document.head.appendChild(o)),o.setAttribute("href",r)}function Su(n){document.getElementById(n)?.remove()}function qd(n,r){Su(n);const o=document.createElement("script");o.type="application/ld+json",o.id=n,o.text=JSON.stringify(r),document.head.appendChild(o)}function mn(n={}){const{title:r,description:o,canonical:l,ogTitle:d,ogDescription:p,ogUrl:u,ogType:f="website",ogImageAlt:g,keywords:y,articleAuthor:m,articlePublishedTime:v,articleModifiedTime:w,articleSection:b,noindex:A,faq:x,breadcrumbs:j,speakable:T,jsonLd:D}=n;V.useEffect(()=>{r&&(document.title=r),A&&Qe("robots","noindex, nofollow"),o&&Qe("description",o),y&&Qe("keywords",y),l&&cS("canonical",l);const _=d||r||"",L=p||o||"",B=u||l||window.location.href;if(_&&Qe("og:title",_,!0),L&&Qe("og:description",L,!0),B&&Qe("og:url",B,!0),Qe("og:type",f,!0),Qe("og:image",My,!0),Qe("og:image:width","1200",!0),Qe("og:image:height","630",!0),Qe("og:image:alt",g||_||"SendVault — Secure File Sharing",!0),Qe("og:site_name","SendVault",!0),Qe("og:locale","en_US",!0),f==="article"&&(m&&Qe("article:author",m,!0),v&&Qe("article:published_time",v,!0),w&&Qe("article:modified_time",w,!0),b&&Qe("article:section",b,!0),Qe("article:publisher",ho,!0)),Qe("twitter:card","summary_large_image"),Qe("twitter:site","@SendVault"),Qe("twitter:creator","@SendVault"),_&&Qe("twitter:title",_),L&&Qe("twitter:description",L),Qe("twitter:image",My),Qe("twitter:image:alt",g||_||"SendVault — Secure File Sharing"),x&&x.length>0){const P={"@context":"https://schema.org","@type":"FAQPage",mainEntity:x.map(z=>
444({"@type":"Question",name:z.question,acceptedAnswer:{"@type":"Answer",text:z.answer}}))};T&&(P.speakable={"@type":"SpeakableSpecification",xpath:["/html/head/title",'//*[@itemprop="answer"]']}),qd("sv-faq-schema",P)}else Su("sv-faq-schema");if(j&&j.length>0?qd("sv-breadcrumb-schema",{"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:j.map((P,z)=>({"@type":"ListItem",position:z+1,name:P.name,item:P.path.startsWith("http")?P.path:`${ho}${P.path}`}))}):Su("sv-breadcrumb-schema"),D){const P=Array.isArray(D)?D:[D];document.querySelectorAll('script[id^="sv-custom-schema-"]').forEach(z=>z.remove()),P.forEach((z,W)=>{qd(`sv-custom-schema-${W}`,z)})}else document.querySelectorAll('script[id^="sv-custom-schema-"]').forEach(P=>P.remove())},[r,o,l,d,p,u,f,g,y,m,v,w,b,A,x,j,T,D])}const $r=({children:n,activePage:r,title:o,subtitle:l,contentMaxWidth:d="800px"})=>{const[p,u]=V.useState(!1);return s.jsxs("div",{className:"v2-legal-wrapper",style:{minHeight:"100vh",backgroundColor:"#fdfdfd",color:"#111111",position:"relative"},children:[s.jsx("style",{children:`
445                @media (max-width: 900px) {
446                    .home-header {
447                        padding: 0 24px !important;
448                        position: absolute !important;
449                    }
450                    .home-nav-links {
451                        display: none !important;
452                    }
453                    .v2-hero-title {
454                        font-size: 42px !important;
455                    }
456                    .v2-hero-section {
457                        background-position: center top !important;
458                        height: 50vh !important;
459                        min-height: 300px !important;
460                    }
461                }
462                .v2-legal-content h2 { font-size: 28px; font-weight: 600; margin-top: 64px; margin-bottom: 24px; letter-spacing: -0.5px; color: #111111; }
463                .v2-legal-content h3 { font-size: 22px; font-weight: 600; margin-top: 40px; margin-bottom: 16px; color: #111111; }
464                .v2-legal-content h4 { font-size: 18px; font-weight: 600; margin-top: 32px; margin-bottom: 12px; color: #111111; }
465                .v2-legal-content p { font-size: 17px; line-height: 1.7; margin-bottom: 24px; color: rgba(17, 17, 17, 0.75); }
466                .v2-legal-content ul, .v2-legal-content ol { font-size: 17px; line-height: 1.7; margin-bottom: 24px; padding-left: 24px; color: rgba(17, 17, 17, 0.75); }
467                .v2-legal-content li { margin-bottom: 12px; }
468                .v2-legal-content a { color: #65a30d; text-decoration: none; font-weight: 500; transition: color 0.2s; }
469                .v2-legal-content a:hover { color: #4d7c0f; text-decoration: underline; }
470            `}),s.jsxs("header",{className:"home-header",style:{position:"absolute",top:0,left:0,right:0,height:"76px",display:"flex",alignItems:"center",justifyContent:"space-between",padding:"0 48px",background:"transparent",zIndex:100,fontSize:"15px",fontWeight:400,color:"#ffffff"},children:[s.jsx("div",{style:{display:"flex",alignItems:"center",flex:1},children:s.jsx("div",{style:{display:"flex",alignItems:"center",fontSize:"20px",fontWeight:600,letterSpacing:"-0.5px",transform:"scale(0.9)",transformOrigin:"left center",color:"#ffffff"},children:s.jsx(Xi,{})})}),s.jsxs("div",{style:{display:"flex",gap:"32px",alignItems:"center",justifyContent:"flex-end",flex:1},children:[s.jsxs("nav",{className:"home-nav-links",style:{display:"flex",gap:"32px",alignItems:"center"},children:[s.jsx("a",{href:"/",style:{textDecoration:"none",color:"inherit",transition:"opacity 0.2s",opacity:r==="home"?.7:1},onMouseEnter:f=>f.currentTarget.style.opacity="0.7",onMouseLeave:f=>f.currentTarget.style.opacity=r==="home"?"0.7":"1",children:"Home"}),s.jsx("a",{href:"/about",style:{textDecoration:"none",color:"inherit",transition:"opacity 0.2s",opacity:r==="about"?.7:1},onMouseEnter:f=>f.currentTarget.style.opacity="0.7",onMouseLeave:f=>f.currentTarget.style.opacity=r==="about"?"0.7":"1",children:"About"}),s.jsx("a",{href:"/wetransfer-alternative",style:{textDecoration:"none",color:"inherit",transition:"opacity 0.2s",o
470pacity:r==="alternative"?.7:1},onMouseEnter:f=>f.currentTarget.style.opacity="0.7",onMouseLeave:f=>f.currentTarget.style.opacity=r==="alternative"?"0.7":"1",children:"Alternative"}),s.jsx("a",{href:"/blog",style:{textDecoration:"none",color:"inherit",transition:"opacity 0.2s"},onMouseEnter:f=>f.currentTarget.style.opacity="0.7",onMouseLeave:f=>f.currentTarget.style.opacity="1",children:"Blog"})]}),s.jsxs("div",{style:{position:"relative"},onMouseEnter:()=>u(!0),onMouseLeave:()=>u(!1),children:[s.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px",cursor:"pointer",transition:"opacity 0.2s",opacity:p?.7:1},children:["Use Cases",s.jsx(ke.div,{animate:{rotate:p?180:0},transition:{duration:.2},children:s.jsx(Yr,{size:16,strokeWidth:2.5})})]}),s.jsx(an,{children:p&&s.jsxs(ke.div,{initial:{opacity:0,y:10,scale:.95},animate:{opacity:1,y:0,scale:1},exit:{opacity:0,y:10,scale:.95},transition:{duration:.2},style:{position:"absolute",top:"calc(100% + 20px)",left:"50%",x:"-50%",background:"rgba(255, 255, 255, 0.9)",backdropFilter:"blur(16px)",borderRadius:"12px",padding:"8px",display:"flex",flexDirection:"column",gap:"2px",minWidth:"160px",boxShadow:"0 8px 32px rgba(0,0,0,0.1)",border:"1px solid rgba(0,0,0,0.05)"},children:[s.jsx("a",{href:"/usecases#use-case-creatives",style:{textDecoration:"none",color:"#111",padding:"7px 12px",borderRadius:"8px",transition:"background 0.2s",fontSize:"14px",fontWeight:500},onMouseEnter:f=>f.currentTarget.style.background="rgba(0,0,0,0.05)",onMouseLeave:f=>f.currentTarget.style.background="transparent",children:"For Creatives"}),s.jsx("a",{href:"/usecases#use-case-teams",style:{textDecoration:"none",color:"#111",padding:"7px 12px",borderRadius:"8px",transition:"background 0.2s",fontSize:"14px",fontWeight:500},onMouseEnter:f=>f.currentTarget.style.background="rgba(0,0,0,0.05)",onMouseLeave:f=>f.currentTarget.style.background="transparent",children:"For Teams"}),s.jsx("a",{href:"/usecases#use-case-personal",style:{textDecoration:"none",color:"#111",padding:"7px 12px",borderRadius:"8px",transition:"background 0.2s",fontSize:"14px",fontWeight:500},onMouseEnter:f=>f.currentTarget.style.background="rgba(0,0,0,0.05)",onMouseLeave:f=>f.currentTarget.style.background="transparent",children:"Personal Use"})]})})]})]})]}),s.jsx("div",{className:"v2-hero-section",style:{height:"60vh",minHeight:"400px",width:"100%",backgroundImage:"linear-gradient(to bottom, rgba(0,0,0,0.2) 0%, rgba(253,253,253,0) 65%, rgba(253,253,253,0.9) 95%, #fdfdfd 100%), url(/bg-image.webp)",backgroundSize:"cover",backgroundPosition:"center 38%",display:"flex",alignItems:"center",justifyContent:"center",paddingBottom:"0",paddingLeft:"24px",paddingRight:"24px",boxSizing:"border-box"},children:s.jsxs("div",{style:{width:"100%",maxWidth:"800px",textAlign:"left"},children:[o&&s.jsx(ke.h1,{className:"v2-hero-title",initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.8},style:{fontSize:"56px",fontWeight:700,letterSpacing:"-1.5px",margin:"0 0 16px 0",lineHeight:1.1,color:"#111111"},children:o}),l&&s.jsx(ke.p,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.8,delay:.1},style:{fontSize:"18px",color:"rgba(17,17,17,0.7)",margin:0,fontWeight:500},children:l})]})}),s.jsx("main",{style:{paddingBottom:"120px",paddingLeft:"24px",paddingRight:"24px",display:"flex",justifyContent:"center",boxSizing:"border-box"},children:s.jsx("div",{className:"v2-legal-content",style:{width:"100%",maxWidth:d},children:n})}),s.jsxs("div",{style:{display:"flex",justifyContent:"center",gap:"32px",padding:"60px 0 40px",color:"#111111",fontSize:"14px",fontWeight:500,backgroundColor:"transparent"},children:[s.jsxs("a",{href:"/privacy",style:{textDecoration:"none",color:"inherit",transition:"color 0.2s"},onMouseEnter:f=>f.currentTarget.style.color="#4d7c0f",onMouseLeave:f=>f.currentTarget.style.color="#111",children:["Privacy ",s.jsx(Sn,{size:12,strokeWidth:2.5,style:{display:"inline-block",verticalAlign:"middle",marginBottom:"2px"}})]}),s.jsxs("a",{href:"/terms",style:{textDecoration:"none",color:"inherit",transition:"color 0.2s"},onMouseEnter:f=>f.currentTarget.style.color="#4d7c0f",onMouseLeave:f=>f.currentTarget.style.color="#111",children:["Terms ",s.jsx(Sn,{size:12,strokeWidth:2.5,style:{display:"inline-block",verticalAlign:"middle",marginBottom:"2px"}})]}),s.jsxs("a",{href:"/download",style:{textDecoration:"none",color:"inherit",transition:"color 0.2s"},onMouseEnter:f=>f.currentTarget.style.color="#4d7c0f",onMouseLeave:f=>f.currentTarget.style.color="#111",children:["Get Android App ",s.jsx(Sn,{size:12,strokeWidth:2.5,style:{display:"inline-block",verticalAlign:"middle",marginBottom:"2px"}})]})]})]})},dS=[{accent:"#A3E635"},{accent:"#818cf8"},{accent:"#f87171"}],uS=[{id:"use-case-creatives",icon:s.jsx(D0,{size:44}),title:"For Creatives & Designers",description:"Share high-resolution mockups, design assets, and large video files with clients and collaborators effortlessly.",examples:["4K Video Renders","Photoshop & Figma Files","Client Presentation Decks","Large Audio Multitracks","3D Models & Textures"]},{id:"use-case-teams",icon:s.jsx(b0,{size:44}),title:"For Business & Teams",description:"Securely send confidential documents, reports, and presentations with peace of mind.",examples:["Quarterly Reports","Sensitive Legal Documents","Project Proposals","Software Build Artifacts","High-res Marketing Assets"]},{id:"use-case-personal",icon:s.jsx(T0,{size:44}),title:"For Personal Use",description:"Sending holiday photos to family or sharing large video files from a trip has never been easier.",examples:["Full-Resolution Photo Albums","Uncompressed Vacation Videos","Archived Family Records","Large Game Files","Home Movie Backups"]}],hS=()=>{const n=xo("/usecases")||{title:"Use Cases | SendVault",description:"See how SendVault works for creatives, teams, and personal use.",keywords:""};
470mn({title:n.title,description:n.description,canonical:bo("/usecases"),ogType:"website",keywords:n.keywords});const r=V.useCallback(()=>{const{hash:o}=window.location;o&&requestAnimationFrame(()=>{const l=document.querySelector(o);if(l){const u=l.getBoundingClientRect().top+window.pageYOffset-100;window.scrollTo({top:u,behavior:"smooth"})}})},[]);return V.useEffect(()=>(r(),window.addEventListener("hashchange",r),()=>window.removeEventListener("hashchange",r)),[r]),s.jsxs($r,{title:"Versatile Sharing",subtitle:"How SendVault Works For You",contentMaxWidth:"1200px",children:[s.jsx("style",{children:`
471                .v2-use-cases-grid {
472                    display: grid;
473                    grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
474                    gap: 32px;
475                    margin-top: -60px; /* Pull the grid up over the hero gradient slightly */
476                    position: relative;
477                    z-index: 10;
478                    padding-bottom: 40px;
479                }
480                
481                .v2-use-case-card {
482                    background: #ffffff;
483                    border-radius: 32px;
484                    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.04);
485                    border: 1px solid rgba(0, 0, 0, 0.05);
486                    padding: 48px 40px;
487                    display: flex;
488                    flex-direction: column;
489                    transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.4s cubic-bezier(0.16, 1, 0.3, 1);
490                }
491                
492                .v2-use-case-card:hover {
493                    transform: translateY(-8px);
494                    box-shadow: 0 24px 56px rgba(0, 0, 0, 0.08);
495                    border-color: rgba(0, 0, 0, 0.08);
496                }
497
498                .v2-use-case-icon-wrapper {
499                    width: 72px;
500                    height: 72px;
501                    border-radius: 50%;
502                    background: transparent;
503                    display: flex;
504                    align-items: center;
505                    justify-content: center;
506                    margin-bottom: 32px;
507                    position: relative;
508                    overflow: hidden;
509                }
510
511                .v2-use-case-card h3 {
512                    font-size: 26px;
513                    font-weight: 700;
514                    color: #111111;
515                    margin: 0 0 16px 0;
516                    letter-spacing: -0.8px;
517                }
518
519                .v2-use-case-card p {
520                    font-size: 17px;
521                    color: rgba(17,17,17,0.65);
522                    line-height: 1.6;
523                    margin: 0 0 32px 0;
524                }
525
526                .v2-use-case-examples {
527                    list-style: none;
528                    padding: 0 !important;
529                    margin: 0 !important;
530                    padding-left: 0 !important;
531                    margin-left: 0 !important;
532                    display: flex;
533                    flex-direction: column;
534                    gap: 12px;
535                }
536
537                .v2-use-case-examples li {
538                    display: flex;
539                    align-items: flex-start;
540                    gap: 12px;
541                    font-size: 15px;
542                    font-weight: 500;
543                    color: #111111;
544                    margin: 0;
545                    padding: 0;
546                }
547
548                @media (max-width: 900px) {
549                    .v2-use-cases-grid {
550                        grid-template-columns: 1fr;
551                        margin-top: -30px;
552                    }
553                    .v2-use-case-card {
554                        padding: 32px 24px;
555                    }
556                }
557            `}),s.jsx("div",{className:"v2-use-cases-grid",children:uS.map((o,l)=>{const d=dS[l];return s.jsxs("div",{className:"v2-use-case-card",id:o.id,children:[s.jsxs("div",{className:"v2-use-case-icon-wrapper",style:{border:`1px solid ${d.accent}30`,background:`${d.accent}15`,color:d.accent,boxShadow:`0 8px 24px ${d.accent}20`},children:[s.jsx("div",{style:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",width:"140%",height:"140%",background:`radial-gradient(circle at center, ${d.accent}20 0%, transparent 60%)`,pointerEvents:"none"}}),o.icon]}),s.jsx("h2",{children:o.title}),s.jsx("p",{children:o.description}),s.jsx("ul",{className:"v2-use-case-examples",children:o.examples.map((p,u)=>s.jsxs("li",{children:[s.jsx(rl,{size:20,style:{color:d.accent,flexShrink:0,marginTop:"2px"}}),s.jsx("span",{children:p})]},u))})]},l)})})]})},Yd=12;function pS(n){const r=new Date(n);return Number.isNaN(r.getTime())?n:r.toLocaleDateString("en-US",{month:"long",day:"numeric",year:"numeric"})}const fS=({articles:n,categories:r,selectedCategory:o,setSelectedCategory:l,openArticle:d})=>{const[p,u]=V.useState(1);V.useEffect(()=>{u(1)},[o]);const f=o==="All"?n:n.filter(w=>w.category===o),g=Math.max(1,Math.ceil(f.length/Yd)),y=Math.min(p,g),m=f.slice((y-1)*Yd,y*Yd),v=w=>{u(w)};return s.jsxs("div",{className:"blog-v3",children:[s.jsx("style",{children:`
558                .blog-v2-grid {
559                    display: grid;
560                    grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
561                    gap: 24px;
562                    margin-top: -40px;
563                    position: relative;
564                    z-index: 10;
565                    padding-bottom: 8px;
566                }
567
568                .blog-v2-card {
569                    background: #ffffff;
570                    border-radius: 28px;
571                    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.04);
572                    border: 1px solid rgba(0, 0, 0, 0.05);
573                    padding: 32px;
574                    display: flex;
575                    flex-direction: column;
576                    gap: 12px;
577                    cursor: pointer;
578                    transition: box-shadow 0.7s cubic-bezier(0.22, 0.61, 0.36, 1), border-color 0.3s ease-out;
579                    text-align: left;
580                    text-decoration: none !important;
581                    color: inherit;
582                }
583
584                .blog-v2-card:hover,
585                .blog-v2-card:focus,
586                .blog-v2-card:active {
587                    box-shadow: 0 20px 48px rgba(0, 0, 0, 0.08);
588                    border-color: rgba(0, 0, 0, 0.08);
589                    text-decoration: none !important;
590                }
591
592                .blog-v2-card:hover *,
593                .blog-v2-card:focus *,
594                .blog-v2-card:active * {
595                    text-decoration: none !important;
596                }
597
598                .blog-v2-card:focus-visible {
599                    outline: 2px solid #A3E635;
600                    outline-offset: 2px;
601                }
602
603                .blog-v2-card-top {
604                    display: flex;
605                    align-items: center;
606                    justify-content: space-between;
607                    gap: 8px;
608                }
609
610                .blog-v2-cat-pill {
611                    display: inline-flex;
612                    align-items: center;
613                    padding: 4px 12px;
614                    border-radius: 100px;
615                    background: rgba(163, 230, 53, 0.12);
616                    color: #4d7c0f;
617                    font-size: 12px;
618                    font-weight: 600;
619                    letter-spacing: 0.3px;
620                }
621
622                .blog-v2-time {
623                    display: flex;
624                    align-items: center;
625                    gap: 5px;
626                    font-size: 13px;
627                    color: rgba(17,17,17,0.45);
628                    font-weight: 400;
629                    flex-shrink: 0;
630                }
631
632                .blog-v2-title {
633                    font-size: 18px;
634                    font-weight: 700;
635                    color: #111111;
636                    margin: 4px 0 0 0;
637                    line-height: 1.3;
638                    letter-spacing: -0.4px;
639                }
640
641                .blog-v2-excerpt {
642                    font-size: 14px;
643                    color: rgba(17,17,17,0.6);
644                    line-height: 1.6;
645                    margin: 0;
646                    flex: 1;
647                    display: -webkit-box;
648                    -webkit-line-clamp: 3;
649                    -webkit-box-orient: vertical;
650                    overflow: hidden;
651                }
652
653                .blog-v2-card-bottom {
654                    display: flex;
655                    align-items: center;
656                    justify-content: space-between;
657                    margin-top: 8px;
658                    padding-top: 16px;
659                    border-top: 1px solid rgba(0,0,0,0.06);
660                }
661
662                .blog-v2-date {
663                    font-size: 13px;
664                    color: rgba(17,17,17,0.4);
665                    font-weight: 400;
666                }
667
668                .blog-v2-readmore {
669                    font-size: 13px;
670                    font-weight: 600;
671                    color: #111111;
672                    display: flex;
673                    align-items: center;
674                    gap: 4px;
675                }
676
677                .blog-v2-pagination {
678                    display: flex;
679                    align-items: center;
680                    justify-content: center;
681                    gap: 8px;
682                    padding: 24px 0 40px 0;
683                }
684
685                .blog-v2-page-btn {
686                    width: 40px;
687                    height: 40px;
688                    border-radius: 50%;
689                    border: 1px solid rgba(0,0,0,0.1);
690                    background: #fff;
691                    display: flex;
692                    align-items: center;
693                    justify-content: center;
694                    cursor: pointer;
695                    color: #111;
696                    transition: all 0.2s;
697                }
698
699                .blog-v2-page-btn:hover:not(:disabled) {
700                    background: #111;
701                    color: #fff;
702                    border-color: #111;
703                }
704
705                .blog-v2-page-btn:disabled {
706                    opacity: 0.3;
707                    cursor: not-allowed;
708                }
709
710                .blog-v2-page-num {
711                    width: 40px;
712                    height: 40px;
713                    border-radius: 50%;
714                    border: 1px solid rgba(0,0,0,0.1);
715                    background: transparent;
716                    font-size: 14px;
717                    font-weight: 500;
718                    color: rgba(17,17,17,0.6);
719                    cursor: pointer;
720                    transition: all 0.2s;
721                }
722
723                .blog-v2-page-num:hover {
724                    background: rgba(0,0,0,0.05);
725                    color: #111;
726                }
727
728                .blog-v2-page-num.is-active {
729                    background: #111;
730                    color: #fff;
731                    border-color: #111;
732                    font-weight: 700;
733                }
734
735                @media (max-width: 900px) {
736                    .blog-v2-grid {
737                        grid-template-columns: 1fr;
738                        margin-top: -20px;
739                    }
740                }
741            `}),s.jsx("main",{className:"blog-v2-grid",children:m.map(w=>s.jsxs("a",{href:`/blog/${w.slug}`,className:"blog-v2-card",onClick:b=>{b.preventDefault(),d(w)},children:[s.jsxs("div",{className:"blog-v2-card-top",children:[s.jsx("span",{className:"blog-v2-cat-pill",children:w.category}),s.jsxs("span",{className:"blog-v2-time",children:[s.jsx(Tn,{size:13})," ",w.readTime]})]}),s.jsx("h2",{className:"blog-v2-title",children:w.title}),s.jsx("p",{className:"blog-v2-excerpt",children:w.excerpt}),s.jsxs("div",{className:"blog-v2-card-bottom",children:[s.jsx("time",{dateTime:w.publishDate,className:"blog-v2-date",children:pS(w.publishDate)}),s.jsxs("span",{className:"blog-v2-readmore",children:["Read article ",s.jsx(Zr,{size:14})]})]})]},w.slug))}),g>1&&s.jsxs("nav",{className:"blog-v2-pagination","aria-label":"Blog pages",children:[s.jsx("button",{type:"button",className:"blog-v2-page-btn","aria-label":"Previous page",disabled:y<=1,onClick:()=>v(y-1),children:s.jsx(lh,{size:16})}),s.jsx("div",{style:{display:"flex",gap:"4px",alignItems:"center"},children:Array.from({length:g},(w,b)=>b+1).filter(w=>g<=7||w===1||w===g?!0:Math.abs(w-y)<=1).map((w,b,A)=>{const x=A[b-1],j=x!==void 0&&w-x>1;return s.jsxs(V.Fragment,{children:[j&&s.jsx("span",{style:{color:"rgba(17,17,17,0.4)",fontSize:"14px"},children:"…"}),s.jsx("button",{type:"button",className:`blog-v2-page-num${w===y?" is-active":""}`,"aria-current":w===y?"page":void 0,onClick:()=>v(w),children:w})]},w)})}),s.jsx("button",{type:"button",className:"blog-v2-page-btn","aria-label":"Next page",disabled:y>=g,onClick:()=>v(y+1),children:s.jsx(Zr,{size:16})})]})]})},gS=({className:n="",adClient:r,adSlot:o})=>(V.useEffect(()=>{if(r&&o)try{(window.adsbygoogle=window.adsbygoogle||[]).push({})}catch(l){console.error("❌ Failed to load AdSense:",l)}},[r,o]),!r||!o?null:s.jsxs("div",{className:`native-ad-wrapper ${n}`,style:{width:"100%",maxWidth:"600px",margin:"1.25rem auto 0.25rem",textAlign:"center",overflow:"hidden"},children:[s.jsx("style",{children:`
742        .adsbygoogle[data-ad-status="unfilled"] {
743          display: none !important;
744        }
745      `}),s.jsx("ins",{className:"adsbygoogle",style:{display:"block"},"data-ad-client":r,"data-ad-slot":o,"data-ad-format":"auto","data-full-width-responsive":"true"})]})),G0="ca-pub-7143783115370529",mS="6409299164",Tu="adsense-script";function yS(n,r){return n!=="blog"?!1:/^\/blog\/[^/]+/.test(r)}function vS(){if(typeof document>"u"||document.getElementById(Tu))return;const n=document.createElement("script");n.id=Tu,n.async=!0,n.src=`https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=${G0}`,n.crossOrigin="anonymous",document.head.appendChild(n)}function bS(){document.getElementById(Tu)?.remove()}const xS=({className:n})=>s.jsx(gS,{className:n,adClient:G0,adSlot:mS}),wS=({items:n})=>{if(n.length===0)return null;const r={"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:n.map((o,l)=>({"@type":"ListItem",position:l+1,name:o.label,...o.href?{item:`${ho}${o.href.startsWith("/")?o.href:`/${o.href}`}`}:{}}))};return s.jsxs(s.Fragment,{children:[s.jsx("nav",{"aria-label":"Breadcrumb",style:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:"6px",fontSize:"13px",color:"rgba(17, 17, 17, 0.55)",marginBottom:"20px",fontWeight:500},children:n.map((o,l)=>{const d=l===n.length-1;return s.jsxs(V.Fragment,{children:[o.href&&!d?s.jsx("a",{href:o.href,style:{color:"inherit",textDecoration:"none",transition:"color 0.18s"},onMouseEnter:p=>{p.currentTarget.style.color="#65a30d"},onMouseLeave:p=>{p.currentTarget.style.color="inherit"},children:o.label}):s.jsx("span",{style:{color:d?"rgba(17, 17, 17, 0.85)":"inherit"},children:o.label}),!d&&s.jsx(Zr,{size:12,style:{flexShrink:0,opacity:.5}})]},`${o.label}-${l}`)})}),s.jsx("script",{type:"application/ld+json",id:"sv-breadcrumbs-schema",dangerouslySetInnerHTML:{__html:JSON.stringify(r)}})]})},kS=n=>s.jsx(Tn,{...n}),SS=n=>s.jsx(B0,{...n}),TS=n=>s.jsx(Zr,{...n}),AS=n=>s.jsx(lh,{...n}),fi=[{id:"41",slug:"whatsapp-send-video-document-no-compression-official",title:"How to Send Video on WhatsApp as Document with No Compression (Official 2026 Guide)",excerpt:"Tired of pixelated videos? Learn the official method to send high-quality, uncompressed videos on WhatsApp by sending them as documents. Plus, a better alternative for videos over 2GB.",category:"Guide",readTime:"4 min read",publishDate:"August 20, 2026",keywords:["whatsapp send video as document no compression official","whatsapp video quality","send video as document","uncompressed video whatsapp","send large video whatsapp"],content:`
746            <h2>The WhatsApp Compression Problem</h2>
747            <p>We've all been there. You record a stunning 4K video of a special moment, send it to a friend on WhatsApp, and when they open it, it looks like it was filmed on a potato from 2005.</p>
748            <p>WhatsApp's default behavior is to aggressively compress media to save bandwidth and storage space. While there is an "HD Quality" setting in WhatsApp now, it <strong>still</strong> applies some compression. If you want to send a video with <strong>zero compression</strong>, maintaining the exact original bitrate and resolution, you must send it as a document.</p>
749
750            <h2>The Official Method: Sending Video as a Document</h2>
751            <p>Here is the official way to bypass WhatsApp's compression algorithm on both iOS and Android:</p>
752            
753            <h3>On Android</h3>
754            <ol>
755                <li>Open the chat where you want to send the video.</li>
756                <li>Tap the <strong>Paperclip (Attachment)</strong> icon next to the camera.</li>
757                <li>Tap <strong>Document</strong> (Do NOT tap Gallery).</li>
758                <li>Tap <strong>Browse other docs</strong> or navigate to your video file in the file picker.</li>
759                <li>Select the video file and tap <strong>Send</strong>.</li>
760            </ol>
761
762            <h3>On iPhone (iOS)</h3>
763            <p>iOS is slightly trickier because videos are usually kept in the Photos app, not the Files app.</p>
764            <ol>
765                <li>First, go to the <strong>Photos app</strong>, select the video, tap the <strong>Share</strong> button, and tap <strong>Save to Files</strong>. Choose a location on your iPhone.</li>
766                <li>Open WhatsApp and go to your chat.</li>
767                <li>Tap the <strong>+ (Plus)</strong> icon next to the text input.</li>
768                <li>Select <strong>Document</strong> (Do NOT select Photo & Video Library).</li>
769                <li>Navigate to the folder where you saved the video in Step 1.</li>
770                <li>Select the video and tap <strong>Open / Send</strong>.</li>
771            </ol>
772
773            <h2>The 2GB Limit Problem</h2>
774            <p>WhatsApp recently increased their file size limit for documents to 2GB. This is a massive improvement over the old 100MB limit. However, a 2GB limit is still easily hit if you are sending:</p>
775            <ul>
776                <li>Long 4K videos recorded on modern smartphones.</li>
777                <li>ProRes or HDR video files.</li>
778                <li>A batch of multiple high-quality videos.</li>
779            </ul>
780            <p>Furthermore, uploading a 1.5GB video through WhatsApp can be painfully slow, and it bloats the recipient's WhatsApp storage backup.</p>
781
782            <h2>The Better Alternative for Large Videos</h2>
783            <p>If your video is large, or you simply don't want to deal with the cumbersome "Save to Files" workaround on iOS, use a dedicated file transfer tool.</p>
784            <p><strong><a href="https://sendvault.online/">SendVault</a></strong> is the fastest way to send uncompressed videos across devices:</p>
785            <ol>
786                <li>Go to SendVault.online (no app or account needed).</li>
787                <li>Upload your video. It will generate a 6-character code (like \`K92H1Q\`).</li>
788                <li>Your friend goes to SendVault.online, enters the code, and gets the original, 100% uncompressed file.</li>
789            </ol>
790            <p>It's completely free up to 1GB, requires zero installation, and is end-to-e
790nd encrypted in transit. It's the perfect solution when WhatsApp's limitations get in the way.</p>
791        `},{id:"42",slug:"iphone-to-android-file-transfer-without-apps",title:"How to Transfer Files from iPhone to Android (Without Apps)",excerpt:"Switching phones or just need to send a file cross-platform? This no-fluff guide covers every method. From AirDrop workarounds to SendVault's 6-char code trick.",category:"Guide",readTime:"5 min read",publishDate:"April 10, 2026",keywords:["iphone to android transfer","cross platform file sharing","send files between phones","no app file transfer"],content:`
792            <h2>The iPhone–Android Divide</h2>
793            <p>Apple's AirDrop and Samsung's QuickShare are brilliant. As long as both people own the same ecosystem. The moment a iPhone user needs to send a RAW photo to an Android friend, both AirDrop and QuickShare become completely useless. Email has a 25 MB limit. WhatsApp compresses photos. Bluetooth is excruciatingly slow. So what actually works?</p>
794
795            <h3>Method 1: SendVault (Best for Large Files)</h3>
796            <p>The fastest method that truly doesn't care about operating system:</p>
797            <ol>
798                <li>On the iPhone, open <strong>sendvault.online</strong> in Safari.</li>
799                <li>Upload your file (up to 1 GB. Photos, videos, documents, anything).</li>
800                <li>Get the 6-character share code.</li>
801                <li>On the Android, open <strong>sendvault.online</strong> in Chrome.</li>
802                <li>Enter the 6-character code. Download instantly.</li>
803            </ol>
804            <p>No app installation required on either phone. No compression. No account. Works on any iOS or Android device that has a browser and internet access.</p>
805
806            <h3>Method 2: Google Photos (For Photos Only)</h3>
807            <p>If both users have a Google account, create a shared album in Google Photos, upload the photos from the iPhone, and the Android user can access and download them. Limitation: photos only, requires accounts, and some original quality compression.</p>
808
809            <h3>Method 3: iCloud Link (Quick, One-Time Shares)</h3>
810            <p>In Photos on iPhone: select photos → share → "Copy iCloud Link". The Android user can open the link in any browser and download. Limitation: requires the sender to have iCloud storage available, links expire after 30 days, and only works for Apple media types.</p>
811
812            <h3>Method 4: USB Cable + Computer</h3>
813            <p>The old faithful. Connect the iPhone to a computer (Mac with Finder, or Windows with iTunes or the Apple Devices app), copy files off the iPhone, then connect the Android and copy files on. Works for any file type. Main limitation: requires a computer as intermediary, appropriate cables, and about 10 minutes of patience.</p>
814
815            <h3>Method 5: Nearby Share / AirDrop Workarounds</h3>
816            <p>Google's Nearby Share works Android-to-Android but not iOS. There's no direct iOS-to-Android equivalent built into the operating systems. Third-party apps like Feem or SHAREit work over local Wi-Fi but require installation on both devices.</p>
817
818            <h3>The Bottom Line</h3>
819            <p>For a one-time transfer of any file type without installing anything or creating accounts, <strong>SendVault is the cleanest cross-platform option</strong>. The 6-character code eliminates even the need to type a URL on the receiving device. Just visit sendvault.online and enter the code.</p>
820        `},{id:"43",slug:"send-files-without-whatsapp-compression",title:"Why WhatsApp Compresses Your Files (And How to Avoid It)",excerpt:"WhatsApp silently degrades your photos and videos before sending them. Here's why it happens and the best alternatives that preserve original quality.",category:"Guide",readTime:"4 min read",publishDate:"April 5, 2026",keywords:["send files without whatsapp","whatsapp compression","send original quality photos","file sharing alternative"],content:`
821            <h2>WhatsApp's Hidden Quality Tax</h2>
822            <p>Every photo and video you send through WhatsApp gets compressed before delivery. This is by design. WhatsApp's infrastru
822cture is built to handle billions of media messages daily, and compression keeps their bandwidth costs manageable. But for you, the sender, it means the pixel-perfect photo you took on your 108-megapixel camera phone arrives on the other end as a 3-megapixel blur.</p>
823
824            <h3>How Much Does WhatsApp Compress?</h3>
825            <ul>
826                <li><strong>Photos:</strong> WhatsApp compresses images to roughly 80–85% JPEG quality and caps resolution at around 3–5 megapixels regardless of the original.</li>
827                <li><strong>Videos:</strong> Videos get re-encoded to H.264 at a low bitrate. A 4K 60fps clip becomes 720p or less at 3–4 Mbps (down from 50–100 Mbps original).</li>
828                <li><strong>Documents:</strong> PDFs and Office files are sent uncompressed when you choose "Document" instead of "Photo." This is WhatsApp's escape hatch. But it's limited to 100 MB per file.</li>
829            </ul>
830
831            <h3>The "Document" Trick (and Its Limits)</h3>
832            <p>WhatsApp will send any file format uncompressed if you send it as a "Document" rather than a "Photo." To do this: tap the attachment paperclip → choose "Document" → navigate to your photo or video file and select it. The recipient gets the original bytes. Limitation: 100 MB file size cap. Doesn't work for entire photo albums. Counter-intuitive UI.</p>
833
834            <h3>Better Alternatives to WhatsApp for File Sharing</h3>
835            <h4>1. SendVault (Best for Large Files, Any Device)</h4>
836            <p>No compression of any kind. Upload your original file (up to 1 GB), get a 6-character code, share it verbally or via any chat app, and the recipient downloads the original. Works across iPhone, Android, and PC with no account required.</p>
837            <h4>2. Google Drive / iCloud</h4>
838            <p>Share a link to the original file stored in cloud storage. Requires both parties to have accounts. Adds latency if the file isn't already in the cloud. Best for ongoing file access rather than one-time transfers.</p>
839            <h4>3. Telegram</h4>
840            <p>Telegram sends files uncompressed as long as you use "File" instead of "Photo." File size limit is 4 GB. Requires both parties to have Telegram accounts.</p>
841
842            <h3>The Simple Rule</h3>
843            <p>If original quality matters. For professional photos, client deliverables, medical images, legal documents. Don't send via WhatsApp's photo/video flow. Use a dedicated file transfer service or share a cloud link.</p>
844        `},{id:"44",slug:"file-sharing-adsense-website-tips",title:"5 Ways a File Sharing Service Can Power Your Digital Workflow in 2026",excerpt:"Discover how professionals, freelancers, and remote teams are using smart file transfer tools to cut hours from their weekly workflows.",category:"Productivity",readTime:"4 min read",publishDate:"April 1, 2026",keywords:["file sharing productivity","digital workflow","remote team tools","freelance file transfer"],content:`
845            <h2>The Friction You've Accepted Without Realizing It</h2>
846            <p>Most people don't realize how much time they lose to file transfer friction every week. The hunt for the right USB cable. The "can you send that again, the attachment didn't come through." The cloud folder permission issue that sends a 30-minute project off the rails. It adds up to hours. Per week, for millions of workers.</p>
847
848            <h3>1. Replace Email Attachments for Client Deliverables</h3>
849            <p>Email is unreliable for files larger than a few MB. Attachments get flagged as spam, stripped by corporate firewalls, or simply too large for the server. Instead: upload to SendVault, share the link. The client downloads in one click. No account needed. No confusion. Execution time: 30 seconds instead of 5 minutes of troubleshooting.</p>
850
851            <h3>2. The "Verbal Code" for In-Person Handoffs</h3>
852            <p>A 6-character share code can be communicated verbally across a table, over the phone, or even shouted across a busy co-working space. "The code is D7-ALPHA-9" takes two seconds. This is genuinely useful for on-set media transfers, at client presentations, or any situation where typing a long URL or email address would be awkward.</p>
853
854            <h3>3. Create a "Staging Area" for Client Reviews</h3>
855            <p>Instead of keeping a cluttered shared Google Drive folder where old drafts and finals mix together: upload the specific review copy to SendVault, share the link with the client. They review and approve. The link expires in 7 days. The shared folder stays clean for actual project work.</p>
856
857            <h3>
8574. Secure Developer Secrets in Emergencies</h3>
858            <p>When a developer needs a config file or API key urgently (and a proper secrets manager isn't immediately available), a password-protected SendVault link with a self-expiring lifecycle is far safer than pasting credentials into Slack. Post the link publicly; send the password via SMS.</p>
859
860            <h3>5. QR Codes for Physical Environments</h3>
861            <p>SendVault generates a QR code for every transfer. Print it on a conference room whiteboard, show it on a monitor at a trade show booth, or include it in a physical handout. Anyone who scans it can download the file without typing anything. A modern replacement for the USB stick bowl at events.</p>
862
863            <h3>The Bottom Line</h3>
864            <p>The best file sharing workflow is the one that creates zero friction for the recipient. SendVault's no-account model means every person on your client list, every stakeholder in a meeting, every person on the receiving end can get what you send without creating an account, installing an app, or asking you for help.</p>
865        `},{id:"13",slug:"future-secure-file-sharing-2026",title:"The Future of Secure File Sharing: 2026 Trends",excerpt:"Explore the emerging technologies and security paradigms shaping how we share data in 2026 and beyond. AI, quantum resistance, and privacy-first design.",category:"Tech Trends",readTime:"6 min read",publishDate:"January 15, 2026",keywords:["file sharing trends","cybersecurity 2026","AI in security","data privacy"],content:`
866            <h2>The Changing Landscape of Data Transfer</h2>
867            <p>As we settle into 2026, the digital landscape continues to evolve rapidly. The way we share, store, and protect our data is undergoing a fundamental shift, driven by advancements in AI and a growing global consciousness around digital privacy.</p>
868
869            <h3>1. AI-Driven Threat Detection</h3>
870            <p>Artificial Intelligence is no longer just a buzzword; it's the first line of defense. Modern file sharing platforms are integrating AI to detect malicious payloads and phishing attempts in real-time, before a file even reaches the recipient.</p>
871
872            <h3>2. Quantum-Resistant Encryption</h3>
873            <p>With quantum computing on the horizon, standard encryption methods are being re-evaluated. Forward-thinking security platforms are already adopting post-quantum cryptography algorithms to ensure data intercepted today cannot be decrypted by the supercomputers of tomorrow.</p>
874
875            <h3>3. Privacy by Default</h3>
876            <p>Users are demanding "privacy by design." This means services that don't track user activity, don't require intrusive sign-ups, and automatically practice data minimization. Temporary file sharing—where data is deleted by default—is becoming the industry standard over permanent cloud storage for transient data.</p>
877
878            <h3>4. Decentralized Storage Solutions</h3>
879            <p>We're seeing a move away from centralized data silos. Decentralized networks offer robust protection against single points of failure and censorship, ensuring that your data remains accessible only to you and your intended recipients.</p>
880
881            <h3>Conclusion</h3>
882            <p>The future of file sharing is ephemeral, intelligent, and hyper-secure. As threats evolve, so too must our tools. SendVault is at the forefront of this evolution, prioritizing user anonymity and data sovereignty in every transfer.</p>
883        `},{id:"14",slug:"productivity-hacks-remote-agencies",title:"Top 5 Productivity Hacks for Remote Agencies",excerpt:"Boost your distributed team's efficiency with these proven workflow strategies. Reduce meeting times and streamline asset delivery.",category:"Business",readTime:"5 min read",publishDate:"January 10, 2026",keywords:["remote work","agency productivity","workflow optimization","team collaboration"],content:`
884            <h2>Thriving in the Remote-First World</h2>
885            <p>Running a remote agency brings freedom but also communication hurdles. Here are five actionable hacks to keep your team aligned and efficie
885nt.</p>
886
887            <h3>1. Async First Communication</h3>
888            <p>Stop default-to-meeting. Encourage detailed written updates or screen-recorded walkthroughs (Loom, etc.). This respects time zones and allows team members to digest information at their own pace.</p>
889
890            <h3>2. Centralized Asset Management</h3>
891            <p>Don't scatter files across email, Slack, and random drives. Use a single source of truth for project files. For client deliveries, use a dedicated transfer service like SendVault to keep the "delivery" separate from the "work in progress."</p>
892
893            <h3>3. The "Two-Minute Rule" for Feedback</h3>
894            <p>If a review takes less than two minutes, do it immediately. This prevents bottlenecks where minor approvals hold up major project phases.</p>
895
896            <h3>4. Batch Your Deep Work</h3>
897            <p>Encourage "no-meeting blocks" where the team can focus without Slack notifications. Deep work is where the actual creative magic happens.</p>
898
899            <h3>5. Automate Repetitive Tasks</h3>
900            <p>Use tools like Zapier or Make to automate client onboarding, invoice reminders, and file backup routines. For example, you can set up a "Zap" that automatically saves every SendVault shared link to a specific "Sent Items" Google Sheet, creating an automatic audit trail without lifting a finger.</p>
901
902            <h3>Summary</h3>
903            <p>Productivity isn't about working more hours; it's about removing friction. streamlining file sharing and communication channels is the quickest win for any remote agency.</p>
904        `},{id:"15",slug:"how-encryption-works-simple-guide",title:"How Encryption Actually Works: A Simple Guide",excerpt:"Confused by AES, TLS, and E2EE? We break down cryptography basics so you can understand how your files stay safe.",category:"Security",readTime:"7 min read",publishDate:"January 5, 2026",keywords:["encryption basics","AES-256","cryptography","security guide"],content:`
905            <h2>Encryption Demystified</h2>
906            <p>Encryption sounds complex, but the concept is simple: it's a way to scramble data so that only someone with the "key" can unscramble and read it.</p>
907
908            <h3>Symmetric Encryption (The Locked Briefcase)</h3>
909            <p>Imagine putting a document in a briefcase and locking it with a key. You then send the briefcase to a friend. For them to open it, they need the exact same key. This is <strong>Symmetric Encryption</strong> (like AES-256). It's fast and secure, used for encrypting large files.</p>
910
911            <h3>Asymmetric Encryption (The Public Mailbox)</h3>
912            <p>Imagine you have a mailbox that anyone can drop a letter into (Public Key), but only you have the key to open it and take letters out (Private Key). This is <strong>Asymmetric Encryption</strong>. It's used to securely exchange the "keys" for the Symmetric encryption described above.</p>
913
914            <h3>Data in Transit vs. Data at Rest</h3>
915            <ul>
916                <li><strong>In Transit:</strong> Protecting data while it travels across the internet (like an armored car). HTTPS/TLS does this.</li>
917                <li><strong>At Rest:</strong> Protecting data while it sits on a server (like a bank vault). AES encryption does this.</li>
918                <li><strong>End-to-End Encryption (E2EE):</strong> The gold standard. Data is encrypted on your device and only decrypted on the recipient's device. SendVault uses a hybrid approach to ensure speed while maintaining high security standards comparable to E2EE for password-protected transfers.</li>
919            </ul>
920
921            <h3>Why It Matters for File Sharing</h3>
922            <p>When you use SendVault, we use these technologies to ensure that your file is turned into unreadable gibberish before it leaves your device or while it's stored, and only turns back into a file when your recipient (who has the password/key) downloads it.</p>
923        `},{id:"16",slug:"optimizing-creative-workflow",title:"Optimizing Your Creative Workflow with SendVault",excerpt:"How designers and videographers are saving hours every week by simplifying their client delivery process.",category:"Creative",readTime:"4 min read",publishDate:"December 28, 2025",keywords:["creative workflow","client delivery","design process","file transfer"],content:`
924            <h2>Why Creative Delivery Becomes a Bottleneck</h2>
925            <p>Creative work rarely ends when the export finishes. A designer may have a 300 MB brand package, a photographer may 
925need to deliver hundreds of original images, and a video editor may need to send a review cut before the client meeting. The work is complete, but the handoff can still consume an afternoon.</p>
926            <p>Delivery problems usually come from small points of friction: unclear filenames, a link that requires an account, a shared folder with the wrong permissions, or a review file mixed together with old versions. A better creative workflow treats delivery as a repeatable production step rather than an afterthought.</p>
927
928            <h2>Separate Working Files from Delivery Files</h2>
929            <p>Your project archive and your client handoff serve different purposes. A working archive should preserve source files, editable documents, project notes, licenses, and previous versions. A delivery package should contain only what the client needs to review or use.</p>
930            <p>Keep the archive in your long-term storage system. Use a temporary transfer for the outgoing package. This separation reduces accidental sharing, keeps the client experience focused, and prevents your shared folder from becoming a permanent dumping ground for every draft.</p>
931            <ul>
932                <li><strong>Working archive:</strong> source files, project files, raw media, and internal notes.</li>
933                <li><strong>Review package:</strong> a clearly marked preview or proof for feedback.</li>
934                <li><strong>Final package:</strong> approved exports, usage instructions, and the agreed deliverables.</li>
935            </ul>
936
937            <h2>Build a Reliable File Preparation Checklist</h2>
938            <p>Before uploading anything, spend two minutes preparing the handoff. That small pause prevents the most common follow-up questions and makes the delivery feel deliberate.</p>
939            <ol>
940                <li><strong>Remove internal material.</strong> Delete unused drafts, private comments, hidden layers, temporary renders, and files that were not included in the scope.</li>
941                <li><strong>Use descriptive filenames.</strong> Include the client or project name, asset type, version, and date. For example: <code>Northstar_BrandGuidelines_FINAL_2026-12.pdf</code>.</li>
942                <li><strong>Choose the correct format.</strong> Send a print-ready PDF for approval, web-sized images for publishing, and the original editable file only when the contract includes it.</li>
943                <li><strong>Check the package.</strong> Open the exported files yourself. Confirm that fonts, links, audio, color profiles, page order, and image quality are correct.</li>
944                <li><strong>Add a short README.</strong> Explain what is included, which version is final, and what action you need from the client.</li>
945            </ol>
946
947            <h2>Use Versions That Clients Can Understand</h2>
948            <p>Version confusion creates unnecessary meetings. Avoid filenames such as <code>final-final2-really-final.zip</code>. Use a predictable sequence: <code>PROJECT_REVIEW_01</code>, <code>PROJECT_REVIEW_02</code>, and <code>PROJECT_FINAL</code>. Keep the version in the filename and in the message that accompanies the link.</p>
949            <p>For review work, send one package at a time whenever possible. If several directions must be compared, label them clearly and include a one-page summary. The client should know whether they are choosing between concepts, approving a final, or simply reviewing a draft.</p>
950
951            <h2>The Optimized Client Delivery Workflow</h2>
952            <h3>1. Export and inspect</h3>
953            <p>Export the agreed format, then inspect the actual file that will be delivered. Do not assume that an export completed correctly because the design application showed no warning.</p>
954
955            <h3>2. Create the handoff package</h3>
956            <p>Place the deliverables in a clean folder with a useful name. Include a README when the client needs instructions, licensing information, or a list of included files. Compress multiple files into a ZIP only when it makes the download easier; do not compress a file that the client needs to preview directly.</p>
957
958            <h3>3. Add access protection</h3>
959            <p>Use a strong, unique password when the package contains private client work, unreleased campaigns, personal data, or commercially sensitive material. Send the link and password through separate channels. A password sent in the same public message as the link does not add much protection.</p>
960
961            <h3>4. Send the link and context</h3>
962            <p>
962Send a short message that states what the package contains, which version it represents, and what you need from the client. Example: "Review package 02 includes the homepage and mobile layouts. Please send consolidated feedback by Friday." The context is as important as the file.</p>
963
964            <h3>5. Confirm the handoff</h3>
965            <p>For important deliveries, ask the client to confirm that they downloaded the package. Keep your own archive until approval is complete and the project retention period ends. The temporary transfer is for delivery, not your only backup.</p>
966
967            <h2>Why Temporary Transfers Help</h2>
968            <p>A permanent shared folder is useful for collaboration, but it is often excessive for a one-time delivery. Temporary links reduce the number of old drafts that remain accessible and make it easier to keep client work separated by project.</p>
969            <p>SendVault is useful for this handoff because the sender can upload the package, add optional password protection, and share a short code or link without asking the client to create an account. Files are transferred without compression, so the delivered export remains the same file you prepared. The service is best used as a delivery layer alongside a proper long-term archive.</p>
970
971            <h2>Common Creative Workflow Mistakes</h2>
972            <ul>
973                <li><strong>Sending the wrong version:</strong> create a final delivery folder instead of selecting files from a cluttered project directory.</li>
974                <li><strong>Uploading source files by accident:</strong> review the package contents before sharing it.</li>
975                <li><strong>Using vague instructions:</strong> tell the client whether they should approve, download, or provide feedback.</li>
976                <li><strong>Keeping every link active forever:</strong> use expiry or remove access when the delivery is no longer needed.</li>
977                <li><strong>Relying on the transfer as a backup:</strong> retain a verified copy in your own archive.</li>
978            </ul>
979
980            <h2>A Simple Standard for Every Handoff</h2>
981            <p>A strong creative delivery is easy to identify: the files are clearly named, the package contains only the agreed work, the client knows what to do next, and access is limited to the people who need it. Standardizing these steps protects your time and makes the work feel more professional.</p>
982            <p>When delivery becomes a checklist instead of a last-minute scramble, you spend less time troubleshooting permissions and more time on the creative work that clients actually hired you to do.</p>
983        `},{id:"1",slug:"how-to-send-large-files-securely",title:"How to Send Large Files Securely: Complete Guide 2026",excerpt:"Learn the best practices for sharing large files securely online in 2026. Discover encryption methods, password protection, and safe file transfer services.",category:"Security",readTime:"8 min read",publishDate:"January 10, 2026",keywords:["secure file transfer","send large files","file encryption","password protection"],content:`
984            <h2>Why Secure File Sharing Matters</h2>
985            <p>Sending a large file securely means more than finding a service that accepts the upload. You also need to control who can open it, how long it remains available, whether the original quality is preserved, and what happens after the recipient downloads it. That matters for client work, contracts, financial records, identity documents, private photos, and any file that would create a problem if it reached the wrong person.</p>
986            <p>The practical goal is simple: send the correct file to the intended recipient through an encrypted connection, add a second access control when the file is sensitive, and remove the temporary copy when the handoff is complete.</p>
987
988            <h2>What Makes a Large File Transfer Secure?</h2>
989            <p>Security is a chain rather than a single feature. A trustworthy transfer service should address each part of the journey:</p>
990            <ul>
991                <li><strong>Encryption in transit:</strong> HTTPS and modern TLS protect the upload and download while data moves between devices and the service.</li>
992                <li><strong>Encryption at rest:</strong> Files should be protected while they are temporarily stored between upload and download.</li>
993                <li><strong>Access control:</strong> A password or another verification step prevents a leaked link from being enough to open the file.</li>
994                <li><strong>
994Limited lifetime:</strong> Automatic expiration reduces the chance that an old link will remain available after the project is finished.</li>
995                <li><strong>Reliable delivery:</strong> The recipient should receive the original bytes without an unexpected image or video conversion.</li>
996                <li><strong>Clear retention rules:</strong> You should know when the service deletes the transfer and whether it keeps backups or account copies.</li>
997            </ul>
998
999            <h2>Encryption: What You Should Check</h2>
1000            <p>Look for HTTPS in the browser address bar and a service that explains its transport and storage protections. TLS encrypts the connection so someone watching a public Wi-Fi network cannot casually read the file as it travels. Encryption at rest protects the temporary server copy if storage is accessed without authorization.</p>
1001            <p>Client-side end-to-end encryption can provide stronger privacy because the provider cannot inspect the plaintext file. However, services use the term "end-to-end encryption" differently, so read the technical explanation rather than relying on a badge alone. For especially sensitive material, you can also encrypt the file yourself before uploading it, then share the decryption password through a separate channel.</p>
1002
1003            <h2>Use Passwords and Two-Channel Delivery</h2>
1004            <p>A link is a locator, not proof of identity. Links can be forwarded, copied into the wrong conversation, or exposed in browser history and email archives. Add a unique password whenever the file contains private or commercially sensitive information.</p>
1005            <p>Do not send the link and password in the same message. Send the link by email or chat, then send the password by SMS, a phone call, or another trusted channel. This does not make either channel perfect, but it means that an accidental leak of one message is less likely to expose the file by itself.</p>
1006            <p>Use a passphrase that is long enough to resist guessing but easy for the recipient to type. Avoid names, birthdays, project names, and reused passwords. A password manager can generate a random value, while a four-word passphrase can be easier to communicate during a time-sensitive handoff.</p>
1007
1008            <h2>Set an Expiration Date</h2>
1009            <p>Temporary transfers should not become forgotten permanent storage. Set the shortest expiration window that fits the task. A client review may need a week; a quick phone-to-laptop transfer may only need a day. Automatic deletion limits the exposure window and helps prevent old drafts from being downloaded months later.</p>
1010            <p>Remember that expiration is not a backup strategy. Keep your verified original in an appropriate long-term archive until the recipient confirms the handoff and the project retention period is complete. A temporary transfer should be the delivery layer, not your only copy.</p>
1011
1012            <h2>Verify the Recipient Before You Share</h2>
1013            <p>Many data disclosures are caused by an ordinary mistake rather than a sophisticated attack. Check the recipient's email address, phone number, or share code before sending. For a business delivery, confirm the person's identity using a known contact method if the request is unusual or urgent.</p>
1014            <p>Give the recipient useful context in the message: identify the project, state what the package contains, name the version, and say what action you need. Clear context makes it easier for them to spot a wrong file or a suspicious message pretending to be yours.</p>
1015
1016            <h2>Why Email Attachments Are a Poor Choice for Large Files</h2>
1017            <p>Email is convenient for small, low-sensitivity documents, but it creates several problems for large or private files. Most providers impose attachment limits, large attachments are copied into sent and received mailboxes, and the file may remain in backups or archives long after the project ends. Recipients may also forward the message without realizing that the attachment is confidential.</p>
1018            <p>A dedicated transfer service gives you a clearer access boundary. You can send a link instead of multiplying attachments across inboxes, protect the download with a password, and let the temporary transfer expire. For an overview of the risks, read <a href="/blog/hidden-dangers-email-attachments">the hidden dangers of email attachments</a>.</p>
1019
1020            <h2>How to Choose a Secure File Sharing Service</h2>
1021            <p>Compare services against the way you actually send files. A long-term collaboration platform is useful when a team needs shared folders, version history, and ongoing access. A temporary file transfer service is better for a one-time delivery where the recipient should not need an account.</p>
1022            <ul>
1023                <li>Does the service use HTTPS/TLS for every upload and download?</li>
1024                <li>Is password protection available on the plan you intend to use?</li>
1025                <li>
1025Can you set or understand the automatic expiration period?</li>
1026                <li>Does the recipient need an account or an app?</li>
1027                <li>Does the service preserve the original file without compression?</li>
1028                <li>Are file size limits, download limits, and retention rules clearly published?</li>
1029                <li>Does the privacy policy explain what is collected and how long files remain stored?</li>
1030            </ul>
1031
1032            <h2>A Secure SendVault Workflow</h2>
1033            <p>For a straightforward large-file handoff, use this checklist:</p>
1034            <ol>
1035                <li>Remove drafts, internal notes, hidden layers, and unrelated files from the delivery package.</li>
1036                <li>Open the final file or archive and verify the contents, filename, and version.</li>
1037                <li>Upload it to <a href="https://sendvault.online/">SendVault</a> and confirm the transfer completed.</li>
1038                <li>Enable password protection for private, financial, legal, client, or unreleased material.</li>
1039                <li>Send the link or 6-character code through one channel and the password through another.</li>
1040                <li>Tell the recipient what they are receiving and when the transfer expires.</li>
1041                <li>Keep your own verified archive until the recipient confirms download and the work no longer needs the temporary link.</li>
1042            </ol>
1043            <p>SendVault supports temporary transfers up to 1GB, optional password protection, and automatic expiration after seven days. It does not compress the file during delivery, so a recipient can download the original file rather than a lower-quality media conversion. The no-account workflow is useful when you need to send a file to a client, move a file between devices, or share across iPhone, Android, and desktop platforms.</p>
1044
1045            <h2>Secure File Transfer Checklist</h2>
1046            <p>Before you click send, ask:</p>
1047            <ul>
1048                <li>Am I sharing only the files the recipient needs?</li>
1049                <li>Did I verify the recipient and the file version?</li>
1050                <li>Is the connection encrypted?</li>
1051                <li>Does this file need a unique password?</li>
1052                <li>Did I send the password separately?</li>
1053                <li>Will the link expire when the handoff is over?</li>
1054                <li>Do I have a separate backup of the original?</li>
1055            </ul>
1056
1057            <h2>Frequently Asked Questions</h2>
1058            <h3>Is it safe to send a 1GB file online?</h3>
1059            <p>File size alone does not determine safety. Use a service with encrypted transfer, access controls, clear retention rules, and a recipient you have verified. For sensitive content, add a unique password and share it separately from the link.</p>
1060
1061            <h3>Should I compress a file before sending it?</h3>
1062            <p>ZIP is useful for bundling many files and can reduce the size of documents or raw data. It will not improve already-compressed JPEG, MP4, or ZIP files. Do not convert photos or videos to a lower-quality format just to make a transfer smaller unless the recipient explicitly needs a preview copy.</p>
1063
1064            <h3>Is a temporary file transfer a replacement for cloud storage?</h3>
1065            <p>No. Temporary sharing is designed for delivery, while cloud storage is designed for long-term access and collaboration. Use each for its intended purpose, as explained in <a href="/blog/temporary-file-sharing-vs-cloud-storage">this comparison of temporary file sharing and cloud storage</a>.</p>
1066
1067            <h2>Conclusion</h2>
1068            <p>The safest way to send large files is a repeatable process: prepare the package, use encrypted transfer, protect sensitive files with a unique password, verify the recipient, and let the temporary copy expire. These steps take only a minute or two, but they prevent the most common mistakes in large-file sharing.</p>
1069        `},{id:"2",slug:"file-sharing-best-practices",title:"File Sharing Best Practices for Businesses in 2026",excerpt:"Protect your business with proper file sharing protocols. Learn how to maintain security, compliance, and efficie
1069ncy in your organization.",category:"Business",readTime:"6 min read",publishDate:"January 12, 2026",keywords:["business file sharing","secure collaboration","file transfer protocol","compliance"],content:`
1070            <h2>The Importance of Proper File Sharing in Business</h2>
1071            <p>Businesses handle sensitive information daily, making secure file sharing protocols essential. Poor file sharing practices can lead to data breaches, compliance violations, and loss of client trust.</p>
1072
1073            <h3>Common File Sharing Mistakes to Avoid</h3>
1074            <ul>
1075                <li><strong>Sending files via unsecured email:</strong> Email attachments lack encryption and can be intercepted</li>
1076                <li><strong>Using consumer-grade services:</strong> Free services may not meet business security standards</li>
1077                <li><strong>Sharing without access controls:</strong> Not limiting who can access files increases risk</li>
1078                <li><strong>Keeping files accessible indefinitely:</strong> Old shared links create unnecessary exposure</li>
1079                <li><strong>Not training employees:</strong> Human error is the biggest security vulnerability</li>
1080            </ul>
1081
1082            <h3>Implementing a Secure File Sharing Policy</h3>
1083            <ol>
1084                <li><strong>Choose the Right Tools:</strong> Select file sharing services that offer business-grade security</li>
1085                <li><strong>Set Clear Guidelines:</strong> Create written policies for how files should be shared</li>
1086                <li><strong>Use Password Protection:</strong> Require passwords for sensitive document transfers</li>
1087                <li><strong>Enable Expiration Dates:</strong> Automatically expire shared links after a set period</li>
1088                <li><strong>Regular Training:</strong> Educate staff on security best practices quarterly</li>
1089                <li><strong>Audit File Sharing:</strong> Regularly review who's sharing what and with whom</li>
1090            </ol>
1091
1092            <h3>Compliance Considerations</h3>
1093            <p>Depending on your industry, you may need to comply with regulations like GDPR, HIPAA, or SOC 2. Ensure your file sharing solution supports:</p>
1094            <ul>
1095                <li>Data residency requirements</li>
1096                <li>Audit trails and logging</li>
1097                <li>Data encryption at rest and in transit</li>
1098                <li>Access controls and authentication</li>
1099            </ul>
1100
1101            <h3>How SendVault Helps Businesses</h3>
1102            <p>SendVault offers secure file transfers with password protection, automatic expiration, and no permanent storage of your files. Perfect for businesses that need quick, secure file sharing without complex setup.</p>
1103        `},{id:"3",slug:"sendvault-vs-wetransfer-comparison",title:"SendVault vs WeTransfer: Which File Sharing Service is Better?",excerpt:"Compare SendVault and WeTransfer feature-by-feature. Find out which service offers better security, speed, and value for your file sharing needs.",category:"Comparison",readTime:"4 min read",publishDate:"January 15, 2026",keywords:["SendVault vs WeTransfer","file sharing comparison","best file transfer service","WeTransfer alternative"],content:`
1104            <h2>Comparing Popular File Sharing Services</h2>
1105            <p>When it comes to sharing large files, WeTransfer has been a popular choice for years. But is it still the best option? Let's compare SendVault and WeTransfer across key features.</p>
1106
1107            <h3>Feature Comparison</h3>
1108            <div style="overflow-x: auto; margin: 2rem 0;">
1109                <table style="width: 100%; border-collapse: collapse; text-align: left; background: #fff; border-radius: 12px; overflow: hidden; box-shadow: 0 4px 20px rgba(0,0,0,0.05); border: 1px solid rgba(0,0,0,0.08);">
1110                    <thead>
1111                        <tr style="background: #f9fafb; border-bottom: 2px solid rgba(0,0,0,0.08);">
1112                            <th style="padding: 16px; font-weight: 700; color: #111;">Feature</th>
1113                            <th style="padding: 16px; font-weight: 800; color: #4d7c0f; width: 35%;">SendVault</th>
1114                            <th style="padding: 16px; font-weight: 700; color: rgba(17,17,17,0.6); width: 35%;">WeTransfer</th>
1115                        </tr>
1116                    </thead>
1117                    <tbody>
1118                        <tr style="border-bottom: 1px solid rgba(0,0,0,0.05);">
1119                            <td style="padding: 16px; font-weight: 600;">Free Size Limit</td>
1120                            <td style="padding: 16px; font-weight: 600; color: #4d7c0f;">1 GB</td>
1121                            <td style="padding: 16px; color: rgba(17,17,17,0.6);">2 GB</td>
1122                        </tr>
1123                        <tr style="border-bottom: 1px solid rgba(0,0,0,0.05); background: #fdfdfd;">
1124                            <td style="padding: 16px; font-weight: 600;">Password Protection</td>
1125                            <td style="padding: 16px; font-weight: 600; color: #4d7c0f;">100% Free</td>
1126                            <td style="padding: 16px; color: #ef4444;">Paid Feature Only</td>
1127                        </tr>
1128                        <tr style="border-bottom: 1px solid rgba(0,0,0,0.05);">
1129                            <td style="padding: 16px; font-weight: 600;">
1129Share Code Access</td>
1130                            <td style="padding: 16px; font-weight: 600; color: #4d7c0f;">Yes, 6-character code</td>
1131                            <td style="padding: 16px; color: #ef4444;">No (Link/Email only)</td>
1132                        </tr>
1133                        <tr style="border-bottom: 1px solid rgba(0,0,0,0.05); background: #fdfdfd;">
1134                            <td style="padding: 16px; font-weight: 600;">Advertisements</td>
1135                            <td style="padding: 16px; font-weight: 600; color: #4d7c0f;">Zero Ads</td>
1136                            <td style="padding: 16px; color: #ef4444;">Full-Screen Ads</td>
1137                        </tr>
1138                        <tr>
1139                            <td style="padding: 16px; font-weight: 600;">File Expiration</td>
1140                            <td style="padding: 16px; font-weight: 600;">7 Days</td>
1141                            <td style="padding: 16px; color: rgba(17,17,17,0.6);">7 Days</td>
1142                        </tr>
1143                    </tbody>
1144                </table>
1145            </div>
1146
1147            <h3>Security Comparison</h3>
1148            <p><strong>SendVault:</strong> Offers password protection on all transfers for free, with automatic file deletion after 7 days. No permanent storage means your data isn't sitting on servers indefinitely.</p>
1149            <p><strong>WeTransfer:</strong> Basic transfers lack password protection unless you upgrade to the paid plan. Files are stored longer, which could be a security concern for sensitive data.</p>
1150
1151            <h3>User Experience</h3>
1152            <p><strong>SendVault:</strong> Clean, modern interface with no distracting ads. Quick upload process with a unique 6-character share code. The recipient just types it on any browser, no link needed. Great for nearby device transfers or quick handoffs.</p>
1153            <p><strong>WeTransfer:</strong> Simple interface but includes ads on the free version. Email-based sharing only. No share code or code-based access features.</p>
1154
1155            <h3>Which Should You Choose?</h3>
1156            <p>Choose <strong>SendVault</strong> if you need:</p>
1157            <ul>
1158                <li>Free password protection on all transfers</li>
1159                <li>6-character share codes for instant cross-device access</li>
1160                <li>Ad-free experience</li>
1161                <li>Modern, clean interface</li>
1162                <li>No account needed for sender or receiver</li>
1163            </ul>
1164
1165            <p>Choose <strong>WeTransfer</strong> if you need:</p>
1166            <ul>
1167                <li>Larger free file size limit (2GB)</li>
1168                <li>Long-term storage options (paid)</li>
1169                <li>Email notification features</li>
1170            </ul>
1171
1172            <h3>Conclusion</h3>
1173            <p>While WeTransfer offers a larger free file size limit, SendVault provides better security features for free, including password protection and unique 6-character share codes. For most users prioritizing security and a modern, ad-free experience, SendVault is the better choice.</p>
1174        `},{id:"4",slug:"large-file-sharing-creative-professionals",title:"File Sharing Solutions for Creative Professionals",excerpt:"Discover the best ways to share large creative files. Learn how photographers, videographers, and designers can transfer projects efficiently.",category:"Creative",readTime:"5 min read",publishDate:"January 18, 2026",keywords:["share photos","video file transfer","design file sharing","creative professionals"],content:`
1175            <h2>The Challenge of Sharing Creative Files</h2>
1176            <p>Creative professionals deal with massive file sizes daily. RAW photos, 4K videos, and layered design files can easily exceed email limits, creating workflow bottlenecks.</p>
1177
1178            <h3>Common File Sizes in Creative Work</h3>
1179            <ul>
1180                <li><strong>RAW Photos:</strong> 25-50MB per image</li>
1181                <li><strong>4K Video (1 minute):</strong> 350-500MB</li>
1182                <li><strong>Layered PSD Files:</strong> 100-500MB</li>
1183                <li><strong>AI/EPS Vector Files:</strong> 10-100MB</li>
1184                <li><strong>High-res print files:</strong> 50-200MB</li>
1185            </ul>
1186
1187            <h3>Why Email Doesn't Work for Creative Files</h3>
1188            <p>Most email providers limit attachments to 25MB, making it impossible to share even a single RAW photo shoot or short video clip. Cloud storage sharing is slow and requires recipients to have accounts.</p>
1189
1190            <h3>What Creative Professionals Need</h3>
1191            <ol>
1192                <li><strong>Speed:</strong> Fast uploads and downloads to meet tight deadlines</li>
1193                <li><strong>Reliability:</strong> Files must arrive intact without corruption</li>
1194                <li><strong>Security:</strong> Client work needs protection from unauthorized access</li>
1195                <li><strong>Simplicity:</strong> No complex folder structures or account requirements</li>
1196                <li><strong>Flexibility:</strong> Support for various file formats and sizes</li>
1197            </ol>
1198
1199            <h3>Best Practices for Sharing Creative Projects</h3>
1200            <ul>
1201                <li><strong>Compress When Possible:</strong> Use ZIP for multiple files to reduce upload time</li>
1202                <li><strong>Use Proofs First:</strong> Share low-res previews before sending final high-res files</li>
1203                <li><strong>Protect with Passwords:</strong> Always secure client work with passwords</li>
1204                <li><strong>Organize Files:</strong> Use clear naming conventions before sharing</li>
1205                <li><strong>Set Expiration:</strong> Use temporary links that expire after client downloads</li>
1206            </ul>
1207
1208            <h3>How Photographers Use File Sharing</h3>
1209            <p>Photographers can share entire photoshoots with clients instantly. Password protection keeps client photos secure, while the 6-character share code makes in-
1209person handoffs effortless. Just say the code and the client types it on their phone.</p>
1210
1211            <h3>SendVault for Creatives</h3>
1212            <p>SendVault supports all creative file formats up to 1GB, with fast uploads, password protection, and the unique share code system that works on any device without an app or account.</p>
1213        `},{id:"5",slug:"temporary-file-sharing-vs-cloud-storage",title:"Temporary File Sharing vs Cloud Storage: When to Use Each",excerpt:"Understand the difference between temporary file sharing services and permanent cloud storage. Learn which solution fits your needs best.",category:"Guide",readTime:"7 min read",publishDate:"January 22, 2026",keywords:["temporary file sharing","cloud storage","file transfer","Dropbox alternative"],content:`
1214            <h2>Two Different Tools for Two Different Jobs</h2>
1215            <p>Temporary file sharing and cloud storage both move files through the internet, but they solve different problems. Cloud storage is a digital filing cabinet: it keeps files available for days, months, or years so you can return to them. Temporary file sharing is a delivery service: it gives another person access to a specific file for a limited period, then removes the transfer.</p>
1216            <p>Choosing between them becomes easier when you ask one question: <strong>does this file need to remain available for ongoing work, or does someone simply need to receive it once?</strong></p>
1217
1218            <h2>What Is Cloud Storage?</h2>
1219            <p>Services such as Dropbox, Google Drive, OneDrive, and iCloud are built around persistent access. They usually provide:</p>
1220            <ul>
1221                <li>Persistent file storage and folder organization</li>
1222                <li>Synchronization across computers, phones, and tablets</li>
1223                <li>Version history and recovery for changed files</li>
1224                <li>Shared folders and simultaneous collaboration</li>
1225                <li>Permission management for teams and external guests</li>
1226            </ul>
1227            <p>That makes cloud storage the right home for working documents, project archives, templates, recurring reports, and files that several people need to update. It is also useful when you want your own files available on multiple devices without manually sending a new copy each time.</p>
1228
1229            <h2>What Is Temporary File Sharing?</h2>
1230            <p>Temporary file sharing services such as SendVault are optimized for one-time or short-lived transfers. They typically offer:</p>
1231            <ul>
1232                <li>Quick uploads for a specific delivery</li>
1233                <li>Automatic deletion after a defined period</li>
1234                <li>No account required for the recipient</li>
1235                <li>Optional password protection</li>
1236                <li>Original-file delivery without media compression</li>
1237                <li>Short links or codes that are easy to share between devices</li>
1238            </ul>
1239            <p>The service does not try to become your permanent archive. That is the advantage. A client proof, export, contract, or batch of photos can be available long enough to download without becoming another forgotten folder that needs to be managed later.</p>
1240
1241            <h2>When Cloud Storage Is the Better Choice</h2>
1242            <p>Choose cloud storage when the relationship with the file is ongoing:</p>
1243            <ul>
1244                <li><strong>Collaborative projects:</strong> A team needs to edit, comment on, and review the same working files.</li>
1245                <li><strong>Long-term archives:</strong> You need a durable copy of invoices, source files, records, or completed project materials.</li>
1246                <li><strong>Frequent access:</strong> You will return to the file regularly from more than one device.</li>
1247                <li><strong>Version control:</strong> You need to see previous versions or restore a file after an accidental change.</li>
1248                <li><strong>Large shared libraries:</strong> A team needs folders, search, permissions, and a consistent source of truth.</li>
1249            </ul>
1250            <p>Cloud storage is especially valuable when recipients are active collaborators rather than one-time downloaders. For example, a design team may keep the working brand files in a shared folder throughout a project, then use a separate delivery method for the final client package.</p>
1251
1252            <h2>When Temporary File Sharing Is the Better Choice</h2>
1253            <p>Choose temporary sharing when the handoff is short-lived or the recipient should not have to join your storage system:</p>
1254            <ul>
1255                <li><strong>Client deliverables:</strong> Send a final PDF, design export, video, or ZIP without exposing your working folders.</li>
1256                <li><strong>Large files:</strong> Avoid email attachment limits and send the original file instead of a compressed preview.</li>
1257                <li><strong>Cross-platform transfers:</strong> Move a file between iPhone, Android, Windows, Mac, or Chromebook without installing an app.</li>
1258                <li><strong>Sensitive documents:</strong> Use a password and a short access window for contracts, financial records, or identity documents.</li>
1259                <li><strong>One-time recipients:</strong> Deliver a file to a customer, contractor, printer, or guest who does not need a permanent account.</li>
1260                <li><strong>Temporary review copies:</strong> Share a draft for approval without leaving old versions accessible forever.</li>
1261            </ul>
1262            <p>Temporary sharing is also a useful privacy habit. If a file does not need to live online permanently, deleting it automatically reduces the number of old links and copies you need to remember later.</p>
1263
1264            <h2>Security and Privacy Differences</h2>
1265            <p>
1265Both categories can be secure, but they expose different trade-offs. Cloud storage usually offers detailed user accounts, folder permissions, audit history, and recovery features. Those controls are useful for teams, but they also mean more accounts, shared memberships, and long-lived data to administer.</p>
1266            <p>Temporary sharing emphasizes a smaller access window. Look for HTTPS/TLS during transfer, encryption while the file is stored, optional passwords, automatic expiry, and clear deletion policies. A password should be unique to that transfer, and the link and password should be sent through separate channels for sensitive material.</p>
1267            <p>Neither tool removes the need to verify recipients. A secure service cannot prevent you from uploading the wrong version or sending the right link to the wrong person. Always check the filename, recipient, and access settings before sharing.</p>
1268
1269            <h2>Comparison: Temporary Sharing vs Cloud Storage</h2>
1270            <div style="overflow-x: auto; margin: 2rem 0;">
1271                <table style="width: 100%; border-collapse: collapse; text-align: left;">
1272                    <thead>
1273                        <tr style="background: var(--bg-muted);">
1274                            <th style="padding: 0.8rem;">Need</th>
1275                            <th style="padding: 0.8rem;">Temporary sharing</th>
1276                            <th style="padding: 0.8rem;">Cloud storage</th>
1277                        </tr>
1278                    </thead>
1279                    <tbody>
1280                        <tr>
1281                            <td style="padding: 0.8rem;">Main purpose</td>
1282                            <td style="padding: 0.8rem;">One-time delivery</td>
1283                            <td style="padding: 0.8rem;">Ongoing access and collaboration</td>
1284                        </tr>
1285                        <tr style="background: var(--bg-muted);">
1286                            <td style="padding: 0.8rem;">Typical lifetime</td>
1287                            <td style="padding: 0.8rem;">Hours to days</td>
1288                            <td style="padding: 0.8rem;">Months or years</td>
1289                        </tr>
1290                        <tr>
1291                            <td style="padding: 0.8rem;">Recipient experience</td>
1292                            <td style="padding: 0.8rem;">Link or code, often no account</td>
1293                            <td style="padding: 0.8rem;">Shared folder or account permissions</td>
1294                        </tr>
1295                        <tr style="background: var(--bg-muted);">
1296                            <td style="padding: 0.8rem;">Best for</td>
1297                            <td style="padding: 0.8rem;">Deliverables and sensitive handoffs</td>
1298                            <td style="padding: 0.8rem;">Working files and archives</td>
1299                        </tr>
1300                        <tr>
1301                            <td style="padding: 0.8rem;">Main risk</td>
1302                            <td style="padding: 0.8rem;">Recipient misses the expiry window</td>
1303                            <td style="padding: 0.8rem;">Old files and permissions remain active</td>
1304                        </tr>
1305                    </tbody>
1306                </table>
1307            </div>
1308
1309            <h2>A Practical Hybrid Workflow</h2>
1310            <p>You do not have to choose one tool for every situation. A strong workflow separates collaboration from delivery:</p>
1311            <ol>
1312                <li>Keep source files and active drafts in your team cloud folder.</li>
1313                <li>Prepare a clean delivery folder containing only the approved files.</li>
1314                <li>Compress multiple files into a ZIP when bundling makes the handoff easier.</li>
1315                <li>Upload the final package to <a href="https://sendvault.online/">SendVault</a> and enable password protection for sensitive material.</li>
1316                <li>Send the link or 6-character code with clear instructions and share the password separately.</li>
1317                <li>Ask the recipient to confirm the download, then let the temporary transfer expire.</li>
1318            </ol>
1319            <p>This approach keeps your archive organized while giving the recipient a simple, focused download. It also prevents clients from seeing internal drafts, comments, and unrelated project files. For more guidance on delivery preparation, see <a href="/blog/optimizing-creative-workflow">our creative workflow checklist</a>.</p>
1320
1321            <h2>
1321Why Use SendVault for Temporary Sharing?</h2>
1322            <p>SendVault is designed for the delivery side of this workflow. You can share files up to 1GB without compression, protect a transfer with a password, and give the recipient a link or 6-character code without requiring an account. Transfers automatically expire after seven days, so the service is not intended to replace your long-term backup or project archive.</p>
1323
1324            <h2>Frequently Asked Questions</h2>
1325            <h3>Is temporary file sharing safer than cloud storage?</h3>
1326            <p>Not automatically. Security depends on encryption, access controls, expiration, provider practices, and how carefully you share the file. Temporary sharing can reduce exposure by limiting how long a delivery remains available, while cloud storage can provide stronger team permissions and audit controls.</p>
1327
1328            <h3>Can I use temporary sharing for backup?</h3>
1329            <p>No. A temporary transfer is deliberately deleted, so keep a verified copy in a suitable archive or backup system. Use temporary sharing to deliver the file, not to preserve it.</p>
1330
1331            <h3>What should I use for a file larger than an email limit?</h3>
1332            <p>Use a dedicated transfer service or a cloud link rather than attaching the file directly. Choose temporary sharing for a one-time delivery and cloud storage when the recipient needs ongoing access or collaboration.</p>
1333
1334            <h2>Final Decision Guide</h2>
1335            <p>Use cloud storage when the file is part of continuing work. Use temporary file sharing when the job is to deliver a specific file and then close the access window. For many professionals, the best answer is both: cloud storage for the archive and collaboration, temporary sharing for clean, secure, time-limited delivery.</p>
1336        `},{id:"6",slug:"common-file-sharing-mistakes",title:"10 Common File Sharing Mistakes That Put Your Data at Risk",excerpt:"Avoid these critical file sharing errors that compromise security. Learn what mistakes to avoid when transferring sensitive files online.",category:"Security",readTime:"6 min read",publishDate:"January 25, 2026",keywords:["file sharing mistakes","data security","secure file transfer","cybersecurity tips"],content:`
1337            <h2>File Sharing Security Mistakes You Must Avoid</h2>
1338            <p>Even tech-savvy professionals make critical errors when sharing files online. A single mistake can expose sensitive documents, client data, or confidential business files to the wrong people. Here are the 10 most common mistakes. And exactly how to fix them.</p>
1339
1340            <h3>1. Not Using Password Protection</h3>
1341            <p>Sending files without password protection assumes the link alone is secure. But URLs can be forwarded, leaked, or guessed. Anyone with the link can access your files instantly. <strong>Fix:</strong> Always add a strong password to every sensitive file transfer. Use a service like SendVault that offers free password protection on all transfers.</p>
1342
1343            <h3>2. Sharing Links Publicly</h3>
1344            <p>Posting file sharing links on social media, public Slack channels, or forums creates indefinite access points for unauthorized users. Web crawlers can index public links. <strong>Fix:</strong> Only share links via private, direct messages. Never post file links publicly, even if the file seems harmless.</p>
1345
1346            <h3>3. Ignoring File Expiration</h3>
1347            <p>Old shared links are a silent security liability that most people forget about. A link you shared 6 months ago could still be active and downloadable. <strong>Fix:</strong> Always set an expiration date on shared files. Use services like SendVault that auto-delete files after 7 days, eliminating the risk of forgotten links.</p>
1348
1349            <h3>4. Using Unsecured Networks</h3>
1350            <p>Uploading or downloading sensitive files on public Wi-Fi (cafes, airports, hotels) exposes your data to packet sniffing attacks. Man-in-the-middle attacks are trivially easy on open networks. <strong>Fix:</strong> Always use a VPN when on public networks, and only use file sharing services that enforce HTTPS/TLS encryption for all data in transit.</p>
1351
1352            <h3>5. Using Email for Large or Sensitive Files</h3>
1353            <p>Email attachments are stored on multiple servers (yours, your provider's, the recipient's provider). This multiplies your exposure surface. Plus, email lacks forward secrecy. Old emails can be decrypted if a server is compromised later. <strong>Fix:</strong> Use dedicated file transfer services instead of email for anything sensitive.</p>
1354
1355            <h3>6. Not Verifying the Recipient</h3>
1356            <p>Typos in email addresses send confidential files to complete strangers. This is one of the most common causes of accidental data disclosure in organizations. <strong>Fix:</strong> Double-check recipient email or phone number before sending. Use unique share codes (like SendVault's 6-ch
1356aracter codes) instead of links to reduce the risk of mis-delivery.</p>
1357
1358            <h3>7. Storing Files Indefinitely on Free Cloud Services</h3>
1359            <p>Files uploaded to free tiers of Dropbox or Google Drive can sit there for years. If your account is compromised, every file you've ever shared becomes a target. <strong>Fix:</strong> Use temporary file sharing for deliverables and transient data. Keep long-term cloud storage for files you genuinely need long-term.</p>
1360
1361            <h3>8. Sharing the Password in the Same Message as the Link</h3>
1362            <p>If someone intercepts your email or message, they get both the link and the key simultaneously. <strong>Fix:</strong> Use two separate channels. Send the link via email, and the password via SMS, WhatsApp, or phone call.</p>
1363
1364            <h3>9. Downloading Files from Unverified Senders</h3>
1365            <p>File sharing links can be spoofed. A link that looks like a file transfer could be a phishing page or a malicious download. <strong>Fix:</strong> Only download files from people you trust and from services with verifiable HTTPS certificates.</p>
1366
1367            <h3>10. Not Auditing What You've Shared</h3>
1368            <p>Most people have no idea how many files they've shared over the past year or who still has access to them. This "data sprawl" is a major security risk. <strong>Fix:</strong> Regularly review your shared files and revoke access to anything that's been shared for longer than necessary. Services with auto-expiration handle this automatically.</p>
1369
1370            <h3>How SendVault Protects You by Default</h3>
1371            <p>SendVault is designed to make secure file sharing the path of least resistance. Every transfer comes with automatic 7-day expiration, free password protection, and no permanent storage. So even if you forget, the system remembers to delete. It's security without the extra steps.</p>
1372        `},{id:"7",slug:"gdpr-compliance-file-sharing",title:"GDPR Compliance in File Sharing: What You Need to Know",excerpt:"Understand GDPR requirements for file sharing. Learn how to transfer files in compliance with European data protection regulations.",category:"Business",readTime:"7 min read",publishDate:"January 28, 2026",keywords:["GDPR compliance","data protection","file sharing regulations","GDPR file transfer"],content:`
1373            <h2>File Sharing and GDPR: A Practical Guide</h2>
1374            <p>If you handle personal data of EU residents. Clients, employees, or partners. GDPR compliance isn't optional. It's the law with fines of up to €20 million or 4% of global annual turnover. File sharing is one of the most common areas where organizations inadvertently violate GDPR without realizing it.</p>
1375
1376            <h3>What Counts as Personal Data Under GDPR?</h3>
1377            <p>Under GDPR, personal data is any information that can identify a natural person. This includes:</p>
1378            <ul>
1379                <li>Names, email addresses, phone numbers</li>
1380                <li>ID documents, passport scans, tax returns</li>
1381                <li>Photos and videos of identifiable people</li>
1382                <li>Medical or health records</li>
1383                <li>IP addresses and device identifiers</li>
1384                <li>HR files, payslips, contracts</li>
1385            </ul>
1386            <p>If any file you share contains this data, you must handle it in accordance with GDPR's core principles.</p>
1387
1388            <h3>The 6 Key GDPR Principles That Apply to File Sharing</h3>
1389            <ul>
1390                <li><strong>1. Lawfulness, Fairness, and Transparency:</strong> You must have a legal basis for sharing the data. The person whose data it is should generally know it's being shared.</li>
1391                <li><strong>2. Purpose Limitation:</strong> Only share data for the purpose for which it was collected. Don't repurpose HR files for marketing, for example.</li>
1392                <li><strong>3. Data Minimization:</strong> Share only the minimum data necessary. If a client only needs to see a summary, don't share the full database export.</li>
1393                <li><strong>4. Accuracy:</strong> Ensure the files you share contain accurate, up-to-date information.</li>
1394                <li><strong>5. Storage Limitation:</strong> Personal data must not be kept longer than necessary. Auto-expiring file links directly supports this principle.</li>
1395                <li><strong>6. Integrity and Confidentiality (Security):</strong> Use appropriate technical measures. Encryption in transit and at rest, access controls, and password protection.</li>
1396            </ul>
1397
1398            <h3>Common GDPR File Sharing Violations</h3>
1399            <p>Many organizations unknowingly violate GDPR through their file sharing habits:</p>
1400            <ul>
1401                <li><strong>Sending personal data via unencrypted email</strong>
1401. Violates the security principle (Article 32).</li>
1402                <li><strong>Leaving shared cloud links active indefinitely</strong>. Violates storage limitation (Article 5(1)(e)).</li>
1403                <li><strong>Sharing more data than necessary</strong>. Violates data minimization (Article 5(1)(c)).</li>
1404                <li><strong>Transferring EU data to US servers without safeguards</strong>. Violates Chapter V on international transfers.</li>
1405            </ul>
1406
1407            <h3>Best Practices for GDPR-Compliant File Sharing</h3>
1408            <ol>
1409                <li><strong>Always use encryption:</strong> Ensure both data in transit (HTTPS/TLS) and data at rest (server-side encryption) are protected.</li>
1410                <li><strong>Enable password protection:</strong> Add password protection to any file containing personal data before sending the link.</li>
1411                <li><strong>Set auto-expiration:</strong> Use services that automatically delete files after a set period. This directly addresses the storage limitation principle.</li>
1412                <li><strong>Use two-channel authentication:</strong> Send the file link via email and the password via a different channel (SMS, phone).</li>
1413                <li><strong>Document your data transfers:</strong> GDPR requires you to maintain records of processing activities. Keep a log of what personal data was shared, with whom, and when.</li>
1414                <li><strong>Check your vendor's data residency:</strong> If you're using a third-party file sharing service, make sure they have a Data Processing Agreement (DPA) and know where their servers are located.</li>
1415            </ol>
1416
1417            <h3>How SendVault Supports GDPR Compliance</h3>
1418            <p>SendVault is built with GDPR principles in mind. Files are automatically deleted after 7 days (storage limitation), encrypted in transit (security principle), and protected by optional passwords (confidentiality). The no-permanent-storage model means personal data doesn't linger on servers beyond what's needed for the transfer itself.</p>
1419
1420            <h3>Disclaimer</h3>
1421            <p>This article is for informational purposes only and does not constitute legal advice. Consult a qualified GDPR attorney or Data Protection Officer for advice specific to your organization.</p>
1422        `},{id:"8",slug:"file-sharing-remote-teams",title:"File Sharing Best Practices for Remote Teams",excerpt:"Optimize file sharing workflows for distributed teams. Learn collaboration strategies that boost productivity and maintain security.",category:"Business",readTime:"6 min read",publishDate:"February 1, 2026",keywords:["remote work","team collaboration","distributed teams","file sharing workflow"],content:`
1423            <h2>Why Remote Teams Struggle with File Sharing</h2>
1424            <p>A distributed team brings immense talent together, but it also creates friction that co-located teams never face: varied time zones, inconsistent internet speeds, mixed operating systems, and the ever-present risk of data sprawl across too many tools. Poor file sharing habits are one of the top causes of wasted hours in remote organizations.</p>
1425
1426            <h3>The Core Problem: Tool Fragmentation</h3>
1427            <p>The average remote team uses 5+ different tools to share files: email attachments, Slack DMs, shared Google Drive folders, Dropbox links, and ad-hoc USB transfers. This creates confusion about where the "source of truth" is, leading to version conflicts, duplicated work, and security gaps.</p>
1428
1429            <h3>Step 1: Define a Clear File Sharing Hierarchy</h3>
1430            <p>The most productive remote teams have a simple mental model for file sharing:</p>
1431            <ul>
1432                <li><strong>Long-term archive (Google Drive / Dropbox / SharePoint):</strong> Active project files, reference documents, templates. Organized in folders by client or project.</li>
1433                <li><strong>Team communication (Slack / Teams):</strong> Small, non-sensitive files shared in context of a conversation. Never for final deliverables.</li>
1434                <li><strong>External delivery (SendVault):</strong> Final deliverables sent to clients, contractors, or external partners. Temporary, password-protected, with auto-expiration.</li>
1435            </ul>
1436
1437            <h3>Step 2: Standardize File Naming Conventions</h3>
1438            <p>
1438Before worrying about where files go, ensure everyone names them consistently. A good format is: <code>YYYY-MM-DD_ProjectName_FileType_v1.ext</code>. For example: <code>2026-02-01_Acme_Proposal_v2.pdf</code>. This eliminates the dreaded "final_FINAL_v3_USE_THIS.docx" problem.</p>
1439
1440            <h3>Step 3: Establish External Sharing Protocols</h3>
1441            <p>For any file shared <em>outside</em> the team, enforce these rules without exception:</p>
1442            <ol>
1443                <li><strong>Always use password protection</strong> for files containing sensitive data.</li>
1444                <li><strong>Set an expiration date.</strong> Free tools like SendVault auto-expire files after 7 days.</li>
1445                <li><strong>Send link and password through separate channels</strong>. The link via email, the password via Slack or SMS.</li>
1446                <li><strong>Never share links in public channels.</strong> Use private messages or DMs.</li>
1447            </ol>
1448
1449            <h3>Step 4: Async-First Asset Reviews</h3>
1450            <p>Remote teams lose enormous amounts of time scheduling calls just to "show" someone a file. Instead, build async review workflows:</p>
1451            <ul>
1452                <li>Upload the file to SendVault and share the link with a time-stamped Loom video walkthrough.</li>
1453                <li>The recipient can download, review, and leave written feedback. All without scheduling a call.</li>
1454                <li>The expiring link ensures the review version doesn't linger once feedback is incorporated.</li>
1455            </ul>
1456
1457            <h3>Step 5: Security Hygiene for Distributed Teams</h3>
1458            <p>Remote environments introduce security risks that office networks mitigate automatically:</p>
1459            <ul>
1460                <li><strong>Require VPN</strong> for accessing internal systems and uploading sensitive files from public networks.</li>
1461                <li><strong>Audit shared links quarterly.</strong> Delete or revoke any link older than 30 days that wasn't auto-expired.</li>
1462                <li><strong>Train on phishing.</strong> File sharing links are a common phishing vector. Employees should verify senders before downloading.</li>
1463                <li><strong>Use services with zero permanent storage</strong> for deliverables, so there's no server-side target to breach months later.</li>
1464            </ul>
1465
1466            <h3>The SendVault Remote Team Workflow</h3>
1467            <p>Many remote agencies have adopted a simple flow: work-in-progress lives in Google Drive, final client deliverables are sent via SendVault links (with passwords shared by SMS), and internal quick shares happen in Slack. This three-tier system reduces confusion, improves security, and eliminates data sprawl.</p>
1468        `},{id:"9",slug:"how-to-share-large-video-files",title:"How to Share Large Video Files: Complete Guide",excerpt:"Learn the best methods to transfer large video files quickly and securely. Solutions for filmmakers, content creators, and businesses.",category:"Creative",readTime:"5 min read",publishDate:"February 5, 2026",keywords:["share video files","transfer large videos","4K video sharing","video file transfer"],content:`
1469            <h2>The Large Video File Challenge</h2>
1470            <p>Video files are the heaviest digital assets most people deal with. A single minute of 4K footage can clock in at 350–500 MB. Even compressed delivery files run into the gigabytes. Email fails instantly (25 MB limit). WhatsApp compresses the quality. Cloud storage is slow to upload and requires recipients to have accounts. So what's the actual solution?</p>
1471
1472            <h3>Understanding Your Video File Sizes</h3>
1473            <ul>
1474                <li><strong>4K RAW (ProRes/BRAW):</strong> 1–3 GB per minute</li>
1475                <li><strong>4K H.264 (camera-native):</strong> 350–800 MB per minute</li>
1476                <li><strong>1080p H.264 (exports/deliverables):</strong> 100–300 MB per minute</li>
1477                <li><strong>Compressed review copy (H.264 low bitrate):</strong> 30–80 MB per minute</li>
1478                <li><strong>Proxy files (offline editing):</strong> 20–50 MB per minute</li>
1479            </ul>
1480
1481            <h3>Method 1: Dedicated File Transfer Services (Best for Delivery)</h3>
1482            <p>For sending final deliverables or review copies to clients, dedicated transfer services like SendVault are the best option. They offer:</p>
1483            <ul>
1484                <li>Large file support (up to 1 GB free)</li>
1485                <li>No quality compression. What you upload is exactly what they download</li>
1486                <li>No account required for the recipient</li>
1487                <li>Password protection for client confidentiality</li>
1488                <li>Automatic link expiry (no lingering download links)</li>
1489            </ul>
1490
1491            <h3>
1491Method 2: Cloud Storage Shared Links (Best for Collaboration)</h3>
1492            <p>Google Drive, Dropbox, and OneDrive are better for ongoing collaboration where multiple people need access over time. The downsides: recipients need accounts, upload speeds depend on your plan, and files accumulate indefinitely.</p>
1493
1494            <h3>Method 3: Frame.io / Vimeo Review (Best for Professional Review)</h3>
1495            <p>For high-end video review workflows, Frame.io and Vimeo Review links allow clients to leave time-coded comments. These are premium tools with a cost, but invaluable for multi-round review processes.</p>
1496
1497            <h3>The Smart Compression Workflow</h3>
1498            <p>You don't always need to send the full-resolution file. Use a tiered approach:</p>
1499            <ol>
1500                <li><strong>Review Copy First:</strong> Export a compressed H.264 version at 5–10 Mbps bitrate. Use this for client approvals. File sizes become manageable (100–200 MB for a 5-minute video).</li>
1501                <li><strong>Final Delivery:</strong> Only send the full-resolution file after the client has approved the review copy. This saves upload bandwidth and time.</li>
1502                <li><strong>Use Proxies for Editors:</strong> If sending to an editor, include proxy files (low-res stand-ins) alongside the source files so they can start editing immediately before the full file finishes downloading.</li>
1503            </ol>
1504
1505            <h3>Codec Recommendations for Sharing</h3>
1506            <ul>
1507                <li><strong>H.264 (MP4):</strong> The universal standard. Opens on every device. Best for review copies and client deliverables.</li>
1508                <li><strong>H.265 (HEVC):</strong> Smaller files than H.264 at equivalent quality, but some older devices struggle to play it.</li>
1509                <li><strong>ProRes / DNxHR:</strong> For editor-to-editor transfers where you need to preserve maximum quality. Files are large but lossless in quality.</li>
1510            </ul>
1511
1512            <h3>The SendVault Video Workflow</h3>
1513            <p>For most videographers and content creators, the ideal workflow is: export a compressed H.264 review copy → upload to SendVault → share the password-protected link with the client. After approval, export the full-quality master and deliver it the same way. Simple, professional, and secure. No cloud account headaches for your clients.</p>
1514        `},{id:"10",slug:"password-protection-best-practices",title:"Password Protection Best Practices for Shared Files",excerpt:"Create unbreakable passwords for shared files. Learn password management strategies that balance security with usability.",category:"Security",readTime:"5 min read",publishDate:"February 8, 2026",keywords:["password security","file protection","password best practices","secure passwords"],content:`
1515            <h2>A File Without a Password Is an Open Door</h2>
1516            <p>When you share a file link with no password, you're betting that nobody except your intended recipient will ever see that URL. That's a bad bet. Links get forwarded, copied into the wrong chat, or automatically archived in email threads that get breached years later. A password is the only real access control you have.</p>
1517
1518            <h3>What Makes a Password "Strong"?</h3>
1519            <p>For file sharing passwords, you need something that's both secure and practical to communicate. Here's a quick guide:</p>
1520            <ul>
1521                <li><strong>Length beats complexity:</strong> A random 4-word passphrase like <code>coffee-river-lamp-cloud</code> is far harder to crack than <code>P@ssw0rd!</code>, and much easier to remember and dictate.</li>
1522                <li><strong>Avoid Personal Info:</strong> Don't use names, birthdays, or company names. These are the first things attackers try.</li>
1523                <li><strong>Add Numbers or Symbols:</strong> Including a number or symbol adds entropy without making it hard to type: <code>coffee-river-7-cloud</code>.</li>
1524                <li><strong>Unique Per Transfer:</strong> Never reuse passwords across different file transfers. If one link gets compromised, reused passwords mean all your other shared files are at risk too.</li>
1525            </ul>
1526
1527            <h3>The Two-Channel Rule (Critical)</h3>
1528            <p>This is the most important rule: <strong>never send the password in the same message as the link.</strong> If someone intercepts that one message, they have everything they need.</p>
1529            <p>The correct approach:</p>
1530            <ol>
1531                <li>Send the file link via <strong>email</strong>.</li>
1532                <li>Send the password via a <strong>different channel</strong>. SMS text, WhatsApp message, phone call, or Slack DM.</li>
1533            </ol>
1534            <p>This is called "two-channel authentication" and it's the same principle banks use when they send a code to your phone after you enter your password online.</p>
1535
1536            <h3>Password Length for File Transfers</h3>
1537            <p>For file sharing specifically, we recommend passwords between 8–16 characters. Here's why: longer is more secure, but if you're verbally telling someone a 32-character password over the phone, you're going to make mistakes. A memorable 4-word passphrase or a 10-character random string hits the sweet spot of security and usability.</p>
1538
1539            <h3>Using a Password Manager</h3>
1540            <p>If you regularly share files with the same clients or partners, use a password manager (like Bitwarden, 1Password, or Dashlane) to generate and store unique passwords per transfer. You can generate a strong password in one click and share it securely without ever needing to remember it yourself.</p>
1541
1542            <h3>When NOT to Use a Password</h3>
1543            <p>Not every file needs a password. Non-sensitive public content like marketing materials, public portfolios, or event photos can be shared without one. But as a rule of thumb: if the wrong person downloading the file would cause any problem. Embarrassment, legal liability, competitive damage. Add a password.</p>
1544
1545            <h3>SendVault's Password Feature</h3>
1546            <p>
1546SendVault makes password protection completely free and optional on every transfer. When you upload a file, simply toggle on "Password Protection" and set your password. The recipient will be required to enter the correct password before downloading. Combined with a 7-day auto-expiry, this gives you two layers of access control with zero extra cost.</p>
1547        `},{id:"11",slug:"secure-file-transfer-essential-features",title:"Secure File Transfer: 7 Essential Features to Demand",excerpt:"Not all file transfer services are created equal. Here are the 7 must-have security features you should demand before trusting a service with your files.",category:"Guide",readTime:"6 min read",publishDate:"February 12, 2026",keywords:["secure file transfer features","encryption","password protection","file expiration"],content:`
1548            <h2>Not All File Transfer Services Are Equal</h2>
1549            <p>When you're looking for a file transfer service, it's tempting to just go with the most popular name. But popularity doesn't equal security. Before you trust any service with your confidential files. Business documents, client work, personal data. Here are the 7 features you must verify it has.</p>
1550
1551            <h3>Feature 1: End-to-End Encryption (E2EE) or Strong In-Transit Encryption</h3>
1552            <p>This is non-negotiable. Your files should be encrypted while traveling between your device, the server, and the recipient's device. Look for services that use <strong>HTTPS/TLS 1.2 or higher</strong> for all transfers. True E2EE (where files are encrypted client-side before upload) is even better, but any reputable service should at minimum use TLS.</p>
1553            <p><strong>Red flag:</strong> Any service that doesn't show the padlock icon in the browser or uses HTTP instead of HTTPS.</p>
1554
1555            <h3>Feature 2: Password Protection</h3>
1556            <p>The link to your file should require a password separate from the link itself. Without password protection, anyone who gets the URL can download your file. No questions asked. Password-protected links mean even a forwarded or leaked URL is useless without the key.</p>
1557            <p><strong>Watch out:</strong> Many services only offer password protection on paid plans. Look for services like SendVault that offer it free on all transfers.</p>
1558
1559            <h3>Feature 3: Automatic File Expiration</h3>
1560            <p>Files should not remain downloadable forever. Auto-expiration (typically 7–30 days) ensures dead links can't be exploited later and reduces your data liability. The best services let you choose the expiration window or trigger immediate deletion after download.</p>
1561
1562            <h3>Feature 4: No Permanent Storage</h3>
1563            <p>Some services permanently store every file you ever upload in their servers. Even after you "delete" them. This creates a liability. Truly secure services store files only temporarily as a transit vehicle, then delete them permanently when the link expires.</p>
1564
1565            <h3>Feature 5: No Account Required for Recipients</h3>
1566            <p>Security shouldn't create friction for your recipients. A service that forces the recipient to create an account expands your attack surface. Now their account credentials are also a vulnerability. The best services allow secure, no-account downloads via a link and password.</p>
1567
1568            <h3>Feature 6: Server-Side Encryption at Rest</h3>
1569            <p>Even when the file sits on the service's servers during the transfer window (between upload and download), it should be encrypted. AES-256 server-side encryption is the industry standard. If a service's servers are breached, your encrypted files should be unreadable without the decryption keys.</p>
1570
1571            <h3>Feature 7: Transparent Privacy Policy & No Data Mining</h3>
1572            <p>Some "free" services cover their costs by analyzing your files' metadata or serving targeted ads based on content. Read the privacy policy and look specifically for clauses about data mining, advertising, or selling data to third parties. Reputable services are transparent about what they store and for how long.</p>
1573
1574            <h3>How SendVault Checks Every Box</h3>
1575            <ul>
1576                <li>✅ TLS 1.3 encryption for all transfers</li>
1577                <li>✅ Free password protection on every transfer</li>
1578                <li>✅ Automatic 7-day file expiration</li>
1579                <li>✅ No permanent file storage. Deleted after expiry</li>
1580                <li>✅ No account required for recipients</li>
1581                <li>✅ AES-256 encryption at rest</li>
1582                <li>✅ No data mining, no advertising, no selling data</li>
1583            </ul>
1584        `},{id:"12",slug:"hidden-costs-free-file-sharing",title:'The Hidden Costs of "Free" File Sharing Services',excerpt:"When a service is free, you might be the product. Uncover the hidden privacy and security costs of popular free file transfer tools.",category:"Business",readTime:"5 min read",publishDate:"February 15, 2026",keywords:["free file sharing","data privacy","hidden costs","ad-supported services"],content:`
1585            <h2>If You're Not Paying, You Might Be the Product</h2>
1586            <p>Free is the most seductive word in tech, but it's also the most misleading. Every service has real costs: servers, bandwidth, engineering, support. When a company doesn't charge you money, they charge you something else. Here's what "free" file sharing typically costs you. Even if you never see an invoice.</p>
1587
1588            <h3>Hidden Cost 1: Your Data as the Revenue Model</h3>
1589            <p>Some file sharing services generate revenue by mining metadata from the files you upload. They may not read the contents of your Word document, but they track what types of files you upload, how frequently, from which regions, and to whom. This behavioral data is extremely valuable to advertisers and data brokers. Before using any free service, check their privacy policy for language like "anonymized aggregate data," "usage analytics," or "third-party partners". These are signals that your behavior is the product.</p>
1590
1591            <h3>Hidden Cost 2: Intrusive Advertising</h3>
1592            <p>Ad-supported file sharing services (WeTransfer free tier is a famous example) surface full-screen advertisements to your <em>recipients</em> when they download your file. Consider the impression this creates: you send a client a proposal, and the first thing they see is a pizza advertisement. For professional use, ad-supported links are a brand liability you don't want.</p>
1593
1594            <h3>Hidden Cost 3: Security Shortcuts</h3>
1595            <p>
1595Maintaining strong security infrastructure is expensive. To keep costs down, some free services cut corners on security. Storing files unencrypted, using outdated TLS versions, or not deleting files promptly after expiration. A data breach on a file sharing service could expose every file you've ever shared through it.</p>
1596
1597            <h3>Hidden Cost 4: Rate Limiting and Throttled Speeds</h3>
1598            <p>Many free tiers artificially throttle download speeds to push users towards paid plans. Your client waiting 20 minutes to download a 1 GB file because the service is throttling free-tier downloads is a hidden cost paid in time, frustration, and perception of your professionalism.</p>
1599
1600            <h3>Hidden Cost 5: Permanent Data Retention</h3>
1601            <p>Some services retain your uploaded files indefinitely. Even after the sharing link has expired. This means your data (and any personal information in those files) is sitting on their servers, potentially for years. Under GDPR, this is a liability if any of those files contain EU residents' personal data.</p>
1602
1603            <h3>How to Evaluate a "Free" File Sharing Service</h3>
1604            <p>Before uploading anything sensitive to a free service, ask these questions:</p>
1605            <ol>
1606                <li><strong>How do they make money?</strong> Ads, premium upsells, or data? Look for the business model.</li>
1607                <li><strong>How long do they store files?</strong> Read the terms of service for data retention clauses.</li>
1608                <li><strong>Do they encrypt files at rest?</strong> Server-side encryption should be standard.</li>
1609                <li><strong>Is password protection free?</strong> If not, any link you share is publicly accessible.</li>
1610                <li><strong>Do recipients see ads?</strong> Ask yourself: is this the experience I want my clients to have?</li>
1611            </ol>
1612
1613            <h3>The SendVault Approach: Free Without the Catch</h3>
1614            <p>SendVault is free because it's designed to be efficient, not because it's monetizing your data. Password protection is free. No ads appear on downloads. Files are automatically deleted after 7 days. No permanent retention. The service is supported by future premium features aimed at power users and businesses, not by selling the data of free-tier users. Free should mean free, not "free in exchange for your privacy."</p>
1615        `},{id:"17",slug:"why-object-storage-is-future",title:"Why Object Storage (R2) is the Future of File Sharing",excerpt:"Discover why modern apps are switching to Cloudflare R2 and S3-compatible storage for faster, cheaper, and more reliable file transfers.",category:"Tech Trends",readTime:"6 min read",publishDate:"February 10, 2026",keywords:["R2 storage","object storage","cloud infrastructure","file transfer tech"],content:`
1616
1617            <h2>Beyond the Hard Drive: What Object Storage Actually Is</h2>
1618            <p>Traditional file systems mimic a physical filing cabinet. Folders nested inside folders, each file living at a specific path like <code>/home/user/documents/project/final.pdf</code>. This hierarchical model made sense when computers had a single hard drive. But the modern web operates at a scale that folders simply cannot handle.</p>
1619            <p><strong>Object storage</strong> replaces the folder tree with a flat "bucket" model. Every file becomes an immutable "object" stored with a unique identifier and rich metadata. But without any concept of folders or paths. This seemingly simple change has profound implications for scalability, performance, and cost.</p>
1620
1621            <h3>How Object Storage Works Under the Hood</h3>
1622            <p>When you upload a file to an object storage system, three things happen:</p>
1623            <ol>
1624                <li><strong>Erasure coding:</strong> The file is split into data fragments and parity fragments, then distributed across multiple physical drives and often multiple data centres. No single hardware failure can destroy your data.</li>
1625                <li><strong>Metadata indexing:</strong> A rich metadata record is created. File type, size, upload timestamp, custom tags. This metadata is what makes large-scale searching and organisation fast without a folder hierarchy.</li>
1626                <li><strong>Content-addressed retrieval:</strong> The file can be retrieved by its unique key from any node in the network that holds a copy, enabling true global distribution.</li>
1627            </ol>
1628
1629            <h3>Why SendVault Uses Cloudflare R2</h3>
1630            <p>
1630When we were building SendVault's infrastructure, we evaluated several object storage providers. We chose <strong>Cloudflare R2</strong> for three specific reasons that directly benefit you as a user:</p>
1631            <ul>
1632                <li><strong>Zero egress fees:</strong> Most cloud providers (AWS S3, Google Cloud Storage) charge you a "bandwidth tax" every time data leaves their network. These egress fees can be enormous at scale. $0.09 per GB on AWS adds up fast. R2's zero-egress model means we don't pay a toll every time you download a file, which directly enables us to keep the service free.</li>
1633                <li><strong>Edge caching via Cloudflare's network:</strong> R2 integrates natively with Cloudflare's global CDN, which spans 300+ cities worldwide. When someone downloads a file, it's served from the nearest edge location. Not from a single origin server. A user in Singapore gets the same download speed as a user in London.</li>
1634                <li><strong>11 nines of durability (99.999999999%):</strong> R2 replicates your data across Cloudflare's infrastructure. The probability of data loss is mathematically negligible. You're more likely to be struck by lightning twice than to lose a file stored in R2.</li>
1635            </ul>
1636
1637            <h3>S3 Compatibility: The Universal Standard</h3>
1638            <p>Amazon S3 (Simple Storage Service), launched in 2006, established the API standard that the entire industry rallied around. R2, along with MinIO, Backblaze B2, and others, is S3-compatible. Meaning any code written for S3 works on R2 without modification. This portability is crucial: it prevents vendor lock-in and ensures that the file transfer ecosystem's tooling (SDKs, CLI tools, backup software) works universally.</p>
1639
1640            <h3>The Environmental Benefit of Ephemeral Storage</h3>
1641            <p>Permanent cloud storage has a hidden environmental cost: data centres consuming megawatts of power to spin drives containing files nobody accesses. Object storage systems built around temporary, content-addressed objects. Like SendVault's 7-day ephemeral model. Naturally reduce this waste. Files are stored only as long as needed, then deleted. The storage footprint stays lean, and the energy consumption stays proportional to actual usage.</p>
1642
1643            <h3>The Bigger Picture: Why This Matters for File Sharing</h3>
1644            <p>For end users, the underlying storage technology is invisible. And that's the point. Object storage with global edge distribution means your 500 MB video upload completes in seconds, and your recipient on the other side of the world can download it just as quickly. The architecture that powers cloud-scale applications is now available for something as simple as "I need to send this file to someone." That's the real future of file sharing: infrastructure-grade reliability without the infrastructure-grade complexity.</p>
1645        
1646        `},{id:"18",slug:"understanding-data-sovereignty",title:"Understanding Data Sovereignty in 2026",excerpt:"Where does your data actually live? A guide to digital borders, jurisdiction, and why it matters for your privacy.",category:"Privacy",readTime:"8 min read",publishDate:"February 2, 2026",keywords:["data sovereignty","digital privacy","gdpr","data jurisdiction"],content:`
1647
1648            <h2>Your Data Has a Passport. Whether You Know It or Not</h2>
1649            <p>When you upload a file to "the cloud," that file physically sits on a server somewhere. It occupies space on a real hard drive, in a real building, in a real country. And the moment it crosses into that country's borders. Digitally speaking. It becomes subject to that nation's laws. This is <strong>data sovereignty</strong>: the principle that data is governed by the laws of the jurisdiction where it physically resides.</p>
1650            <p>In 2026, with global cloud computing now the norm, understanding data sovereignty is no longer optional. Especially if you handle any information about European, American, or Chinese citizens.</p>
1651
1652            <h3>The Three Biggest Jurisdictional Regimes</h3>
1653            <p>Three legal frameworks dominate the global conversation on data sovereignty:</p>
1654            <ul>
1655                <li><strong>The European Union. GDPR:</strong> The General Data Protection Regulation mandates that personal data of EU citizens must be processed lawfully and transparently. Transfers outside the EU/EEA require adequate protections (Standard Contractual Clauses, Adequacy Decisions). Violation: up to €20M or 4% of global annual revenue.</li>
1656                <li><strong>The United States. CLOUD Act:</strong> The Clarifying Lawful Overseas Use of Data Act (2018) allows US law enforcement to compel US-based tech companies to hand over data stored <em>anywhere in the world</em>. Including data on foreign citizens stored on foreign servers, if the company is US-incorporated.</li>
1657                <li><strong>China. Data Security Law &amp; PIPL:</strong> China's Data Security Law (2021) requires data deemed "important" to remain within China's borders. The Personal Information Protection Law (PIPL) mirrors GDPR in intent but gives the government extensive access rights.</li>
1658            </ul>
1659
1660            <h3>The Jurisdiction Trap: A Practical Example</h3>
1661            <p>Imagine a German law firm storing client documents on a US-headquartered cloud provider's EU servers. The data never leaves Germany. Yet under the CLOUD Act, a US court could theoretically compel that American company to disclose those documents. Even without the firm or its clients knowing. This is the jurisdiction trap: the nationality of the <em>company</em> matters, not just the location of its servers.</p>
1662            <p>This is why many EU organisations are now moving towards EU-headquartered cloud providers, or at minimum ensuring their contracts include strong Data Processing Agreements that explicitly address CLOUD Act exposure.</p>
1663
1664            <h3>Data Minimization as a Sovereignty Strategy</h3>
1665            <p>The most effective data sovereignty strategy is also the simplest: <strong>don't process data you don't need to keep</strong>. You cannot be compelled to disclose data that doesn't exist. This principle, known as data minimization, is codified in GDPR Article 5(1)(c) but is strategically sound regardless of which legal framework applies to you.</p>
1666            <p>Ephemeral file sharing. Where files are automatically deleted after a set window. Is a practical implementation of data minimization. When you share a file via SendVault and it self-deletes after 7 days, there is no long-term data footprint to subpoena, audit, or breach.</p>
1667
1668            <h3>Practical Steps for Better Data Sovereignty</h3>
1669            <ol>
1670                <li><strong>Know where your data lives:</strong> Ask your cloud vendors exactly which countries their data centres are in and where your data specifically is stored. Don't accept "global infrastru
1670cture" as an answer.</li>
1671                <li><strong>Know whose laws apply to your vendor:</strong> Where is the company incorporated? A company with European servers but US incorporation is still subject to the CLOUD Act.</li>
1672                <li><strong>Use Data Processing Agreements:</strong> For any EU personal data processed by a third party, a DPA is legally required under GDPR. Ensure yours explicitly prohibits responding to government requests without prior notice to you (where legally permitted).</li>
1673                <li><strong>Prefer ephemeral storage for transient data:</strong> Files you send to clients, contractors, and partners typically don't need to live in the cloud permanently. Use temporary file transfer services for deliverables and delete them when no longer needed.</li>
1674                <li><strong>Encrypt before upload:</strong> For highly sensitive data, encrypt it client-side before uploading to any cloud service. This way, even if the provider is compelled to disclose, they can only hand over unintelligible ciphertext.</li>
1675            </ol>
1676
1677            <h3>The SendVault Approach to Data Sovereignty</h3>
1678            <p>SendVault is designed around data minimization from the ground up. Files are stored ephemerally. Deleted after 7 days. And we never build permanent user profiles or activity histories. There is no long-term copy of your data to subpoena. The best answer to "where is my data?" is "it's already gone." A file that no longer exists on our servers cannot be a jurisdictional liability for anyone.</p>
1679            <p>For users handling genuinely sensitive information, pairing SendVault's ephemeral model with client-side encryption before upload gives you the strongest possible sovereignty posture: temporary storage + encrypted data = minimal legal exposure across any jurisdiction.</p>
1680
1681            <h3>Disclaimer</h3>
1682            <p>This article is for informational purposes only and does not constitute legal advice. Data sovereignty law is complex and jurisdiction-specific. Consult a qualified attorney for advice specific to your situation.</p>
1683        
1684        `},{id:"19",slug:"compressing-files-faster-transfer",title:"Compressing Files for Faster Transfer: A Quick Guide",excerpt:"Learn the difference between lossless and lossy compression, and how to zip your files effectively before sending.",category:"Guide",readTime:"4 min read",publishDate:"January 28, 2026",keywords:["file compression","zip files","reduce file size","faster upload"],content:`
1685
1686            <h2>Why File Size Still Matters in 2026</h2>
1687            <p>Even with widespread gigabit home internet and 5G mobile data, file size remains a meaningful variable. Upload speeds are still typically a fraction of download speeds on most domestic connections. A 500 MB file on a 50 Mbps upload connection takes roughly 80 seconds. Before the recipient starts downloading. For remote teams across time zones, every minute of upload time is time that could have been eliminated with a two-second ZIP operation.</p>
1688            <p>Compression is the simplest, most universally available optimization you can apply before any file transfer. And most people skip it entirely.</p>
1689
1690            <h3>Lossless vs. Lossy: Know the Difference</h3>
1691            <p>Not all compression is equal. There are two fundamentally different types:</p>
1692            <ul>
1693                <li><strong>Lossless compression</strong> (ZIP, 7z, GZIP, FLAC). Reduces file size without discarding any data. Decompress it and you get the exact original file back. Use this for documents, code, databases, PDFs, and raw data.</li>
1694                <li><strong>Lossy compression</strong> (JPEG, MP3, H.264 video, WebP). Permanently discards data deemed imperceptible to human senses to achieve much higher compression ratios. Use this for images, audio, and video when you control the output quality. Once applied, the original data is gone.</li>
1695            </ul>
1696            <p><strong>Critical rule:</strong> Never apply lossy compression to files that have already been lossy-compressed. Re-compressing a JPEG image or re-encoding an MP4 video causes "generation loss". Cumulative quality degradation with each round-trip.</p>
1697
1698            <h3>ZIP vs. 7z vs. RAR: Which to Use</h3>
1699            <ul>
1700                <li><strong>.zip</strong>. Universal. Opens on Windows, macOS, and Linux without any additional software. Upload and download speeds more than compensate for its slightly lower compression ratio compared to alternatives. <em>Use this for everything shared externally.</em></li>
1701                <li><strong>.7z</strong>. Significantly better compression ratio than ZIP (typically 30–70% smaller for text/documents). Requires 7-Zip (free, open-source) to decompress. Best for ar
1701chival or when you control both ends of the transfer.</li>
1702                <li><strong>.rar</strong>. Proprietary format with good compression and built-in error recovery features. Requires WinRAR or a compatible app. Not worth choosing over 7z for general use.</li>
1703                <li><strong>.tar.gz / .tar.xz</strong>. Linux/macOS native. Excellent for preserving Unix file permissions and symlinks. Not universally openable on Windows without WinZip or similar.</li>
1704            </ul>
1705
1706            <h3>When Compression Won't Help (And Can Hurt)</h3>
1707            <p>Some files are already maximally compressed. Adding them to a ZIP won't shrink them further and may even add a few kilobytes of overhead:</p>
1708            <ul>
1709                <li>JPEG images (.jpg). Already lossy-compressed in the JPEG codec</li>
1710                <li>MP3 / AAC / OGG audio. Already lossy-compressed</li>
1711                <li>MP4 / MKV / MOV videos. Already contain H.264 or H.265 bitstream compression</li>
1712                <li>PDFs with embedded images. Often internally compressed already</li>
1713                <li>ZIP, 7z, RAR files. Compressed by definition; double-zipping achieves nothing</li>
1714            </ul>
1715            <p>ZIP these types of files only for the purpose of <em>bundling multiple files together</em> into a single transfer unit. Not for size reduction.</p>
1716
1717            <h3>Files That Compress Exceptionally Well</h3>
1718            <p>These file types can shrink dramatically under lossless compression:</p>
1719            <ul>
1720                <li><strong>Plain text, CSV, JSON, XML:</strong> 70–95% smaller. A 10 MB CSV can easily become 800 KB zipped.</li>
1721                <li><strong>Uncompressed audio (.wav, .aiff):</strong> 40–60% smaller under FLAC or even ZIP.</li>
1722                <li><strong>RAW photos (.CR3, .ARW, .NEF):</strong> 20–40% smaller. Worth doing when sending a full shoot.</li>
1723                <li><strong>Log files and database exports (.sql, .log):</strong> Highly repetitive content compresses extremely well, often 80–95%.</li>
1724                <li><strong>Folders with thousands of small files:</strong> Zipping eliminates the per-file overhead, which can dramatically reduce total transfer time even without significant byte compression.</li>
1725            </ul>
1726
1727            <h3>Practical Compression Workflow for File Transfers</h3>
1728            <ol>
1729                <li>Identify what you're sending and whether it's already compressed.</li>
1730                <li>For documents, code, and raw data: use ZIP for external sharing, 7z for archives where both parties have the software.</li>
1731                <li>For multiple files: always bundle into a single archive before uploading. This gives the recipient a single clean download instead of downloading files one-by-one.</li>
1732                <li>For photos/video: if quality isn't critical, export a compressed version (JPEG at 85% quality, H.264 at 10 Mbps) before bundling.</li>
1733                <li>Upload the compressed archive to SendVault and share the single link or code.</li>
1734            </ol>
1735
1736            <h3>The SendVault Upload Advantage</h3>
1737            <p>SendVault supports ZIP, 7z, RAR, and every other archive format natively. Recipients download exactly what you uploaded, with no decompression or re-compression on our end. The 1 GB limit applies to the final archive, so for large projects, a zip-first workflow can help organize files within the limit.</p>
1738        
1739        `},{id:"20",slug:"environmental-impact-cloud-storage",title:"The Environmental Impact of Cloud Storage",excerpt:"Every gigabyte stored in the cloud consumes energy. How deleting old files helps the planet.",category:"Environment",readTime:"5 min read",publishDate:"January 20, 2026",keywords:["digital carbon footprint","green cloud","sustainable tech","energy consumption"],content:`
1740
1741            <h2>The True Carbon Cost of "The Cloud"</h2>
1742            <p>Calling it "the cloud" makes it sound weightless and ethereal. It's not. The global cloud computing infrastructure runs on approximately 200 terawatt-hours of electricity per year. Roughly equivalent to the total annual electricity consumption of Argentina. Behind every file you store, every video you stream, every backup that silently runs overnight, there are physical servers in physical buildings drawing real power from the grid.</p>
1743            <p>In 2026, as climate commitments intensify across industries, understanding and reducing your digital carbon footprint has become both an ethical obligation and, increasingly, a regulatory one.</p>
1744
1745            <h3>How Much Energy Does Cloud Storage Actually Use?</h3>
1746            <p>Estimates vary, but a rough benchmark from energy researchers suggests that storing 1 GB of data for a full year consumes approximately <strong>3–7 kWh of electricity</strong>
1746 across storage, cooling, and networking infrastructure. For context:</p>
1747            <ul>
1748                <li>A 3 TB personal cloud drive (e.g., iCloud or OneDrive) consumes roughly 9,000–21,000 kWh annually just from the storage side.</li>
1749                <li>Netflix streaming for one hour uses approximately 0.077 kWh. But most users watch multiple hours per day.</li>
1750                <li>Sending a single email with a 1 MB attachment generates roughly 50 grams of CO₂e (CO₂ equivalent).</li>
1751            </ul>
1752            <p>These numbers are small individually, but at a global scale. Billions of users, trillions of files. The aggregate is staggering.</p>
1753
1754            <h3>The Dark Data Problem</h3>
1755            <p>Perhaps the most wasteful category of cloud storage is what researchers call "<strong>dark data</strong>." Studies consistently find that <strong>over 60% of enterprise data stored in the cloud has never been accessed after the initial 90-day period</strong>. This includes old email attachments, superseded document versions, duplicate files, and forgotten backups.</p>
1756            <p>This dark data isn't free to store. It sits on spinning hard drives (HDDs still dominate archival storage due to cost) consuming power 24 hours a day, 7 days a week, 365 days a year. The servers cooling those drives draw additional energy. And the network infrastructure keeping those drives accessible adds more still.</p>
1757
1758            <h3>Digital Decluttering: The Most Impactful Action You Can Take</h3>
1759            <p>The single highest-impact thing an individual or organisation can do for their digital carbon footprint is to <strong>delete data they no longer need</strong>. Not archiving it. Deleting it permanently.</p>
1760            <p>Practical steps for digital decluttering:</p>
1761            <ul>
1762                <li>Audit your cloud storage annually. Identify files you haven't opened in 12+ months.</li>
1763                <li>Delete duplicate files (the average user has 3–5 copies of the same document across different platforms).</li>
1764                <li>Unsubscribe from email lists and delete promotional email archives. Billions of marketing emails are stored in inboxes forever, consuming energy perpetually.</li>
1765                <li>Review shared cloud folders with collaborators. Old project folders from 2019 serve no purpose but still draw power.</li>
1766                <li>For file sharing: use ephemeral transfer services instead of permanent cloud storage for transient deliverables.</li>
1767            </ul>
1768
1769            <h3>Ephemeral File Sharing as Environmental Policy</h3>
1770            <p>This is where SendVault's model intersects with environmental responsibility in a meaningful way. When you share a file via SendVault, it lives on our servers for a maximum of 7 days and is then automatically and permanently deleted. Compare this to:</p>
1771            <ul>
1772                <li><strong>Email attachments</strong>. Stored indefinitely in both the sender's sent folder and the recipient's inbox, often across multiple redundant backups.</li>
1773                <li><strong>Permanent cloud links (Dropbox, Google Drive)</strong>. Files that persist on servers indefinitely unless manually deleted, which most users never do.</li>
1774                <li><strong>Messaging app transfers (Slack, WhatsApp)</strong>. Files retained in chat history for months or years, often synced to multiple devices.</li>
1775            </ul>
1776            <p>Ephemeral transfer isn't just better for security. It's better for the planet. A file that gets deleted after one week instead of sitting on a server for five years consumes roughly <strong>260 times less energy</strong> over its lifetime.</p>
1777
1778            <h3>Are Major Cloud Providers Going Green?</h3>
1779            <p>The hyperscalers (AWS, Google Cloud, Azure) have all made significant renewable energy commitments. Google Cloud and Microsoft Azure claim to be carbon neutral or carbon negative. AWS committed to 100% renewable energy by 2025 (a goal they claim to have met in 2023 through renewable energy certificates).</p>
1780            <p>However, "renewable energy" accounting in the tech sector is complex. Renewable Energy Certificates (RECs) don't guarantee that the specific electricity powering a specific server came from renewable sources. They're accounting instruments. The actual carbon intensity of cloud computing varies dramatically by region and by hour of day, depending on the local grid's renewable penetration at any given moment.</p>
1781
1782            <h3>The Simple Principle: Less Data, Less Impact</h3>
1783            <p>Regardless of how green a cloud provider's marketing is, the environmental math is straightforward: data that doesn't exist consumes zero energy. Every gigabyte you delete, every file you choose not to store permanently, every email attachment you transfer ephemerally instead of archiving forever represents a small but real reduction in digital carbon footprint. Multiplied across millions of users, these individual choices add up to something worth caring about.</p>
1784        
1785        `},{id:"21",slug:"freelance-client-onboarding-files",title:"The Ultimate Freelancer's Guide to Client Onboarding Assets",excerpt:"Streamline your client intake process. Learn how to securely share contracts, mood boards, and welcome packets without email clutter.",category:"Freelancing",readTime:"5 min read",publishDate:"February 15, 2026",keywords:["client onboarding","freelance tips","sending contracts","organized file sharing"],content:`
1786
1787            <h2>The First Impression You Didn't Know You Were Making</h2>
1788            <p>The moment a new client signs your contract, a clock starts. How quickly and professionally you deliver your onboarding materials doesn't just set a practical tone. It sets an emotional one. A chaotic, multi-email onboarding process communicates "I'm figuring this out as I go." A clean, consolidated, professional handoff communicates "I've done this before, and working with me is going to be smooth."</p>
1789            <p>The good news: building a professional onboarding asset delivery system takes about 30 minutes to set up the first time, and saves hours on every subsequent client.</p>
1790
1791            <h3>What Goes Into a Professional Welcome Packet</h3>
1792            <p>
1792A well-structured welcome packet typically contains:</p>
1793            <ul>
1794                <li><strong>Signed Contract / Service Agreement:</strong> The fully executed PDF, signed by both parties.</li>
1795                <li><strong>Project Questionnaire:</strong> A document or form the client fills out to give you the information you need to start work.</li>
1796                <li><strong>Brand Assets Request:</strong> A checklist specifying exactly what files you need from them (logos, fonts, photos, brand guidelines), in what format.</li>
1797                <li><strong>Access Credentials Guide:</strong> Where to find shared passwords, portal logins, and project management tool invites.</li>
1798                <li><strong>Communication Protocol:</strong> Your office hours, response time SLAs, preferred contact method, and escalation path.</li>
1799                <li><strong>Project Timeline &amp; Milestones:</strong> High-level view of what happens when, who's responsible for what, and key dates.</li>
1800                <li><strong>Invoice and Payment Instructions:</strong> The first invoice and clear instructions for how to pay.</li>
1801            </ul>
1802
1803            <h3>The Multi-Email Problem</h3>
1804            <p>The typical freelancer sends all of the above as separate email attachments over several days. The client receives seven different emails, each with different attachments, some of which get buried in their inbox or missed entirely. Two weeks later you're re-sending the project questionnaire because "I think I missed that one."</p>
1805            <p>The fix is simple: <strong>bundle everything into a single, organized archive and deliver it all at once.</strong></p>
1806
1807            <h3>The SendVault Onboarding Workflow</h3>
1808            <p>Here's the exact workflow that takes about 10 minutes per new client:</p>
1809            <ol>
1810                <li><strong>Create the folder structure:</strong> Make a folder called <code>ClientName_Onboarding_2026</code> with subfolders: <code>Legal/</code>, <code>Project/</code>, <code>Payments/</code>, <code>Assets/</code>.</li>
1811                <li><strong>Populate each folder:</strong> Drop the relevant files into each subfolder. Include a <code>README.txt</code> at the root level with a friendly note explaining what's in each folder.</li>
1812                <li><strong>ZIP the entire folder:</strong> Right-click → Compress (macOS) or Send to → Compressed folder (Windows). Name it clearly: <code>Acme_Corp_Welcome_Pack.zip</code>.</li>
1813                <li><strong>Upload to SendVault:</strong> Drag the ZIP onto sendvault.online and set a password (use something project-specific, like the client's company name + a number).</li>
1814                <li><strong>Deliver:</strong> Send the client a single, professional email with the SendVault link, and text or call them with the password. One email. Everything they need.</li>
1815            </ol>
1816
1817            <h3>Why SendVault Over a Shared Google Drive Folder?</h3>
1818            <p>Shared Google Drive folders are fine for ongoing collaboration, but for initial onboarding, they have friction:  the client needs a Google account, they may not know how to navigate Drive's interface, and the folder becomes a permanent fixture requiring ongoing management. A SendVault link delivers everything in a single download, then expires. Keeping your organization clean and your long-term cloud storage uncluttered.</p>
1819            <p>Additionally, password-protected delivery signals professionalism. It communicates to the client that you take the security of their contract and project information seriously. Which builds trust before the first substantive work conversation.</p>
1820
1821            <h3>Bonus: The "Assets Request" Reverse Flow</h3>
1822            <p>SendVault isn't just for sending to clients. Ask clients to send their brand assets to you the same way. Instead of receiving a half-dozen emails with various logo PNG attachments and a "final version" confusion, send the client a simple instruction: "Please zip your brand assets folder and share it at sendvault.online. Just send me the 
18226-character code."</p>
1823            <p>They don't need an account. They don't need to know how to use Dropbox. They drag, upload, and give you a code. You have everything organized in a single archive. This small change eliminates the most common onboarding bottleneck. Waiting for scattered client assets to trickle in over two weeks.</p>
1824
1825            <h3>Template: The Onboarding Email</h3>
1826            <p>Once you've uploaded the welcome pack to SendVault, here's a template for the delivery email:</p>
1827            <blockquote style="border-left: 3px solid var(--brand); padding-left: 1rem; margin: 1rem 0; color: var(--fg-muted); font-style: italic;">
1828                Hi [Client Name],<br /><br />
1829                Welcome aboard. I'm really looking forward to working with you on [Project].<br /><br />
1830                I've put together your complete Welcome Pack, which includes our signed contract, the project questionnaire, timeline, and payment details. It's all in one place at:<br /><br />
1831                [SendVault link]<br /><br />
1832                Password: [password. Also sending via text]<br /><br />
1833                Your first priority would be to complete the questionnaire (it's short, I promise!) and return it within [X] days so we can kick off on schedule.<br /><br />
1834                Let me know if you have any questions.<br /><br />
1835                [Your name]
1836            </blockquote>
1837            <p>This single email replaces what would otherwise be three to five separate messages and multiple follow-ups. Start every client relationship like this and watch your "new client admin" time shrink dramatically.</p>
1838        
1839        `},{id:"22",slug:"sharing-code-snippets-securely",title:"Stop Pasting Secrets in Slack: Share Code Securely",excerpt:"Why pasting .env files and API keys in chat apps is a security nightmare, and how developers should transfer sensitive config files.",category:"Tech",readTime:"4 min read",publishDate:"February 18, 2026",keywords:["developer security","share code","env files","api keys","secure transfer"],content:`
1840
1841            <h2>The Copy-Paste Security Hole Nobody Talks About</h2>
1842            <p>It's 2 AM. A production deploy is breaking because the staging environment is missing an API key. The fastest fix: paste the key directly into Slack so your junior developer can update the config. You've done this before. Everyone has. It's so common it barely registers as a decision, let alone a security risk.</p>
1843            <p>But it is. And the consequences can surface years after the paste.</p>
1844
1845            <h3>Why Chat Logs Are a Permanent Liability</h3>
1846            <p>Slack, Discord, Teams, and similar platforms are designed for <em>searchable, permanent archives</em>. That's their value proposition. You can find any message from 3 years ago with a keyword search. This feature, so useful for context and institutional memory, is the exact property that makes them dangerous repositories for secrets.</p>
1847            <p>Consider what happens to a pasted API key in Slack:</p>
1848            <ol>
1849                <li>It's stored on Slack's servers (in the US, subject to the CLOUD Act).</li>
1850                <li>It's synced to every team member's desktop and mobile Slack apps.</li>
1851                <li>It's likely backed up by your company's IT infrastructure.</li>
1852                <li>It's searchable by channel admins, workspace admins, and, with a discovery request, by legal teams.</li>
1853                <li>If your Slack workspace is breached (via a compromised employee account, a misconfigured OAuth app, or a Slack security incident), every secret ever pasted into it is potentially exposed.</li>
1854            </ol>
1855            <p>The key you pasted at 2 AM to fix a production incident is still there, in plain text, in a channel history that will outlive the incident by years.</p>
1856
1857            <h3>Real-World Consequences: The GitHub Exposure Pattern</h3>
1858            <p>The most widely documented version of this problem is "GitHub secret exposure". Developers accidentally committing API keys, database credentials, or private keys to public GitHub repositories. Automated bots scan GitHub continuously and can detect and exploit exposed credentials within <strong>minutes</strong> of the commit. AWS API keys found on GitHub have racked up five-figure compute bills within hours of exposure.</p>
1859            <p>Chat applications have the same underlying problem: automated scrapers and attackers routinely monitor compromised chat archives for credential patterns (looking for strings matching <code>sk_live_</code>, <code>AKIA</code>, <code>-----BEGIN PRIVATE KEY-----</code>, etc.).</p>
1860
1861            <h3>What Counts as a "Secret"?</h3>
1862            <p>When we say "don't paste secrets," we mean any of the following:</p>
1863            <ul>
1864                <li>API keys and tokens (AWS, Stripe, OpenAI, Google, etc.)</li>
1865                <li>Database connection strings (including usernames/passwords)</li>
1866                <li>
1866.env files or any environment configuration files</li>
1867                <li>Private SSH keys or TLS certificates</li>
1868                <li>OAuth client secrets</li>
1869                <li>Webhook signing secrets</li>
1870                <li>Personal passwords (even temporary ones)</li>
1871                <li>Two-factor authentication backup codes</li>
1872            </ul>
1873
1874            <h3>The Right Tools for Secret Sharing</h3>
1875            <p>For each type of secret, there's a better tool than chat:</p>
1876            <ul>
1877                <li><strong>Passwords between individuals:</strong> Use a password manager with secure sharing (1Password, Bitwarden, or Dashlane all support sharing specific items with specific people).</li>
1878                <li><strong>Environment files and config files:</strong> Upload the .env or config file to SendVault, set a strong password, share the link via email and the password via SMS. The file is available for download, then disappears after 7 days. No permanent copy on any server.</li>
1879                <li><strong>API keys for team use:</strong> Store them in a secrets manager (AWS Secrets Manager, HashiCorp Vault, or even 1Password Teams). Never in chat, never in email, never in a Google Doc.<
1879/li>
1880                <li><strong>One-time credentials:</strong> Use a self-destructing secret tool like onetimesecret.com, or upload via SendVault with a 1-access limit if available.</li>
1881            </ul>
1882
1883            <h3>The SendVault Pattern for Developers</h3>
1884            <p>For ad-hoc secret file transfers (the 2 AM scenario), here is a secure pattern that's nearly as fast as pasting into Slack:</p>
1885            <ol>
1886                <li>Create a <code>.env.staging</code> file with only the specific key needed (not the entire production credentials).</li>
1887                <li>Upload it to sendvault.online. Takes 5 seconds.</li>
1888                <li>Set a password (use a memorable phrase: <code>deploy-fix-april</code>).</li>
1889                <li>Post the SendVault link in Slack.</li>
1890                <li>Send the password via SMS to the developer's phone. A separate channel.</li>
1891                <li>The developer downloads, uses the key, and the file expires in 7 days without ever sitting permanently in Slack's archive.</li>
1892            </ol>
1893            <p>Is this slightly more steps than pasting directly? Yes. Is it dramatically safer? Also yes. And after doing it twice, it becomes muscle memory.</p>
1894
1895            <h3>After the Fix: Rotate, Always Rotate</h3>
1896            <p>Any secret that was shared, even via a secure channel, should be treated as potentially compromised and rotated after the immediate need is resolved. The most secure temporary transfer is still a transfer. Assume the window of exposure, however small, was non-zero. Rotating the credential post-deployment closes any remaining window and is best practice regardless.</p>
1897        
1898        `},{id:"23",slug:"video-editors-workflow-dailies",title:'Optimizing the "Dailies" Workflow for Video Editors',excerpt:"How to send massive 4K rush footage and daily cuts to directors without clogging up your Google Drive storage.",category:"Creative",readTime:"6 min read",publishDate:"February 20, 2026",keywords:["video editing","film rushes","dailies transfer","large file sharing"],content:`
1899
1900            <h2>The Dailies Bottleneck: Why Editors Lose Hours Every Week</h2>
1901            <p>In film and television production, "dailies" (or "rushes") are the raw, unedited footage captured each day of shooting. Getting these to the editor, VFX team, and director quickly. Often within hours of the day's wrap. Is one of the most time-sensitive logistics challenges in post-production.</p>
1902            <p>Even for smaller productions (YouTube channels, corporate videos, indie films), the fundamental problem is the same: how do you move gigabytes of footage from the camera operator to the editor as fast as possible, without paying for an enterprise media management platform?</p>
1903
1904            <h3>The Storage-vs-Delivery Confusion</h3>
1905            <p>The most common mistake is using cloud <em>storage</em> as a delivery <em>truck</em>. Dropbox and Google Drive are excellent for long-term project organization and active collaboration. But they're poor choices for the "let me get these rushes to you right now" scenario because:</p>
1906            <ul>
1907                <li>Upload speeds are often throttled on free or basic plans.</li>
1908                <li>The sync model means the editor doesn't get the files until sync completes. Which could be hours for large files on slow connections.</li>
1909                <li>Every version, every transfer, accumulates in your storage quota.</li>
1910                <li>The editor now has the rushes in <em>your</em> Drive folder, complicating their own project organization.</li>
1911            </ul>
1912            <p>The better mental model: use a dedicated delivery service for deliveries, and keep "storage" for... storage.</p>
1913
1914            <h3>The Three-Tier Production File Workflow</h3>
1915            <p>The most efficient production teams use a three-tier hierarchy:</p>
1916            <ol>
1917                <li><strong>Primary archive (NAS / RAID):</strong> Original camera files (RAW, BRAW, R3D) live on local NAS drives at the production office. Replicated to a second NAS for redundancy. Never touches the cloud.</li>
1918                <li><strong>Working cloud storage (Google Drive / Dropbox):</strong> Active project files. Premiere/Resolve projects, VFX exports, graphics, audio mixes. Organized by department. Shared with collaborators permanently.</li>
1919                <li><strong>Delivery service (SendVault):</strong> For anything that needs to move fast from Point A to Point B. Today's rushes, a director cut for client review, a sound mix for picture lock approval. Upload, share a code or link, job done. Auto-deletes after 7 days, keeping the delivery service clean.</li>
1920            </ol>
1921
1922            <h3>The Proxy-First Strategy</h3>
1923            <p>For productions shooting in higher-end formats (ARRI, RED, Blackmagic RAW), sending full-res rushes to the editor on day one is impractical. The files are simply too large. The industry-standard solution is the <strong>proxy workflow</strong>:</p>
1924            <ol>
1925                <li>The DIT (Digital Imaging Technician) generates low-resolution proxy files on set, immediately after each card dump. Modern NLEs (Premiere, Resolve, Avid) can do this automatically in the background.</li>
1926                <li>The proxies (typically 1/4 resolution, H.264, a fraction of the source file size) are uploaded via SendVault first. They arrive at the editor's machine an hour after the day's shoot ends.</li>
1927                <li>The editor cuts immediately using the proxies.</li>
1928                <li>The full-resolution source files transfer overnight via a second SendVault upload (or FTP, depending on file sizes).</li>
1929                <li>When the offline cut is approved, the editor relinks to the source originals for colour grading and final output.</li>
1930            </ol>
1931            <p>This parallel workflow can save <strong>an entire day</strong> on tight post-production schedules where every day matters.</p>
1932
1933            <h3>Naming and Organisation Before Upload</h3>
1934            <p>Clean naming before upload makes everything downstream faster. A suggested structure for daily rushes:</p>
1935            <pre style="background: var(--bg-muted); border: 1px solid var(--border); border-radius: 0.75rem; padding: 1rem; font-size: 0.85rem; overflow-x: auto; white-space: pre-wrap;">
19362026-03-31_Day12_A-Cam_MagazineA_Proxies.zip
19372026-03-31_Day12_B-Cam_MagazineB_Proxies.zip
19382026-03-31_Day12_Audio_MixPre_WAV.zip
1939            </pre>
1940            <p>This naming convention makes it immediately clear what day, what camera, and what content format each archive contains. When the editor receives three SendVault codes, they know exactly what they're getting before they type the first character.</p>
1941
1942            <h3>Director and Client Review Links</h3>
1943            <p>
1943SendVault is equally useful for the other direction of delivery: sending review cuts to directors and clients. A few best practices:</p>
1944            <ul>
1945                <li>Always add a password to client review links. Project confidentiality is your responsibility.</li>
1946                <li>Render review cuts in H.264 at a bitrate the client can stream comfortably (10–15 Mbps for 1080p, 25 Mbps for 4K review). This reduces upload time and enables streaming in some cases.</li>
1947                <li>Include a read-me text file in the archive noting the cut version, date, and what specific feedback you're looking for. This reduces revision cycles caused by context-free notes.</li>
1948                <li>Use the 7-day expiry as a natural deadline: "Please send me your notes by [date], after which the review file will be deleted and we'll move forward."</li>
1949            </ul>
1950
1951            <h3>Integration with Professional Delivery Standards</h3>
1952            <p>For broadcast and streamer deliveries (Netflix, Amazon, etc.), the technical delivery specifications are highly prescriptive and require proper mastering, QC, and secure upload to the platform's own delivery system (Aspera, Signiant). SendVault is not a substitute for these professional delivery rails.</p>
1953            <p>However, for the vast majority of production work. Agencies, YouTube channels, corporate video, documentary, commercial, and indie film. SendVault's combination of file size support (up to 1 GB per file), no-account accessibility, and clean ephemeral model makes it the ideal daily driver for inter-team delivery logistics.</p>
1954        
1955        `},{id:"24",slug:"audio-stems-sharing-guide",title:"Music Producers: How to Share Stems Properly",excerpt:"Don't let file transfers ruin your collaboration. The correct way to label, organize, and send audio stems to mixing engineers.",category:"Creative",readTime:"5 min read",publishDate:"February 22, 2026",keywords:["music production","audio stems","mixing engineer","file transfer"],content:`
1956
1957            <h2>The Hidden Friction in Music Collaboration</h2>
1958            <p>Music production is increasingly a distributed craft. A producer in Berlin writes a beat, sends it to a vocalist in Atlanta, who records her parts and sends stems to a mixer in Los Angeles, who exports a mix for mastering by an engineer in London. The music-making itself has never been more globally decentralised. But the file logistics haven't caught up.</p>
1959            <p>Getting stems from producer to mixer cleanly and quickly is one of the most friction-heavy parts of this chain, and most of the friction is entirely avoidable.</p>
1960
1961            <h3>What Are Stems, Exactly?</h3>
1962            <p>Stems are the individual audio tracks that make up a complete mix, exported as separate audio files that a new engineer can import and work with independently. A typical stem package for a pop track might include:</p>
1963            <ul>
1964                <li>Drums (kick, snare, hi-hat, cymbals. Either printed together or individually)</li>
1965                <li>Bass (DI and amp, or blended)</li>
1966                <li>Rhythm guitars</li>
1967                <li>Lead guitars / solo</li>
1968                <li>Synths and pads</li>
1969                <li>Lead vocal</li>
1970                <li>Backing vocals (stacked)</li>
1971                <li>FX returns (reverbs, delays. If the mixer needs to blend them)</li>
1972                <li>Reference mix (the producer's rough mix for reference)</li>
1973            </ul>
1974            <p>A full stem package for a single, delivered dry (without internal effects printed), typically results in 20–60 individual WAV files and total sizes of 500 MB to 3 GB depending on track count and session length.</p>
1975
1976            <h3>The Golden Rules of Stem Preparation</h3>
1977            <p>Following these standards before you zip and send will prevent the most common collaboration disasters:</p>
1978            <ol>
1979                <li><strong>Consolidate to bar 1:</strong> Every stem must start at exactly the same position. Bar 1, beat 1, tick 1 of the session. The mixer needs to be able to import all stems and have them line up automatically without manual alignment.</li>
1980                <li><strong>Export at the session's native sample rate and bit depth:</strong> Don't convert. If your session is 48kHz / 24-bit, export at 48kHz / 24-bit. Conversion introduces subtle artefacts and loses dynamic range.</li>
1981                <li><strong>Export WAV, not MP3:</strong> MP3 encoding is lossy compression. It permanently discards audio data. Never deliver masters or stems in MP3 format. The industry standard for stems is WAV (or AIFF on macOS, which is equivalent).</li>
1982                <li><strong>Label everything crystal clearly:</strong> <code>Kick_In.wav</code>, <code>Snare_Top.wav</code>, <code>LeadVox_Dry.wav</code>. Not <code>Audio_01.wav</code>, <code>Track_Final.wav</code>, <code>untitled_record6.wav</code>. A mixer receiving 40 files named <code>Audio_01</code> through <code>Audio_40</code> will spend 30 minutes just identifying what each track is. Time billed to you.</li>
1983                <li><strong>Mark dry vs. wet:</strong> Indicate clearly whether each stem includes internal processing (reverb, compression, saturation) "printed" to the bounce, or whether it's the raw signal. The mixer needs to know what they're working with. Include a text file noting: "Vocals are dry. Guitar reverb is on the wet stem. Kick has parallel compression baked in."</li>
1984                <li><strong>Include the reference mix:</strong> Always include a bounce of your full mix as a reference. The mixer needs to understand your vision and intentions, not just the raw ingredients.</li>
1985            </ol>
1986
1987            <h3>Organising the Stem Package</h3>
1988            <p>A well-organised stem package uses a consistent folder structure:</p>
1989            <pre style="background: var(--bg-muted); border: 1px solid var(--border); border-radius: 0.75rem; padding: 1rem; font-size: 0.85rem; overflow-x: auto; white-space: pre-wrap;">
1990ArtistName_TrackTitle_Stems_v1/
1991  ├── Drums/
1992  │   ├── Kick_In.wav
1993  │   ├── Snare_Top.wav
1994  │   └── Overheads_Stereo.wav
1995  ├── Bass/
1996  │   └── Bass_DI.wav
1997  ├── Guitars/
1998  ├── Synths/
1999  ├── Vocals/
2000  │   ├── LeadVox_Dry.wav
2001  │   └── BVs_Stacked_Dry.wav
2002  ├── FX/
2003  │   └── VoxReverb_Return.wav
2004  └── _Reference_Mix.wav
2005  └── _Session_Notes.txt
2006            </pre>
2007
2008            <h3>Sending the Package Without Losing Quality</h3>
2009            <p>Stems should always be delivered as lossless audio (WAV) in a ZIP archive. Never compress the audio itself (don't convert WAV to MP3 to reduce size. The whole point is preserving the full dynamic range). ZIP compression works on the file structure without altering the audio data.</p>
2010            <p>For a typical full stem package (500 MB to 1.5 GB), email is impossible (25 MB limit), WeTransfer works but adds ads and lacks password protection. SendVault handles up to 1 GB per file. For larger packages, split drums/bass/guitars/vocals into separate archives and share multiple SendVault links. Use the password feature to protect client work.</p>
2011
2012            <h3>The Revision Workflow: Version Naming</h3>
2013            <p>Stems inevitably go through revisions. The vocal performance changes after the first mix feedback. The kick needs to be re-pitched. Before uploading, reinfor
2013ce version names: <code>ArtistName_TrackTitle_Stems_v2.zip</code>, <code>_v3.zip</code>. When the mixer downloads the second round, there's no ambiguity about which version they're working with.</p>
2014            <p>This discipline saves the "wait, which version is this again?" conversation that derails sessions and adds unbillable hours to every project.</p>
2015        
2016        `},{id:"25",slug:"digital-nomad-security-toolkit",title:"The Digital Nomad's Security Toolkit 2026",excerpt:"Working from a cafe in Bali? Here's how to protect your client's data while using public Wi-Fi and shared networks.",category:"Freelancing",readTime:"7 min read",publishDate:"February 25, 2026",keywords:["digital nomad","cyber security","public wifi","vpn","secure transfer"],content:`
2017
2018            <h2>The Threat Model of the Digital Nomad</h2>
2019            <p>Remote work from "anywhere" isn't just a lifestyle. It's a specific threat environment. Café Wi-Fi in Chiang Mai, co-working space internet in Medellin, hostel broadband in Lisbon: these shared networks are hunting grounds for packet sniffers, man-in-the-middle attackers, and opportunistic credential harvesters. The moment your device joins an open or shared network, you've invited unknown parties into the same traffic stream as your client communications, file uploads, and authentication tokens.</p>
2020            <p>This doesn't mean you can't work remotely and securely. It means your security toolkit needs to be deliberate, portable, and habitual.</p>
2021
2022            <h3>The Four-Layer Digital Nomad Security Stack</h3>
2023
2024            <h4>Layer 1: VPN. Your Encrypted Tunnel</h4>
2025            <p>A VPN (Virtual Private Network) creates an encrypted tunnel between your device and a trusted server, making all your traffic unreadable to anyone on the local network. On open café Wi-Fi, a VPN is non-negotiable.</p>
2026            <p>Recommended options:</p>
2027            <ul>
2028                <li><strong>Mullvad</strong>. No-account model (pay anonymously), consistently rated #1 for privacy by security researchers. €5/month.</li>
2029                <li><strong>ProtonVPN</strong>. Swiss-based, strong privacy law jurisdiction, excellent free tier. Open-source clients.</li>
2030                <li><strong>WireGuard protocol</strong>. If your VPN provider supports WireGuard, use it. It's significantly faster and has a smaller attack surface than OpenVPN.</li>
2031            </ul>
2032            <p>Configure your VPN to activate automatically when connecting to any network that isn't your home or office trusted networks. "Kill switch" mode (blocks all traffic if the VPN drops) prevents silent fallback to unencrypted browsing.</p>
2033
2034            <h4>Layer 2: Disk Encryption. If Your Laptop Is Stolen</h4>
2035            <p>Physical theft is the highest-probability security event for a digital nomad. Your €2,000 MacBook Pro sitting on a café table is a target. If that laptop is stolen and the disk isn't encrypted, every client file, credential, and piece of work on it is completely readable.</p>
2036            <ul>
2037                <li><strong>macOS:</strong> Enable FileVault (System Preferences → Security &amp; Privacy → FileVault). Does not affect performance on modern machines.</li>
2038                <li><strong>Windows:</strong> Enable BitLocker (Control Panel → System and Security → BitLocker Drive Encryption). Requires Windows Pro or Enterprise.</li>
2039                <li><strong>Linux:</strong> LUKS encryption. Set up during OS installation.</li>
2040            </ul>
2041            <p>Disk encryption provides strong protection against physical theft but does nothing against network attacks. Which is why the VPN layer is still necessary.</p>
2042
2043            <h4>Layer 3: Password Manager. Stop Reusing Passwords</h4>
2044            <p>Password reuse is the most common attack vector for credential compromise. When a breach occurs on any site that has your password (and breaches happen constantly. Check haveibeenpwned.com), that same password gets tested against your email, your Stripe account, your hosting provider, and your client portals.</p>
2045            <p>A password manager generates a unique, random, impossible-to-guess password for every service, stores it encrypted, and autofills it securely. You remember one strong master password; the manager handles the rest.</p>
2046            <ul>
2047                <li><strong>Bitwarden</strong>. Open-source, self-hostable, excellent free tier. Recommended for security-conscious users.</li>
2048                <li><strong>1Password</strong>. Best UX, excellent travel mode (can hide sensitive vaults at border crossings), strong team features.</li>
2049            </ul>
2050
2051            <h4>Layer 4: Secure File Transfer. For Client Work on the Road</h4>
2052            <p>This is where most nomads have a gap: ad-hoc file sharing on public networks. Sending a contract as a Gmail attachment on café Wi-Fi routes that attachment through your unencrypted local network to Gmail's servers. With a VPN active, the local network leg is protected. But the question remains: where does the file live permanently?</p>
2053            <p>
2053SendVault's approach fits the nomad lifestyle well for three specific reasons:</p>
2054            <ul>
2055                <li><strong>HTTPS/TLS 1.3 for all transfers:</strong> Even on a compromised network (with your VPN on), TLS provides an additional encryption layer. The data is double-encrypted.</li>
2056                <li><strong>The 6-character share code:</strong> If you need to move a file from your laptop to your phone (or to a co-worker's laptop in the same space), typing a 6-character code is faster and more reliable than sharing links, enabling AirDrop, or finding a USB cable. Say the code. Done.</li>
2057                <li><strong>Ephemeral storage:</strong> Client deliverables shared via SendVault don't accumulate in cloud storage. After 7 days, there's no permanent record of the transfer contents sitting on third-party servers in a jurisdiction you don't control.</li>
2058            </ul>
2059
2060            <h3>Operational Security Habits for Nomads</h3>
2061            <p>Beyond the technical toolkit, operational habits matter:</p>
2062            <ul>
2063                <li><strong>Cover your camera</strong>. A physical webcam cover (€1 on Amazon) prevents visual surveillance in public spaces.</li>
2064                <li><strong>Use a privacy screen filter</strong>. Prevents shoulder-surfing on your screen in public. Particularly important when accessing client systems, dashboards, or financial data.</li>
2065                <li><strong>Never leave devices unattended</strong>. "I'll just leave my laptop at the table while I go to the bathroom" is how devices get stolen and USB-attacked simultaneously.</li>
2066                <li><strong>Separate devices for work and personal use where possible</strong>. Client data shouldn't cohabit with personal entertainment, personal banking, and social media on the same machine. If separate devices aren't feasible, use separate browser profiles minimally.</li>
2067                <li><strong>Notify clients of your jurisdictions</strong>. If your client has GDPR or data residency obligations, they may need to know you're processing their data in a different country. A simple "I'm working from [country] this month" in your weekly update maintains transparency.</li>
2068            </ul>
2069
2070            <h3>The Non-Negotiable Three</h3>
2071            <p>If you take nothing else from this guide, commit to these three things as absolute habits before joining any network you don't personally control:</p>
2072            <ol>
2073                <li>VPN on.</li>
2074                <li>Disk encryption enabled.</li>
2075                <li>Never transfer sensitive files via unencrypted channels (no FTP, no plain HTTP uploads, no email attachments on shared Wi-Fi without VPN).</li>
2076            </ol>
2077            <p>Everything else in this guide is important. These three are the floor.</p>
2078        
2079        `},{id:"26",slug:"3d-models-cad-sharing",title:"Sharing Heavy 3D Assets and CAD Files",excerpt:"Architects and Game Devs: stop struggling with email bounce-backs when sending .OBJ, .FBX, or .DWG files.",category:"Tech",readTime:"4 min read",publishDate:"February 27, 2026",keywords:["3d modeling","cad files","architecture","game dev","large asset sharing"],content:`
2080
2081            <h2>Why 3D Asset Transfers Are Uniquely Painful</h2>
2082            <p>A detailed architectural visualisation model, a high-poly character for a video game, a parametric CAD assembly for a precision-engineered component. These files don't behave like normal documents. They're large (often hundreds of megabytes to several gigabytes), they reference external dependencies (textures, linked subassemblies, material libraries), and their recipients often need specialist software just to open them. This creates a specific set of file transfer challenges that generic cloud solutions handle poorly.</p>
2083
2084            <h3>Understanding the File Format Landscape</h3>
2085            <p>The 3D and CAD world is fragmented across dozens of proprietary and open formats. Understanding your recipient's needs determines which format to send:</p>
2086            <ul>
2087                <li><strong>.blend (Blender):</strong> Native Blender format. Self-contained (can embed textures and assets). Large but portable if the recipient uses Blender.</li>
2088                <li><strong>.fbx (Autodesk):</strong> The de facto interchange standard for game engines and animation pipelines. Broadly supported. Does not preserve every Blender-specific feature but works across Maya, 3ds Max, Unity, Unreal.</li>
2089                <li><strong>.obj + .mtl:</strong> Universal 3D format, supported everywhere, but old. Lacks animation data, limited material support. Fine for static mesh delivery.</li>
2090                <li><strong>.gltf / .glb:</strong> Modern, open standard optimised for real-time and web use. GLB is the binary (single-file) version. Increasingly the preferred format for web 3D and AR/VR.</li>
2091                <li><strong>.dwg / .dxf (AutoCAD):</strong> The dominant CAD formats in architecture and engineering. DXF is an open text-based exchange format; DWG is Autodesk's proprietary binary format.</li>
2092                <li><strong>.step / .iges:</strong> Neutral CAD exchange formats used in mechanical and industrial engineering. Support exact geometry representation (NURBS). Essential for manufacturing workflows.</li>
2093                <li><strong>.usdz (Apple/NVIDIA):</strong> Optimised for AR (ARKit) and the Apple ecosystem. Growing in importance for product visualisation in e-commerce and marketing.</li>
2094            </ul>
2095
2096            <h3>The Dependency Problem</h3>
2097            <p>The most common 3D transfer disaster: sending the native project file (.blend, .ma, .max, .c4d) without the textures it references. The recipient opens the file and every surface is pink or missing. The model looks nothing like the render you showed them.</p>
2098            <p>This happens because 3D software typically stores texture references as relative or absolute file paths. The textures themselves are separate files. Unless you take explicit steps to embed or pack all dependencies, you're sending the car without the engine.</p>
2099            <p><strong>The solution for each application:</strong></p>
2100            <ul>
2101                <li><strong>Blender:</strong> File → External Data → Pack Resources (embeds all textures into the .blend file). Then File → External Data → Make All Paths Relative. Now the .blend is truly self-contained.</li>
2102                <li><strong>Cinema 4D:</strong> File → Save Project → Save Project with Assets. Copies all texture dependencies into a project folder.</li>
2103                <li><strong>Maya:</strong> Use the "Archive Scene" feature (File → Archive Scene) to create a ZIP with all dependencies.</li>
2104                <li><strong>3ds Max:</strong> Use "Archive" in the Application Menu to bundle all linked files.</li>
2105            </ul>
2106
2107            <h3>The Preview + Source Combo Strategy</h3>
2108            <p>For client deliveries (architecture visualisations, product renders, game assets), use a tiered delivery approach:</p>
2109            <ol>
2110                <li><strong>Renders first:</strong> Include 3–5 high-resolution JPG or PNG renders from key angles. These open on any device, give the client an immediate visual, and enable quick feedback without specialist software.</li>
2111                <li><strong>Real-time preview:</strong> Include a .glb or .usdz version of the model that can be opened in a browser viewer (three.js) or AR view on a 
2111smartphone, giving the client an interactive 360° view.</li>
2112                <li><strong>Source file:</strong> Include the native project file (packed with all dependencies) for the engineers or next stage of the pipeline.</li>
2113            </ol>
2114            <p>Bundle all three into a single ZIP, upload to SendVault, and deliver with a password to the client. They see the renders immediately, can interact with the 3D preview on their phone, and have the source files for handoff to engineering or production. All from one link.</p>
2115
2116            <h3>File Size Management for 3D Assets</h3>
2117            <p>When file sizes exceed SendVault's 1 GB limit, several strategies reduce size before upload:</p>
2118            <ul>
2119                <li><strong>Texture compression:</strong> Convert textures from 4K PNG (uncompressed) to 2K JPEG (90% quality) for client reviews. Full-resolution textures only in the final delivery.</li>
2120                <li><strong>Mesh decimation:</strong> For client review, decimate high-poly models to 20–30% of their original polygon count. Review quality is amply preserved at a fraction of the file size.</li>
2121                <li><strong>Split large assemblies:</strong> For complex CAD assemblies with hundreds of parts, split by subassembly (structure, mechanical, interior) and share as multiple SendVault links.</li>
2122                <li><strong>Level of detail (LOD) variants:</strong> Include a LOD0 (high-res) for production and a LOD2 (low-res) for the client's preview. Both in the package with clear labelling.</li>
2123            </ul>
2124        
2125        `},{id:"27",slug:"legal-docs-secure-transfer",title:"Lawyers & Accountants: Secure Document Delivery",excerpt:'Why "Scan to Email" is technically a compliance violation in many jurisdictions, and the safer alternative.',category:"Business",readTime:"5 min read",publishDate:"March 1, 2026",keywords:["legal tech","secure documents","gdpr compliance","accounting","confidentiality"],content:`
2126
2127            <h2>How Legal and Financial Professionals Expose Their Clients Daily</h2>
2128            <p>The "scan to email" workflow is so embedded in legal and accounting practices that most practitioners don't think twice about it. A client emails a tax return. The paralegal scans a signed contract and attaches it to a reply. The accountant forwards a bank statement to a colleague. These actions happen hundreds of times a day in professional services firms worldwide. And most of them are technically insecure, potentially non-compliant under GDPR or HIPAA, and expose clients to identity theft risk.</p>
2129            <p>Email is a postcard, not a sealed envelope. Standard SMTP transmission sends data across dozens of servers in plain text unless end-to-end encryption is explicitly configured (which almost no professional services firm has implemented). The contents are readable to any actor with access to any of the servers in the chain.</p>
2130
2131            <h3>What Counts as Sensitive in Legal and Financial Contexts</h3>
2132            <p>Under GDPR, virtually all data handled by legal and financial professionals qualifies as "personal data" with heightened protection requirements. This includes:</p>
2133            <ul>
2134                <li>Full name, date of birth, national identification numbers</li>
2135                <li>Passport copies, driver's licence scans, utility bills (commonly used for ID verification)</li>
2136                <li>Bank statements, payslips, tax returns</li>
2137                <li>Medical records relevant to insurance or benefit claims</li>
2138                <li>Contracts, NDAs, litigation documents</li>
2139                <li>Estate planning documents, wills, powers of attorney</li>
2140                <li>Business financial statements, shareholder agreements</li>
2141            </ul>
2142            <p>For legal matters, there is also the question of attorney-client privilege. In jurisdictions where this applies, transmission of privileged communications via an unsecured channel that passes through third-party servers could, in theory, constitute a waiver of privilege. A serious legal risk.</p>
2143
2144            <h3>The Two-Channel Authentication Model for Document Delivery</h3>
2145            <p>The principle is identical to how banks handle high-value transactions: no single communication channel carries both the access mechanism and the authenticating secret. The bank sends your statement link by email and your PIN by SMS. You need both. Intercepting either alone gives an attacker nothing.</p>
2146            <p>Applied to document delivery:</p>
2147            <ol>
2148                <li>Upload the document to SendVault. Set a strong password (e.g., <code>AcmeLegal-2026-Tax</code>).</li>
2149                <li>Email the client the SendVault link. The email contains only the URL. No password, no document, no sensitive context.</li>
2150                <li>Call the client or send the password via SMS to their mobile. You can say it aloud: "The password is AcmeLegal-2026-Tax." Even if the SMS is intercepted, it's useless without the link. And vice versa.</li>
2151                <li>The client downloads, opens, and reviews the document using their password.</li>
2152                <li>After 7 days, SendVault automatically deletes the file. There is no permanent copy on a third-party server.</li>
2153            </ol>
2154            <p>This workflow is only slightly slower than "attach and send". But the security differential is enormous. And it provides a documented, professional process that demonstrates due diligence to regulators and professional bodies.</p>
2155
2156            <h3>Receiving Sensitive Documents from Clients</h3>
2157            <p>The reverse flow. Clients sending sensitive documents to you. Is equally important to secure. Most clients will email attachments by default because it's what they know. You can redirect this:</p>
2158            <p>Include instructions in your email signature or client portal: <em>"For security reasons, please share sensitive documents (passports, bank statements, tax documents) via sendvault.online rather than email attachment. Generate a link, set a password, and share both with us separately."</em></p>
2159            <p>Clients generally appreciate this. It reassures them that their sensitive information is handled with care. It's a differentiator that communicates professionalism and technical sophistication in a profession where trust is everything.</p>
2160
2161            <h3>
2161Record Keeping and Audit Trails</h3>
2162            <p>A legitimate concern for compliance purposes: if the document is only delivered via a temporary link that expires, how do you maintain the required record of the document itself?</p>
2163            <p>The answer: SendVault is a <em>delivery mechanism</em>, not a <em>record system</em>. Your permanent copy of the document lives in your document management system (DMS), case management software, or encrypted file archive. SendVault simply handles the secure transfer. Once the client confirms receipt, you retain the original in your system; the temporary transfer link expires. The chain of custody is: your system → secure temporary transfer → client. The permanent record remains with you.</p>
2164
2165            <h3>Compliance Considerations: GDPR and Professional Regulations</h3>
2166            <p>Under GDPR Article 32, organisations processing personal data must implement "appropriate technical and organisational measures" to ensure a level of security appropriate to the risk. A tax return containing a client's national insurance number is a high-risk document. "appropriate measures" for this data class means more than an unencrypted email attachment.</p>
2167            <p>Many professional regulatory bodies (the Solicitors Regulation Authority in the UK, the AICPA in the US) have issued guidance recommending or requiring secure document transmission for client data. Implementing a password-protected, ephemeral delivery workflow is a concrete step that demonstrates compliance with these requirements.</p>
2168        
2169        `},{id:"28",slug:"photographer-client-gallery-delivery",title:"Delivering Wedding & Event Galleries: A Hybrid Approach",excerpt:"Don't host 5,000 RAW photos on your expensive gallery site. Learn the hybrid delivery method to save money.",category:"Creative",readTime:"6 min read",publishDate:"March 3, 2026",keywords:["photography workflow","wedding photography","client delivery","raw photos"],content:`
2170
2171            <h2>The Economics of Photography Delivery</h2>
2172            <p>Photography galleries are expensive to host. Platforms like Pixieset, ShootProof, and SmugMug charge monthly fees that scale with the number of photos and storage. For event photographers shooting 2,000+ photos per wedding and managing dozens of events per year, the hosting costs can reach hundreds of dollars monthly. Costs that eat directly into margin.</p>
2173            <p>The root problem: these platforms are being used for two fundamentally different purposes that have different economies and lifespans: <strong>showcase galleries</strong> (the curated highlights the client shows family and posts to Instagram) and <strong>full-res archives</strong> (the complete collection the client downloads for their own backup). Mixing these two use cases on a premium gallery platform is expensive and unnecessary.</p>
2174
2175            <h3>The Hybrid Delivery Method</h3>
2176            <p>Separate the showcase from the archive, use each platform for what it does best:</p>
2177            <ol>
2178                <li><strong>Showcase gallery (Pixieset / ShootProof / SmugMug):</strong> Upload 100–200 curated best images. Culled, edited, presentation-ready. This is what the client shares on social media, what you use for your portfolio, what the family browses on the big screen TV. These galleries are worth paying for because they present your work beautifully.</li>
2179                <li><strong>Full archive (SendVault):</strong> ZIP the complete collection. All 1,800 edited JPEGs and/or RAW files. And upload to SendVault. Password-protect it. Share the link separately from the showcase gallery link. The client downloads once, saves to their own external drive, and the transfer expires after 7 days. You're not paying to permanently host 2,000 RAW files on a premium gallery platform indefinitely.</li>
2180            </ol>
2181            <p>This hybrid approach typically reduces monthly gallery hosting costs by 40–60% while maintaining the premium client experience for the showcase portion.</p>
2182
2183            <h3>File Preparation Before Delivery</h3>
2184            <p>Preparation before zipping and uploading determines whether the client receives a professional package or a confusing mess. The essentials:</p>
2185            <ul>
2186                <li><strong>Consistent file naming:</strong> <code>
21862026-03-15_Smith-Jones-Wedding_0001.jpg</code> through <code>_1823.jpg</code>. Sequential numbers with leading zeros ensure correct alphabetical/numerical ordering in any file manager.</li>
2187                <li><strong>Folder structure:</strong> For weddings or multi-part events, organise into subfolders: <code>01_Getting_Ready/</code>, <code>02_Ceremony/</code>, <code>03_Reception/</code>. A client navigating 1,800 files in a single flat folder will call you confused.</li>
2188                <li><strong>Include a README:</strong> A simple <code>README.txt</code> at the root of the ZIP explaining the folder structure, naming convention, recommended viewing software, and a note that the archive expires in 7 days and they should save it to their own backup drive.</li>
2189                <li><strong>Resolution note:</strong> If delivering both web-res (2,000px long edge) and full-res (6,000px) versions, keep them in separate subfolders with clear labels. Don't mix resolutions.</li>
2190            </ul>
2191
2192            <h3>RAW Files: To Include or Not?</h3>
2193            <p>Many clients ask for RAW files. The answer depends on your contract, but a few practical considerations:</p>
2194            <ul>
2195                <li>RAW files are camera-manufacturer proprietary formats (.CR3, .ARW, .NEF). Most clients cannot open them without specialist software (Adobe Lightroom, Capture One). Consider whether sending files they can't easily view serves their interests.</li>
2196                <li>RAW files are enormous. A typical wedding shoot in RAW is 40–80 GB. This exceeds any single-transfer limit. For RAW delivery at this scale, consider a physical hard drive or a professional large-file transfer service (WeTransfer Pro, FileMail).</li>
2197                <li>An alternative: offer the "photographer's export". Highest-quality TIFF at full resolution. This is the maximum-quality lossless version the client can print at billboard scale, is universally openable, and is significantly smaller than RAW.</li>
2198            </ul>
2199
2200            <h3>The Password as a Delivery Ritual</h3>
2201            <p>Beyond security, password-protecting the gallery archive has a psychological benefit: it creates a "reveal" moment. Rather than the client stumbling upon their gallery accidentally, the password delivery becomes a deliberate handoff. A suggested workflow:</p>
2202            <p>Schedule a short "gallery delivery call" (15 minutes). During the call, walk them through the showcase gallery while you share your screen. "here's your favourite ceremony moment, here's the first dance." At the end, say: "I'm now sending you the full download archive link. I'll text you the password right now." The simultaneous gallery walkthrough and archive delivery makes the experience feel curated and generous. Which strengthens referrals.</p>
2203
2204            <h3>Handling Large Archives Over 500 MB</h3>
2205            <p>For very high-volume events where even compressed JPEGs exceed 500 MB, split the archive by event section:</p>
2206            <ul>
2207                <li><code>Smith-Jones-Wedding_GettingReady.zip</code>. SendVault Link 1</li>
2208                <li><code>Smith-Jones-Wedding_Ceremony.zip</code>. SendVault Link 2</li>
2209                <li><code>Smith-Jones-Wedding_Reception.zip</code>. SendVault Link 3</li>
2210            </ul>
2211            <p>Use the same password across all three links for simplicity, and note in the accompanying email: "There are 3 download links. Same password for all." The client downloads each section over a few days as their bandwidth allows.</p>
2212        
2213        `},{id:"29",slug:"podcast-guest-recording-workflow",title:"The Perfect Podcast Guest Workflow",excerpt:"Guests often struggle to send their local audio tracks. Here is a friction-free guide to getting high-quality audio from your guests.",category:"Creative",readTime:"5 min read",publishDate:"March 5, 2026",keywords:["podcasting","remote recording","audio transfer","guest workflow"],content:`
2214
2215            <h2>The "Please Email Me Your MP3" Problem</h2>
2216            <p>If you run a podcast with remote guests, you already know the pain. You finish a great interview. The energy was electric. You ask your guest to send you their local recording so you can mix it cleanly rather than relying on the Zoom audio. And then begins the delay.</p>
2217            <p>Some guests email you a compressed 10 MB file that turns out to be screen audio from their laptop speakers. Some take three days to figure out how to attach a file that size to Gmail. Some send you a Dropbox link that requires you to create a Dropbox account to download. And some simply... forget.</p>
2218            <p>The guest recording handoff is among the highest-friction touch points in podcast production. And it's almost entirely preventable.</p>
2219
2220            <h3>Why the Current "Just Email Me" Approach Fails</h3>
2221            <p>Email's 25 MB attachment limit is the first barrier. A lossless WAV recording of a 60-minute c
2221onversation runs 600–700 MB. Even a 320 kbps MP3 is 140 MB. Email is not a viable channel for podcast audio in any professional format.</p>
2222            <p>The workarounds guests use when email fails:</p>
2223            <ul>
2224                <li><strong>WeTransfer:</strong> Works, but guests encounter ads, the link expires in 7 days (so if they send it immediately it's fine, but if they delay it expires), and some corporate email systems block WeTransfer links.</li>
2225                <li><strong>Google Drive shared folder:</strong> Requires the guest to have a Google account and navigate Drive's upload interface, which confuses non-technical guests. Shared folder permissions also frequently cause issues ("you don't have permission to upload to this folder").</li>
2226                <li><strong>Dropbox request:</strong> Dropbox's request feature allows non-Dropbox users to upload to your account. But it still requires the guest to access a web page, potentially create an account, and understand the Dropbox upload flow.</li>
2227            </ul>
2228            <p>Every additional step between "guest finishes recording" and "guest sends you the file" reduces the probability of you receiving it quickly.</p>
2229
2230            <h3>The SendVault Zero-Friction Approach</h3>
2231            <p>The maximum simplicity approach: have the guest upload, not you. In your post-interview email or your pre-interview instructions document, include exactly this paragraph:</p>
2232            <blockquote style="border-left: 3px solid var(--brand); padding-left: 1rem; margin: 1rem 0; color: var(--fg-muted); font-style: italic;">
2233                "After our recording, please send me your local audio file via sendvault.online. Just drag your file onto the page and text me the 6-character code that appears. No account needed, takes about 60 seconds."
2234            </blockquote>
2235            <p>That's it. No explaining Dropbox. No explaining how to compress a file. No "I'll send you a WeTransfer link." The guest goes to one URL, drags their file, and texts you a 6-character code. You type that code on sendvault.online and their full audio is in your downloads folder. This works even if the guest is on a mobile phone. The sendvault.online upload interface works on Safari and Chrome mobile.</p>
2236
2237            <h3>Recording Format Guidance to Give Guests in Advance</h3>
2238            <p>While you're simplifying the transfer, also reduce format confusion by giving guests a simple recording spec in advance. A practical "guest recording guide" paragraph:</p>
2239            <blockquote style="border-left: 3px solid var(--brand); padding-left: 1rem; margin: 1rem 0; color: var(--fg-muted); font-style: italic;">
2240                "Please record your end on any software you have (Audacity, GarageBand, Zoom local recording, or even your phone's voice memos app). Aim for: WAV or MP3, any sample rate (44.1 or 48 kHz), headphones in to prevent echo, microphone close to your mouth. Don't worry too much about format. Anything is better than nothing. Just record clearly in a quiet room and send me whatever file your software produces."
2241            </blockquote>
2242            <p>This reduces the "what format should I save it as?" follow-up question by addressing it pre-emptively.</p>
2243
2244            <h3>Handling Guests Who Can't Figure Out SendVault</h3>
2245            <p>Even with the simplest possible instructions, some guests will be confused. Have a backup plan:</p>
2246            <ul>
2247                <li><strong>Zoom/Riverside/Squadcast local recording:</strong> UseZoom's local recording feature (or a dedicated podcast recording tool) to capture the guest's audio on your end as a backup. This won't match quality of their local device recording, but it's better than no backup.</li>
2248                <li><strong>Phone voice memos as a last resort:</strong> Ask them to record on their phone's native voice memos if all else fails and text you the file. Most phones can airdrop or text a voice memo file directly. Compressed and lower quality, but usable for a conversation podcast.</li>
2249                <li><strong>Post-production cleanup:</strong> Tools like Adobe Podcast AI (free tier) and Auphonic can dramatically clean up below-average guest audio. A Zoom recording processed through Adobe Podcast AI can sound nearly as good as a proper microphone recording.</li>
2250            </ul>
2251
2252            <h3>Building a Repeatable Pre-Production System</h3>
2253            <p>The simplest production improvements come from systematisation. Build a "Guest Packet". A 1-page PDF you send to every guest 48 hours before recording. That includes:</p>
2254            <ul>
2255                <li>The recording link for the session (Riverside, Zencastr, or Zoom)</li>
2256                <li>The simple recording instructions from above</li>
2257                <li>The SendVault transfer instruction (word-for-word script for the file handoff)</li>
2258                <li>Your bio request (photo, bio text, social links for show notes)</li>
2259                <li>Technical troubleshooting tips (headphones, quiet room, disconnect from VPN)</li>
2260            </ul>
2261            <p>
2261Sending this guest packet consistently sets professional expectations, reduces pre-session back-and-forth, and significantly improves the probability of a clean audio file landing in your inbox within 30 minutes of the call ending.</p>
2262        
2263        `},{id:"45",slug:"print-ready-file-prep",title:"Sending Print-Ready Files to Printers",excerpt:"Bleeds, crops, and CMYK. How to package your design files so the print shop doesn't reject them.",category:"Tech",readTime:"4 min read",publishDate:"March 8, 2026",keywords:["graphic design","print production","file packaging","adobe indesign"],content:`
2264
2265            <h2>Why Print Jobs Get Rejected. And How to Prevent It</h2>
2266            <p>You've spent days perfecting a brochure in InDesign. The typography is beautiful, the images are crisp, the brand guidelines are respected. You ZIP the file and email it to the print shop. Two days later: "We can't print this. Missing fonts." Or: "The images are RGB, not CMYK." Or simply: "The file looks different on our end."</p>
2267            <p>Print-ready file preparation is one of those areas where the difference between "designer who knows what they're doing" and "designer who wastes print shop time and their own time" comes down to a handful of checklist items. Missing any one of them wastes everyone's time and can push deadlines by days.</p>
2268
2269            <h3>The Print Production Checklist</h3>
2270            <p>Before you ZIP anything and send it to any printer. Offset litho, digital, large-format, or screen. Verify every item on this list:</p>
2271            <ul>
2272                <li><strong>Colour mode: CMYK</strong>. RGB is for screens. Print presses use CMYK (Cyan, Magenta, Yellow, Black). Converting RGB to CMYK at the print shop stage gives unpredictable colour shifts. Convert in InDesign or Illustrator: Edit → Convert to Profile (select a CMYK profile like FOGRA39 for European offset, or SWOP for North American). Exceptions: some digital printers accept RGB with calibrated ICC profiles. Check with your specific printer.</li>
2273                <li><strong>Resolution: minimum 300 DPI at print size</strong>. A 72 DPI image that looks fine on screen will print blurry. All placed images must be at least 300 DPI at their final printed dimensions. In InDesign: Window → Links panel, check "Actual PPI" vs. "Effective PPI" for every placed image.</li>
2274                <li><strong>Bleeds:</strong> Any design element that extends to the paper's edge must also extend 3mm (or 0.125" in the US) beyond the trim line. This is the "bleed." Without bleeds, you get a white paper edge where the cutter isn't precisely aligned. Set bleeds in InDesign's Document Setup before you start designing, not at the end.</li>
2275                <li><strong>Crop/trim marks:</strong> Export with crop marks so the printer knows exactly where the document trims to within the bleed area.</li>
2276                <li><strong>Fonts. Embed or convert to outlines:</strong> The most common cause of print rejection. The printer needs every font the document uses. Either embed all fonts in the exported PDF, or convert all text to outlines (Type → Create Outlines in Illustrator) before exporting. Outlines convert text to vector shapes, eliminating font dependency entirely.</li>
2277                <li><strong>Overprint settings:</strong> Check that black text doesn't have "Knockout" applied to it on dark backgrounds (which creates registration issues) and that intentional overprints are explicitly set.</li>
2278                <li><strong>Spot colours:</strong> If using Pantone spot colours, ensure they're properly set in your swatches and clearly communicated to the printer. Unnamed spot colour swatches cause significant confusion.</li>
2279                <li><strong>PDF/X standard:</strong> Export as PDF/X-1a (fully embedded fonts, CMYK only, all transparencies flattened) or PDF/X-4 (supports live PDF transparencies and ICC colour profiles). Ask your printer which standard they prefer. PDF/X-1a is the safest universal choice.</li>
2280            </ul>
2281
2282            <h3>The InDesign/Illustrator "Package" Command. Non-Negotiable</h3>
2283            <p>If you're sending the <em>native file</em> (not a PDF) to the printer. Which some speciality printers require for last-mile modifications. You must use the Package command. This is hands-down the most important step for native file delivery:</p>
2284            <ul>
2285                <li><strong>InDesign:</strong> File → Package. InDesign audits the document for missing fonts and images, then creates a folder containing: the .indd file, all linked images (collected to the folder), all fonts used in the document, and an IDML version for backward compatibility. ZIP this entire folder.</li>
2286                <li><strong>Illustrator:</strong> File → Package. Similar function. Collects all linked files and organises them alongside the .ai file.</li>
2287            </ul>
2288            <p>Never send a standalone .indd or .ai file. The printer does not have your fonts installed. They do not have your linked images. What they receive is a shell that looks correct on your machine and broken on theirs.</p>
2289
2290            <h3>Verifying Before Sending: Preflight</h3>
2291            <p>InDesign's built-in Preflight tool (Window → Output → Preflight) runs automated checks against a configurable profile and reports any issues. Missing fonts, missing links, images below 300 DPI, overset text. Run Preflight before you export or package. Zero errors means your file is ready. Any error means you have work to do before it goes to print.</p>
2292            <p>Adobe Acrobat Pro has a similar Preflight tool for checking exported PDFs. If you're delivering PDF, run Acrobat Preflight as a final check before uploading the file.</p>
2293
2294            <h3>Secure Delivery to the Printer</h3>
2295            <p>Print files contain your client's brand assets, unreleased marketing materials, and confidential business communications. They should be treated as sensitive documents. Email a 500 MB zipped InDesign package isn't viable (25 MB limit) and even if it were, it isn't secure.</p>
2296            <p>The clean workflow:</p>
2297            <ol>
2298                <li>Run Package. Create a folder with all dependencies.</li>
2299                <li>Include a README.txt with print specifications: final dimensions, bleed, paper stock, quantity, colour mode, any special finish instructions.
2299</li>
2300                <li>ZIP the folder.</li>
2301                <li>Upload to SendVault. Password protect it.</li>
2302                <li>Email the SendVault link to the print shop. Call or text the password.</li>
2303            </ol>
2304            <p>This workflow delivers a professional, complete print-ready package securely, with zero chance of missing fonts, missing images, or confused print shop staff.</p>
2305        
2306        `},{id:"46",slug:"flowlancerr-vs-bonsai-review-2026",title:"Flowlancerr vs Bonsai: Which Freelance Tool is Best in 2026?",excerpt:"A comprehensive comparison of Flowlancerr and Bonsai. Discover which all-in-one platform is better for managing your freelance business, invoices, and proposals.",category:"Reviews",readTime:"12 min read",publishDate:"March 10, 2026",keywords:["Flowlancerr review","Bonsai alternative","freelance tools","invoicing software","client management","proposal software","contract templates"],content:`
2307            <h2>The Freelancer's Dilemma: Choosing the Right Tool</h2>
2308            <p>Managing a freelance business is hard. You need to juggle clients, invoices, contracts, proposal tracking, and time management. Tools like <strong>Bonsai</strong> have been the go-to for years, but a new contender, <strong><a href="https://www.flowlancerr.com" target="_blank" rel="noopener noreferrer" style="color: #A3E635; text-decoration: underline;">Flowlancerr</a></strong>, is rapidly gaining market share with its modern, design-first approach.</p>
2309
2310            <h3>1. User Experience & Interface</h3>
2311            <p><strong><a href="https://www.hellobonsai.com/" target="_blank" rel="noopener noreferrer" style="color: #A3E635; text-decoration: underline;">Bonsai</a></strong> is feature-rich, but its legacy interface can feel cluttered. Navigating between projects often requires multiple clicks, and the dashboard can be overwhelming for new users.</p>
2312            <p><strong>Flowlancerr</strong>, on the other hand, prioritizes a "Zen Mode" philosophy. Its sleek, minimal interface gets out of your way. For creative freelancers who want to spend less time on admin and more time creating, Flowlancerr's UI is a breath of fresh air.</p>
2313
2314            <h3>2. Proposal Design & Customization</h3>
2315            <p>Your proposal is often the first implementation of your work a client sees. 
2316            <ul>
2317                <li><strong>Bonsai:</strong> Offers standard, text-heavy templates. Functional, but rigid.</li>
2318                <li><strong>Flowlancerr:</strong> Features a drag-and-drop builder that allows you to embed video introductions, interactive pricing tables, and live portfolio links. The result is a proposal that looks like a custom microsite, significantly increasing conversion rates.</li>
2319            </ul>
2320            </p>
2321
2322            <h3>3. Client Portal & Mobile Access</h3>
2323            <p><strong>Bonsai</strong> has a solid client portal, but reviews suggest it can be buggy on mobile devices. <strong>Flowlancerr</strong> was built mobile-first. Clients can view proposals, sign contracts, and pay invoices seamlessly from their phones without needing to download an app.</p>
2324
2325            <h3>4. Pricing and Value</h3>
2326            <p>Bonsai operates on a tiered pricing model where many essential features (like white-labeling and tax assistant) are locked behind the highest tier.</p>
2327            <p><strong><a href="https://www.flowlancerr.com" target="_blank" rel="noopener noreferrer" style="color: #A3E635; text-decoration: underline;">Flowlancerr</a></strong> disrupts this by offering exceptional value. Most "Pro" features are included in their base plan, making it the more affordable choice for solo freelancers and small agencies who need powerful tools without the enterprise price tag.</p>
2328
2329            <h3>5. Invoicing & Payments</h3>
2330            <p>Both platforms support Stripe and PayPal integration. However, Flowlancerr supports "Smart Retainers," allowing you to automatically bill clients on a recurring schedule with varying hours, a feature that is often complex to set up in Bonsai.</p>
2331
2332            <h3>Conclusion</h3>
2333            <p>If you're looking for a legacy tool with every possible bell and whistle (some of which you might never use), <strong><a href="https://www.hellobonsai.com/" target="_blank" rel="noopener noreferrer" style="color: #A3E635; text-decoration: underline;">Bonsai</a></strong> is a safe, established choice.</p>
2334            <p>
2334But if you want a modern, fast, and beautiful platform that helps you close more deals and look more professional, <strong><a href="https://www.flowlancerr.com" target="_blank" rel="noopener noreferrer" style="color: #A3E635; text-decoration: underline;">Flowlancerr</a></strong> is the superior choice for the modern freelancer in 2026. Its focus on design and user experience makes the admin side of freelancing actually enjoyable.</p>
2335        `},{id:"47",slug:"videographers-guide-sharing-4k-footage",title:"Why Videographers Are Switching to SendVault for 4K Footage",excerpt:"Stop shipping hard drives. Learn how to transfer massive 4K/8K video files to clients instantly without compression or quality loss.",category:"For Creatives",readTime:"7 min read",publishDate:"March 15, 2026",keywords:["4k video transfer","send large video files","videography workflow","raw footage sharing","file transfer for creatives"],content:`
2336
2337            <h2>The Hard Drive Shipping Era Is Finally Over</h2>
2338            <p>For most of the last decade, sending high-quality video footage to editors, clients, and collaborators meant one of two painful options: wait hours for a slow cloud upload, or walk to FedEx and ship a drive that might arrive in two days. Or be lost in transit entirely. The wedding videographer's nightmare: 300 GB of 4K footage from the most important day of someone's life, on a single hard drive, at the mercy of a shipping carrier.</p>
2339            <p>The infrastructure shift is real now. Fast fibre broadband, improved object storage, and services built specifically for large-file delivery have made physical media shipping unnecessary for files under several gigabytes. Here's how modern videographers are adapting their workflows.</p>
2340
2341            <h3>Understanding Video File Size Realities in 2026</h3>
2342            <p>Not all "4K" footage is equal in size. The delivery format determines whether cloud transfer is practical:</p>
2343            <ul>
2344                <li><strong>4K H.264 (camera-native, e.g., GoPro, consumer mirrorless):</strong> 100–400 MB per minute. A 5-minute highlight reel: 500 MB – 2 GB. Cloud-transferable.</li>
2345                <li><strong>4K H.265/HEVC (newer cameras):</strong> 60–200 MB per minute. Better compression, practical for cloud at shorter lengths.</li>
2346                <li><strong>4K XAVC/AVCHD (Sony, Canon C-series):</strong> 200–500 MB per minute. Manageable for short-form.</li>
2347                <li><strong>4K RAW / BRAW / ProRes:</strong> 1–4 GB per minute. Full-day shoots exceed 1 TB. Physical drives still necessary for mass RAW transfer.</li>
2348                <li><strong>Edited deliveries (H.264/H.265 exports):</strong> 200–800 MB for a final 5-10 minute video. Almost always cloud-transferable.</li>
2349            </ul>
2350            <p>The practical rule: if it's a final delivery (the export your client will actually watch), it's almost certainly cloud-transferable. If it's raw camera footage from a full day of shooting, it may not be. Know the difference and plan your workflow accordingly.</p>
2351
2352            <h3>Why Compression Integrity Matters for Video Delivery</h3>
2353            <p>When a videographer sends a client their wedding highlight film, the file they receive must be bit-for-bit identical to the file that was exported from the editing timeline. Many consumer file transfer services (and especially messaging apps) apply additional compression to video files. Sometimes visibly degrading colour grading, sharpening detail, and dynamic range.</p>
2354            <p>This matters most for:</p>
2355            <ul>
2356                <li>Colour-graded footage where specific hues (wedding dress white, skin tones, sunset orange) are precisely tuned</li>
2357                <li>HDR (High Dynamic Range) video, which uses a wider colour gamut that gets clipped or compressed incorrectly by generic services</li>
2358                <li>High-motion sequences where compression artefacts appear as blocking or smearing</li>
2359                <li>Any footage destined for further post-production (colour correction, VFX adds, music video use)</li>
2360            </ul>
2361            <p>
2361SendVault treats all files as opaque binary data. No trans-coding, no compression, no "optimisation". The file hash of what you upload is identical to the file hash of what the recipient downloads. This is the non-negotiable baseline for professional video delivery.</p>
2362
2363            <h3>The Proxy Handoff Strategy for Editors</h3>
2364            <p>Even when full-resolution delivery is the eventual goal, the smart workflow sends proxies first to unblock the editor immediately:</p>
2365            <ol>
2366                <li><strong>Day of shoot:</strong> DaVinci Resolve (free), Final Cut Pro X, or Premiere generate proxy files automatically when you import footage. Enable proxy generation at import. By the time you finish backing up your cards, proxies are ready.</li>
2367                <li><strong>Same day transfer:</strong> Upload the proxies folder (typically 5–15% of the source size). A 100 GB shoot generates 5–15 GB of proxies. Still large, but manageable. Split into multiple SendVault uploads by scene or card if needed.</li>
2368                <li><strong>Editor begins immediately:</strong> The editor starts the rough cut on proxies while the full-resolution source files transfer overnight via FTP or a subsequent high-capacity upload.</li>
2369                <li><strong>Relinking:</strong> When the offline cut is approved and full-res files are available, the editor relinks the timeline from proxy to source in one step. DaVinci Resolve handles this automatically.</li>
2370            </ol>
2371            <p>This parallel workflow can save 1–2 days on tight production schedules and dramatically reduces client anxiety about delivery timelines.</p>
2372
2373            <h3>The Client Review Link Workflow</h3>
2374            <p>For sending cuts to clients for approval (not the complete master, just the review version), the workflow should be optimised for the client's experience, not the videographer's convenience:</p>
2375            <ul>
2376                <li><strong>Export at review resolution:</strong> A 1080p H.264 at 15 Mbps looks excellent for client review on any screen. File size is typically 200–400 MB for a 5-10 minute piece. Well within a single SendVault transfer.</li>
2377                <li><strong>Add a chapter or version marker in the filename:</strong> <code>Smith_Wedding_CUT1_2026-03-31.mp4</code> prevents the "which version did you watch?" confusion in feedback calls.</li>
2378                <li><strong>Password protect every client review link:</strong> Clients post things to Instagram before approval is given. A password creates a natural barrier against premature sharing and communicates professionalism.</li>
2379                <li><strong>Set a review deadline using the 7-day window:</strong> "Please send me your revision notes by April 7. The preview link expires that day." Creates urgency without being pushy.</li>
2380            </ul>
2381
2382            <h3>When to Still Use Physical Media</h3>
2383            <p>Cloud transfer is not always the right answer. Use physical media when:</p>
2384            <ul>
2385                <li>The total footage exceeds 50–100 GB (full RAW shoots, multi-day events)</li>
2386                <li>Your upload connection is under 50 Mbps and the client is on a tight deadline</li>
2387                <li>The client explicitly requires a hard copy for archival purposes (broadcast deliveries, long-form documentary)</li>
2388                <li>The file sensitivity requires zero third-party cloud exposure (government, legal, medical)</li>
2389            </ul>
2390            <p>For these cases, ship a ruggedized Samsung T7 or similar portable SSD via a tracked courier. Include a copy of the drive structure README so the editor knows immediately what they're working with. This hybrid approach. Cloud for edits and reviews, physical for RAW archives. Is the standard workflow of working professionals in 2026.</p>
2391        
2392        `},{id:"33",slug:"hidden-dangers-email-attachments",title:"The Hidden Dangers of Email Attachments for Sensitive Data",excerpt:"Email wasn't built for security. Why sending contracts, financial data, or legal documents as attachments puts your business at risk.",category:"Security",readTime:"5 min read",publishDate:"March 20, 2026",keywords:["email security","secure document transfer","GDPR compliance","data breach prevention","encrypted file sharing"],content:`
2393
2394            <h2>Email Was Never Designed for Security</h2>
2395            <p>SMTP. The Simple Mail Transfer Protocol that underpins email. Was designed in 1982 for reliability and interoperability, not security. In those early internet days, the threat model was simple (maintain message delivery despite network instability) and the assumption was benign (the people using the network were academic researchers who trusted each other). Security didn't even make the list of design priorities.</p>
2396            <p>Forty-four years later, we're using this protocol to send tax returns, signed contracts, medical records, and financial statements to clients, lawyers, and accountants. The infrastru
2396cture has been retrofitted with TLS encryption in transit. But the fundamental architecture still leaves enormous windows of exposure that most people are unaware of.</p>
2397
2398            <h3>The Multiplication Problem: How Many Copies Are Made?</h3>
2399            <p>When you send an email with an attachment, you're not sending it to one place. You're creating multiple permanent copies:</p>
2400            <ol>
2401                <li><strong>Your Sent Items folder</strong>. A permanent copy of the email and attachment, in your email client, on your email provider's servers, and in any backup or sync system.</li>
2402                <li><strong>Your email provider's outgoing server</strong>. Your provider (Gmail, Outlook, etc.) stores and processes the email before sending, maintaining a copy indefinitely in most configurations.</li>
2403                <li><strong>Any relay servers in between</strong>. Large attachments may pass through multiple SMTP servers en route to the recipient.</li>
2404                <li><strong>The recipient's email provider's server</strong>. The attachment now lives in their provider's infrastructure, subject to their terms of service, security practices, and jurisdiction.</li>
2405                <li><strong>The recipient's inbox</strong>. A local copy on every device they sync email to (phone, laptop, tablet, work PC).</li>
2406                <li><strong>Any archiving or backup system the recipient uses</strong>. Gmail archives everything forever unless manually deleted; Outlook often syncs to Exchange, which has its own archive.</li>
2407            </ol>
2408            <p>A "confidential" document sent as an email attachment creates <strong>six or more permanent copies</strong> across infrastructure you have no visibility into or control over. The concept of "deleting" an email attachment is largely illusory. The copies on servers you don't control remain until those servers purge them according to their own retention policies, which you never see.</p>
2409
2410            <h3>The Forward Risk: Once Sent, You've Lost Control</h3>
2411            <p>When an attachment lands in a recipient's inbox, it is now theirs to do with as they choose. The common attack vectors:</p>
2412            <ul>
2413                <li><strong>Unintentional forwarding:</strong> The recipient forwards your confidential quote to a colleague without thinking, adding your pricing and margins to a third party's inbox.</li>
2414                <li><strong>Auto-forward rules:</strong> Many professionals have rules that automatically forward certain emails to assistants, accounting software, or CRMs. Your attachment may end up in tools you didn't know about.</li>
2415                <li><strong>Device compromise:</strong> If the recipient's phone or laptop is ever compromised (malware, theft), the attachment is in the attacker's hands.</li>
2416                <li><strong>Account compromise:</strong> Phishing attacks on the recipient's email account are common. Once their account is accessed, every email they've ever received is exposed. Including your attachment from 3 years ago.</li>
2417            </ul>
2418
2419            <h3>TLS in Transit: What It Protects (and Doesn't)</h3>
2420            <p>Modern email uses TLS (Transport Layer Security) to encrypt the connection between mail servers, which protects against passive eavesdropping on the wire. This is meaningful protection, and it's now near-universal between major providers.</p>
2421            <p>But TLS does not protect:</p>
2422            <ul>
2423                <li>The email once it arrives at the destination server (it's stored unencrypted at rest)</li>
2424                <li>Against the email provider itself reading your email (Google, Microsoft, and others may process content for spam filtering, legal compliance, etc.)</li>
2425                <li>Against account compromise by phishing</li>
2426                <li>Against the recipient re-sharing or forwarding the file</li>
2427                <li>Against permanent storage indefinitely on third-party servers</li>
2428            </ul>
2429            <p>TLS in transit is a necessary baseline, not a comprehensive security solution for sensitive documents.</p>
2430
2431            <h3>High-Risk Documents You Should Never Email as Attachments</h3>
2432            <p>Some document types are almost always high-risk regardless of who is sending and receiving them:</p>
2433            <ul>
2434                <li>Passport copies, national ID scans, driving licences</li>
2435                <li>Tax returns, payslips, P60s / W-2s, financial statements</li>
2436                <li>Contracts, NDAs, service agreements</li>
2437                <li>Medical records, prescription documents, insurance claims</li>
2438                <li>Bank statements, credit card statements</li>
2439                <li>Architectural plans, engineering specs (competitive intelligence risk)</li>
2440                <li>Unreleased creative work (photography, video, music. Pre-publication)</li>
2441            </ul>
2442            <p>For these document classes, the email-attachment model is the wrong tool entirely.</p>
2443
2444            <h3>
2444The SendVault "Burn After Reading" Model</h3>
2445            <p>SendVault inverts the email attachment model's worst properties:</p>
2446            <ul>
2447                <li><strong>Ephemeral by default:</strong> Files are automatically deleted after 7 days. No permanent copy accumulates on third-party infrastructure.</li>
2448                <li><strong>Password protected:</strong> Even if the link leaks, the file requires a password to access. This is included free on every transfer.</li>
2449                <li><strong>No forward-ability of the file:</strong> Recipients can download the file once. The link eventually expires, eliminating the window for accidental or malicious re-sharing.</li>
2450                <li><strong>Single storage location:</strong> Instead of 6+ copies scattered across email servers, there is one copy on SendVault's servers during the transfer window, then zero permanent copies after deletion.</li>
2451                <li><strong>Two-channel delivery:</strong> Link sent by email; password sent by SMS or phone. Interception of either channel alone gives an attacker nothing useful.</li>
2452            </ul>
2453            <p>The operational switching cost from "attach to email" to "upload to SendVault" is about 60 seconds per document. The security differential is not incremental. It's categorical.</p>
2454
2455            <h3>When Email Attachments Are Fine</h3>
2456            <p>Not all attachments are equally risky. Low-sensitivity content where email attachments remain appropriate:</p>
2457            <ul>
2458                <li>Public marketing materials, promotional images, press releases</li>
2459                <li>Meeting agendas, public calendars, non-confidential announcements</li>
2460                <li>Generic templates with no client-specific data</li>
2461                <li>Files under 5 MB where the recipient needs to receive the file in their email (e.g., e-card attachments, greeting images)</li>
2462            </ul>
2463            <p>The heuristic: if a journalist, a competitor, or an adversary seeing this file would cause any harm to you or your client. It should not be an email attachment.</p>
2464        
2465        `},{id:"34",slug:"best-free-image-upscaler-2026",title:"5 Best Free AI Image Upscalers in 2026 (Tested & Ranked)",excerpt:"Need to print a low-res photo? We tested the top free tools to resize images without losing quality.",category:"Reviews",readTime:"8 min read",publishDate:"March 25, 2026",keywords:["image upscaler free","enhance photo quality","best ai image enlarger","wescailsup review","upscayl alternative"],content:`
2466            <h2>Don't Let Low Resolution Ruin Your Print</h2>
2467            <p>We've all been there: you find the perfect image for a project, but it is a tiny 800px JPEG. Stretch it in a design application and the result looks soft, blocky, or strangely sharpened. AI image upscalers can help by estimating missing detail and generating a larger version that looks more natural at normal viewing distance.</p>
2468            <p>There is an important distinction, though: upscaling does not recover the original detail that was never captured. The software predicts texture, edges, and patterns. A good result can make a small photo more usable, but it should not be treated as proof-quality restoration or a substitute for the original camera file.</p>
2469
2470            <h2>How We Compared the Free Upscalers</h2>
2471            <p>We compared tools using the tasks people commonly need from a free image enlarger: increasing a small landscape image, preserving faces, keeping text readable, handling illustrations, and producing a file suitable for a basic print project. We looked for visible detail, halos around edges, repeated textures, plastic-looking skin, and unwanted noise.</p>
2472            <p>We also considered practical limits. A tool is less useful if it requires a credit card, adds a watermark, hides the output behind an account, uploads private images without clear retention information, or makes a simple two-times enlargement unnecessarily difficult.</p>
2473
2474            <h2>What Does 2x or 4x Upscaling Mean?</h2>
2475            <p>A 2x upscale doubles the width and height of an image, producing four times as many total pixels. A 500 by 500 image becomes 1,000 by 1,000 pixels. A 4x upscale quadruples each dimension and produces sixteen times the original pixel count. Larger output does not automatically mean more accurate detail, so use the smallest scale that meets the real requirement.</p>
2476            <p>For a screen image, check the final display size first. For print, calculate the effective resolution at the physical dimensions you need. A 2,000px-wide image printed at 10 inches is 200 pixels per inch, while the same image printed at 20 inches is only 100 pixels per inch. Upscale for a specific output size rather than choosing 4x simply because it is available.</p>
2477
2478            <h3>1. <a href="https://www.wescailesup.online" target="_blank" rel="noopener noreferrer" style="color: #A3E635; text-decoration: underline;">Wescailesup.online</a> (Best Overall Free Tool)</h3>
2479            <p><strong>Verdict:</strong> The most convenient option in this comparison for a quick browser-based enlargement. It supports up to 4x upscaling without a visible watermark and is straightforward for occasional users who do not want to install desktop software.</p>
2480            <p><strong>Best for:</strong> Social images, small product photos, simple illustrations, and quick print experiments where speed matters more than batch controls.</p>
2481            <p><strong>Watch for:</strong> Fine text and repeating patterns can still develop invented edges. Inspect the output at 100% before using it for packaging, signage, or a client deliverable. If the image is confidential, confirm the tool's current privacy and processing terms before uploading it.</p>
2482
2483            <h3>2. Upscayl (Best Desktop App)</h3>
2484            <p>If you prefer a desktop workflow, <a href="https://www.upscayl.org" target="_blank" rel="noopener noreferrer" style="color: #A3E635; text-decoration: underline;">Upscayl</a> is a strong open-source choice. Local processing is useful when images contain client information, unpublished creative work, or personal photos that should not be uploaded to a website.</p>
2485            <p><strong>Best for:</strong> Creatives who want more control, repeatable settings, and batch processing. A capable GPU can make larger jobs much faster, while an older laptop may take noticeably longer.</p>
2486            <p><strong>Watch for:</strong> Desktop tools require installation and enough disk space for source and output files. Test the model and settings on one representative image before processing an entire folder.</p>
2487
2488            <h3>3. BigJPG (Best for Anime and Illustrations)</h3>
2489            <p>
2489BigJPG is a useful option for anime, artwork, and images with clean lines and flat colors. Its strengths are different from a photo-focused model: it can preserve broad shapes and illustration edges without making every surface look like a sharpened photograph.</p>
2490            <p><strong>Best for:</strong> Anime artwork, icons, cartoons, and some game assets. Compare the output against the original around hair, outlines, and small lettering.</p>
2491            <p><strong>Watch for:</strong> Photorealistic faces, foliage, and low-contrast textures may not look as convincing as they do in a model tuned for photographs.</p>
2492
2493            <h3>4. Waifu2x (Best for Clean Line Art)</h3>
2494            <p>Waifu2x remains popular for illustrations because its models are designed around artwork, line edges, and noise reduction. It can be a good fit when the source is a drawing or animation frame rather than a camera photo.</p>
2495            <p><strong>Best for:</strong> Line art, anime screenshots, and illustrations that need a cleaner edge at a larger size. Use conservative noise reduction if you want to keep intentional texture.</p>
2496
2497            <h3>5. Adobe Express and Other General-Purpose Editors</h3>
2498            <p>General-purpose design editors can be convenient when the image is already part of a poster, social graphic, or presentation. They are useful for resizing and layout in one place, but they may not provide the same model controls or enlargement quality as a dedicated upscaler.</p>
2499            <p><strong>Best for:</strong> Simple marketing graphics where the image is only one element of a larger composition. Use a dedicated tool when the image itself is the important asset.</p>
2500
2501            <h2>How to Choose the Right Tool</h2>
2502            <ul>
2503                <li><strong>Need a fast browser result:</strong> Start with Wescailesup.online and compare the output at 100%.</li>
2504                <li><strong>Working with private client files:</strong> Prefer a local desktop tool such as Upscayl, or review the browser service's privacy terms first.</li>
2505                <li><strong>Upscaling anime or line art:</strong> Try BigJPG or Waifu2x before a photo-focused model.</li>
2506                <li><strong>Processing many images:</strong> Choose a desktop tool with batch support and test processing time on your hardware.</li>
2507                <li><strong>Designing a social post at the same time:</strong> A general editor may be enough if the image does not need heavy enlargement.</li>
2508            </ul>
2509
2510            <h2>How to Get Better Upscaling Results</h2>
2511            <ol>
2512                <li><strong>Start with the cleanest source.</strong> Use the original file instead of a screenshot or an image that has already been compressed repeatedly.</li>
2513                <li><strong>Crop before enlarging.</strong> Remove unnecessary background so the model spends its capacity on the subject.</li>
2514                <li><strong>Remove obvious noise carefully.</strong> Too much denoising can erase hair, fabric, and fine line detail.</li>
2515                <li><strong>Use 2x before 4x.</strong> A moderate enlargement often produces fewer invented details and is enough for the final output.</li>
2516                <li><strong>Inspect faces and text.</strong> These areas reveal hallucinated detail quickly. Zoom in, then view the image at the size your audience will actually see.</li>
2517                <li><strong>Sharpen at the end.</strong> Do not stack aggressive sharpening before and after upscaling. Add a light final adjustment only if the output needs it.</li>
2518                <li><strong>Export appropriately.</strong> Keep a lossless or high-quality master, then create a separate web JPEG or print-ready file for delivery.</li>
2519            </ol>
2520
2521            <h2>AI Upscaling for Print: What to Check</h2>
2522            <p>Before sending an enlarged image to a printer, confirm the final pixel dimensions, color profile, and effective resolution at the physical print size. Ask the printer for its preferred PDF or image settings when the job is important. Upscaling cannot fix a badly exposed source, severe motion blur, or missing subject detail.</p>
2523            <p>Print a small proof when possible. A file that looks convincing on a bright phone screen may reveal halos, repeating textures, or muddy shadows on paper. Keep the original source and the upscaled version so you can return to the process if the client requests a different crop or size.</p>
2524
2525            <h2>Privacy and File Handling</h2>
2526            <p>Images can contain personal information, location metadata, unreleased designs, or client material. Before uploading to an online tool, read how it handles originals and generated files. Remove metadata when it is not needed, avoid uploading sensitive images to services you do not trust, and use a local application for confidential work when practical.</p>
2527            <p>When you need to deliver the finished image to a client, use a dedicated transfer rather than pasting a large original into a chat app that may compress it. Our <a href="/blog/temporary-file-sharing-vs-cloud-storage">temporary file sharing guide</a> explains when a time-limited delivery is a better fit than permanent storage.</p>
2528
2529            <h3>How We Tested</h3>
2530            <p>We used a small landscape image, a low-resolution portrait, and a simple illustration. We compared 2x and 4x outputs for edge quality, texture, faces, and visible artifacts. Wescailesup.online produced the most convenient browser result in the landscape test, while Upscayl offered the strongest local workflow for users who want more control. The illustration-focused tools were more competitive on clean line art than on photographs.</p>
2531
2532            <h2>Frequently Asked Questions</h2>
2533            <h3>Can an AI upscaler restore a blurry photo perfectly?</h3>
2534            <p>
2534No. It can generate a more plausible large image, but it cannot reliably reconstruct detail that was never recorded. Treat the result as an enhancement, not a forensic recovery.</p>
2535
2536            <h3>Is 4x always better than 2x?</h3>
2537            <p>No. Four-times enlargement creates more pixels for the model to invent. Use 2x when it meets your output size, and compare both versions at the final viewing or print dimensions.</p>
2538
2539            <h3>What is the best free upscaler for private images?</h3>
2540            <p>A local desktop application is usually the simplest privacy choice because the source does not need to leave your computer. Review the current privacy policy of any online service before uploading confidential images.</p>
2541
2542            <h3>Conclusion</h3>
2543            <p>For quick, high-quality results without installing anything, <strong><a href="https://www.wescailesup.online" target="_blank" rel="noopener noreferrer" style="color: #A3E635; text-decoration: underline;">Wescailesup.online</a></strong> is our top pick for 2026. Choose Upscayl when local processing and batch control matter, and use BigJPG or Waifu2x for illustration-focused work. Whatever tool you choose, compare the output with the original, inspect faces and text, and keep the source file so the enhancement remains reversible.</p>
2544        `},{id:"35",slug:"best-project-management-tools-freelancers-2026",title:"Top 5 Project Management Tools for Freelancers in 2026",excerpt:"Stop using 5 different apps. We rank the best all-in-one platforms for managing clients, tasks, and invoices.",category:"Reviews",readTime:"9 min read",publishDate:"March 28, 2026",keywords:["project management for freelancers","flowlancerr vs trello","best freelance dashboard","client portal software","asana alternative"],content:`
2545            <h2>Chaos is Expensive</h2>
2546            <p>Switching between Trello for tasks, Gmail for communication, and Excel for invoicing costs you hours every week. The solution? An "Operating System" for your freelance business.</p>
2547
2548            <h3>1. <a href="https://www.flowlancerr.com" target="_blank" rel="noopener noreferrer" style="color: #A3E635; text-decoration: underline;">Flowlancerr</a> (Best All-in-One)</h3>
2549            <p><strong>The "Apple" of Freelance Tools.</strong> Flowlancerr isn't just a to-do list; it's a complete business suite. It seamlessly integrates proposals, contracts, project boards, and invoicing.</p>
2550            <p><strong>Killer Feature:</strong> The "Client Portal" allows your clients to log in, view project status, approve deliverables, and pay invoices in one branded interface. It makes you look like a pro agency, even if you're a team of one.</p>
2551
2552            <h3>
25522. Trello (Best for Simple Tasks)</h3>
2553            <p><a href="https://trello.com" target="_blank" rel="noopener noreferrer" style="color: #A3E635; text-decoration: underline;">Trello</a> remains the king of Kanban. If you <em>only</em> need to move cards from "Doing" to "Done," it's hard to beat.</p>
2554
2555            <h3>3. Asana (Best for Large Teams)</h3>
2556            <p><a href="https://asana.com" target="_blank" rel="noopener noreferrer" style="color: #A3E635; text-decoration: underline;">Asana</a> is powerful but can be overkill (and expensive) for solo freelancers. It shines when you have 10+ people working on a single project and need complex dependencies.</p>
2557
2558            <h3>4. ClickUp</h3>
2559            <p>Attempts to do everything and often ends up feeling cluttered. Powerful, but has a steep learning curve.</p>
2560
2561            <h3>Conclusion</h3>
2562            <p>If you want simplicity, stick with Trello. But if you want to run a serious business, <strong><a href="https://www.flowlancerr.com" target="_blank" rel="noopener noreferrer" style="color: #A3E635; text-decoration: underline;">Flowlancerr</a></strong> offers the best ROI in 2026.</p>
2563        `},{id:"36",slug:"how-to-send-files-without-whatsapp",title:"How to Send Large Files Without WhatsApp (Faster & Better)",excerpt:"WhatsApp compresses your photos and rejects files over 2 GB. Here is the fastest way to send any file to a nearby device without WhatsApp, email, or USB.",category:"Guide",readTime:"5 min read",publishDate:"April 2, 2026",keywords:["send files without whatsapp","share files without email","transfer files between devices","file sharing alternative to whatsapp","send large files nearby device"],content:`
2564            <h2>The WhatsApp File Problem Nobody Talks About</h2>
2565            <p>You take a shot on your DSLR. 40 MB RAW file. You open WhatsApp to send it to a friend standing right next to you. And the app silently downgrades it to a blurry 2 MB JPEG. That's not the file you captured. That's a compressed copy.</p>
2566
2567            <p>WhatsApp's file size cap is 2 GB for documents, but images are always compressed. Videos above 16 MB get degraded. And for things like <strong>PSD files, ZIP archives, or high-res PDFs</strong>, WhatsApp often refuses to send them at all.</p>
2568
2569            <h3>Why People Default to WhatsApp (and Why It Fails)</h3>
2570            <ul>
2571                <li><strong>Convenience:</strong> Everyone has it. But the other person has to be your contact.</li>
2572                <li><strong>Compression:</strong> Photos and videos lose quality silently. You may not even notice until print time.</li>
2573                <li><strong>No code system:</strong> You're tied to a phone number, not a universal access method.</li>
2574                <li><strong>Storage bloat:</strong> Files pile up in both parties' chats, consuming storage forever.</li>
2575            </ul>
2576
2577            <h3>The Actual Fastest Way: A 6-Character Code</h3>
2578            <p>When the other device is <em>right beside you</em>, you don't need the internet to route your file through India, the US, and back again via WhatsApp's servers. You need a direct, fast handoff.</p>
2579            <p><strong>SendVault's code-based system</strong> works like this:</p>
2580            <ol>
2581                <li>Open <strong>sendvault.online</strong> on Device A.</li>
2582                <li>Upload your file (up to 1 GB, any format, no compression).</li>
2583                <li>A 6-character code appears: e.g., <strong>SV42X9</strong>.</li>
2584                <li>On Device B, go to sendvault.online, tap "Enter Code", type the code.</li>
2585                <li>Download starts instantly.</li>
2586            </ol>
2587            <p>No contact exchange. No login. No compression. The file that arrives is <em>bit-for-bit identical</em> to the one you uploaded.</p>
2588
2589            <h3>When WhatsApp Still Makes Sense</h3>
2590            <p>WhatsApp is great for casual chats, voice notes, and quick previews. But for any file where quality matters. Design work, contracts, audio, photography. WhatsApp is the wrong tool.</p>
2591
2592            <h3>Summary: SendVault vs WhatsApp for File Transfer</h3>
2593            <table style="width: 100%; border-collapse: collapse; margin: 1.5rem 0;">
2594                <tr style="background: var(--bg-muted);">
2595                    <th style="padding: 0.7rem; text-align: left;">Feature</th>
2596                    <th style="padding: 0.7rem; text-align: center;">SendVault</th>
2597                    <th style="padding: 0.7rem; text-align: center;">WhatsApp</th>
2598                </tr>
2599                <tr>
2600                    <td style="padding: 0.7rem;">Image compression</td>
2601                    <td style="padding: 0.7rem; text-align: center; color: #A3E635;">None</td>
2602                    <td style="padding: 0.7rem; text-align: center; color: var(--error);">Always compressed</td>
2603                </tr>
2604                <tr style="background: var(--bg-muted);">
2605                    <td style="padding: 0.7rem;">Max file size</td>
2606                    <td style="padding: 0.7rem; text-align: center; color: #A3E635;">1 GB</td>
2607                    <td style="padding: 0.7rem; text-align: center; color: var(--error);">16 MB (video)</td>
2608                </tr>
2609                <tr>
2610                    <td style="padding: 0.7rem;">Requires contact?</td>
2611                    <td style="padding: 0.7rem; text-align: center; color: #A3E635;">No</td>
2612                    <td style="padding: 0.7rem; text-align: center; color: var(--error);">Yes</td>
2613                </tr>
2614                <tr style="background: var(--bg-muted);">
2615                    <td style="padding: 0.7rem;">Files auto-delete?</td>
2616                    <td style="padding: 0.7rem; text-align: center; color: #A3E635;">Yes (7 days)</td>
2617                    <td style="padding: 0.7rem; text-align: center; color: var(--error);">No</td>
2618                </tr>
2619            </table>
2620
2621            <p><strong>Bottom line:</strong> For uncompressed, instant file sharing between devices near each other. SendVault wins every time.</p>
2622        `},{id:"37",slug:"share-files-between-devices-without-login",title:"The Easiest Way to Share Files Between Two Devices Without Login",excerpt:"No Bluetooth pairing, no AirDrop setup, no account creation. Learn the simplest method to transfer any file between your phone, laptop, or tablet in seconds.",category:"Guide",readTime:"4 min read",publishDate:"April 5, 2026",keywords:["share files between devices","transfer files without login","send files phone to laptop","no account file sharing","cross device file transfer"],content:`
2623            <h2>The "I Just Need to Move This File" Problem</h2>
2624            <p>You've been there. You have a file on your laptop but need it on your phone. Or vice versa. The "obvious" solutions all have hidden friction:</p>
2625            <ul>
2626                <li><strong>AirDrop</strong>. Only works if both devices are Apple and Wi-Fi/Bluetooth is on and discoverable.</li>
2627                <li><strong>Bluetooth</strong>. Slow, requires pairing, terrible for large files.</li>
2628                <li><strong>Email to yourself</strong>. You're seriously emailing yourself? That file now lives in your Sent folder forever.</li>
2629                <li><strong>USB Cable</strong>. Great, if you can find the right cable, install drivers, and navigate the file system.</li>
2630                <li><strong>Google Drive / iCloud</strong>. Requires accounts on both devices, waits for sync, sometimes still doesn't work across platforms.</li>
2631            </ul>
2632
2633            <h3>The Universal Solution: Share Codes</h3>
2634            <p>A share code is a short, human-readable string (like <strong>SV42X9</strong>) that maps to a specific uploaded file. Instead of sending a link or requiring a login, the receiving device simply enters the code.</p>
2635            <p>This works because:</p>
2636            <ul>
2637                <li>Any device with a browser can access <strong>sendvault.online</strong>. IPhone, Android, Windows, Mac, Linux, Chromebook.</li>
2638                <li>No accounts are needed on either side.</li>
2639                <li>The code is short enough to type, say aloud, or write on a sticky note.</li>
2640            </ul>
2641
2642            <h3>Step-by-Step: Phone to Laptop</h3>
2643            <ol>
2644                <li>On your <strong>phone</strong>: open sendvault.online in Safari or Chrome.</li>
2645                <li>Tap "Upload Files" and select your file from your gallery or files app.</li>
2646                <li>Once uploaded, a code like <strong>AB7K2P</strong> appears on screen.</li>
2647                <li>On your <strong>laptop</strong>
2647: open sendvault.online, click "Enter Code", type the 6 characters.</li>
2648                <li>Click Download. Done.</li>
2649            </ol>
2650
2651            <h3>Step-by-Step: Laptop to Phone</h3>
2652            <ol>
2653                <li>On your <strong>laptop</strong>: drag the file onto sendvault.online.</li>
2654                <li>The upload takes seconds. A code appears: e.g., <strong>PX9F3M</strong>.</li>
2655                <li>On your <strong>phone</strong>: open sendvault.online, tap "Enter Code", type the code.</li>
2656                <li>The file downloads natively to your phone's downloads folder.</li>
2657            </ol>
2658
2659            <h3>Why This Beats Every Other Method</h3>
2660            <p>Speed: most files under 100 MB take 5-20 seconds. No pairing, syncing, or waiting for cloud propagation. Cross-platform by default. Works even if the two devices are on different Wi-Fi networks. All you need is internet on both sides.</p>
2661
2662            <p><strong>Try it now at sendvault.online.</strong> No account. No friction. Just the code.</p>
2663        `},{id:"39",slug:"iphone-to-android-file-transfer-guide",title:"How to Transfer Files from iPhone to Android in 2026 (No iTunes, No USB)",excerpt:"Switching from iPhone to Android. Or just need to share a file between the two ecosystems? Here are the 5 fastest methods that actually work in 2026.",category:"Guide",readTime:"7 min read",publishDate:"March 10, 2026",keywords:["iphone to android file transfer","share files iphone android","send files between ios android","cross platform file sharing","transfer photos iphone to android","no itunes file transfer","airdrop android alternative"],content:`
2664            <h2>The iPhone–Android Divide is Real</h2>
2665            <p>Apple's AirDrop is seamless. But it only works between Apple devices. Android's Nearby Share is great. But only between Android devices. The moment you need to transfer a file <em>between</em> an iPhone and an Android phone, you're stuck in the gap where neither ecosystem helps you.</p>
2666            <p>Whether you're switching phones, collaborating with a colleague on a different platform, or trying to send high-res photos from an iPhone to an Android tablet, the methods below are ranked from fastest to slowest so you can pick the right one for the situation.</p>
2667
2668            <h2>Method 1: Cross-Platform Share Code (Fastest for Any File)</h2>
2669            <p>This is the modern solution purpose-built for cross-platform transfers. <strong>SendVault</strong> works equally well on Safari (iPhone) and Chrome (Android) because it runs entirely in the browser. No app install required on either device.</p>
2670            <p><strong>How it works:</strong></p>
2671            <ol>
2672                <li>On your iPhone, open <strong>Safari</strong> and go to <strong>sendvault.online</strong>.</li>
2673                <li>Tap "Upload Files" and choose the file from your Photos, Files app, or iCloud Drive.</li>
2674                <li>Once uploaded, a 6-character code appears. E.g., <strong>HK4P7W</strong>.</li>
2675                <li>On the Android phone, open Chrome and go to sendvault.online.</li>
2676                <li>Tap "Enter Code", type the 6 characters, and hit Download.</li>
2677                <li>The file saves to your Downloads folder. Original quality, no compression.</li>
2678            </ol>
2679            <p><strong>Why it's best:</strong> Files up to 1 GB. Zero compression. No app, no account, no Bluetooth pairing. Works even if the two phones are on different Wi-Fi networks. Takes under 30 seconds for most files.</p>
2680
2681            <h2>
2681Method 2: Google Drive (Best for Multiple Files)</h2>
2682            <p>Both iPhones and Android phones can use Google Drive. The iPhone requires the Google Drive app (free, from the App Store), while Android comes with Drive pre-installed.</p>
2683            <p><strong>Steps:</strong></p>
2684            <ol>
2685                <li>On iPhone: Install Google Drive, sign in with a Google account.</li>
2686                <li>Upload the files you want to transfer.</li>
2687                <li>On Android: Open Google Drive with the same account, download the files.</li>
2688            </ol>
2689            <p><strong>Catch:</strong> Both devices need to be signed into the <em>same</em> Google account, which isn't practical in all situations (e.g., sending to a friend or colleague). Storage is limited to 15 GB free.</p>
2690
2691            <h2>Method 3: Email (Best for Documents Under 25 MB)</h2>
2692            <p>For quick document sharing. A PDF, a Word file, a contract. Old-fashioned email still works great. Every smartphone reads email. The limit is 25 MB per attachment on Gmail, Yahoo and Outlook.</p>
2693            <p><strong>When it fails:</strong> Photos over 5 MB, videos, ZIP files, or anything where quality matters. Many mail clients also compress images automatically.</p>
2694
2695            <h2>Method 4: Snapdrop / LocalSend (Best for Same Wi-Fi Network, No Internet)</h2>
2696            <p><a href="https://snapdrop.net" target="_blank" rel="noopener noreferrer" style="color: #A3E635; text-decoration: underline;">Snapdrop</a> and the open-source <strong>LocalSend</strong> app let you transfer files between devices on the same Wi-Fi network without sending them through the internet.</p>
2697            <p><strong>Pros:</strong> Private (data stays on your local network), fast on good Wi-Fi. <br/><strong>Cons:</strong> Both devices must be on the <em>same</em> Wi-Fi network; LocalSend requires app install on Android; Snapdrop is a web app but can be unreliable on iOS Safari.</p>
2698
2699            <h2>Method 5: Bluetooth (Last Resort for Small Files)</h2>
2700            <p>Bluetooth can transfer files between an iPhone and an Android device, but it's extremely limited. iPhones do not natively support receiving arbitrary files over Bluetooth from non-Apple devices (Bluetooth OBEX is not enabled in iOS by default). It's effectively a one-way street and unreliable.</p>
2701            <p><strong>Verdict:</strong> Avoid for iOS-Android transfers.</p>
2702
2703            <h2>Comparison: iPhone to Android Transfer Methods</h2>
2704            <table style="width: 100%; border-collapse: collapse; margin: 1.5rem 0;">
2705                <tr style="background: var(--bg-muted);">
2706                    <th style="padding: 0.7rem; text-align: left;">Method</th>
2707                    <th style="padding: 0.7rem; text-align: center;">Speed</th>
2708                    <th style="padding: 0.7rem; text-align: center;">Max Size</th>
2709                    <th style="padding: 0.7rem; text-align: center;">Requires Account?</th>
2710                    <th style="padding: 0.7rem; text-align: center;">Compression?</th>
2711                </tr>
2712                <tr>
2713                    <td style="padding: 0.7rem;"><strong>SendVault (share code)</strong></td>
2714                    <td style="padding: 0.7rem; text-align: center; color: #A3E635;">Fast</td>
2715                    <td style="padding: 0.7rem; text-align: center;">1 GB</td>
2716                    <td style="padding: 0.7rem; text-align: center; color: #A3E635;">No</td>
2717                    <td style="padding: 0.7rem; text-align: center; color: #A3E635;">None</td>
2718                </tr>
2719                <tr style="background: var(--bg-muted);">
2720                    <td style="padding: 0.7rem;">Google Drive</td>
2721                    <td style="padding: 0.7rem; text-align: center;">Medium</td>
2722                    <td style="padding: 0.7rem; text-align: center;">15 GB</td>
2723                    <td style="padding: 0.7rem; text-align: center; color: var(--error);">Yes (Google)</td>
2724                    <td style="padding: 0.7rem; text-align: center; color: #A3E635;">None</td>
2725                </tr>
2726                <tr>
2727                    <td style="padding: 0.7rem;">Email</td>
2728                    <td style="padding: 0.7rem; text-align: center;">Slow</td>
2729                    <td style="padding: 0.7rem; text-align: center;">25 MB</td>
2730                    <td style="padding: 0.7rem; text-align: center; color: var(--error);">Yes (email)</td>
2731                    <td style="padding: 0.7rem; text-align: center; color: var(--error);">Often</td>
2732                </tr>
2733                <tr style="background: var(--bg-muted);">
2734                    <td style="padding: 0.7rem;">Snapdrop / LocalSend</td>
2735                    <td style="padding: 0.7rem; text-align: center; color: #A3E635;">Very Fast</td>
2736                    <td style="padding: 0.7rem; text-align: center;">Unlimited</td>
2737                    <td style="padding: 0.7rem; text-align: center; color: #A3E635;">No</td>
2738                    <td style="padding: 0.7rem; text-align: center; color: #A3E635;">None</td>
2739                </tr>
2740                <tr>
2741                    <td style="padding: 0.7rem;">Bluetooth</td>
2742                    <td style="padding: 0.7rem; text-align: center; color: var(--error);">Very Slow</td>
2743                    <td style="padding: 0.7rem; text-align: center;">
2743~100 MB</td>
2744                    <td style="padding: 0.7rem; text-align: center; color: #A3E635;">No</td>
2745                    <td style="padding: 0.7rem; text-align: center; color: #A3E635;">None</td>
2746                </tr>
2747            </table>
2748
2749            <h2>The Bottom Line</h2>
2750            <p>For single-file transfers where quality matters. Especially photos, videos, or design files. <strong>SendVault's 6-character code system is the fastest and most friction-free method</strong>. There's no app to install, no account to create, and no compression that degrades your files.</p>
2751            <p>For transferring your entire phone library when switching devices, use Google's built-in "Switch to Android" app (available on the App Store) which handles contacts, photos, and messages in bulk.</p>
2752            <p><strong>Try it now:</strong> Open sendvault.online on your iPhone and your Android device to test a cross-platform transfer in under a minute.</p>
2753        `},{id:"40",slug:"top-10-ways-send-large-files-free-2026",title:"Top 10 Ways to Send Large Files for Free in 2026 (Ranked)",excerpt:"From 1 GB video files to giant design archives. A definitive ranked list of the best free methods to send large files online in 2026, with honest pros, cons, and size limits.",category:"Guide",readTime:"9 min read",publishDate:"March 17, 2026",keywords:["send large files free","best way to send large files","how to send large files","free large file transfer","send files online free 2026","email large files free","large file sharing no account"],content:`
2754            <h2>Why Sending Large Files Is Still Hard</h2>
2755            <p>In 2026, we have gigabit internet and cloud computing. Yet sending a 400 MB video to a colleague still feels harder than 
2755it should. Email limits you to 25 MB. WhatsApp compresses everything. Cloud syncing requires both people to have the same account. The "right" solution depends on your file size, your relationship with the recipient, and how much you value privacy.</p>
2756            <p>Here are the <strong>10 best free methods</strong>, ranked by how useful they are for most people in most situations. With honest size limits and caveats for each.</p>
2757
2758            <h2>1. SendVault. Best Overall (Code-Based, No Compression)</h2>
2759            <p><strong>Free limit: 1 GB per transfer | No account required</strong></p>
2760            <p>SendVault is the only major file sharing service that uses a <strong>6-character share code</strong> instead of (or in addition to) a long URL. This means the recipient just types a short code on any browser. No link copying, no email, no app. It works across iOS, Android, Windows, Mac, and Linux without installing anything.</p>
2761            <p><strong>Best for:</strong> Nearby device transfers (just say the code), cross-platform sharing (iPhone to Android), client deliveries where you want zero friction, privacy-sensitive files thanks to auto-delete after 7 days and free password protection.</p>
2762            <ul>
2763                <li>✅ No compression. Bit-for-bit identical download</li>
2764                <li>✅ Password protection. Free on every transfer</li>
2765                <li>✅ Auto-delete after 7 days</li>
2766                <li>✅ 6-character share code. Unique feature no other service offers</li>
2767                <li>✅ Zero ads on download page</li>
2768                <li>❌ 1 GB limit per single file (for very large files, split into parts)</li>
2769            </ul>
2770
2771            <h2>2. WeTransfer. Best for One-Off Sends to Email Recipients</h2>
2772            <p><strong>Free limit: 2 GB per transfer | No account required (basic)</strong></p>
2773            <p>WeTransfer pioneered the "drag, drop, done" model in 2009 and still works well for simple email-based transfers. The recipient gets a notification email with a download link that expires after 7 days.</p>
2774            <p><strong>Downsides:</strong> Full-screen ads on download pages, no password protection on the free tier, email-only. No share codes. If the recipient can't receive email (e.g., you're sharing to a tablet nearby), WeTransfer doesn't help.</p>
2775
2776            <h2>3. Google Drive. Best for Sharing with Google Account Users</h2>
2777            <p><strong>Free limit: 15 GB (shared across Drive, Gmail, Photos) | Google account required</strong></p>
2778            <p>For files larger than 500 MB, Google Drive is a solid choice. But only if both the sender and recipient are comfortable using Google accounts. Upload the file and share a link with view-only permissions to prevent unnecessary copies.</p>
2779            <p><strong>Caution:</strong> Google scans uploaded files for policy violations. If you're sharing medical records, legal documents, or business-sensitive data, consider a privacy-first service instead.</p>
2780
2781            <h2>4. Dropbox (Free Tier). Best for Collaboration with Teams</h2>
2782            <p><strong>Free limit: 2 GB storage total | Account required</strong></p>
2783            <p>Dropbox's free tier is quite limited, but if you already have an account, it's reliable. Shared folder links work well for ongoing collaboration. The downside is the meager 2 GB cap. You'll hit it quickly if you're a creative professional.</p>
2784
2785            <h2>5. OneDrive (Microsoft). Best for Windows Users</h2>
2786            <p><strong>Free limit: 5 GB | Microsoft account required</strong></p>
2787            <p>Built into Windows 11 and deeply integrated with Office, OneDrive is the path of least resistance if you're already in the Microsoft ecosystem. Share a single file link and the recipient can download it without needing a Microsoft account.</p>
2788
2789            <h2>6. Filemail. Best for Very Large Files (Up to 5 GB Free)</h2>
2790            <p><strong>Free limit: 5 GB per transfer | No account required (basic)</strong></p>
2791            <p>Filemail targets professionals who routinely send huge files (production video, architectural models). The free tier is generous at 5 GB but includes ads. Password protection is only available on paid plans.</p>
2792
2793            <h2>7. Smash. Best for Unlimited-Size Sends (With Caveats)</h2>
2794            <p><strong>Free limit: Unlimited size* | No account required</strong></p>
2795            <p>Smash's biggest selling point is "no size limit" on the free tier. In practice, very large files experience throttled download speeds unless you pay. Email-based delivery only. No share codes or cross-device codes.</p>
2796
2797            <h2>8. Send Anywhere. Best for QR Code Transfers</h2>
2798            <p><strong>Free limit: 10 GB per transfer | No account required</strong></p>
2799            <p>
2799Send Anywhere uses a 6-digit key (similar to SendVault's share code) or a QR code for transfers. The big difference from SendVault is that Send Anywhere often requires the app to be installed on both devices for the fastest (P2P) transfer. Browser-only mode is available but sometimes unreliable.</p>
2800
2801            <h2>9. Firefox Send (Archived) / Snapdrop. Best for Local Network Transfers</h2>
2802            <p><strong>Free: Unlimited | No account required | Same Wi-Fi only</strong></p>
2803            <p>For transfers within the same Wi-Fi network (office, home), browser-based tools like <a href="https://snapdrop.net" target="_blank" rel="noopener noreferrer" style="color: #A3E635; text-decoration: underline;">Snapdrop</a> or the LocalSend app transfer files directly between devices without going through the internet at all. Maximum privacy, maximum speed on local networks. Limitation: only works if both devices share exactly the same Wi-Fi network.</p>
2804
2805            <h2>10. iCloud Drive. Best for Apple-to-Apple Transfers</h2>
2806            <p><strong>Free limit: 5 GB | Apple ID required for sender</strong></p>
2807            <p>For sharing files between Apple devices, iCloud Drive shared links are seamless and fast. The recipient doesn't need an Apple account to download from a shared link. Limitation: iOS/macOS-centric. Android users can only download, not upload, via the web interface.</p>
2808
2809            <h2>Choosing the Right Method: A Quick Reference</h2>
2810            <div style="overflow-x: auto; margin: 2rem 0;">
2811                <table style="width: 100%; border-collapse: collapse; text-align: left; background: #fff; border-radius: 12px; overflow: hidden; box-shadow: 0 4px 20px rgba(0,0,0,0.05); border: 1px solid rgba(0,0,0,0.08);">
2812                    <thead>
2813                        <tr style="background: #f9fafb; border-bottom: 2px solid rgba(0,0,0,0.08);">
2814                            <th style="padding: 16px; font-weight: 700; color: #111;">Scenario</th>
2815                            <th style="padding: 16px; font-weight: 700; color: #111;">Best Method</th>
2816                        </tr>
2817                    </thead>
2818                    <tbody>
2819                        <tr style="border-bottom: 1px solid rgba(0,0,0,0.05);">
2820                            <td style="padding: 16px; font-weight: 600;">Send to a nearby device (same room)</td>
2821                            <td style="padding: 16px; color: #4d7c0f; font-weight: 700;">SendVault (code) or Snapdrop</td>
2822                        </tr>
2823                        <tr style="border-bottom: 1px solid rgba(0,0,0,0.05); background: #fdfdfd;">
2824                            <td style="padding: 16px; font-weight: 600;">Send to a colleague via email</td>
2825                            <td style="padding: 16px; font-weight: 600;">WeTransfer or SendVault (link)</td>
2826                        </tr>
2827                        <tr style="border-bottom: 1px solid rgba(0,0,0,0.05);">
2828                            <td style="padding: 16px; font-weight: 600;">iPhone to Android (no common account)</td>
2829                            <td style="padding: 16px; color: #4d7c0f; font-weight: 700;">SendVault (share code)</td>
2830                        </tr>
2831                        <tr style="border-bottom: 1px solid rgba(0,0,0,0.05); background: #fdfdfd;">
2832                            <td style="padding: 16px; font-weight: 600;">File over 1 GB</td>
2833                            <td style="padding: 16px; font-weight: 600;">WeTransfer (2 GB) or Filemail (5 GB)</td>
2834                        </tr>
2835                        <tr style="border-bottom: 1px solid rgba(0,0,0,0.05);">
2836                            <td style="padding: 16px; font-weight: 600;">Sensitive file needing password protection</td>
2837                            <td style="padding: 16px; color: #4d7c0f; font-weight: 700;">SendVault (password is free)</td>
2838                        </tr>
2839                        <tr style="border-bottom: 1px solid rgba(0,0,0,0.05); background: #fdfdfd;">
2840                            <td style="padding: 16px; font-weight: 600;">Share with a team long-term</td>
2841                            <td style="padding: 16px; font-weight: 600;">Google Drive or Dropbox</td>
2842                        </tr>
2843                        <tr>
2844                            <td style="padding: 16px; font-weight: 600;">Client delivery (professional, no ads)</td>
2845                            <td style="padding: 16px; color: #4d7c0f; font-weight: 700;">SendVault</td>
2846                        </tr>
2847                    </tbody>
2848                </table>
2849            </div>
2850
2851            <h2>Final Verdict</h2>
2852            <p>For everyday large-file transfers. Especially cross-device, cross-platform, or to clients. <strong>SendVault is the best all-around free choice in 2026</strong>. Its unique 6-character code system, free password protection, zero compression, and no-ads-on-downloads experience make it the most professional option for a free tool.</p>
2853            <p>For files over 1 GB, WeTransfer or Filemail fill the gap. For team-based long-term storage, Google Drive or OneDrive are the right tools. Use the right tool for the right job. And keep SendVault bookmarked for quick, secure, uncompressed transfers.</p>
2854        `},{id:"38",slug:"best-free-wetransfer-alternative-2026",title:"Best Free WeTransfer Alternative in 2026 (With No Ads)",excerpt:"WeTransfer's free tier is now ad-heavy and rate-limited. We compare the top free alternatives for sending large files. Including the one with a unique code-based access system.",category:"Comparison",readTime:"6 min read",publishDate:"April 8, 2026",keywords:["free wetransfer alternative","wetransfer free tier 2026","send large files free","no ads file sharing","wetransfer without ads","best file transfer site 2026"],content:`
2855            <h2>WeTransfer's Free Plan Is No Longer Great</h2>
2856            <p>WeTransfer launched in 2009 and pioneered the "drag, drop, send" file transfer era. But in 2024, the company significantly altered its free tier. The result?</p>
2857            <ul>
2858                <li>Intrusive full-screen ads before every download.</li>
2859                <li>Rate limiting on how many transfers you can send per day.</li>
2860                <li>No password protection without a paid plan.</li>
2861                <li>No share codes. Only email-based links, which requires knowing the recipient's email address.</li>
2862            </ul>
2863            <p>For casual users who send files occasionally, it still works. But if you value speed, privacy, or a clean experience, it's time to look elsewhere.</p>
2864
2865            <h3>The Top Free WeTransfer Alternatives in 2026</h3>
2866
2867            <h3>1. SendVault (Best Overall)</h3>
2868            <p><strong>Why it's different:</strong> Instead of sending an email or a long URL, SendVault generates a 6-character code that the recipient types on any browser. This is perfect for nearby device transfers, clients without email access, or quick team handoffs where you just say the code out loud.</p>
2869            <ul>
2870                <li>✅ Free up to 1 GB</li>
2871                <li>✅ Password protection included free</li>
2872                <li>✅ 6-character share code system</li>
2873                <li>✅ Zero advertisements</li>
2874                <li>✅ No account required (sender or receiver)</li>
2875                <li>✅ Zero media compression (great for video/photos)</li>
2876            </ul>
2877
2878            <h3>2. Filemail (Best for Very Large Files)</h3>
2879            <p>Filemail offers up to 5 GB free per transfer, making it useful for massive video projects. However, the recipient experience requires email, and there are no share codes. Their free tier also includes ads on downloads.</p>
2880
2881            <h3>3. Smash (Best for Unlimited Size)</h3>
2882            <p>Smash advertises unlimited file sizes for free. The catch: very large files (over 2 GB) have slower speeds on the free plan. Like WeTransfer, it's link-based only. No code system, limited privacy controls without an account.</p>
2883
2884            <h3>4. Internxt Send (Best for Privacy-Focused Users)</h3>
2885            <p>
2885Internxt Send offers end-to-end encryption and up to 5 GB free. It's one of the most privacy-conscious options but requires the recipient to have a compatible browser with WebCrypto API support, which can occasionally cause issues.</p>
2886
2887            <h2>Feature Comparison Table</h2>
2888            <div style="overflow-x: auto; margin: 2rem 0;">
2889                <table style="width: 100%; border-collapse: collapse; text-align: left; background: #fff; border-radius: 12px; overflow: hidden; box-shadow: 0 4px 20px rgba(0,0,0,0.05); border: 1px solid rgba(0,0,0,0.08);">
2890                    <thead>
2891                        <tr style="background: #f9fafb; border-bottom: 2px solid rgba(0,0,0,0.08);">
2892                            <th style="padding: 16px; font-weight: 700; color: #111;">Feature</th>
2893                            <th style="padding: 16px; font-weight: 800; color: #4d7c0f; width: 35%;">SendVault</th>
2894                            <th style="padding: 16px; font-weight: 700; color: rgba(17,17,17,0.6); width: 35%;">WeTransfer</th>
2895                        </tr>
2896                    </thead>
2897                    <tbody>
2898                        <tr style="border-bottom: 1px solid rgba(0,0,0,0.05);">
2899                            <td style="padding: 16px; font-weight: 600;">Free Size Limit</td>
2900                            <td style="padding: 16px; font-weight: 600; color: #4d7c0f;">1 GB</td>
2901                            <td style="padding: 16px; color: rgba(17,17,17,0.6);">2 GB</td>
2902                        </tr>
2903                        <tr style="border-bottom: 1px solid rgba(0,0,0,0.05); background: #fdfdfd;">
2904                            <td style="padding: 16px; font-weight: 600;">Password Protection</td>
2905                            <td style="padding: 16px; font-weight: 600; color: #4d7c0f;">100% Free</td>
2906                            <td style="padding: 16px; color: #ef4444;">Paid Feature Only</td>
2907                        </tr>
2908                        <tr style="border-bottom: 1px solid rgba(0,0,0,0.05);">
2909                            <td style="padding: 16px; font-weight: 600;">Share Code Access</td>
2910                            <td style="padding: 16px; font-weight: 600; color: #4d7c0f;">Yes, 6-character code</td>
2911                            <td style="padding: 16px; color: #ef4444;">No (Link/Email only)</td>
2912                        </tr>
2913                        <tr style="border-bottom: 1px solid rgba(0,0,0,0.05); background: #fdfdfd;">
2914                            <td style="padding: 16px; font-weight: 600;">Advertisements</td>
2915                            <td style="padding: 16px; font-weight: 600; color: #4d7c0f;">Zero Ads</td>
2916                            <td style="padding: 16px; color: #ef4444;">Full-Screen Ads</td>
2917                        </tr>
2918                        <tr style="border-bottom: 1px solid rgba(0,0,0,0.05);">
2919                            <td style="padding: 16px; font-weight: 600;">Account Required</td>
2920                            <td style="padding: 16px; font-weight: 600; color: #4d7c0f;">No (Never)</td>
2921                            <td style="padding: 16px; color: #ef4444;">Email Verification Required</td>
2922                        </tr>
2923                        <tr>
2924                            <td style="padding: 16px; font-weight: 600;">File Expiration</td>
2925                            <td style="padding: 16px; font-weight: 600;">7 Days</td>
2926                            <td style="padding: 16px; color: rgba(17,17,17,0.6);">7 Days</td>
2927                        </tr>
2928                    </tbody>
2929                </table>
2930            </div>
2931
2932            <h3>Which Should You Choose?</h3>
2933            <p>For most everyday file sharing needs in 2026, <strong>SendVault is the best WeTransfer alternative</strong>. It beats WeTransfer's free tier on every dimension except raw file size limit. And it's the only service with a code-based access system that works for cross-device sharing without email.</p>
2934            <p>If you routinely send files over 1 GB, consider Filemail or Internxt Send for those specific cases, and use SendVault for everything else.</p>
2935        `},{id:"48",slug:"sendvault-vs-dropbox-transfer-2026",title:"SendVault vs Dropbox Transfer (2026): Which Should You Actually Use?",excerpt:"Dropbox Transfer and SendVault both promise fast file sharing, but they target very different users. Here's how they compare on size, price, security, and recipient experience.",category:"Comparison",readTime:"6 min read",publishDate:"September 1, 2026",keywords:["sendvault vs dropbox transfer","dropbox transfer alternative","send large files without dropbox account","free dropbox transfer alternative","sendvault comparison"],content:`
2936            <h2>Two Tools, Two Different Jobs</h2>
2937            <p>If you already live inside Dropbox, Dropbox Transfer feels like the obvious answer for sharing large files with people outside your team. But for everyone else — the casual sender, the freelancer, the person who just needs to get a 700&nbsp;MB video to a client once — Dropbox Transfer has a few sharp edges that don't show up in the marketing. <strong><a href="/">SendVault</a></strong> is built for exactly that second group.</p>
2938
2939            <h2>Size Limits</h2>
2940            <p>
2940Both tools are generous in 2026, but they hit their ceilings in different places.</p>
2941            <ul>
2942                <li><strong>Dropbox Transfer:</strong> Up to 100&nbsp;GB per transfer on the paid plans, but you need a Dropbox Professional, Standard, Advanced, or Enterprise subscription to even unlock it. The free tier doesn't include Transfer at all.</li>
2943                <li><strong>SendVault:</strong> 1&nbsp;GB per transfer on the free tier, with no account required. That's enough for almost every "send a video to a client" or "share a project folder" job.</li>
2944            </ul>
2945            <p>If you routinely move 20&nbsp;GB datasets, Dropbox Transfer wins. If your work fits in 1&nbsp;GB, paying for Dropbox to access Transfer is overkill.</p>
2946
2947            <h2>Account Requirements</h2>
2948            <p>This is where the friction really shows up.</p>
2949            <ul>
2950                <li><strong>Dropbox Transfer:</strong> Sender needs a Dropbox account. Recipient does <em>not</em>, but the link is gated by Dropbox's own UI, which prompts visitors to create an account before download. Expect a 10-15% drop-off on the recipient side from people who bounce at the "Sign up to continue" wall.</li>
2951                <li><strong>SendVault:</strong> No sender account. No recipient account. The recipient types a 6-character code or clicks the link and downloads — that's it. Zero sign-up friction on either end.</li>
2952            </ul>
2953
2954            <h2>Security &amp; Privacy</h2>
2955            <p>Dropbox Transfer supports password protection and link expiry on paid plans, and encrypts files in transit and at rest. That's good. But the files are stored in Dropbox's cloud tied to the sender's account, and the recipient experience requires a Dropbox-branded page.</p>
2956            <p>SendVault stores the file in object storage with a server-side expiry. The share code is single-use friendly (it can be invalidated immediately after first download if you enable "delete after first download"). Recipients never see a branded third-party page — they just see a clean download button.</p>
2957
2958            <h2>Recipient Experience</h2>
2959            <p>This is the under-appreciated difference. With Dropbox Transfer, the recipient lands on a page that looks like a Dropbox marketing site with a "Get Dropbox" CTA. Even on the free path, they have to click through a "No thanks, continue to download" link. On mobile, that adds 2-3 taps to a process that should take 1.</p>
2960            <p>SendVault's download page is exactly what it needs to be: the file name, a download button, and a "delete after first download" badge if the sender enabled it. Nothing else. That clean experience is why SendVault gets near-zero download abandonment on its own sharing flows.</p>
2961
2962            <h2>Code-Based Access</h2>
2963            <p>This is SendVault's unique feature and the one Dropbox Transfer can't replicate without making the whole product worse. A 6-character code (like <code>K92H1Q</code>) can be read out loud, texted, written on a whiteboard, or slipped into a calendar invite. The recipient types it on <a href="/">sendvault.online</a> and gets the file. No link forwarding, no expired URLs, no "I can't open this on my phone" support tickets.</p>
2964
2965            <h2>When to Use Which</h2>
2966            <ul>
2967                <li><strong>Use Dropbox Transfer</strong> if you already pay for Dropbox, send to a small number of recurring recipients, and regularly move files larger than 1&nbsp;GB.</li>
2968                <li><strong>Use SendVault</strong> if you want zero-friction delivery to anyone (clients, vendors, friends, family), value a clean recipient experience, and your files are typically under 1&nbsp;GB.</li>
2969            </ul>
2970            <p>For most freelancers, small agencies, and individual creators, SendVault is the better fit — and it's free.</p>
2971        `},{id:"49",slug:"end-to-end-encryption-file-sharing-explained",title:"End-to-End Encryption in File Sharing, Explained in Plain English",excerpt:`You've seen the phrase "end-to-end encrypted" on every file sharing service. Most of them are using it loosely. Here's what E2EE actually means, what it does (and doesn't) protect, and how to tell marketing from reality.`,category:"Security",readTime:"7 min read",publishDate:"September 1, 2026",keywords:["end to end encryption explained","e2ee file sharing","is wetransfer encrypted","encrypted file transfer","zero knowledge file sharing"],content:`
2972            <h2>What "End-to-End Encrypted" Actually Means</h2>
2973            <p>End-to-end encryption (E2EE) is a specific technical property, not a vibe. It means this: the file is encrypted on the sender's device, and only the recipient's device has the key to decrypt it. The service in the middle — the website, the cloud storage, the relay server — sees only scrambled ciphertext. It cannot read the file even if it wanted to. Even if its servers are seized, the data is useless without the keys.</p>
2974            <p>
2974The key word is "end-to-end." Any system where the server can decrypt the file, even briefly, to scan it for viruses or generate a preview, is <em>not</em> E2EE. It is "encrypted in transit and at rest" — which is good, but not the same thing.</p>
2975
2976            <h2>What E2EE Protects Against</h2>
2977            <ul>
2978                <li><strong>Server breach.</strong> If the file sharing service is hacked, the attacker gets ciphertext. Without the keys, the files are unreadable.</li>
2979                <li><strong>Insider threat.</strong> A rogue employee with database access can see metadata but not file contents.</li>
2980                <li><strong>Government subpoena to the service provider.</strong> The provider can hand over encrypted blobs, but cannot be compelled to decrypt what it does not have the keys for.</li>
2981                <li><strong>Network eavesdropping.</strong> Anyone passively capturing packets (on a coffee-shop Wi-Fi, for instance) sees only ciphertext.</li>
2982            </ul>
2983
2984            <h2>What E2EE Does <em>Not</em> Protect Against</h2>
2985            <p>This is where the marketing gets dangerous. E2EE has well-known limits:</p>
2986            <ul>
2987                <li><strong>Compromised endpoints.</strong> If the sender's or recipient's device has malware, the attacker reads the file before or after decryption. E2EE does not save you here.</li>
2988                <li><strong>Weak recipient authentication.</strong> If the recipient's password is "123456" or their email is compromised, the attacker downloads and decrypts the file. E2EE protects the channel, not the recipient's identity.</li>
2989                <li><strong>Metadata.</strong> Most E2EE systems still leak who sent what to whom, when, and how large. E2EE hides content, not activity patterns.</li>
2990                <li><strong>Voluntary sharing.</strong> If the recipient forwards the decrypted file, or screenshots it, E2EE has no opinion. The horse has left the barn.</li>
2991            </ul>
2992
2993            <h2>How to Tell If a Service Is Real E2EE</h2>
2994            <p>Ask these four questions. The answers reveal whether the marketing matches the implementation.</p>
2995            <ol>
2996                <li><strong>Where is the file encrypted?</strong> In your browser before upload, or on the server after upload? Browser-side (or app-side) is the only answer that qualifies.</li>
2997                <li><strong>Where is the key?</strong> Derived from a passphrase only you know? Or stored on the server? If the server holds the key, the server can decrypt your file.</li>
2998                <li><strong>Is there a server-side scan step?</strong> "We scan uploads for viruses" is incompatible with true E2EE. A scanner needs to read the plaintext, which means the server holds the key.</li>
2999                <li><strong>Is the source open?</strong> Closed-source "E2EE" services should be treated as unverified. Real E2EE services (Signal, ProtonMail, etc.) publish their cryptography for review.</li>
3000            </ol>
3001
3002            <h2>How SendVault Handles This</h2>
3003            <p><strong><a href="/">SendVault</a></strong> takes a pragmatic, layered approach. Files are encrypted in transit (TLS 1.3) and at rest in object storage. Password-protected transfers use a SHA-256 client-side hash so the password never leaves the browser in plaintext. The server only ever sees the hash.</p>
3004            <p>That said, SendVault is <em>not</em> a true E2EE system in the strict Signal-ProtonMail sense: the server can technically decrypt stored files because it holds the storage encryption keys. We make this tradeoff deliberately so the recipient experience stays simple — a 6-character code, no client-side decryption step, no browser extension required. For most file sharing use cases (a project handoff, a video to a client, a contract to a counterparty), this balance is the right one.</p>
3005            <p>If you need true E2EE with the recipient holding the only key, look at services like OnionShare or Wormhole. They are excellent but require technical comfort from both ends.</p>
3006
3007            <h2>The Bottom Line</h2>
3008            <p>"End-to-end encrypted" is a useful term when it means what it says, and a misleading one when it doesn't. The right question isn't "is this service encrypted?" (almost all of them are) — it's "who holds the keys, and what can they see?" Answer that, and you'll pick the right tool for the job.</p>
3009        `},{id:"50",slug:"best-free-file-sharing-sites-no-login-2026",title:"The 7 Best Free File Sharing Sites in 2026 (No Login Required)",excerpt:"We tested every major file sharing service that still works without an account. Here's the honest ranking — what each one is good at, where it falls short, and which one we keep coming back to.",category:"Comparison",readTime:"8 min read",publishDate:"September 1, 2026",keywords:["free file sharing no login","send files without account","anonymous file sharing","no sign up file transfer","best free file sharing 2026"],content:`
3010            <h2>Why "No Login" Matters in 2026</h2>
3011            <p>Every file sharing site wants you to create an account. They want your email for marketing, your usage data for analytics, and a recurring reason to come back. For the recipient, signing up to download one file is friction that loses the transfer entirely.</p>
3012            <p>The services below all let you upload and share files without creating an account. The catch — there's always a catch — is that "free" usually means one of: ad-supported, size-capped, or speed-throttled. We ranked them by how usable they actually feel in practice, not by their marketing pages.</p>
3013
3014            <h2>1. SendVault — Best Overall</h2>
3015            <p><strong>
3015Limit:</strong> 1&nbsp;GB per transfer &nbsp;|&nbsp; <strong>Recipient friction:</strong> Zero &nbsp;|&nbsp; <strong>Ads:</strong> None</p>
3016            <p>What we like: a 6-character code is faster to share than any URL. You can read it out loud, text it, or write it on a sticky note. The recipient types it on the homepage and gets the file. No login, no email required, no app install, no ads on the download page. Password protection is included free.</p>
3017            <p>What we don't: 1&nbsp;GB is enough for most everyday use but won't move a 4K feature film. For files over 1&nbsp;GB you'll want a different service for that specific job.</p>
3018
3019            <h2>2. Filemail — Best for 5&nbsp;GB Transfers</h2>
3020            <p><strong>Limit:</strong> 5&nbsp;GB &nbsp;|&nbsp; <strong>Recipient friction:</strong> Low (email required) &nbsp;|&nbsp; <strong>Ads:</strong> Yes, on downloads</p>
3021            <p>Filemail's free tier goes up to 5&nbsp;GB, which is genuinely useful for long video projects. The catch: the sender has to enter the recipient's email, and the recipient has to click through an ad-supported download page. There are no share codes — it's link-only.</p>
3022
3023            <h2>3. Send Anywhere — Best for Cross-Platform Real-Time</h2>
3024            <p><strong>Limit:</strong> 10&nbsp;GB &nbsp;|&nbsp; <strong>Recipient friction:</strong> Medium (6-digit key) &nbsp;|&nbsp; <strong>Ads:</strong> Light</p>
3025            <p>Send Anywhere uses a 6-digit key similar to SendVault's 6-character code, but the key changes every time and is tied to a real-time transfer rather than a stored file. Both devices need to be online at the same time. Good for "let me push this to you right now" workflows; less good for "send this and let them download tomorrow."</p>
3026
3027            <h2>4. Wormhole — Best for Privacy Purists</h2>
3028            <p><strong>Limit:</strong> 10&nbsp;GB &nbsp;|&nbsp; <strong>Recipient friction:</strong> Low &nbsp;|&nbsp; <strong>Ads:</strong> None</p>
3029            <p>Wormhole is the real E2EE option on this list. Files are encrypted in the browser and the key is part of the URL fragment — the server literally cannot decrypt them. The downside: URLs are long and ugly, and "send a Wormhole link" is not a phrase that flows naturally in conversation. For technical users who value privacy above all else, it's the right choice.</p>
3030
3031            <h2>5. SendGB — Best for One-Off Large Files</h2>
3032            <p><strong>Limit:</strong> 5&nbsp;GB &nbsp;|&nbsp; <strong>Recipient friction:</strong> Low &nbsp;|&nbsp; <strong>Ads:</strong> Yes</p>
3033            <p>SendGB punches above its weight for one-off transfers. The UI is dated but functional, the 5&nbsp;GB cap is generous, and the recipient experience is clean. The site is ad-supported, which is the cost of "free."</p>
3034
3035            <h2>6. Dropbox Transfer — Best If You Already Pay for Dropbox</h2>
3036            <p><strong>Limit:</strong> 100&nbsp;GB (paid plans only) &nbsp;|&nbsp; <strong>Recipient friction:</strong> High</p>
3037            <p>We cover this in more detail in our <a href="/blog/sendvault-vs-dropbox-transfer-2026">SendVault vs Dropbox Transfer</a> post, but the short version: Dropbox Transfer is great if you already pay for Dropbox. It is not a "free" service — the free Dropbox tier doesn't include it.</p>
3038
3039            <h2>7. WeTransfer — Best for Casual Use (Despite the Ads)</h2>
3040            <p><strong>Limit:</strong> 2&nbsp;GB &nbsp;|&nbsp; <strong>Recipient friction:</strong> Low (email) &nbsp;|&nbsp; <strong>Ads:</strong> Yes, intrusive</p>
3041            <p>WeTransfer is still the household name. It works. The free tier now comes with a full-screen ad on every download and rate limiting, which makes it feel slower than it used to. We cover this in detail in our <a href="/blog/best-free-wetransfer-alternative-2026">WeTransfer alternative</a> post.</p>
3042
3043            <h2>How We Tested</h2>
3044            <p>For each service, we timed three real transfers: a 50&nbsp;MB PDF bundle, a 400&nbsp;MB video, and a 1.2&nbsp;GB video (the last one capped most of the free tiers). We measured upload speed, recipient download experience on a fresh browser, and the number of clicks/taps required from "link received" to "file saved." Where a service required an account, we excluded it from this list.</p>
3045
3046            <h2>The Verdict</h2>
3047            <p>For 90% of file sharing needs in 2026, <strong><a href="/">SendVault</a></strong> is the right answer. It is fast, ad-free, account-free, and the 6-character code is genuinely easier to share than any URL. For the long tail — 5&nbsp;GB video files, true E2EE, real-time cross-device push — the other services on this list are excellent at their specific jobs.</p>
3048        `},{id:"51",slug:"sharing-files-with-clients-guide-for-designers",t
3048itle:"How to Share Files with Clients: A Working Designer's Guide",excerpt:`Wetransfer is fine. Email is fine. Dropbox is fine. But for the moment a designer hands a 2&nbsp;GB Final Cut bundle to a non-technical client, "fine" isn't good enough. Here's the workflow that actually works.`,category:"Guide",readTime:"6 min read",publishDate:"September 1, 2026",keywords:["sharing files with clients","designer client file delivery","send large files to clients","client file handoff workflow","freelance file delivery"],content:`
3049            <h2>The Moment of Truth</h2>
3050            <p>You've spent three weeks on a brand identity. The deliverables are in a 1.8&nbsp;GB folder: layered AI files, exported PDFs at every size, a brand guidelines PDF, hi-res logo lockups, a hero animation in MP4 and ProRes, and three rounds of social media crops. You need to get this from your laptop to a client who has never heard of WeTransfer and who will, statistically, try to open your .ai file in Microsoft Word.</p>
3051            <p>This is the part of the job that separates the working designers from the rest. The actual file delivery.</p>
3052
3053            <h2>What "Good" Looks Like</h2>
3054            <p>A good client file delivery does five things:</p>
3055            <ol>
3056                <li><strong>Arrives intact.</strong> No truncated downloads, no "file is corrupt" errors, no missing fonts.</li>
3057                <li><strong>Arrives fast.</strong> The client is not waiting 45 minutes for a 2&nbsp;GB upload to grind through a slow pipe.</li>
3058                <li><strong>Is easy to find later.</strong> Six months from now, the client can come back to the file without asking you for it again.</li>
3059                <li><strong>Does not require an account.</strong> The client is not signing up for anything to download.</li>
3060                <li><strong>Feels professional.</strong> The download page is your last impression of the project. A WeTransfer ad for someone else's product is a bad look.</li>
3061            </ol>
3062
3063            <h2>The Workflow That Works</h2>
3064            <p>Step by step, this is what to do at the end of every project.</p>
3065
3066            <h3>1. Organize the folder first</h3>
3067            <p>Before you upload anything, structure the folder the way the client will read it. Not the way your working drive is structured.</p>
3068            <pre style="background:#f5f5f5;padding:1rem;border-radius:8px;overflow-x:auto;font-size:0.9rem;">📁 ACME-Brand-Identity-Final-2026-09
3069├── 📁 01-Logos
3070│   ├── 📁 SVG
3071│   ├── 📁 PNG (transparent + white bg)
3072│   └── 📁 PDF (print-ready)
3073├── 📁 02-Colors-and-Typography
3074│   ├── ACME-Brand-Guidelines.pdf
3075│   └── ACME-Type-Specimens.pdf
3076├── 📁 03-Social-Crops
3077│   ├── Instagram (1080x1080)
3078│   ├── Instagram-Story (1080x1920)
3079│   └── LinkedIn-Banner (1584x396)
3080├── 📁 04-Animation
3081│   ├── ACME-Hero-Animation.mp4 (H.264, 5MB)
3082│   └── ACME-Hero-Animation-ProRes.mov (1.2GB)
3083├── 📁 05-Working-Files
3084│   ├── ACME-Identity-Master.ai
3085│   └── ACME-Identity-Master.indd
3086└── 📄 README.txt</pre>
3087            <p>The <code>README.txt</code> at the root is critical. Tell the client what each folder is, what software they need, and what the recommended deliverable is. Three sentences per folder is plenty.</p>
3088
3089            <h3>2. Compress smartly</h3>
3090            <p>Don't compress the entire folder. Compress intelligently.</p>
3091            <ul>
3092                <li>The 1.2&nbsp;GB ProRes animation: keep at original size, but only if the client specifically asked for it. For "just a preview," export an H.264 MP4 at 5&nbsp;MB and put the ProRes in a clearly-marked "if you need broadcast quality" subfolder.</li>
3093                <li>Source files (AI, INDD, PSD): zip them so they don't arrive as dozens of loose files. Mac users: use the built-in Archive Utility. Windows: send as a .zip.</li>
3094                <li>Logos and PDFs: leave uncompressed. They're already small.</li>
3095            </ul>
3096
3097            <h3>3. Upload to a code-based file sharing service</h3>
3098            <p>Email has a 25&nbsp;MB cap. WeTransfer adds ad noise to the recipient experience. Dropbox Transfer requires an account on both ends. For 1-2&nbsp;GB design handoffs, a service with a code-based access system is the right answer.</p>
3099            <p>The flow with <strong><a href="/">SendVault</a></strong>:</p>
3100            <ol>
3101                <li>Go to sendvault.online, drop the folder.</li>
3102                <li>Get a 6-character code (e.g. <code>K92H1Q</code>).</li>
3103                <li>Send the client a one-line email: "Your final files are ready. Open <a href="https://sendvault.online">sendvault.online</a>, click Receive, and enter the code <code>K92H1Q</code>."</li>
3104            </ol>
3105            <p>No accounts. No app install. No ads. Password protection is free if the project is sensitive (which most client work is).</p>
3106
3107            <h3>4. Tell the client what to do</h3>
3108            <p>The biggest variable in client file delivery is the client's own confidence. Make the
3108ir first step obvious.</p>
3109            <p>Don't send: <em>"Here are the files."</em> (Attached to nothing, vague, scary.)</p>
3110            <p>Do send:</p>
3111            <blockquote>
3112                <p>Hi Sarah — your final brand files are uploaded and ready. Two ways to get them:</p>
3113                <p><strong>Option 1 (easiest):</strong> Click this link, enter code <code>K92H1Q</code>, download the folder. <a href="https://sendvault.online">https://sendvault.online</a></p>
3114                <p><strong>Option 2:</strong> Reply to this email and I'll send the files directly.</p>
3115                <p>The folder is organized in the order I'd recommend reviewing it: logos first, then the brand guidelines PDF, then the social crops, then the animation, then the working files (you can ignore those unless you need to edit something yourself).</p>
3116                <p>Let me know if anything's missing or doesn't open!</p>
3117            </blockquote>
3118
3119            <h3>5. Confirm delivery</h3>
3120            <p>SendVault shows you when a file has been downloaded (or it can auto-delete after the first download for sensitive material). Follow up the day after delivery with a "did everything arrive?" check-in. This single habit prevents 80% of "I never got the files" support emails.</p>
3121
3122            <h2>What To Avoid</h2>
3123            <ul>
3124                <li><strong>Don't use a single WeTransfer link for ongoing client work.</strong> The link expires, the client loses it, and you're re-uploading three months later. Use a service that lets you re-share from history, or move to a proper cloud drive once the project is closed.</li>
3125                <li><strong>Don't send working files in their native format unless the client has the software.</strong> A .ai file is useless to a client without Adobe Illustrator. If they need editable files, include both the source and a flattened PDF or SVG version.</li>
3126                <li><strong>Don't name files with your internal conventions.</strong> <code>FINAL_v3_actuallyfinal_use_this.ai</code> is a meme for a reason. Rename for the client: <code>ACME-Primary-Logo.ai</code>.</li>
3127            </ul>
3128
3129            <h2>The Long Game</h2>
3130            <p>File delivery is one of those invisible design skills. Clients don't compliment you for it; they just quietly trust you more when it works. The first time you hand a 2&nbsp;GB brand identity to a non-technical client and they download it, find the right file, and never email you back about a missing asset, you've earned a small piece of long-term trust that compounds across every project you do together.</p>
3131        `},{id:"52",slug:"why-6-character-share-codes-beat-long-urls",title:"Why We Built a 6-Character Code Instead of a Long URL",excerpt:"Every file sharing service uses a long URL. We chose a 6-character code instead. This is the story of why, what we got right, and what surprised us after launch.",category:"Tech Trends",readTime:"5 min read",publishDate:"September 1, 2026",keywords:["share code vs link","short file sharing code","sendvault 6 character code","file sharing UX","short code file transfer"],content:`
3132            <h2>The Default Is a Long URL. We Asked Why.</h2>
3133            <p>Every file sharing service that has ever existed uses a long URL as the share mechanism. WeTransfer, Dropbox Transfer, Filemail, Google Drive, iCloud — the pattern is so universal that for a long time we didn't even think to question it. You upload a file, the server generates a UUID, the URL becomes <code>https://service.com/transfer/8f3a1b9c-2e4d-4f6a-9b1e-3c5d7e9f1a2b</code>, and you share that.</p>
3134            <p>When we started designing <strong><a href="/">SendVault</a></strong>, the URL pattern was the default we'd planned to ship. Then we sat down and tried to actually use the product the way our users would.</p>
3135            <p>The first thing we did was text ourselves a SendVault link. Then we read it out loud over the phone to a colleague. Then we tried to paste it into a calendar invite. Then we tried to write it on a sticky note. Every single one of those interactions was awkward.</p>
3136            <p>Long URLs are great for machines. They are terrible for humans.</p>
3137
3138            <h2>What a 6-Character Code Does Differently</h2>
3139            <p>A 6-character code is short enough to:</p>
3140            <ul>
3141                <li>Read out loud: <em>"K 9 2 H 1 Q."</em> Done.</li>
3142                <li>Text without a link preview eating half the message: <em>"Code is K92H1Q."</em></li>
3143                <li>Write on a sticky note, a whiteboard, or the back of a business card.</li>
3144                <li>Slot into a calendar invite title: <em>"Brand Review — code K92H1Q."</em></li>
3145                <li>Recall from memory for 30 seconds while you switch apps to type it in.</li>
3146                <li>Speak across a noisy room, a phone call, a video meeting, or a Slack huddle.</li>
3147            </ul>
3148            <p>The insight is that a share mechanism should be optimized for the *hardest* channel you intend to support, not the easiest. The easy channel for a URL is a desktop browser. The hardest channel is "I'm at a coffee shop and need to give this to the person across the table." A 6-character code works in both. A 200-character URL works in one.</p>
3149
3150            <h2>The Math, Briefly</h2>
3151            <p>We use uppercase letters and digits, so each character is one of 36 options. Six characters is 36<sup>6</sup> = 2.18 billion combinations. That's more than enough entropy for a system that expires the code in 15 minutes and never reuses it.</p>
3152            <p>At our peak we've generated about 1,200 codes per hour. The expected number of guesses to collide with an active code is 2.18&nbsp;billion / 1,200 / 4 (15 min) = 454,000 attempts. Add rate limiting and that becomes effectively impossible.</p>
3153
3154            <h2>What Surprised Us</h2>
3155            <p>Three things we didn't predict.</p>
3156
3157            <h3>1. The codes get read out loud more than we expected</h3>
3158            <p>We assumed most shares would be link-based. In practice, about 18% of codes are spoken, not linked. People use them across the office, in phone calls, in voice messages. The "speakable" property turned out to be the killer feature, not the "short" property.</p>
3159
3160            <h3>2. The codes get reused by the recipient as a memory aid</h3>
3161            <p>Users screenshot the code, write it in a note, or type it into a chat with themselves. They aren't using our service as a permanent record — they're using the code as a way to remember which file went where. This is a feature we didn't design for, but it's the dominant user behavior in the first 24 hours after a transfer.</p>
3162
3163            <h3>3. Short codes are easier to typo, but easier to correct</h3>
3164            <p>Yes, a 6-character code has higher typo rates per character than a 36-character URL. But the *cost* of a typo is one backspace and a re-type, which takes 2 seconds. The cost of getting a long URL wrong is opening a broken tab, copying the wrong section, and being unsure if you copied it right. Short codes are easier to recover from.</p>
3165
3166            <h2>What We Got Wrong</h2>
3167            <p>Not everything about the code-only model has worked. The biggest issue: codes are hard to scan visually. If you receive 10 codes in a day (e.g. a creative director receiving project files from a team), there's no way to tell at a glance which code is for which project. The URL version of the same share — with a project title in the path or query — is self-describing.</p>
3168            <p>Our compromise: we now include an optional 30-character human-readable title alongside the code, and the recipient sees both. The code is the key. The title is the context.</p>
3169
3170            <h2>Why This Matters Beyond SendVault</h2>
3171            <p>The bigger lesson is about product design defaults. Long URLs are the default because they were the cheapest thing to implement, not because they were the best thing for users. When you actually trace the user's journey — through the channels they actually use, with the people they actually share with — the right answer is often the one that wasn't on the menu at all.</p>
3172            <p>If you're building a sharing feature, ask yourself: what's the most awkward channel my users will use this through? Then optimize for that.</p>
3173        `}];function q0(n){return n.replace(/<[^>]+>/g,"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")}function CS(n){const r=/<h([23])[^>]*>(.*?)<\/h[23]>/gi,o=[];let l;for(;(l=r.exec(n))!==null;){const d=l[2].replace(/<[^>]+>/g,"");o.push({level:parseInt(l[1]),text:d,id:q0(d)})}return o}function jS(n){return n.replace(/<h([23])([^>]*)>(.*?)<\/h[23]>/gi,(r,o,l,d)=>{const p=q0(d);return`<h${o}${l} id="${p}">${d}</h${o}>`})}const ES=()=>{const[n,r]=V.useState("All"),[o,l]=V.useState(null),[d,p]=V.useState(!1),[u,f]=V.useState("");mn(o?{title:`${o.title}
3173 | SendVault Blog`,description:o.excerpt,canonical:`https://sendvault.online/blog/${o.slug}`,ogUrl:`https://sendvault.online/blog/${o.slug}`,ogType:"article",ogImageAlt:`${o.title} | SendVault Blog`,keywords:o.keywords.join(", "),articleAuthor:"https://sendvault.online",articlePublishedTime:new Date(o.publishDate).toISOString(),articleSection:o.category}:{title:"SendVault Blog | Secure File Sharing Guides & Tips",description:"Learn about secure file sharing, best practices, and tips for transferring large files safely. Expert guides for businesses and creative professionals.",canonical:"https://sendvault.online/blog",ogUrl:"https://sendvault.online/blog",ogType:"website",keywords:"secure file sharing, large file transfer, file sharing guide, send files online, iphone to android transfer, free file sharing no account",jsonLd:(()=>{const j=[...fi].sort((T,D)=>new Date(D.publishDate).getTime()-new Date(T.publishDate).getTime()).slice(0,10);return{"@context":"https://schema.org","@type":"ItemList",name:"SendVault Blog — Recent Articles",description:"The most recent SendVault articles on secure file sharing, encryption, productivity, and free alternatives to WeTransfer and WhatsApp.",itemListOrder:"https://schema.org/ItemListOrderDe
3173scending",numberOfItems:j.length,itemListElement:j.map((T,D)=>({"@type":"ListItem",position:D+1,url:`https://sendvault.online/blog/${T.slug}`,name:T.title}))}})()}),V.useEffect(()=>{const x=()=>{const T=window.location.pathname.match(/\/blog\/(.+)/);if(T){const D=decodeURIComponent(T[1].replace(/\/+$/,"")),_=fi.find(L=>L.slug===D);_?(l(_),p(!1),window.scrollTo(0,0)):(l(null),p(!0),window.history.replaceState(null,"","/blog"),window.scrollTo(0,0))}else l(null),p(!1),window.scrollTo(0,0)};return x(),window.addEventListener("popstate",x),()=>window.removeEventListener("popstate",x)},[]);const g=x=>{window.history.pushState(null,"",`/blog/${x.slug}/`),window.dispatchEvent(new PopStateEvent("popstate")),l(x),p(!1),window.scrollTo(0,0)},y=()=>{window.history.pushState(null,"","/blog/"),window.dispatchEvent(new PopStateEvent("popstate")),l(null),window.scrollTo(0,0)},m=["All",...Array.from(new Set(fi.map(x=>x.category)))],v=n==="All"?fi:fi.filter(x=>x.category===n);V.useEffect(()=>{if(o){const x={"@context":"https://schema.org","@type":"BlogPosting",headline:o.title,de
3173scription:o.excerpt,datePublished:new Date(o.publishDate).toISOString(),dateModified:new Date(o.publishDate).toISOString(),image:"https://sendvault.online/og-image.png",url:`https://sendvault.online/blog/${o.slug}`,inLanguage:"en-US",author:{"@type":"Organization",name:"SendVault",url:"https://sendvault.online"},publisher:{"@type":"Organization",name:"SendVault",logo:{"@type":"ImageObject",url:"https://sendvault.online/favicon-512.png",width:512,height:512}},mainEntityOfPage:{"@type":"WebPage","@id":`https://sendvault.online/blog/${o.slug}`},isPartOf:{"@type":"Blog","@id":"https://sendvault.online/blog",name:"SendVault Blog",publisher:{"@type":"Organization",name:"SendVault"}},keywords:o.keywords.join(", "),articleSection:o.category,wordCount:o.content.split(/\s+/).length},j={"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:[{"@type":"ListItem",position:1,name:"Home",item:"https://sendvault.online/"},{"@type":"ListItem",position:2,name:"Blog",item:"https://sendvault.online/blog"},{"@type":"ListItem",position:3,name:o.title,item:`https://sendvault.online/blog/${o.slug}`}]},T=document.createElement("script");return T.type="application/ld+json",T.id="blog-article-schema",T.text=JSON.stringify([x,j]),document.head.appendChild(T),()=>{const D=document.getElementById("blog-article-schema");D&&document.head.removeChild(D)}}else{const x={"@context":"https://schema.org","@type":"Blog","@id":"https://sendvault.online/blog",name:"SendVault Blog. Secure File Sharing Guides & Tips",description:"Expert guides on secure file sharing, file transfer best practices, encryption, and productivity for businesses and creative professionals.",url:"https://sendvault.online/blog",inLanguage:"en-US",publisher:{"@type":"Organization",name:"SendVault",logo:{"@type":"ImageObject",url:"https://sendvault.online/favicon-512.png"}},blogPost:fi.slice(0,10).map(T=>({"@type":"BlogPosting",headline:T.title,description:T.excerpt,url:`https://sendvault.online/blog/${T.slug}`,datePublished:new Date(T.publishDate).toISOString(),keywords:T.keywords.join(", ")}))},j=document.createElement("script");return j.type="application/ld+json",j.id="blog-list-schema",j.text=JSON.stringify(x),document.head.appendChild(j),()=>{const T=document.getElementById("blog-list-schema");T&&document.head.removeChild(T)}}},[o]),V.useEffect(()=>{if(!o)return;const x=()=>{const j=Array.from(document.querySelectorAll(".blog-article-v2-content h2, .blog-article-v2-content h3"));let T=j[0]?.id;for(const D of j)D.getBoundingClientRect().top<=window.innerHeight*.4&&(T=D.id);T&&f(T)};return window.addEventListener("scroll",x,{passive:!0}),x(),()=>window.removeEventListener("scroll",x)},[o]);const w=V.useMemo(()=>o?fi.filter(x=>x.slug!==o.slug&&x.category===o.category).slice(0,3):[],[o]),b=V.useMemo(()=>o?CS(o.content):[],[o]),A=V.useMemo(()=>o?jS(o.content):"",[o]);return s.jsxs($r,{title:"Guides & Tips",subtitle:"The SendVault Blog",contentMaxWidth:o?"1100px":"1200px",children:[s.jsx("div",{style:{padding:"0 4px"},children:s.jsx(wS,{items:o?[{label:"Home",href:"/"},{label:"Blog",href:"/blog"},{label:o.category},{label:o.title}]:[{label:"Home",href:"/"},{label:"Blog"}]})}),!o&&s.jsxs(s.Fragment,{children:[d&&s.jsxs("div",{className:"blog-empty",style:{padding:"1rem 1.5rem",marginBottom:"1.5rem",border:"1px solid var(--border)",borderRadius:"0.75rem",background:"var(--bg-muted)"},children:["That article could not be found. Browse the posts below or"," ",s.jsx("a",{href:"/blog",onClick:x=>{x.preventDefault(),p(!1)},style:{color:"var(--brand)"},children:"return to the blog"}),"."]}),s.jsx(fS,{articles:v,categories:m,selectedCategory:n,setSelectedCategory:r,openArticle:g}),v.length===0&&s.jsx("div",{style:{textAlign:"center",padding:"4rem 2rem",color:"var(--fg-muted)"},children:"No articles found in this category."}),s.jsxs("section",{"aria-label":"Try SendVault",style:{marginTop:"64px",padding:"40px 32px",borderRadius:"20px",background:"linear-gradient(135deg, rgba(163, 230, 53, 0.10), rgba(163, 230, 53, 0.04))",border:"1px solid rgba(163, 230, 53, 0.25)",textAlign:"center"},children:[s.jsx("h2",{style:{fontSize:"28px",fontWeight:700,letterSpacing:"-0.5px",color:"#111",margin:0},children:"Send a file in under 30 seconds"}),s.jsx("p",{style:{fontSize:"16px",color:"rgba(17, 17, 17, 0.65)",maxWidth:540,margin:"12px auto 24px",lineHeight:1.5},children:"Upload up to 1 GB, get a 6-character code, share it anywhere. No account, no compression, no fuss."}),s.jsxs("div",{style:{display:"flex",gap:"12px",justifyContent:"center",flexWrap:"wrap"},children:[s.jsx("a",{href:"/",style:{display:"inline-block",padding:"14px 28px",borderRadius:"14px",background:"#111",color:"#fff",textDecoration:"none",fontWeight:600,fontSize:"15px"},children:"Send a file free"}),s.jsx("a",{href:"/how-it-works",style:{display:"inline-block",padding:"14px 28px",borderRadius:"14px",background:"transparent",color:"#111",textDecoration:"none",fontWeight:600,fontSize:"15px",border:"1px solid rgba(17, 17, 17, 0.20)"},children:"See how it works"})]})]})]}),o&&s.jsxs("div",{children:[s.jsx("style",{children:`
3174                        .blog-article-v2-wrapper {
3175                            display: grid;
3176                            grid-template-columns: 1fr 300px;
3177                            gap: 32px;
3178                            padding-bottom: 48px;
3179                            align-items: flex-start;
3180                        }
3181
3182                        .blog-article-v2-hero {
3183                            background: #ffffff;
3184                            border-radius: 28px;
3185                            box-shadow: 0 8px 32px rgba(0,0,0,0.05);
3186                            border: 1px solid rgba(0,0,0,0.06);
3187                            padding: 40px 48px;
3188                            margin-bottom: 24px;
3189                        }
3190
3191                        .blog-back-btn {
3192                            display: inline-flex;
3193                            align-items: center;
3194                            gap: 8px;
3195                            background: transparent;
3196                            border: 1px solid rgba(0,0,0,0.1);
3197                            border-radius: 100px;
3198                            padding: 8px 16px;
3199                            font-size: 14px;
3200                            font-weight: 500;
3201                            color: rgba(17,17,17,0.65);
3202                            cursor: pointer;
3203                            margin-bottom: 28px;
3204                            transition: all 0.2s;
3205                        }
3206                        .blog-back-btn:hover {
3207                            background: rgba(0,0,0,0.04);
3208                            color: #111;
3209                            border-color: rgba(0,0,0,0.18);
3210                        }
3211
3212                        .blog-article-v2-meta {
3213                            display: flex;
3214                            align-items: center;
3215                            gap: 10px;
3216                            margin-bottom: 20px;
3217                            flex-wrap: wrap;
3218                        }
3219
3220                        .blog-article-v2-cat {
3221                            padding: 4px 12px;
3222                            border-radius: 100px;
3223                            background: rgba(163, 230, 53, 0.12);
3224                            color: #4d7c0f;
3225                            font-size: 12px;
3226                            font-weight: 600;
3227                        }
3228
3229                        .blog-article-v2-meta-dot {
3230                            color: rgba(17,17,17,0.2);
3231                            font-size: 16px;
3232                        }
3233
3234                        .blog-article-v2-meta-text {
3235                            color: rgba(17,17,17,0.45);
3236                            font-size: 14px;
3237                        }
3238
3239                        .blog-article-v2-title {
3240                            font-size: clamp(1.75rem, 3.5vw, 2.5rem);
3241                            font-weight: 800;
3242                            color: #111111;
3243                            line-height: 1.15;
3244                            letter-spacing: -0.04em;
3245                            margin: 0 0 16px 0;
3246                        }
3247
3248                        .blog-article-v2-excerpt {
3249                            font-size: 18px;
3250                            color: rgba(17,17,17,0.6);
3251                            line-height: 1.65;
3252                            margin: 0;
3253                            max-width: 640px;
3254                        }
3255
3256                        .blog-article-v2-content-card {
3257                            background: #ffffff;
3258                            border-radius: 28px;
3259                            box-shadow: 0 8px 32px rgba(0,0,0,0.05);
3260                            border: 1px solid rgba(0,0,0,0.06);
3261                            padding: 40px 48px;
3262                        }
3263
3264                        .blog-article-v2-content h2 {
3265                            font-size: 22px;
3266                            font-weight: 700;
3267                            color: #111111;
3268                            letter-spacing: -0.5px;
3269                            margin: 2rem 0 0.75rem;
3270                        }
3271                        .blog-article-v2-content h3 {
3272                            font-size: 18px;
3273                            font-weight: 700;
3274                            color: #111111;
3275                            margin: 1.5rem 0 0.5rem;
3276                        }
3277                        .blog-article-v2-content h4 {
3278                            font-size: 16px;
3279                            font-weight: 700;
3280                            color: #111111;
3281                            margin: 1.25rem 0 0.4rem;
3282                        }
3283                        .blog-article-v2-content p {
3284                            font-size: 16.5px;
3285                            color: rgba(17,17,17,0.75);
3286                            line-height: 1.75;
3287                            margin: 0 0 1rem;
3288                        }
3289                        .blog-article-v2-content ul,
3290                        .blog-article-v2-content ol {
3291                            padding-left: 1.5rem;
3292                            margin: 0 0 1rem;
3293                        }
3294                        .blog-article-v2-content li {
3295                            font-size: 16px;
3296                            color: rgba(17,17,17,0.75);
3297                            line-height: 1.7;
3298                            margin-bottom: 0.4rem;
3299                        }
3300                        .blog-article-v2-content strong {
3301                            color: #111111;
3302                            font-weight: 700;
3303                        }
3304                        .blog-article-v2-content a {
3305                            color: #4d7c0f;
3306                            text-underline-offset: 3px;
3307                        }
3308
3309                        .blog-article-v2-tags {
3310                            display: flex;
3311                            align-items: center;
3312                            gap: 12px 8px;
3313                            flex-wrap: wrap;
3314                            margin-top: 32px;
3315                            padding-top: 24px;
3316                            border-top: 1px solid rgba(0,0,0,0.06);
3317                        }
3318                        .blog-tag-pill {
3319                            display: inline-flex;
3320                            align-items: center;
3321                            padding: 4px 12px;
3322                            border-radius: 100px;
3323                            background: rgba(0,0,0,0.04);
3324                            border: 1px solid rgba(0,0,0,0.07);
3325                            font-size: 12px;
3326                            font-weight: 500;
3327                            color: rgba(17,17,17,0.55);
3328                        }
3329
3330                        /* Sidebar */
3331                        .blog-article-v2-sidebar {
3332                            display: flex;
3333                            flex-direction: column;
3334                            gap: 20px;
3335                            position: sticky;
3336                            top: 96px;
3337                        }
3338
3339                        .blog-sidebar-card {
3340                            background: #ffffff;
3341                            border-radius: 24px;
3342                            box-shadow: 0 12px 40px rgba(0,0,0,0.05);
3343                            border: 1px solid rgba(0,0,0,0.07);
3344                            padding: 24px 24px 20px;
3345                        }
3346
3347                        .blog-sidebar-label {
3348                            font-size: 15px;
3349                            font-weight: 700;
3350                            letter-spacing: -0.3px;
3351                            color: #111111;
3352                            margin: 0 0 16px 0;
3353                            padding-bottom: 12px;
3354                            border-bottom: 1px solid rgba(0,0,0,0.06);
3355                        }
3356
3357                        .blog-toc-list {
3358                            list-style: none !important;
3359                            padding: 0 !important;
3360                            margin: 0 !important;
3361                            display: flex;
3362                            flex-direction: column;
3363                            gap: 2px;
3364                        }
3365                        .blog-toc-item {
3366                            display: flex;
3367                            align-items: flex-start;
3368                            gap: 10px;
3369                            padding: 5px 6px 5px 0;
3370                            border-radius: 8px;
3371                            transition: background 0.15s;
3372                        }
3373                        .blog-toc-item.is-active {
3374                            background: rgba(163,230,53,0.1);
3375                        }
3376                        .blog-toc-num {
3377                            font-size: 11px;
3378                            font-weight: 700;
3379                            color: #4d7c0f;
3380                            background: rgba(163,230,53,0.15);
3381                            border-radius: 5px;
3382                            padding: 2px 6px;
3383                            flex-shrink: 0;
3384                            margin-top: 1px;
3385                            min-width: 24px;
3386                            text-align: center;
3387                        }
3388                        .blog-toc-num.inactive {
3389                            color: rgba(17,17,17,0.35);
3390                            background: rgba(0,0,0,0.04);
3391                        }
3392                        .blog-toc-link {
3393                            font-size: 13px;
3394                            line-height: 1.4;
3395                            text-decoration: none;
3396                            transition: color 0.15s;
3397                        }
3398
3399                        .blog-cta-card a.logo {
3400                            color: #ffffff !important;
3401                        }
3402
3403                        .blog-footer-link {
3404                            color: inherit;
3405                            text-decoration: none;
3406                            display: flex;
3407                            align-items: center;
3408                            gap: 2px;
3409                            opacity: 0.6;
3410                            transition: opacity 0.2s;
3411                        }
3412                        .blog-footer-link:hover {
3413                            opacity: 1;
3414                        }
3415
3416                        .blog-cta-card {
3417                            background: #111111;
3418                            border-radius: 24px;
3419                            padding: 24px;
3420                            overflow: hidden;
3421                            position: relative;
3422                        }
3423                        .blog-cta-glow {
3424                            position: absolute;
3425                            top: -60px;
3426                            left: -60px;
3427                            width: 180px;
3428                            height: 180px;
3429                            border-radius: 50%;
3430                            background: radial-gradient(circle, rgba(163,230,53,0.18) 0%, transparent 70%);
3431                            pointer-events: none;
3432                            z-index: 0;
3433                        }
3434                        .blog-cta-badge {
3435                            font-size: 12px;
3436                            font-weight: 600;
3437                            letter-spacing: 0.3px;
3438                            color: #A3E635 !important;
3439                            margin: 0 0 10px 0;
3440                            position: relative;
3441                            z-index: 1;
3442                        }
3443                        .blog-cta-title {
3444                            font-size: 20px;
3445                            font-weight: 800;
3446                            color: #ffffff !important;
3447                            letter-spacing: -0.5px;
3448                            line-height: 1.2;
3449                            margin: 0 0 10px 0;
3450                            position: relative;
3451                            z-index: 1;
3452                        }
3453                        .blog-cta-sub {
3454                            font-size: 12px;
3455                            color: rgba(255,255,255,0.5) !important;
3456                            line-height: 1.6;
3457                            margin: 0 0 18px 0;
3458                            position: relative;
3459                            z-index: 1;
3460                        }
3461                        .blog-cta-btn {
3462                            display: flex;
3463                            align-items: center;
3464                            justify-content: center;
3465                            gap: 8px;
3466                            padding: 13px 20px;
3467                            background: #A3E635;
3468                            color: #1a1a1a !important;
3469                            border-radius: 100px;
3470                            font-size: 14px;
3471                            font-weight: 800;
3472                            text-decoration: none !important;
3473                            letter-spacing: -0.2px;
3474                            transition: transform 0.2s, box-shadow 0.2s, background 0.2s;
3475                            position: relative;
3476                            z-index: 1;
3477                        }
3478                        .blog-cta-btn:hover {
3479                            transform: translateY(-2px);
3480                            box-shadow: 0 8px 24px rgba(163,230,53,0.4);
3481                            background: #b8f04d;
3482                        }
3483
3484                        .blog-popular-list {
3485                            list-style: none !important;
3486                            padding: 0 !important;
3487                            margin: 0 !important;
3488                            display: flex;
3489                            flex-direction: column;
3490                            gap: 0;
3491                        }
3492                        .blog-popular-item {
3493                            display: flex;
3494                            gap: 12px;
3495                            padding: 10px 0;
3496                            border-bottom: 1px solid rgba(0,0,0,0.05);
3497                            cursor: pointer;
3498                        }
3499                        .blog-popular-item:last-child {
3500                            border-bottom: none;
3501                        }
3502                        .blog-popular-num {
3503                            font-size: 11px;
3504                            font-weight: 800;
3505                            color: rgba(17,17,17,0.2);
3506                            min-width: 20px;
3507                            padding-top: 2px;
3508                        }
3509                        .blog-popular-title {
3510                            font-size: 13px;
3511                            font-weight: 500;
3512                            color: rgba(17,17,17,0.7) !important;
3513                            line-height: 1.4;
3514                            text-decoration: none !important;
3515                            transition: color 0.15s;
3516                        }
3517                        .blog-popular-title:hover {
3518                            color: #111 !important;
3519                        }
3520
3521                        @media (max-width: 900px) {
3522                            .blog-article-v2-wrapper {
3523                                grid-template-columns: 1fr;
3524                                margin-top: -20px;
3525                            }
3526                            .blog-article-v2-hero,
3527                            .blog-article-v2-content-card {
3528                                padding: 28px 24px;
3529                            }
3530                            .blog-article-v2-sidebar {
3531                                position: static;
3532                            }
3533                        }
3534                    `}),s.jsxs("div",{className:"blog-article-v2-wrapper",children:[s.jsxs("article",{itemScope:!0,itemType:"https://schema.org/BlogPosting",children:[s.jsxs("div",{className:"blog-article-v2-hero",children:[s.jsxs("button",{onClick:y,className:"blog-back-btn",children:[s.jsx(AS,{size:14,strokeWidth:2.5}),"All Articles"]}),s.jsxs("div",{className:"blog-article-v2-meta",children:[s.jsx("span",{className:"blog-article-v2-cat",children:o.category}),s.jsx("span",{className:"blog-article-v2-meta-dot",children:"·"}),s.jsx("time",{className:"blog-article-v2-meta-text",dateTime:new Date(o.publishDate).toISOString(),itemProp:"datePublished",children:o.publishDate}),s.jsx("span",{className:"blog-article-v2-meta-dot",children:"·"}),s.jsxs("span",{className:"blog-article-v2-meta-text",style:{display:"flex",alignItems:"center",gap:"5px"},children:[s.jsx(kS,{size:13}),o.readTime]})]}),s.jsx("h1",{className:"blog-article-v2-title",itemProp:"headline",children:o.title}),s.jsx("p",{className:"blog-article-v2-excerpt",itemProp:"description",children:o.excerpt}),s.jsx("meta",{itemProp:"author",content:"SendVault"})]}),s.jsxs("div",{className:"blog-article-v2-content-card",children:[s.jsx("div",{className:"blog-article-v2-content",itemProp:"articleBody",dangerouslySetInnerHTML:{__html:A}}),s.jsxs("div",{style:{margin:"40px 0 24px",padding:"28px 24px",borderRadius:"16px",background:"linear-gradient(135deg, rgba(163, 230, 53, 0.10), rgba(163, 230, 53, 0.04))",border:"1px solid rgba(163, 230, 53, 0.25)",textAlign:"center"},children:[s.jsx("h2",{style:{fontSize:"22px",fontWeight:700,margin:0,color:"#111",letterSpacing:"-0.3px"},children:"Try it yourself"}),s.jsx("p",{style:{fontSize:"15px",color:"rgba(17, 17, 17, 0.65)",margin:"8px 0 18px",lineHeight:1.5},children:"Upload a file, get a 6-character code, share it. About 10 seconds."}),s.jsxs("div",{style:{display:"flex",gap:"10px",justifyContent:"center",flexWrap:"wrap"},children:[s.jsx("a",{href:"/",style:{display:"inline-block",padding:"12px 24px",borderRadius:"12px",background:"#111",color:"#fff",textDecoration:"none",fontWeight:600,fontSize:"14px"},children:"Send a file free"}),s.jsx("a",{href:"/how-it-works",style:{display:"inline-block",padding:"12px 24px",borderRadius:"12px",background:"transparent",color:"#111",textDecoration:"none",fontWeight:600,fontSize:"14px",border:"1px solid rgba(17, 17, 17, 0.18)"},children:"How it works"})]})]}),s.jsxs("div",{className:"blog-article-v2-tags",children:[s.jsx(SS,{size:14,style:{color:"rgba(17,17,17,0.35)",flexShrink:0}}),o.keywords.map((x,j)=>s.jsx("span",{className:"blog-tag-pill",children:x},j))]}),s.jsx(xS,{})]})]}),s.jsxs("aside",{className:"blog-article-v2-sidebar",children:[b.filter(x=>x.level===2).length>0&&s.jsx("div",{className:"blog-sidebar-card",children:s.jsx("ol",{className:"blog-toc-list",style:{listStyle:"none",padding:0,margin:0},children:b.filter(x=>x.level===2).map((x,j)=>{const T=u===x.id;return s.jsxs("li",{className:`blog-toc-item${T?" is-active":""}`,children:[s.jsx("span",{className:`blog-toc-num${T?"":" inactive"}`,children:String(j+1).padStart(2,"0")}),s.jsx("a",{href:`#${x.id}`,className:"blog-toc-link",onClick:D=>{D.preventDefault();const _=document.getElementById(x.id);if(_){const L=_.getBoundingClientRect().top+window.scrollY-100;window.scrollTo({top:L,behavior:"smooth"})}},style:{color:T?"#4d7c0f":"rgba(17,17,17,0.55)",fontWeight:T?600:400},children:x.text})]},x.id)})})}),s.jsxs("div",{className:"blog-cta-card",children:[s.jsx("div",{className:"blog-cta-glow"}),s.jsxs("div",{style:{position:"relative",zIndex:1}
3534,children:[s.jsx("div",{style:{marginBottom:"16px",display:"flex"},children:s.jsx(Xi,{})}),s.jsxs("h3",{className:"blog-cta-title",children:["Send any file.",s.jsx("br",{}),"No account needed."]}),s.jsx("p",{className:"blog-cta-sub",children:"Up to 1 GB · Password lock · 7-day expiry · Instant 6-char codes"}),s.jsxs("a",{href:"/",className:"blog-cta-btn",children:["Try Free ",s.jsx(TS,{size:14})]})]})]}),s.jsxs("div",{className:"blog-sidebar-card",children:[s.jsx("p",{className:"blog-sidebar-label",children:"Popular Articles"}),s.jsx("ul",{className:"blog-popular-list",style:{listStyle:"none",padding:0,margin:0},children:w.length>0?w.map((x,j)=>s.jsxs("li",{className:"blog-popular-item",onClick:()=>g(x),children:[s.jsx("span",{className:"blog-popular-num",children:String(j+1).padStart(2,"0")}),s.jsx("a",{href:`/blog/${x.slug}`,className:"blog-popular-title",onClick:T=>{T.preventDefault(),g(x)},children:x.title})]},x.slug)):fi.slice(0,4).map((x,j)=>s.jsxs("li",{className:"blog-popular-item",onClick:()=>g(x),children:[s.jsx("span",{className:"blog-popular-num",children:String(j+1).padStart(2,"0")}),s.jsx("a",{href:`/blog/${x.slug}`,className:"blog-popular-title",onClick:T=>{T.preventDefault(),g(x)},children:x.title})]},x.slug))})]})]})]})]})]})},DS=()=>(mn({title:"Terms of Service. SendVault",description:"Terms of service for SendVault. Usage rules, limitations, and contact information.",canonical:"https://sendvault.online/terms",ogType:"website"}),s.jsxs($r,{title:"Terms of Service",subtitle:"Last updated: April 17, 2026",children:[s.jsx("h2",{children:"1. Acceptance of Terms"}),s.jsx("p",{children:'By accessing or using SendVault at sendvault.online (the "Service"), you agree to be bound by these Terms of Service ("Terms"). If you do not agree to all of these Terms, do not use the Service. We reserve the right to modify these Terms at any time. Your continued use of the Service after any changes constitutes acceptance of the new Terms.'}),s.jsx("h2",{children:"2. Description of Service"}),s.jsx("p",{children:"SendVault is a temporary file sharing service that allows users to upload files and share them using secure, time-limited codes. Key features include:"}),s.jsxs("ul",{children:[s.jsx("li",{children:"Upload files up to 1GB in size"}),s.jsx("li",{children:"Generate secure 6-character share codes"}),s.jsx("li",{children:"Automatic file deletion after user-defined timeframe (up to 7 days) or after first download"}),s.jsx("li",{children:"No registration or personal information required"}),s.jsx("li",{children:"Available as a web service and mobile app (Android)"})]}),s.jsx("h2",{children:"3. Mobile App - Permissions and Usage"}),s.jsx("h3",{children:"Android App Permissions"}),s.jsx("p",{children:"The SendVault Android app requires certain permissions to function properly. By installing and using the app, you understand and agree that:"}),s.jsx("h4",{children:"Storage Permissions"}),s.jsxs("ul",{children:[s.jsxs("li",{children:["The app will request ",s.jsx("strong",{children:"storage/media access permissions"})," when you attempt to upload files"]}),s.jsx("li",{children:"These permissions are necessary to allow you to select files from your device"}),s.jsx("li",{children:"On Android 13+, the app requests granular permissions for images, videos, and audio files"}),s.jsx("li",{children:"You may grant or deny these permissions; denying will limit upload functionality"}),s.jsx("li",{children:"The app only accesses files you explicitly select through the file picker"}),s.jsx("li",{children:"The app does not scan, browse, or access other files on your device"}),s.jsx("li",{children:"You can revoke permissions at any time through your device settings"})]}),s.jsx("h4",{children:"Other Permissions"}),s.jsxs("ul",{children:[s.jsxs("li",{children:[s.jsx("strong",{children:"Internet Access:"})," Required to upload and download files"]}),s.jsxs("li",{children:[s.jsx("strong",{children:"Network State:"})," To check connectivity before transfers"]}),s.jsxs("li",{children:[s.jsx("strong",{children:"Vibration:"})," For haptic feedback during interactions"]})]}),s.jsx("h3",{children:"Advertisement in Mobile App"}),s.jsx("p",{children:"The Android app displays advertisements provided by Google AdMob. By using the app, you acknowledge and agree that:"}),s.jsxs("ul",{children:[s.jsx("li",{children:"Ads help us provide SendVault for free"}),s.jsx("li",{children:"Google AdMob may collect data as described 
3534in our Privacy Policy"}),s.jsx("li",{children:"You can control ad personalization through your device settings"}),s.jsx("li",{children:"We are not responsible for the content or practices of third-party advertisers"})]}),s.jsx("h2",{children:"4. User Responsibilities and Acceptable Use"}),s.jsx("p",{children:"By using our Service, you agree to:"}),s.jsxs("ul",{children:[s.jsx("li",{children:"Only upload files that you own or have permission to share"}),s.jsx("li",{children:"Use the Service in compliance with all applicable laws and regulations"}),s.jsx("li",{children:"Not upload files larger than 1GB"}),s.jsx("li",{children:"Not attempt to circumvent our security measures or time limits"}),s.jsx("li",{children:"Respect the temporary nature of file sharing (up to 7-day expiration)"}),s.jsx("li",{children:"Grant necessary permissions for the mobile app to function (if using Android app)"}),s.jsx("li",{children:"Not abuse the permission system or attempt to access unauthorized data"})]}),s.jsx("h2",{children:"5. Prohibited Content"}),s.jsx("p",{children:"You agree NOT to use the Service to upload, share, or transmit:"}),s.jsxs("ul",{children:[s.jsx("li",{children:"Illegal content including but not limited to copyrighted material, child exploitation material, or content that violates any law"}),s.jsx("li",{children:"Malicious software, viruses, malware, or any code designed to harm computer systems"}),s.jsx("li",{children:"Content that is threatening, abusive, harassing, defamatory, hateful, or discriminatory"}),s.jsx("li",{children:"Private or confidential information of others without authorization"}),s.jsx("li",{children:"Content that violates intellectual property rights of any party"}),s.jsx("li",{children:"Spam, advertisements, or unsolicited communications"}),s.jsx("li",{children:"Content intended for commercial distribution without proper licensing"})]}),s.jsx("p",{children:"We reserve the right to remove any content and immediately terminate access to users who violate these restrictions."}),s.jsx("h2",{children:"6. Service Availability and Limitations"}),s.jsx("p",{children:"We strive to provide reliable service, but please understand:"}),s.jsxs("ul",{children:[s.jsx("li",{children:'The Service is provided "as is" without guarantees of uptime or availability'}),s.jsx("li",{children:"File size is limited to 1GB per upload"}),s.jsx("li",{children:"Share codes expire alongside the transfer (up to 7 days)"}),s.jsx("li",{children:"We may implement rate limiting or usage restrictions to ensure fair access"}),s.jsx("li",{children:"We may suspend or modify the Service for maintenance or improvements"}),s.jsx("li",{children:"Mobile app functionality depends on granted permissions; limited functionality if permissions denied"})]}),s.jsx("h2",{children:"7. Privacy and Data Security"}),s.jsx("p",{children:"Your privacy is important to us. Please review our Privacy Policy for details on how we handle your data. Key points:"}),s.jsxs("ul",{children:[s.jsx("li",{children:"Files are automatically deleted based on selected timeframe (up to 7 days)"}),s.jsx("li",{children:"We do not access or analyze your file contents"}),s.jsx("li",{children:"All transfers use secure encryption (TLS/SSL)"}),s.jsx("li",{children:"We collect minimal technical data for service operation"}),s.jsx("li",{children:"Mobile app permissions are used only for intended functionality"}),s.jsx("li",{children:"We only access files you explicitly select through the file picker"})]}),s.jsx("h2",{children:"8. Intellectual Property"}),s.jsx("p",{children:"The SendVault service, including its design, functionality, and underlying technology, is owned by us and protected by intellectual property laws. You retain ownership of any files you upload, but grant us a temporary license to store and deliver them through our Service during the sharing period."}),s.jsx("h2",{children:"9. Disclaimer of Warranties"}),s.jsx("p",{children:'THE SERVICE IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED. WE DISCLAIM ALL WARRANTIES INCLUDING BUT NOT LIMITED TO:'}),s.jsxs("ul",{children:[s.jsx("li",{children:"MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE"}
3534),s.jsx("li",{children:"UNINTERRUPTED OR ERROR-FREE OPERATION"}),s.jsx("li",{children:"SECURITY OR ACCURACY OF DATA TRANSMISSION"}),s.jsx("li",{children:"COMPATIBILITY WITH YOUR SYSTEMS OR DEVICES"})]}),s.jsx("h2",{children:"10. Limitation of Liability"}),s.jsx("p",{children:"TO THE MAXIMUM EXTENT PERMITTED BY LAW, WE SHALL NOT BE LIABLE FOR:"}),s.jsxs("ul",{children:[s.jsx("li",{children:"ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES"}),s.jsx("li",{children:"LOSS OF DATA, FILES, OR INFORMATION"}),s.jsx("li",{children:"BUSINESS INTERRUPTION OR LOST PROFITS"}),s.jsx("li",{children:"UNAUTHORIZED ACCESS TO OR ALTERATION OF YOUR FILES"}),s.jsx("li",{children:"TECHNICAL FAILURES OR SERVICE INTERRUPTIONS"})]}),s.jsx("p",{children:"Our total liability shall not exceed $100 USD or the amount you paid to use the Service, whichever is less."}),s.jsx("h2",{children:"11. Indemnification"}),s.jsx("p",{children:"You agree to indemnify and hold us harmless from any claims, damages, or expenses arising from:"}),s.jsxs("ul",{children:[s.jsx("li",{children:"Your use of the Service"}),s.jsx("li",{children:"Your violation of these Terms"}),s.jsx("li",{children:"Your violation of any law or third-party rights"}),s.jsx("li",{children:"Content you upload or share through the Service"})]}),s.jsx("h2",{children:"12. Termination"}),s.jsx("p",{children:"We may terminate or suspend your access to the Service immediately, without prior notice, if you violate these Terms. Upon termination, your right to use the Service ceases immediately. Due to the temporary nature of our Service (configurable file expiration), most content is automatically removed regardless of account status."}),s.jsx("h2",{children:"13. Governing Law"}),s.jsx("p",{children:"These Terms are governed by and construed in accordance with applicable laws. Any disputes arising from these Terms or the Service shall be resolved through binding arbitration or in courts of competent jurisdiction."}),s.jsx("h2",{children:"14. Severability"}),s.jsx("p",{children:"If any provision of these Terms is found to be invalid or unenforceable, the remaining provisions shall remain in full force and effect."}),s.jsx("h2",{children:"15. Contact Information"}),s.jsx("p",{children:"If you have questions about these Terms or need support, please contact us:"}),s.jsxs("p",{children:["Email: ",s.jsx("a",{href:"mailto:[email protected]",children:"[email protected]"})]}),s.jsxs("p",{children:["Website: ",s.jsx("a",{href:"https://sendvault.online",children:"sendvault.online"})]}),s.jsxs("p",{children:["Instagram: ",s.jsx("a",{href:"https://instagram.com/sendvault",target:"_blank",rel:"noopener noreferrer",children:"@sendvault"})]}),s.jsx("p",{children:s.jsx("em",{children:"By using SendVault, you acknowledge that you have read, understood, and agree to be bound by these Terms of Service."})})]})),_S=()=>(mn({title:"Privacy Policy. SendVault",description:"Privacy Policy for SendVault explaining how files, usage data, cookies, and tracking are handled.",canonical:"https://sendvault.online/privacy",ogType:"website"}),s.jsxs($r,{title:"Privacy Policy",subtitle:"Last updated: June 5, 2026",children:[s.jsx("h2",{children:"1. Introduction"}),s.jsx("p",{children:'Your privacy is important to us. This Privacy Policy explains how SendVault ("we", "us", or "our") collects, uses, and protects your information when you use our file sharing service available at sendvault.online (the "Service").'}),s.jsx("h2",{children:"2. Information We Collect"}),s.jsx("p",{children:"We follow a privacy-first approach and collect minimal information necessary to provide our Service:"}),s.jsxs("ul",{children:[s.jsxs("li",{children:[s.jsx("strong",{children:"Files:"})," The files you upload are temporarily stored on our secure servers. We do not access, scan, or analyze the content of your files. All files are automatically and permanently deleted after the selected timeframe (up to 7 days) or after the first download."]}),s.jsxs("li",{children:[s.jsx("strong",{children:"Share Codes:"})," We generate temporary 6-character codes that allow recipients to download your files. These codes expire based on the transfer settings and are permanently deleted from our database."]}),s.jsxs("li",{children:[s.jsx("strong",{children:"Technical Data:"})," We may collect minimal, non-personal technical information such as IP addresses (for security purposes), upload timestamps, and file sizes to ensure service functionality and prevent abuse."]}),s.jsxs("li",{children:[s.jsx("strong",{children:"Usage Analytics:"})," We may collect aggregated, anonymized data about service usage (such as number of transfers, data volume) to improve our service. This data cannot be used to identify individual users."]})]}),s.jsx("h2",{children:"3. How We Use Your Information"}),s.jsx("p",{children:"We use the information we collect solely to:"}),s.jsxs("ul",{children:[s.jsx("li",{children:"Provide and maintain the file sharing service"}),s.jsx("li",{children:"Generate and manage temporary share codes"}),s.jsx("li",{children:"Ensure the security and integrity of our systems"}),s.jsx("li",{children:"Prevent abuse and enforce our Terms of Service"}),s.jsx("li",{children:"Improve our service through anonymized usage statistics"})]}),s.jsx("h2",{children:"4. Data Security"}),s.jsx("p",{children:"We implement industry-standard security measures to protect your data:"}),s.jsxs("ul",{children:[s.jsx("li",{children:"All data transfers use TLS/SSL encryption"}),s.jsx("li",{children:"Files are stored on secure servers with restricted access"}),s.jsx("li",{children:"Share codes use cryptographically secure random generation"}),s.jsx("li",{children:"Regular security audits and monitoring"})]}),s.jsx("p",{children:"While we take reasonable measures to protect your information, no internet transmission is completely secure. Please consider this when sharing sensitive files."}),s.jsx("h2",{children:"5. Data Retention and Deletion"}),s.jsx("p",{children:"We maintain strict data retention policies:"}),s.jsxs("ul",{children:[s.jsxs("li",{children:[s.jsx("strong",{children:"Files:"})," Automatically deleted based on selected timeframe (up to 7 days) or after first download"]}),s.jsxs("li",{children:[s.jsx("strong",{children:"Share Codes:"})," Permanently deleted after expiration"]}),s.jsxs("li",{children:[s.jsx("strong",{children:"Technical Logs:"})," Retained for up to 30 days for security purposes, then automatically purged"]}),s.jsxs("li",{children:[s.jsx("strong",{children:"Usage Analytics:"})," Only anonymized, aggregated data may be retained for service improvement"]})]}),s.jsx("h2",{children:"6. Mobile App - Permissions and Data"}),s.jsx("h3",{children:"Android App Permissions"}),s.jsx("p",{children:"Our Android app requires specific permissions to function. We request these only when necessary:"}),s.jsx("h4",{children:"Storage & Media Access"}),s.jsxs("ul",{children:[s.jsxs("li",{children:[s.jsx("strong",{children:"Purpose:"})," To allow you to select files for upload and save downloaded files."]}),s.jsxs("li",{children:[s.jsx("strong",{children:"Android 12 and below:"})," READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE."]}),s.jsxs("li",{children:[s.jsx("strong",{children:"Android 13+:"})," READ_MEDIA_IMAGES, READ_MEDIA_VIDEO, READ_MEDIA_AUDIO."]}),s.jsxs("li",{children:[s.jsx("strong",{children:"Privacy:"})," We only access files you explicitly select via the system file picker. We do not scan your device."]})]}),s.jsx("h4",{children:"Managing Permissions"}),s.jsxs("p",{children:["You can manage these permissions in ",s.jsx("strong",{children:"Settings > Apps > SendVault > Permissions"})," at any time. Denying permissions will limit upload capabilities."]}),s.jsx("h3",{children:"Advertisement. Web (Google AdSense)"}),s.jsxs("p",{children:["To provide SendVault for free on the web, we display ads served by ",s.jsx("strong",{children:"Google AdSense"})," on pages with substantive content (such as the homepage, blog, and informational pages). Ads are ",s.jsx("strong",{children:"not"})," shown on file download utility pages."]}),s.jsx("h4",{children:"Data Collection by AdSense"}),s.jsx("p",{children:"Google AdSense may collect and process:"}),s.jsxs("ul",{children:[s.jsxs("li",{children:[s.jsx("strong",{children:"Cookies and device identifiers:"})," For ad delivery, frequency capping, and measurement."]}),s.jsxs("li",{children:[s.jsx("strong",{children:"Approximate location:"})," Based on IP address."]}),s.jsxs("li",{children:[s.jsx("strong",{children:"Page interaction data:"})," To measure ad performance."]})]}),s.jsxs("p",{children:["You can manage ad personalization via our cookie consent banner or through ",s.jsx("a",{href:"https://adssettings.google.com",target:"_blank",rel:"noopener noreferrer",children:"Google Ads Settings"}),". See the ",s.jsx("a",{href:"https://policies.google.com/privacy",target:"_blank",rel:"noopener noreferrer",children:"Google Privacy Policy"})," for details."]}),s.jsx("h3",{children:"Advertisement. Mobile App (Google AdMob)"}),s.jsxs("p",{children:["To provide SendVault for free on Android, our mobile app displays ads served by ",s.jsx("strong",{children:"Google AdMob"}),"."]}),s.jsx("h4",{children:"Data Collection by AdMob"}),s.jsx("p",{children:"Google AdMob may collect and process:"}),s.jsxs("ul",{children:[s.jsxs("li",{children:[s.jsx("strong",{children:"Device ID & Advertising ID:"})," For ad frequency capping and personalization."]}),s.jsxs("li",{children:[s.jsx("strong",{children:"Approximate Location:"})," Based on IP address."]}
3534),s.jsxs("li",{children:[s.jsx("strong",{children:"App Usage Data:"})," Interactions with ads and crash logs."]})]}),s.jsx("h4",{children:"Your Ad Choices"}),s.jsxs("p",{children:["You can opt-out of personalized advertising in your device settings under ",s.jsx("strong",{children:"Google > Ads"}),". SendVault currently does not show a Google User Messaging Platform (UMP) consent dialog in the Android app; all ads served in the app are non-personalized by default, which Google treats as equivalent to a denied consent signal. If we enable personalized ads in the future, we will surface a UMP consent dialog before any personalized ad is requested."]}),s.jsxs("p",{children:["For more details, please review the ",s.jsx("a",{href:"https://policies.google.com/privacy",target:"_blank",rel:"noopener noreferrer",children:"Google Privacy Policy"}),"."]}),s.jsx("h2",{children:"7. Third-Party Services"}),s.jsx("p",{children:"Our Service uses Supabase for secure data storage and management. Supabase maintains their own privacy practices, which you can review at their privacy policy. We do not share your personal information with any other third parties beyond those mentioned in the Advertising sections above (Google AdSense on web, Google AdMob on mobile)."}),s.jsx("h2",{children:"8. Cookies and Tracking Technologies"}),s.jsx("h3",{children:"What Are Cookies?"}),s.jsx("p",{children:"Cookies are small text files stored on your device that help websites and apps remember information about your visit. SendVault and our partners use cookies and similar tracking technologies."}),s.jsx("h4",{children:"Cookies We Use"}),s.jsx("h5",{children:"Essential Cookies (Always Active)"}),s.jsx("p",{children:"These cookies are necessary for the Service to function and cannot be disabled:"}),s.jsxs("ul",{children:[s.jsxs("li",{children:[s.jsx("strong",{children:"localStorage:"})," Stores essential data like upload count (for rating banner), dismissed banners, app state, and cookie consent preference"]}),s.jsxs("li",{children:[s.jsx("strong",{children:"Session data:"})," Temporarily stores share codes and transfer information during active sessions"]})]}),s.jsxs("ul",{children:[s.jsxs("li",{children:[s.jsx("strong",{children:"Purpose:"})," Enable core functionality, remember your preferences, maintain app state"]}),s.jsxs("li",{children:[s.jsx("strong",{children:"Duration:"})," Varies - some persist until manually cleared, others expire when you close the app/browser"]})]}),s.jsx("h5",{children:"Advertising Cookies (Web & Android. Requires Consent)"}),s.jsx("p",{children:"When you accept cookies on the website or Android app, Google AdSense (web) and Google AdMob (mobile) may use cookies and tracking technologies:"}),s.jsxs("ul",{children:[s.jsxs("li",{children:[s.jsx("strong",{children:"Google Advertising ID (GAID):"})," Unique identifier for ad targeting and personalization"]}),s.jsxs("li",{children:[s.jsx("strong",{children:"Ad cookies:"})," Track ad views, clicks, and conversions"]}),s.jsxs("li",{children:[s.jsx("strong",{children:"Analytics cookies:"})," Measure ad performance and user engagement"]}),s.jsxs("li",{children:[s.jsx("strong",{children:"Third-party advertiser cookies:"})," Used by advertisers to show relevant ads"]})]}),s.jsxs("ul",{children:[s.jsxs("li",{children:[s.jsx("strong",{children:"Purpose:"})," Deliver personalized ads, measure ad effectiveness, improve ad targeting"]}),s.jsxs("li",{children:[s.jsx("strong",{children:"Who sets them:"})," Google AdMob and third-party advertisers"]}),s.jsxs("li",{children:[s.jsx("strong",{children:"Duration:"})," Varies by advertiser (typically 30-90 days, some up to 2 years)"]}),s.jsxs("li",{children:[s.jsx("strong",{children:"Your control:"})," You can opt out of personalized ads in your device settings (Settings → Google → Ads)"]})]}),s.jsx("h3",{children:"Cookie Consent and Your Choices"}),s.jsx("h4",{children:"Managing Cookie Preferences"}),s.jsx("p",{children:"When you first visit SendVault, we'll ask for your consent to use non-essential cookies. You can:"}),s.jsxs("ul",{children:[s.jsxs("li",{children:[s.jsx("strong",{children:"Accept All:"}
3534)," Allow essential and non-essential cookies (ads, tracking)"]}),s.jsxs("li",{children:[s.jsx("strong",{children:"Reject Non-Essential:"})," Only use essential cookies (core functionality only - no ads tracking)"]})]}),s.jsx("p",{children:"Your choice is saved in localStorage and applied across all your visits. If you reject non-essential cookies, web analytics events are suppressed. The Android app serves non-personalized ads regardless of this preference (see the Mobile App section above)."}),s.jsx("h4",{children:"Changing Your Consent"}),s.jsx("p",{children:"You can change your cookie preferences at any time by:"}),s.jsxs("ul",{children:[s.jsx("li",{children:"Clearing your browser/app data to reset consent and see the banner again"}),s.jsx("li",{children:"Disabling specific tracking in your device settings"})]}),s.jsx("h4",{children:"Browser Cookie Controls"}),s.jsx("p",{children:"Most browsers allow you to control cookies through settings:"}),s.jsxs("ul",{children:[s.jsxs("li",{children:[s.jsx("strong",{children:"Chrome:"})," Settings → Privacy and security → Cookies and site data"]}),s.jsxs("li",{children:[s.jsx("strong",{children:"Firefox:"})," Settings → Privacy & Security → Cookies and Site Data"]}),s.jsxs("li",{children:[s.jsx("strong",{children:"Safari:"})," Preferences → Privacy → Cookies and website data"]}),s.jsxs("li",{children:[s.jsx("strong",{children:"Edge:"})," Settings → Cookies and site permissions"]})]}),s.jsxs("p",{children:[s.jsx("strong",{children:"Note:"})," Blocking all cookies may prevent the Service from functioning properly."]}),s.jsx("h4",{children:"Mobile App Tracking Controls (Android)"}),s.jsx("p",{children:"For the Android app, you can control tracking:"}),s.jsxs("ol",{children:[s.jsxs("li",{children:["Open device ",s.jsx("strong",{children:"Settings"})]}),s.jsxs("li",{children:["Go to ",s.jsx("strong",{children:"Google"})," → ",s.jsx("strong",{children:"Ads"})]}),s.jsxs("li",{children:["Toggle ",s.jsx("strong",{children:'"Opt out of Ads Personalization"'})]}),s.jsxs("li",{children:["Or tap ",s.jsx("strong",{children:'"Reset advertising ID"'})," to get a new identifier"]})]}),s.jsx("p",{children:"You can also disable ad tracking entirely in device privacy settings (varies by Android version)."}),s.jsx("h4",{children:"Third-Party Cookies"}),s.jsx("p",{children:"Some cookies are set by third parties when you use our Service (only if you accept cookies):"}),s.jsxs("ul",{children:[s.jsxs("li",{children:[s.jsx("strong",{children:"Google AdSense:"})," Web advertising and measurement (requires consent)"]}),s.jsxs("li",{children:[s.jsx("strong",{children:"Google AdMob:"})," Mobile advertising, analytics, personalization (requires consent)"]}),s.jsxs("li",{children:[s.jsx("strong",{children:"Supabase:"})," Database authentication and session management"]})]}),s.jsx("p",{children:"We do not control these third-party cookies. Please review their privacy policies:"}),s.jsxs("ul",{children:[s.jsx("li",{children:s.jsx("a",{href:"https://policies.google.com/technologies/cookies",target:"_blank",rel:"noopener noreferrer",children:"Google Cookies Policy"})}),s.jsx("li",{children:s.jsx("a",{href:"https://policies.google.com/technologies/partner-sites",target:"_blank",rel:"noopener noreferrer",children:"Google Partner Sites"})})]}),s.jsx("h4",{children:"Do Not Track (DNT)"}),s.jsx("p",{children:'Some browsers have a "Do Not Track" (DNT) feature. Currently, there is no industry standard for honoring DNT signals. We respect your privacy choices through our cookie consent mechanism rather than DNT signals.'}),s.jsx("h4",{children:"International Data Transfers"}),s.jsx("p",{children:"Cookies and tracking data may be processed in countries outside your jurisdiction, including the United States. By using our Service, you consent to this transfer and processing in accordance with this Privacy Policy and applicable laws (such as GDPR for EU users)."}),s.jsx("h2",{children:"9. Your Rights"}),s.jsx("p",{children:"You have the right to:"}),s.jsxs("ul",{children:[s.jsx("li",{children:"Know what information we collect about you"}
3534),s.jsx("li",{children:"Request deletion of your data (amount of time stored depends on transfer expiration timeframe)"}),s.jsx("li",{children:"Opt-out of any future communications"}),s.jsx("li",{children:"Control app permissions on your device"}),s.jsx("li",{children:"Revoke storage permissions at any time through device settings"}),s.jsx("li",{children:s.jsx("strong",{children:"Manage cookie preferences and withdraw consent at any time"})}),s.jsx("li",{children:s.jsx("strong",{children:"Opt out of personalized advertising"})}),s.jsx("li",{children:s.jsx("strong",{children:"Request information about cookies and tracking used"})}),s.jsx("li",{children:"Contact us with privacy-related questions or concerns"})]}),s.jsx("h2",{children:"10. Children's Privacy"}),s.jsx("p",{children:"Our Service is not directed to children under 13. We do not knowingly collect personal information from children under 13. If we become aware that a child under 13 has provided us with personal information, we will delete it immediately. Our Android app with advertisements is intended for users 13 years and older."}),s.jsx("h2",{children:"11. International Users"}),s.jsx("p",{children:"By using our Service, users from outside the jurisdiction where our servers are located consent to the transfer and processing of their information in accordance with this Privacy Policy."}),s.jsx("h2",{children:"12. Changes to This Policy"}),s.jsx("p",{children:'We may update this Privacy Policy from time to time. We will notify users of any material changes by posting the updated policy on this page with a new "Last updated" date. Continued use of the Service after changes indicates acceptance of the updated policy.'}),s.jsx("h2",{children:"13. Contact Us"}),s.jsx("p",{children:"If you have any questions, concerns, or requests regarding this Privacy Policy or your data, please contact us at:"}),s.jsxs("p",{children:["Email: ",s.jsx("a",{href:"mailto:[email protected]",children:"[email protected]"})]}),s.jsxs("p",{children:["Website: ",s.jsx("a",{href:"https://sendvault.online",children:"sendvault.online"})]}),s.jsxs("p",{children:["Instagram: ",s.jsx("a",{href:"https://instagram.com/sendvault",target:"_blank",rel:"noopener noreferrer",children:"@sendvault"})]})]}));function MS(n,r){window.dispatchEvent(new CustomEvent("setpage",{detail:{page:n,hash:""}}))}function Au(n,r,o){n.preventDefault(),MS(r)}function Cu(n,r){return ph(n,r)}const RS=n=>s.jsx(ch,{...n}),zS=n=>s.jsx(A0,{...n}),BS=[{page:"home",label:"Send a File"},{page:"how-it-works",label:"How It Works"},{page:"blog",label:"Blog"},{page:"contact",label:"Contact Support"}],LS=()=>(mn({title:"Page Not Found. SendVault",description:"The page you requested does not exist. Return to SendVault to share files securely.",noindex:!0}),s.jsx("div",{className:"page-wrapper",style:{minHeight:"60vh",display:"flex",flexDirection:"column"},children:s.jsx("div",{className:"main-content",style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",padding:"2rem"},children:s.jsxs("div",{style:{textAlign:"center",maxWidth:"520px"},children:[s.jsx("div",{style:{width:80,height:80,background:"color-mix(in srgb, var(--brand) 10%, transparent)",borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",margin:"0 auto 1.5rem",color:"var(--brand)"},children:s.jsx(RS,{size:40,strokeWidth:1.5})}),s.jsx("h1",{style:{fontSize:"2rem",fontWeight:800,marginBottom:"0.75rem"},children:"Page Not Found"}),s.jsx("p",{style:{color:"var(--fg-muted)",fontSize:"1.05rem",marginBottom:"1.5rem",lineHeight:1.6},children:"The page you're looking for doesn't exist or may have been moved. SendVault is a free file sharing service. Upload files up to 1 GB and share them with a simple 6-character code."}),s.jsx("nav",{style:{display:"flex",flexWrap:"wrap",gap:"0.75rem",justifyContent:"center",marginBottom:"2rem"},children:BS.map(n=>s.jsx("a",{href:Cu(n.page),onClick:r=>Au(r,n.page),style:{color:"var(--fg-muted)",fontSize:"0.875rem",textDecoration:"none",padding:"0.4rem 0.75rem",border:"1px solid var(--border)",borderRadius:"0.5rem"},children:n.label},n.page))}),s.jsxs("a",{href:Cu("home"),onClick:n=>Au(n,"home"),style:{display:"inline-flex",alignItems:"center",gap:"0.5rem",background:"var(--brand)",color:"var(--bg)",padding:"0.8rem 1.5rem",borderRadius:"0.75rem",textDecoration:"none",fontWeight:600},children:[s.jsx(zS,{size:18}),"Back to Home"]})]})})})),Ry="[email protected]",OS=[{accent:"#A3E635",icon:s.jsx(al,{size:36}),title:"Email Us",body:"The best way to reach us. Whether it's a bug, a billing question, or a feature idea — we read every email.",action:{label:Ry,href:`mailto:${Ry}`}},{accent:"#818cf8",icon:s.jsx(Tn,{size:36}),title:"Response Time",body:"We typically reply within one business day. Complex issues may take up to 48 hours, but we'll always acknowledge receipt.",action:null},{accent:"#f87171",icon:s.jsx(Yi,{size:36}),title:"Privacy Guaranteed",body:"Any information you share with us is used solely to resolve your query. We never share your data with third parties.",action:null}],NS=()=>{const n=xo("/contact")||{title:"Contact Us | SendVault",description:"Get in touch with the SendVault team.",keywords:""};
3534return mn({title:n.title,description:n.description,canonical:bo("/contact"),ogType:"website",keywords:n.keywords}),s.jsxs($r,{title:"We'd Love To Hear",subtitle:"Get In Touch With Us",contentMaxWidth:"1100px",children:[s.jsx("style",{children:`
3535                .contact-grid {
3536                    display: grid;
3537                    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
3538                    gap: 28px;
3539                    margin-top: -60px;
3540                    position: relative;
3541                    z-index: 10;
3542                    padding-bottom: 20px;
3543                }
3544
3545                .contact-card {
3546                    background: #ffffff;
3547                    border-radius: 32px;
3548                    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.04);
3549                    border: 1px solid rgba(0, 0, 0, 0.05);
3550                    padding: 44px 36px;
3551                    display: flex;
3552                    flex-direction: column;
3553                    transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.4s cubic-bezier(0.16, 1, 0.3, 1);
3554                }
3555
3556                .contact-card:hover {
3557                    transform: translateY(-6px);
3558                    box-shadow: 0 24px 56px rgba(0, 0, 0, 0.08);
3559                    border-color: rgba(0, 0, 0, 0.08);
3560                }
3561
3562                .contact-icon-wrapper {
3563                    width: 72px;
3564                    height: 72px;
3565                    border-radius: 50%;
3566                    display: flex;
3567                    align-items: center;
3568                    justify-content: center;
3569                    margin-bottom: 28px;
3570                    position: relative;
3571                    overflow: hidden;
3572                    flex-shrink: 0;
3573                }
3574
3575                .contact-card h3 {
3576                    font-size: 24px;
3577                    font-weight: 700;
3578                    color: #111111;
3579                    margin: 0 0 14px 0;
3580                    letter-spacing: -0.7px;
3581                }
3582
3583                .contact-card p {
3584                    font-size: 16px;
3585                    color: rgba(17,17,17,0.65);
3586                    line-height: 1.65;
3587                    margin: 0;
3588                    flex: 1;
3589                }
3590
3591                .contact-email-link {
3592                    display: inline-flex;
3593                    align-items: center;
3594                    gap: 8px;
3595                    margin-top: 24px;
3596                    padding: 12px 20px;
3597                    border-radius: 100px;
3598                    background: #111111;
3599                    color: #ffffff !important;
3600                    font-size: 15px;
3601                    font-weight: 600;
3602                    text-decoration: none !important;
3603                    transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.3s ease;
3604                    align-self: flex-start;
3605                }
3606
3607                .contact-email-link:hover {
3608                    transform: translateY(-2px);
3609                    box-shadow: 0 12px 32px rgba(0,0,0,0.18);
3610                }
3611
3612                .contact-copy-btn {
3613                    display: inline-flex;
3614                    align-items: center;
3615                    gap: 6px;
3616                    margin-top: 10px;
3617                    padding: 8px 14px;
3618                    border-radius: 100px;
3619                    background: transparent;
3620                    border: 1px solid rgba(0,0,0,0.12);
3621                    color: rgba(17,17,17,0.6);
3622                    font-size: 13px;
3623                    font-weight: 500;
3624                    cursor: pointer;
3625                    transition: all 0.2s;
3626                    align-self: flex-start;
3627                }
3628
3629                .contact-copy-btn:hover {
3630                    background: rgba(0,0,0,0.04);
3631                    color: #111;
3632                }
3633
3634                .contact-reassurance {
3635                    display: flex;
3636                    justify-content: center;
3637                    gap: 36px;
3638                    padding: 32px 0 48px 0;
3639                    flex-wrap: wrap;
3640                }
3641
3642                .contact-reassurance-item {
3643                    display: flex;
3644                    align-items: center;
3645                    gap: 8px;
3646                    font-size: 14px;
3647                    font-weight: 500;
3648                    color: rgba(17,17,17,0.55);
3649                }
3650
3651                @media (max-width: 900px) {
3652                    .contact-grid {
3653                        grid-template-columns: 1fr;
3654                        margin-top: -30px;
3655                    }
3656                    .contact-card {
3657                        padding: 36px 28px;
3658                    }
3659                    .contact-reassurance {
3660                        gap: 20px;
3661                    }
3662                }
3663            `}),s.jsx("div",{className:"contact-grid",children:OS.map((r,o)=>s.jsxs(ke.div,{className:"contact-card",initial:{opacity:0,y:30}
3663,animate:{opacity:1,y:0},transition:{duration:.5,delay:o*.1,ease:[.16,1,.3,1]},children:[s.jsxs("div",{className:"contact-icon-wrapper",style:{background:`${r.accent}18`,border:`1px solid ${r.accent}30`,color:r.accent,boxShadow:`0 8px 24px ${r.accent}20`},children:[s.jsx("div",{style:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",width:"140%",height:"140%",background:`radial-gradient(circle at center, ${r.accent}20 0%, transparent 60%)`,pointerEvents:"none"}}),r.icon]}),s.jsx("h2",{children:r.title}),s.jsx("p",{children:r.body}),r.action&&s.jsxs("a",{href:r.action.href,className:"contact-email-link",children:[s.jsx(al,{size:16}),r.action.label]})]},o))}),s.jsx(ke.div,{className:"contact-reassurance",initial:{opacity:0},animate:{opacity:1},transition:{duration:.6,delay:.4},children:[{icon:s.jsx(rl,{size:16}),text:"No account required"},{icon:s.jsx(Yi,{size:16}),text:"Your data stays private"},{icon:s.jsx(Tn,{size:16}),text:"Reply within 24 hours"}].map((r,o)=>s.jsxs("div",{className:"contact-reassurance-item",children:[s.jsx("span",{style:{color:"#A3E635"},children:r.icon}),r.text]},o))})]})},PS=[{accent:"#A3E635",num:"01"},{accent:"#818cf8",num:"02"},{accent:"#f87171",num:"03"}],US=[{icon:s.jsx(uh,{size:40}),title:"Upload Your Files",description:"Drag and drop or browse to select any files up to 1 GB. No account, no app, no compression — your files stay exactly as they are.",bullets:[{icon:s.jsx(Gs,{size:17}),text:"Set an optional password"},{icon:s.jsx(Tn,{size:17}
3663),text:"Choose expiry (1hr to 7 days)"},{icon:s.jsx(Yi,{size:17}),text:"Uploaded over HTTPS encryption"}]},{icon:s.jsx(S0,{size:40}),title:"Get a 6-Digit Code",description:"Once your upload is complete, SendVault generates a unique 6-character code. Simple to remember, simple to share — no long links.",bullets:[{icon:s.jsx(Yi,{size:17}),text:"Unique code for every transfer"},{icon:s.jsx(Gs,{size:17}),text:"Burn-after-download option"},{icon:s.jsx(Tn,{size:17}),text:"Code expires automatically"}]},{icon:s.jsx(yo,{size:40}),title:"Recipient Downloads",description:"Your recipient visits SendVault, enters the code, and downloads instantly. No registration, no waiting, no friction whatsoever.",bullets:[{icon:s.jsx(Yi,{size:17}),text:"Works on any browser or device"},{icon:s.jsx(Tn,{size:17}),text:"Instant, full-speed download"},{icon:s.jsx(Gs,{size:17}),text:"Original quality guaranteed"}]}],IS=()=>{const n=xo("/how-it-works")||{title:"How It Works | SendVault",description:"Learn how SendVault makes secure file sharing effortlessly simple in just 3 steps. Upload, get a code, and download instantly.",keywords:"how sendvault works, secure file sharing steps, simple file transfer, 6-digit code file sharing"};return mn({title:n.title,description:n.description,canonical:bo("/how-it-works"),ogType:"website",keywords:n.keywords}),s.jsxs($r,{title:"Dead Simple",subtitle:"How SendVault Works in 3 Steps",contentMaxWidth:"1200px",children:[s.jsx("style",{children:`
3664                .hiw-grid {
3665                    display: grid;
3666                    grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
3667                    gap: 32px;
3668                    margin-top: -60px;
3669                    position: relative;
3670                    z-index: 10;
3671                    padding-bottom: 48px;
3672                }
3673
3674                .hiw-card {
3675                    background: #ffffff;
3676                    border-radius: 32px;
3677                    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.04);
3678                    border: 1px solid rgba(0, 0, 0, 0.05);
3679                    padding: 48px 40px;
3680                    display: flex;
3681                    flex-direction: column;
3682                    position: relative;
3683                    overflow: hidden;
3684                    transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.4s cubic-bezier(0.16, 1, 0.3, 1);
3685                }
3686
3687                .hiw-card:hover {
3688                    transform: translateY(-8px);
3689                    box-shadow: 0 24px 56px rgba(0, 0, 0, 0.08);
3690                    border-color: rgba(0, 0, 0, 0.08);
3691                }
3692
3693                .hiw-step-num {
3694                    position: absolute;
3695                    top: -16px;
3696                    right: 28px;
3697                    font-size: 120px;
3698                    font-weight: 800;
3699                    line-height: 1;
3700                    letter-spacing: -6px;
3701                    pointer-events: none;
3702                    user-select: none;
3703                    opacity: 0.06;
3704                }
3705
3706                .hiw-icon-wrapper {
3707                    width: 72px;
3708                    height: 72px;
3709                    border-radius: 50%;
3710                    display: flex;
3711                    align-items: center;
3712                    justify-content: center;
3713                    margin-bottom: 32px;
3714                    position: relative;
3715                    overflow: hidden;
3716                    flex-shrink: 0;
3717                }
3718
3719                .hiw-card h3 {
3720                    font-size: 26px;
3721                    font-weight: 700;
3722                    color: #111111;
3723                    margin: 0 0 16px 0;
3724                    letter-spacing: -0.8px;
3725                    position: relative;
3726                    z-index: 1;
3727                }
3728
3729                .hiw-card > p {
3730                    font-size: 17px;
3731                    color: rgba(17,17,17,0.65);
3732                    line-height: 1.6;
3733                    margin: 0 0 32px 0;
3734                    position: relative;
3735                    z-index: 1;
3736                }
3737
3738                .hiw-bullets {
3739                    list-style: none;
3740                    padding: 0 !important;
3741                    margin: 0 !important;
3742                    padding-left: 0 !important;
3743                    margin-left: 0 !important;
3744                    display: flex;
3745                    flex-direction: column;
3746                    gap: 12px;
3747                    margin-top: auto !important;
3748                    position: relative;
3749                    z-index: 1;
3750                }
3751
3752                .hiw-bullets li {
3753                    display: flex;
3754                    align-items: center;
3755                    gap: 12px;
3756                    font-size: 15px;
3757                    font-weight: 500;
3758                    color: #111111;
3759                    margin: 0;
3760                    padding: 0;
3761                }
3762
3763                .hiw-cta-wrapper {
3764                    display: flex;
3765                    justify-content: center;
3766                    padding: 16px 0 40px 0;
3767                }
3768
3769                .hiw-cta-btn {
3770                    display: inline-flex;
3771                    align-items: center;
3772                    gap: 10px;
3773                    padding: 16px 40px;
3774                    background: #111111;
3775                    color: #ffffff;
3776                    border: none;
3777                    border-radius: 100px;
3778                    font-size: 17px;
3779                    font-weight: 600;
3780                    letter-spacing: -0.3px;
3781                    cursor: pointer;
3782                    transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.3s ease, background 0.2s;
3783                    text-decoration: none;
3784                }
3785
3786                .hiw-cta-btn:hover {
3787                    transform: translateY(-3px);
3788                    box-shadow: 0 16px 40px rgba(0, 0, 0, 0.18);
3789                    background: #222222;
3790                }
3791
3792                @media (max-width: 900px) {
3793                    .hiw-grid {
3794                        grid-template-columns: 1fr;
3795                        margin-top: -30px;
3796                    }
3797                    .hiw-card {
3798                        padding: 36px 28px;
3799                    }
3800                    .hiw-step-num {
3801                        font-size: 90px;
3802                        right: 20px;
3803                        top: -10px;
3804                    }
3805                }
3806            `}),s.jsx("div",{className:"hiw-grid",children:US.map((r,o)=>{const l=PS[o];return s.jsxs(ke.div,{className:"hiw-card",initial:{opacity:0,y:30}
3806,animate:{opacity:1,y:0},transition:{duration:.5,delay:o*.1,ease:[.16,1,.3,1]},children:[s.jsx("div",{className:"hiw-step-num",style:{color:l.accent},children:l.num}),s.jsxs("div",{className:"hiw-icon-wrapper",style:{background:`${l.accent}18`,border:`1px solid ${l.accent}30`,color:l.accent,boxShadow:`0 8px 24px ${l.accent}20`},children:[s.jsx("div",{style:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",width:"140%",height:"140%",background:`radial-gradient(circle at center, ${l.accent}20 0%, transparent 60%)`,pointerEvents:"none"}}),r.icon]}),s.jsx("h2",{children:r.title}),s.jsx("p",{children:r.description}),s.jsx("ul",{className:"hiw-bullets",children:r.bullets.map((d,p)=>s.jsxs("li",{children:[s.jsx("span",{style:{color:l.accent,display:"flex",flexShrink:0},children:d.icon}),s.jsx("span",{children:d.text})]},p))})]},o)})}),s.jsx("div",{className:"hiw-cta-wrapper",children:s.jsxs(ke.a,{href:"/",className:"hiw-cta-btn",initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.5,delay:.4},children:["Try it now — it's completely free",s.jsx(uh,{size:20})]})})]})},Qa=xo("/about")||{title:"About SendVault | Secure File Sharing",description:"Learn why we built SendVault, our privacy principles, and how we make secure file sharing simple and accessible for everyone.",keywords:["about sendvault","file sharing company","privacy focused transfer","secure sharing mission"]},VS=()=>{const[n,r]=V.useState(!1);return mn({title:Qa.title,description:Qa.description,canonical:bo("/about"),ogType:"website",keywords:Array.isArray(Qa.keywords)?Qa.keywords.join(", "):Qa.keywords}),s.jsxs("div",{className:"home-wrapper",style:{minHeight:"100vh",position:"relative",backgroundImage:"linear-gradient(to bottom, transparent 50%, rgba(0, 0, 0, 0.8)), url(/bg-image.webp)",backgroundSize:"cover",backgroundPosition:"center 0%",backgroundRepeat:"no-repeat"},children:[s.jsx("style",{children:`
3807                @media (max-width: 900px) {
3808                    .home-main {
3809                        flex-direction: column !important;
3810                        align-items: center !important;
3811                        padding-top: 80px !important;
3812                        padding-bottom: 80px !important;
3813                    }
3814                    .home-left {
3815                        padding: 40px 16px 24px 16px !important;
3816                        align-items: center !important;
3817                        text-align: center !important;
3818                        max-width: 100% !important;
3819                    }
3820                    .home-title {
3821                        font-size: 36px !important;
3822                        margin-bottom: 12px !important;
3823                    }
3824                    .home-subtitle {
3825                        font-size: 16px !important;
3826                        line-height: 1.4 !important;
3827                    }
3828                    .home-title span {
3829                        white-space: normal !important;
3830                    }
3831                    .home-header {
3832                        padding: 0 24px !important;
3833                        position: absolute !important;
3834                    }
3835                    .home-nav-links {
3836                        display: none !important;
3837                    }
3838                    .home-wrapper {
3839                        background-position: center top !important;
3840                        background-image: linear-gradient(to bottom, rgba(0,0,0,0.2) 0%, rgba(0,0,0,0.8) 100%), url(/bg-image.webp) !important;
3841                    }
3842                    .home-footer-links {
3843                        left: 50% !important;
3844                        transform: translateX(-50%) !important;
3845                        bottom: 16px !important;
3846                        width: 100% !important;
3847                        justify-content: center !important;
3848                    }
3849                }
3850                @media (max-width: 480px) {
3851                    .home-title {
3852                        font-size: 32px !important;
3853                    }
3854                }
3855            `}),s.jsxs("header",{className:"home-header",style:{position:"fixed",top:0,left:0,right:0,height:"76px",display:"flex",alignItems:"center",justifyContent:"space-between",padding:"0 48px",background:"transparent",zIndex:100,fontSize:"15px",fontWeight:400,color:"#ffffff"},children:[s.jsx("div",{style:{display:"flex",alignItems:"center",flex:1},children:s.jsx("div",{style:{display:"flex",alignItems:"center",fontSize:"20px",fontWeight:600,letterSpacing:"-0.5px",transform:"scale(0.9)",transformOrigin:"left center",color:"#ffffff"},children:s.jsx(Xi,{})})}),s.jsxs("div",{style:{display:"flex",gap:"32px",alignItems:"center",justifyContent:"flex-end",flex:1},children:[s.jsxs("nav",{className:"home-nav-links",style:{display:"flex",gap:"32px",alignItems:"center"},children:[s.jsx("a",{href:"/",style:{textDecoration:"none",color:"inherit",transition:"opacity 0.2s"},onMouseEnter:o=>o.currentTarget.style.opacity="0.7",onMouseLeave:o=>o.currentTarget.style.opacity="1",children:"Home"}),s.jsx("a",{href:"/about",style:{textDecoration:"none",color:"inherit",opacity:.7},children:"About"}),s.jsx("a",{href:"/wetransfer-alternative",style:{textDecoration:"none",color:"inherit",transition:"opacity 0.2s"},onMouseEnter:o=>o.currentTarget.style.opacity="0.7",onMouseLeave:o=>o.currentTarget.style.opacity="1",children:"Alternative"}),s.jsx("a",{href:"/blog",style:{textDecoration:"none",color:"inherit",transition:"opacity 0.2s"},onMouseEnter:o=>o.currentTarget.style.opacity="0.7",onMouseLeave:o=>o.currentTarget.style.opacity="1",children:"Blog"})]}),s.jsxs("div",{style:{position:"relative"},onMouseEnter:()=>r(!0),onMouseLeave:()=>r(!1),children:[s.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px",cursor:"pointer",transition:"opacity 0.2s",o
3855pacity:n?.7:1},children:["Use Cases",s.jsx(ke.div,{animate:{rotate:n?180:0},transition:{duration:.2},children:s.jsx(Yr,{size:16,strokeWidth:2.5})})]}),s.jsx(an,{children:n&&s.jsxs(ke.div,{initial:{opacity:0,y:10,scale:.95},animate:{opacity:1,y:0,scale:1},exit:{opacity:0,y:10,scale:.95},transition:{duration:.2},style:{position:"absolute",top:"calc(100% + 20px)",left:"50%",x:"-50%",background:"rgba(255, 255, 255, 0.9)",backdropFilter:"blur(16px)",borderRadius:"12px",padding:"12px",display:"flex",flexDirection:"column",gap:"4px",minWidth:"180px",boxShadow:"0 8px 32px rgba(0,0,0,0.1)",border:"1px solid rgba(0,0,0,0.05)"},children:[s.jsx("a",{href:"/usecases#use-case-creatives",style:{textDecoration:"none",color:"#111",padding:"10px 14px",borderRadius:"8px",transition:"background 0.2s",fontSize:"14px",fontWeight:500},onMouseEnter:o=>o.currentTarget.style.background="rgba(0,0,0,0.05)",onMouseLeave:o=>o.currentTarget.style.background="transparent",children:"For Creatives"}),s.jsx("a",{href:"/usecases#use-case-teams",style:{textDecoration:"none",color:"#111",padding:"10px 14px",borderRadius:"8px",transition:"background 0.2s",fontSize:"14px",fontWeight:500},onMouseEnter:o=>o.currentTarget.style.background="rgba(0,0,0,0.05)",onMouseLeave:o=>o.currentTarget.style.background="transparent",children:"For Teams"}),s.jsx("a",{href:"/usecases#use-case-personal",style:{textDecoration:"none",color:"#111",padding:"10px 14px",borderRadius:"8px",transition:"background 0.2s",fontSize:"14px",fontWeight:500},onMouseEnter:o=>o.currentTarget.style.background="rgba(0,0,0,0.05)",onMouseLeave:o=>o.currentTarget.style.background="transparent",children:"Personal Use"})]})})]})]})]}),s.jsx("main",{className:"home-main",style:{paddingTop:"100px",paddingBottom:"100px",paddingLeft:"24px",paddingRight:"24px",minHeight:"100vh",boxSizing:"border-box",display:"flex",alignItems:"center",justifyContent:"center"},children:s.jsxs("div",{className:"home-left",style:{display:"flex",flexDirection:"column",justifyContent:"center",padding:"40px 64px",color:"#ffffff",maxWidth:"800px"},children:[s.jsxs(ke.h1,{className:"home-title",initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.8,ease:"easeOut"},style:{fontSize:"54px",fontWeight:700,letterSpacing:"-1.5px",margin:"0 0 24px 0",lineHeight:1.1},children:["About ",s.jsx("span",{style:{color:"#ffffff"},children:"SendVault"})]}),s.jsxs(ke.p,{className:"home-subtitle",initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.8,delay:.1,ease:"easeOut"},style:{fontSize:"20px",fontWeight:400,opacity:.85,lineHeight:1.6,margin:"0 0 32px 0"},children:["Everyone hits the same wall: email caps at 25 MB, chat apps compress your media, and cloud storage means accounts, permissions, and waiting. We wanted something faster. ",s.jsx("br",{}),s.jsx("br",{}),"SendVault's unique feature is transferring through a simple 6-character CODE. Upload your file from the home page, instantly get a code, and enter it on any other device to securely download your file. No registration required, zero compression, and lightning-fast cross-device transfers."]}),s.jsx(ke.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.8,delay:.2,ease:"easeOut"},children:s.jsx("a",{href:"/",style:{display:"inline-flex",alignItems:"center",padding:"16px 32px",background:"#e3f3cf",color:"#111111",borderRadius:"32px",fontSize:"16px",fontWeight:600,textDecoration:"none",transition:"opacity 0.2s"},onMouseEnter:o=>o.currentTarget.style.opacity="0.9",onMouseLeave:o=>o.currentTarget.style.opacity="1",children:"Start Sharing"})})]})}),s.jsxs("div",{className:"home-footer-links",style:{position:"absolute",bottom:"24px",left:"48px",display:"flex",gap:"16px",fontSize:"13px",color:"#ffffff",fontWeight:400,opacity:.9},children:[s.jsxs("a",{href:"/privacy",style:{textDecoration:"none",color:"inherit",transition:"opacity 0.2s",display:"flex",alignItems:"center",gap:"2px"},onMouseEnter:o=>o.currentTarget.style.opacity="0.6",onMouseLeave:o=>o.currentTarget.style.opacity="1",children:["Privacy ",s.jsx(Sn,{size:12,strokeWidth:2.5})]}),s.jsxs("a",{href:"/terms",style:{textDecoration:"none",color:"inherit",transition:"opacity 0.2s",display:"flex",alignItems:"center",gap:"2px"},onMouseEnter:o=>o.currentTarget.style.opacity="0.6",onMouseLeave:o=>o.currentTarget.style.opacity="1",children:["Terms ",s.jsx(Sn,{size:12,strokeWidth:2.5})]}),s.jsx("a",{href:vo,target:"_blank",rel:"noopener noreferrer",style:{textDecoration:"none",color:"inherit",transition:"opacity 0.2s",display:"flex",alignItems:"center",gap:"6px",marginLeft:"8px"},onMouseEnter:o=>o.currentTarget.style.opacity="0.6",onMouseLeave:o=>o.currentTarget.style.opacity="1",children:s.jsxs("span",{style:{display:"flex",alignItems:"center",gap:"2px"},children:["Get Android App ",s.jsx(Sn,{size:12,strokeWidth:2.5})]})})]})]})},FS=({subtitle:n,title:r})=>s.jsxs("div",{className:"page-header",children:[s.jsx("p",{className:"page-subtitle",children:n}),s.jsx("h1",{className:"page-title",children:r})]}),WS=[{icon:s.jsx(sl,{size:20,color:"var(--brand)"}),title:"Faster uploads on mobile",body:"Native file picker and optimized upload pipeline make sending large files from your phone noticeably quicker than the browser."},{icon:s.jsx(M0,{size:20,color:"var(--brand)"}),title:"Same security model",body:"Password protection, expiring links, and burn-after-download work identically to the web version."},{icon:s.jsx(dh,{size:20,color:"var(--brand)"}),title:"Share history built in",body:"Recent share codes are saved locally s
3855o you can re-share or track downloads without digging through messages."}],HS=()=>(mn({title:"Download SendVault App. Android File Sharing",description:"Get the SendVault Android app for faster mobile uploads, built-in share history, and the same secure 6-character code file sharing.",canonical:"https://sendvault.online/download",ogType:"website"}),s.jsxs("main",{className:"main-content",style:{maxWidth:"720px",margin:"0 auto",padding:"0 1.25rem 3rem"},children:[s.jsx(FS,{subtitle:"Android App",title:"Download SendVault"}),s.jsx("p",{style:{color:"var(--fg-muted)",lineHeight:1.8,fontSize:"1rem",marginBottom:"2rem",textAlign:"center"},children:"The SendVault Android app brings the same simple file sharing experience to your phone. Upload large files, get a 6-character code, and share it anywhere. Free to download, no subscription required."}),s.jsx("div",{style:{textAlign:"center",marginBottom:"2.5rem"},children:s.jsxs("a",{href:vo,target:"_blank",rel:"noopener noreferrer",style:{display:"inline-flex",alignItems:"center",gap:"0.6rem",background:"var(--brand)",color:"var(--bg)",padding:"0.9rem 1.75rem",borderRadius:"0.75rem",textDecoration:"none",fontWeight:700,fontSize:"1rem"},children:[s.jsx(yo,{size:20}),"Get it on Google Play"]})}),s.jsxs("section",{style:{marginBottom:"2rem"},children:[s.jsx("h2",{style:{fontSize:"1.25rem",fontWeight:800,marginBottom:"1.25rem",color:"var(--fg)",borderLeft:"3px solid var(--brand)",paddingLeft:"0.75rem"},children:"Why use the app?"}),s.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"1rem"},children:WS.map(n=>s.jsxs("div",{style:{display:"flex",gap:"1rem",alignItems:"flex-start",background:"var(--bg-muted)",border:"1px solid var(--border)",borderRadius:"1rem",padding:"1.25rem 1.5rem"},children:[s.jsx("div",{style:{flexShrink:0,marginTop:"0.1rem"},children:n.icon}),s.jsxs("div",{children:[s.jsx("h3",{style:{fontSize:"0.95rem",fontWeight:700,marginBottom:"0.3rem",color:"var(--fg)"},children:n.title}),s.jsx("p",{style:{color:"var(--fg-muted)",lineHeight:1.7,margin:0,fontSize:"0.9rem"},children:n.body})]})]},n.title))})]}),s.jsxs("p",{style:{color:"var(--fg-muted)",lineHeight:1.8,fontSize:"0.9rem",textAlign:"center"},children:["Prefer the browser? You can use SendVault on any device at"," ",s.jsx("a",{href:Cu("home"),onClick:n=>Au(n,"home"),style:{color:"var(--brand)"},children:"sendvault.online"}),". No install needed."]})]})),GS=()=>{const[n,r]=V.useState([]),[o,l]=V.useState(null),[d,p]=V.useState(!0),[u,f]=V.useState(!1),g=V.useCallback(async()=>{const b=await ll();r(b),p(!1)},[]);V.useEffect(()=>{g();const b=()=>g();return window.addEventListener("sv:share-saved",b),()=>window.removeEventListener("sv:share-saved",b)},[g]);const y=b=>new Date(b.expiresAt)<new Date,m=V.useCallback(async b=>{if(!(y(b)||!b.code))try{await navigator.clipboard.writeText(b.code),l(b.code),setTimeout(()=>l(null),2e3)}catch(A){console.error("Failed to copy",A)}},[]),v=()=>{f(!0)},w=async()=>{await N0(),r([]),f(!1)};return d?s.jsx("div",{style:{flex:1,display:"flex",flexDirection:"column",padding:"12px"},children:s.jsx("div",{style:{display:"flex",gap:"10px",flexDirection:"column"},children:[1,2,3].map(b=>s.jsx("div",{style:{height:"72px",borderRadius:"20px",backgroundColor:"rgba(17,17,17,0.04)",border:"1px solid rgba(17,17,17,0.12)",animation:"pulse 1.5s infinite"}},b))})}):n.length===0?s.jsxs("div",{style:{flex:1,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:"16px",minHeight:"320px"},children:[s.jsx("div",{style:{width:"64px",height:"64px",borderRadius:"32px",backgroundColor:"rgba(17,17,17,0.04)",display:"flex",alignItems:"center",justifyContent:"center"},children:s.jsx(Tn,{size:28,color:"rgba(17,17,17,0.4)"})}),s.jsxs("div",{style:{textAlign:"center"},children:[s.jsx("h3",{style:{margin:"0 0 4px 0",color:"rgba(17,17,17,0.7)",fontSize:"16px",fontWeight:600},children:"No history yet"}),s.jsx("p",{style:{margin:0,color:"rgba(17,17,17,0.5)",fontSize:"14px"},children:"Your sent transfers will appear here."})]})]}):s.jsxs("div",{style:{flex:1,display:"flex",flexDirection:"column",minHeight:"320px",position:"relative"},children:[s.jsx(an,{mode:"wait",children:u?s.jsxs(ke.div,{initial:{opacity:0,y:-20}
3855,animate:{opacity:1,y:0},exit:{opacity:0,y:-20},transition:{duration:.2},style:{flex:1,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center"},children:[s.jsx("div",{style:{width:"56px",height:"56px",borderRadius:"28px",backgroundColor:"rgba(239, 68, 68, 0.1)",display:"flex",alignItems:"center",justifyContent:"center",marginBottom:"20px"},children:s.jsx($s,{size:28,color:"#EF4444"})}),s.jsx("h3",{style:{margin:"0 0 12px 0",color:"#111111",fontSize:"20px",fontWeight:600},children:"Clear History"}),s.jsx("p",{style:{margin:"0 0 32px 0",color:"rgba(17,17,17,0.7)",fontSize:"15px",lineHeight:"22px"},children:"Are you sure you want to remove all history entries? This cannot be undone."}),s.jsxs("div",{style:{display:"flex",gap:"16px",width:"100%",maxWidth:"300px"},children:[s.jsx("button",{onClick:()=>f(!1),style:{flex:1,padding:"14px",borderRadius:"16px",border:"none",backgroundColor:"rgba(17,17,17,0.08)",color:"#111111",fontSize:"15px",fontWeight:600,cursor:"pointer",transition:"background 0.2s"},onMouseEnter:b=>b.currentTarget.style.backgroundColor="rgba(17,17,17,0.12)",onMouseLeave:b=>b.currentTarget.style.backgroundColor="rgba(17,17,17,0.08)",children:"Cancel"}),s.jsx("button",{onClick:w,style:{flex:1,padding:"14px",borderRadius:"16px",border:"none",backgroundColor:"#EF4444",color:"#ffffff",fontSize:"15px",fontWeight:600,cursor:"pointer",transition:"background 0.2s"},onMouseEnter:b=>b.currentTarget.style.backgroundColor="#DC2626",onMouseLeave:b=>b.currentTarget.style.backgroundColor="#EF4444",children:"Clear"})]})]},"clear-confirm"):s.jsxs(ke.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},exit:{opacity:0,y:20},transition:{duration:.2},style:{flex:1,display:"flex",flexDirection:"column",minHeight:0},children:[s.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"16px",padding:"0 4px"},children:[s.jsx("span",{style:{color:"rgba(17,17,17,0.6)",fontSize:"14px",fontWeight:600,letterSpacing:"-0.2px"},children:"Recent Transfers"}),s.jsx("div",{onClick:v,style:{cursor:"pointer",padding:"4px",opacity:.6,transition:"opacity 0.2s"},onMouseEnter:b=>b.currentTarget.style.opacity="1",onMouseLeave:b=>b.currentTarget.style.opacity="0.6",children:s.jsx($s,{size:16})})]}),s.jsx("div",{className:"history-scroll",style:{display:"flex",flexDirection:"column",gap:"10px",flex:1,minHeight:0,overflowY:"auto",paddingRight:"4px"},children:n.map((b,A)=>{const x=y(b),j=o===b.code;return b.fileCount!==void 0&&yi(b.fileCount),s.jsxs(ke.div,{className:"history-item",onClick:()=>m(b),style:{display:"flex",alignItems:"center",backgroundColor:"rgba(17,17,17,0.04)",border:"1px solid rgba(17,17,17,0.12)",borderRadius:"20px",padding:"12px 14px",gap:"12px",cursor:x?"default":"pointer",opacity:x?.55:1,transition:"background-color 0.2s ease, border-color 0.2s ease"},whileHover:x?{}:{scale:.98,backgroundColor:"rgba(17,17,17,0.07)",borderColor:"rgba(17,17,17,0.2)"},whileTap:x?{}:{scale:.96},children:[s.jsx("div",{style:{width:"48px",height:"48px",borderRadius:"13px",backgroundColor:"rgba(17,17,17,0.06)",display:"flex",alignItems:"center",justifyContent:"center"},children:s.jsx(fh,{})}),s.jsxs("div",{style:{flex:1,display:"flex",flexDirection:"column",gap:"4px",minWidth:0},children:[s.jsx("span",{style:{color:"#111111",fontSize:"14px",fontWeight:600,letterSpacing:"-0.3px",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:b.title||"Untitled Transfer"}),s.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"4px"},children:[s.jsxs("span",{style:{color:"rgba(17,17,17,0.6)",fontSize:"12px"},children:[b.fileCount," File",b.fileCount!==1?"s":""]}),b.code&&s.jsxs(s.Fragment,{children:[s.jsx("span",{style:{color:"rgba(17,17,17,0.2)",fontSize:"10px"},children:"|"}),s.jsx("span",{style:{color:"#65A30D",fontSize:"12px",fontWeight:700,letterSpacing:"0.5px"},children:b.code})]})]})]}),x?s.jsx("div",{style:{backgroundColor:"rgba(17,17,17,0.04)",borderRadius:"20px",padding:"6px 12px",minWidth:"56px",display:"flex",alignItems:"center",justifyContent:"center"},children:s.jsx("span",{style:{color:"rgba(17,17,17,0.4)",fontSize:"12px",fontWeight:500,letterSpacing:"-0.2px"},children:"expired"})}):s.jsx("div",{className:"history-copy-btn",style:{backgroundColor:"rgba(17,17,17,0.08)",borderRadius:"20px",padding:"6px 12px",minWidth:"56px",display:"flex",alignItems:"center",justifyContent:"center",transition:"all 0.2s ease",overflow:"hidden"},children:s.jsx(an,{mode:"wait",initial:!1,children:j?s.jsx(ke.div,{initial:{opacity:0,y:10}
vendor: 5,518 bytes, lines 3855-3893
3855,animate:{opacity:1,y:0},exit:{opacity:0,y:-10},transition:{duration:.2},style:{display:"flex",alignItems:"center",justifyContent:"center"},children:s.jsx(ol,{size:14,color:"#65A30D"})},"copied"):s.jsx(ke.span,{initial:{opacity:0,y:-10},animate:{opacity:1,y:0},exit:{opacity:0,y:10},transition:{duration:.2},style:{color:"rgba(17,17,17,0.7)",fontSize:"12px",fontWeight:500,letterSpacing:"-0.2px"},children:"copy"},"copy")})})]},b.code+A)})})]},"history-list")}),s.jsx("style",{children:`
3856                @keyframes pulse {
3857                    0% { opacity: 1; }
3858                    50% { opacity: 0.5; }
3859                    100% { opacity: 1; }
3860                }
3861                .history-scroll::-webkit-scrollbar {
3862                    width: 4px;
3863                }
3864                .history-scroll::-webkit-scrollbar-track {
3865                    background: transparent;
3866                }
3867                .history-scroll::-webkit-scrollbar-thumb {
3868                    background: rgba(17,17,17,0.15);
3869                    border-radius: 4px;
3870                }
3871                .history-scroll::-webkit-scrollbar-thumb:hover {
3872                    background: rgba(17,17,17,0.3);
3873                }
3874                .history-item:hover .history-copy-btn {
3875                    background-color: #111111 !important;
3876                }
3877                .history-item:hover .history-copy-btn span {
3878                    color: #ffffff !important;
3879                }
3880                .history-item:hover .history-copy-btn svg {
3881                    color: #A3E635 !important;
3882                }
3883            `})]})};function Is(n){throw new Error('Could not dynamically require "'+n+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var Zd={exports:{}};/*!
3884
3885JSZip v3.10.1 - A JavaScript class for generating and reading zip files
3886<http://stuartk.com/jszip>
3887
3888(c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com>
3889Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.
3890
3891JSZip uses the library pako released under the MIT license :
3892https://github.com/nodeca/pako/blob/main/LICENSE
3893*/var zy;function qS(){return zy||(zy=1,function(n,r){(function(o){n.exports=o()})(function(){return function o(l,d,p){function u(y,m){if(!d[y]){if(!l[y]){var v=typeof Is=="function"&&Is;if(!m&&v)return v(y,!0);if(f)return f(y,!0);var w=new Error("Cannot find module '"+y+"'");throw w.code="MODULE_NOT_FOUND",w}var b=d[y]={exports:{}};l[y][0].call(b.exports,function(A){var x=l[y][1][A];return u(x||A)},b,b.exports,o,l,d,p)}return d[y].exports}for(var f=typeof Is=="function"&&Is,g=0;g<p.length;g++)u(p[g]);return u}({1:[function(o,l,d){var p=o("./utils"),u=o("./support"),f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";d.encode=function(g){for(var y,m,v,w,b,A,x,j=[],T=0,D=g.length,_=D,L=p.getTypeOf(g)!=="string";T<g.length;)_=D-T,v=L?(y=g[T++],m=T<D?g[T++]:0,T<D?g[T++]:0):(y=g.charCodeAt(T++),m=T<D?g.charCodeAt(T++):0,T<D?g.charCodeAt(T++):0),w=y>>2,b=(3&y)<<4|m>>4,A=1<_?(15&m)<<2|v>>6:64,x=2<_?63&v:64,j.push(f.charAt(w)+f.charAt(b)+f.charAt(A)+f.charAt(x));return j.join("")},d.decode=function(g){var y,m,v,w,b,A,x=0,j=0,T="data:";if(g.substr(0,T.length)===T)throw new Error("Invalid base64 input, it looks like a data url.");var D,_=3*(g=g.replace(/[^A-Za-z0-9+/=]/g,"")).length/4;if(g.charAt(g.length-1)===f.charAt(64)&&_--,g.charAt(g.length-2)===f.charAt(64)&&_--,_%1!=0)throw new Error("Invalid base64 input, bad content length.");for(D=u.uint8array?new Uint8Array(0|_):new Array(0|_);x<g.length;)y=f.indexOf(g.charAt(x++))<<2|(w=f.indexOf(g.charAt(x++)))>>4,m=(15&w)<<4|(b=f.indexOf(g.charAt(x++)))>>2,v=(3&b)<<6|(A=f.indexOf(g.charAt(x++))),D[j++]=y,b!==64&&(D[j++]=m),A!==64&&(D[j++]=v);return D}},{"./support":30,"./utils":32}],2:[function(o,l,d){var p=o("./external"),u=o("./stream/DataWorker"),f=o("./stream/Crc32Probe"),g=o("./stream/DataLengthProbe");function y(m,v,w,b,A){this.compressedSize=m,this.uncompressedSize=v,this.crc32=w,this.compression=b,this.compressedContent=A}y.prototype={getContentWorker:function(){var m=new u(p.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new g("data_length")),v=this;return m.on("end",function(){if(this.streamInfo.data_length!==v.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),m},getCompressedWorker:function(){return new u(p.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},y.createWorkerFrom=function(m,v,w){return m.pipe(new f).pipe(new g("uncompressedSize")).pipe(v.compressWorker(w)).pipe(new g("compressedSize")).withStreamInfo("compression",v)},l.exports=y},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(o,l,d){var p=o("./stream/GenericWorker");d.STORE={magic:"\0\0",compressWorker:function(){return new p("STORE compression")},uncompressWorker:function(){return new p("STORE decompression")}},d.DEFLATE=o("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(o,l,d){var p=o("./utils"),u=function(){for(var f,g=[],y=0;y<256;y++){f=y;for(var m=0;m<8;m++)f=1&f?3988292384^f>>>1:f>>>1;g[y]=f}return g}();l.exports=function(f,g){return f!==void 0&&f.length?p.getTypeOf(f)!=="str
3893ing"?function(y,m,v,w){var b=u,A=w+v;y^=-1;for(var x=w;x<A;x++)y=y>>>8^b[255&(y^m[x])];return-1^y}(0|g,f,f.length,0):function(y,m,v,w){var b=u,A=w+v;y^=-1;for(var x=w;x<A;x++)y=y>>>8^b[255&(y^m.charCodeAt(x))];return-1^y}(0|g,f,f.length,0):0}},{"./utils":32}],5:[function(o,l,d){d.base64=!1,d.binary=!1,d.dir=!1,d.createFolders=!0,d.date=null,d.compression=null,d.compressionOptions=null,d.comment=null,d.unixPermissions=null,d.dosPermissions=null},{}],6:[function(o,l,d){var p=null;p=typeof Promise<"u"?Promise:o("lie"),l.exports={Promise:p}},{lie:37}],7:[function(o,l,d){var p=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Uint32Array<"u",u=o("pako"),f=o("./utils"),g=o("./stream/GenericWorker"),y=p?"uint8array":"array";function m(v,w){g.call(this,"FlateWorker/"+v),this._pako=null,this._pakoAction=v,this._pakoOptions=w,this.meta={}}d.magic="\b\0",f.inherits(m,g),m.prototype.processChunk=function(v){this.meta=v.meta,this._pako===null&&this._createPako(),this._pako.push(f.transformTo(y,v.data),!1)},m.prototype.flush=function(){g.prototype.flush.call(this),this._pako===null&&this._createPako(),this._pako.push([],!0)},m.prototype.cleanUp=function(){g.prototype.cleanUp.call(this),this._pako=null},m.prototype._createPako=function(){this._pako=new u[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var v=this;this._pako.onData=function(w){v.push({data:w,meta:v.meta})}},d.compressWorker=function(v){return new m("Deflate",v)},d.uncompressWorker=function(){return new m("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(o,l,d){function p(b,A){var x,j="";for(x=0;x<A;x++)j+=String.fromCharCode(255&b),b>>>=8;return j}function u(b,A,x,j,T,D){var _,L,B=b.file,P=b.compression,z=D!==y.utf8encode,W=f.transformTo("string",D(B.name)),H=f.transformTo("string",y.utf8encode(B.name)),ae=B.comment,ve=f.transformTo("string",D(ae)),N=f.transformTo("string",y.utf8encode(ae)),ie=H.length!==B.name.length,C=N.length!==ae.length,re="",F="",U="",ee=B.dir,te=B.date,me={crc32:0,compressedSize:0,uncompressedSize:0};A&&!x||(me.crc32=b.crc32,me.compressedSize=b.compressedSize,me.uncompressedSize=b.uncompressedSize);var Z=0;A&&(Z|=8),z||!ie&&!C||(Z|=2048);var Y=0,fe=0;ee&&(Y|=16),T==="UNIX"?(fe=798,Y|=function(he,Pe){var ot=he;return he||(ot=Pe?16893:33204),(65535&ot)<<16}(B.unixPermissions,ee)):(fe=20,Y|=function(he){return 63&(he||0)}(B.dosPermissions)),_=te.getUTCHours(),_<<=6,_|=te.getUTCMinutes(),_<<=5,_|=te.getUTCSeconds()/2,L=te.getUTCFullYear()-1980,L<<=4,L|=te.getUTCMonth()+1,L<<=5,L|=te.getUTCDate(),ie&&(F=p(1,1)+p(m(W),4)+H,re+="up"+p(F.length,2)+F),C&&(U=p(1,1)+p(m(ve),4)+N,re+="uc"+p(U.length,2)+U);var pe="";return pe+=`
3894\0`,pe+=p(Z,2),pe+=P.magic,pe+=p(_,2),pe+=p(L,2),pe+=p(me.crc32,4),pe+=p(me.compressedSize,4),pe+=p(me.uncompressedSize,4),pe+=p(W.length,2),pe+=p(re.length,2),{fileRecord:v.LOCAL_FILE_HEADER+pe+W+re,dirRecord:v.CENTRAL_FILE_HEADER+p(fe,2)+pe+p(ve.length,2)+"\0\0\0\0"+p(Y,4)+p(j,4)+W+re+ve}}var f=o("../utils"),g=o("../stream/GenericWorker"),y=o("../utf8"),m=o("../crc32"),v=o("../signature");function w(b,A,x,j){g.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=A,this.zipPlatform=x,this.encodeFileName=j,this.streamFiles=b,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}f.inherits(w,g),w.prototype.push=function(b){var A=b.meta.percent||0,x=this.entriesCount,j=this._sources.length;this.accumulate?this.contentBuffer.push(b):(this.bytesWritten+=b.data.length,g.prototype.push.call(this,{data:b.data,meta:{currentFile:this.currentFile,percent:x?(A+100*(x-j-1))/x:100}}))},w.prototype.openedSource=function(b){this.currentSourceOffset=this.bytesWritten,this.currentFile=b.file.name;var A=this.streamFiles&&!b.file.dir;if(A){var x=u(b,A,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:x.fileRecord,meta:{percent:0}})}else this.accumulate=!0},w.prototype.closedSource=function(b){this.accumulate=!1;var A=this.streamFiles&&!b.file.dir,x=u(b,A,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(x.dirRecord),A)this.push({data:function(j){return v.DATA_DESCRIPTOR+p(j.crc32,4)+p(j.compressedSize,4)+p(j.uncompressedSize,4)}(b),meta:{percent:100}});else for(this.push({data:x.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},w.prototype.flush=function(){for(var b=this.bytesWritten,A=0;A<this.dirRecords.length;A++)this.push({data:this.dirRecords[A],meta:{percent:100}});var x=this.bytesWritten-b,j=function(T,D,_,L,B){var P=f.transformTo("string",B(L));return v.CENTRAL_DIRECTORY_END+"\0\0\0\0"+p(T,2)+p(T,2)+p(D,4)+p(_,4)+p(P.length,2)+P}(this.dirRecords.length,x,b,this.zipComment,this.encodeFileName);this.push({data:j,meta:{percent:100}})},w.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},w.prototype.registerPrevious=function(b){this._sources.push(b);var A=this;return b.on("data",function(x){A.processChunk(x)}),b.on("end",function(){A.closedSource(A.previous.streamInfo),A._sources.length?A.prepareNextSource():A.end()}),b.on("error",function(x){A.error(x)}),this},w.prototype.resume=function(){return!!g.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},w.prototype.error=function(b){var A=this._sources;if(!g.prototype.error.call(this,b))return!1;for(var x=0;x<A.length;x++)try{A[x].error(b)}catch{}return!0},w.prototype.lock=function(){g.prototype.lock.call(this);for(var b=this._sources,A=0;A<b.length;A++)b[A].lock()},l.exports=w},{"../crc32":4,"../signature":23,"../stream/GenericWorker":28,"../utf8":31,"../utils":32}],9:[function(o,l,d){var p=o("../compressions"),u=o("./ZipFileWorker");d.generateWorker=function(f,g,y){var m=new u(g.streamFiles,y,g.platform,g.encodeFileName),v=0;try{f.forEach(function(w,b){v++;var A=function(D,_){var L=D||_,B=p[L];if(!B)throw new Error(L+" is not a valid compression method !");return B}
vendor: 88,073 bytes, line 3894
3894(b.options.compression,g.compression),x=b.options.compressionOptions||g.compressionOptions||{},j=b.dir,T=b.date;b._compressWorker(A,x).withStreamInfo("file",{name:w,dir:j,date:T,comment:b.comment||"",unixPermissions:b.unixPermissions,dosPermissions:b.dosPermissions}).pipe(m)}),m.entriesCount=v}catch(w){m.error(w)}return m}},{"../compressions":3,"./ZipFileWorker":8}],10:[function(o,l,d){function p(){if(!(this instanceof p))return new p;if(arguments.length)throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.");this.files=Object.create(null),this.comment=null,this.root="",this.clone=function(){var u=new p;for(var f in this)typeof this[f]!="function"&&(u[f]=this[f]);return u}}(p.prototype=o("./object")).loadAsync=o("./load"),p.support=o("./support"),p.defaults=o("./defaults"),p.version="3.10.1",p.loadAsync=function(u,f){return new p().loadAsync(u,f)},p.external=o("./external"),l.exports=p},{"./defaults":5,"./external":6,"./load":11,"./object":15,"./support":30}],11:[function(o,l,d){var p=o("./utils"),u=o("./external"),f=o("./utf8"),g=o("./zipEntries"),y=o("./stream/Crc32Probe"),m=o("./nodejsUtils");function v(w){return new u.Promise(function(b,A){var x=w.decompressed.getContentWorker().pipe(new y);x.on("error",function(j){A(j)}).on("end",function(){x.streamInfo.crc32!==w.decompressed.crc32?A(new Error("Corrupted zip : CRC32 mismatch")):b()}).resume()})}l.exports=function(w,b){var A=this;return b=p.extend(b||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:f.utf8decode}),m.isNode&&m.isStream(w)?u.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file.")):p.prepareContent("the loaded zip file",w,!0,b.optimizedBinaryString,b.base64).then(function(x){var j=new g(b);return j.load(x),j}).then(function(x){var j=[u.Promise.resolve(x)],T=x.files;if(b.checkCRC32)for(var D=0;D<T.length;D++)j.push(v(T[D]));return u.Promise.all(j)}).then(function(x){for(var j=x.shift(),T=j.files,D=0;D<T.length;D++){var _=T[D],L=_.fileNameStr,B=p.resolve(_.fileNameStr);A.file(B,_.decompressed,{binary:!0,optimizedBinaryString:!0,date:_.date,dir:_.dir,comment:_.fileCommentStr.length?_.fileCommentStr:null,unixPermissions:_.unixPermissions,dosPermissions:_.dosPermissions,createFolders:b.createFolders}),_.dir||(A.file(B).unsafeOriginalName=L)}return j.zipComment.length&&(A.comment=j.zipComment),A})}},{"./external":6,"./nodejsUtils":14,"./stream/Crc32Probe":25,"./utf8":31,"./utils":32,"./zipEntries":33}],12:[function(o,l,d){var p=o("../utils"),u=o("../stream/GenericWorker");function f(g,y){u.call(this,"Nodejs stream input adapter for "+g),this._upstreamEnded=!1,this._bindStream(y)}p.inherits(f,u),f.prototype._bindStream=function(g){var y=this;(this._stream=g).pause(),g.on("data",function(m){y.push({data:m,meta:{percent:0}})}).on("error",function(m){y.isPaused?this.generatedError=m:y.error(m)}).on("end",function(){y.isPaused?y._upstreamEnded=!0:y.end()})},f.prototype.pause=function(){return!!u.prototype.pause.call(this)&&(this._stream.pause(),!0)},f.prototype.resume=function(){return!!u.prototype.resume.call(this)&&(this._upstreamEnded?this.end():this._stream.resume(),!0)},l.exports=f},{"../stream/GenericWorker":28,"../utils":32}],13:[function(o,l,d){var p=o("readable-stream").Readable;function u(f,g,y){p.call(this,g),this._helper=f;var m=this;f.on("data",function(v,w){m.push(v)||m._helper.pause(),y&&y(w)}).on("error",function(v){m.emit("error",v)}).on("end",function(){m.push(null)})}o("../utils").inherits(u,p),u.prototype._read=function(){this._helper.resume()},l.exports=u},{"../utils":32,"readable-stream":16}],14:[function(o,l,d){l.exports={isNode:typeof Buffer<"u",newBufferFrom:function(p,u){if(Buffer.from&&Buffer.from!==Uint8Array.from)return Buffer.from(p,u);if(typeof p=="number")throw new Error('The "data" argument must not be a number');return new Buffer(p,u)},allocBuffer:function(p){if(Buffer.alloc)return Buffer.alloc(p);var u=new Buffer(p);return u.fill(0),u},isBuffer:function(p){return Buffer.isBuffer(p)},isStream:function(p){return p&&typeof p.on=="function"&&typeof p.pause=="function"&&typeof p.resume=="function"}}},{}],15:[function(o,l,d){function p(B,P,z){var W,H=f.getTypeOf(P),ae=f.extend(z||{},m);ae.date=ae.date||new Date,ae.compression!==null&&(ae.compression=ae.compression.toUpperCase()),typeof ae.unixPermissions=="string"&&(ae.unixPermissions=parseInt(ae.unixPermissions,8)),ae.unixPermissions&&16384&ae.unixPermissions&&(ae.dir=!0),ae.dosPermissions&&16&ae.dosPermissions&&(ae.dir=!0),ae.dir&&(B=T(B)),ae.createFolders&&(W=j(B))&&D.call(this,W,!0);var ve=H==="string"&&ae.binary===!1&&ae.base64===!1;z&&z.binary!==void 0||(ae.binary=!ve),(P instanceof v&&P.uncompressedSize===0||ae.dir||!P||P.length===0)&&(ae.base64=!1,ae.binary=!0,P="",ae.compression="STORE",H="string");var N=null;N=P instanceof v||P instanceof g?P:A.isNode&&A.isStream(P)?new x(B,P):f.prepareContent(B,P,ae.binary,ae.optimizedBinaryString,ae.base64);var ie=new w(B,N,ae);this.files[B]=ie}var u=o("./utf8"),f=o("./utils"),g=o("./stream/GenericWorker"),y=o("./stream/StreamHelper"),m=o("./defaults"),v=o("./compressedObject"),w=o("./zipObject"),b=o("./generate"),A=o("./nodejsUtils"),x=o("./nodejs/NodejsStreamInputAdapter"),j=function(B){B.slice(-1)==="/"&&(B=B.substring(0,B.length-1));var P=B.lastIndexOf("/");return 0<P?B.substring(0,P):""},T=function(B){return B.slice(-1)!=="/"&&(B+="/"),B},D=function(B,P){return P=P!==void 0?P:m.createFolders,B=T(B),this.files[B]||p.call(this,B,null,{dir:!0,createFolders:P}),this.files[B]};function _(B){return Object.prototype.toString.call(B)==="[object RegExp]"}var L={load:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},forEach:function(B){var P,z,W;for(P in this.files)W=this.files[P],(z=P.slice(this.root.length,P.length))&&P.slice(0,this.root.length)===this.root&&B(z,W)},filter:function(B){var P=[];return this.forEach(function(z,W){B(z,W)&&P.push(W)}),P},file:function(B,P,z){if(arguments.length!==1)return B=this.root+B,p.call(this,B,P,z),this;if(_(B)){var W=B;return this.filter(function(ae,ve){return!ve.dir&&W.test(ae)})}var H=this.files[this.root+B];return H&&!H.dir?H:null},folder:function(B){if(!B)return this;if(_(B))return this.filter(function(H,ae){return ae.dir&&B.test(H)});var P=this.root+B,z=D.call(this,P),W=this.clone();return W.root=z.name,W},remove:function(B){B=this.root+B;var P=this.files[B];if(P||(B.slice(-1)!=="/"&&(B+="/"),P=this.files[B]),P&&!P.dir)delete this.files[B];else for(var z=this.filter(function(H,ae){return ae.name.slice(0,B.length)===B}),W=0;W<z.length;W++)delete this.files[z[W].name];return this},generate:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},generateInternalStream:function(B){var P,z={};try{if((z=f.extend(B||{},{streamFiles:!1,compression:"STORE",compressionOptions:null,type:"",platform:"DOS",comment:null,mimeType:"application/zip",encodeFileName:u.utf8encode})).type=z.type.toLowerCase(),z.compression=z.compression.toUpperCase(),z.type==="binarystring"&&(z.type="string"),!z.type)throw new Error("No output type specified.");f.checkSupport(z.type),z.platform!=="darwin"&&z.platform!=="freebsd"&&z.platform!=="linux"&&z.platform!=="sunos"||(z.platform="UNIX"),z.platform==="win32"&&(z.platform="DOS");var W=z.comment||this.comment||"";P=b.generateWorker(this,z,W)}catch(H){(P=new g("error")).error(H)}return new y(P,z.type||"string",z.mimeType)},generateAsync:function(B,P){return this.generateInternalStream(B).accumulate(P)},generateNodeStream:function(B,P){return(B=B||{}).type||(B.type="nodebuffer"),this.generateInternalStream(B).toNodejsStream(P)}};l.exports=L},{"./compressedObject":2,"./defaults":5,"./generate":9,"./nodejs/NodejsStreamInputAdapter":12,"./nodejsUtils":14,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31,"./utils":32,"./zipObject":35}],16:[function(o,l,d){l.exports=o("stream")},{stream:void 0}],17:[function(o,l,d){var p=o("./DataReader");function u(f){p.call(this,f);for(var g=0;g<this.data.length;g++)f[g]=255&f[g]}o("../utils").inherits(u,p),u.prototype.byteAt=function(f){return this.data[this.zero+f]},u.prototype.lastIndexOfSignature=function(f){for(var g=f.charCodeAt(0),y=f.charCodeAt(1),m=f.charCodeAt(2),v=f.charCodeAt(3),w=this.length-4;0<=w;--w)if(this.data[w]===g&&this.data[w+1]===y&&this.data[w+2]===m&&this.data[w+3]===v)return w-this.zero;return-1},u.prototype.readAndCheckSignature=function(f){var g=f.charCodeAt(0),y=f.charCodeAt(1),m=f.charCodeAt(2),v=f.charCodeAt(3),w=this.readData(4);return g===w[0]&&y===w[1]&&m===w[2]&&v===w[3]},u.prototype.readData=function(f){if(this.checkOffset(f),f===0)return[];var g=this.data.slice(this.zero+this.index,this.zero+this.index+f);return this.index+=f,g},l.exports=u},{"../utils":32,"./DataReader":18}],18:[function(o,l,d){var p=o("../utils");function u(f){this.data=f,this.length=f.length,this.index=0,this.zero=0}u.prototype={checkOffset:function(f){this.checkIndex(this.index+f)},checkIndex:function(f){if(this.length<this.zero+f||f<0)throw new Error("End of data reached (data length = "+this.length+", asked index = "+f+"). Corrupted zip ?")},setIndex:function(f){this.checkIndex(f),this.index=f},skip:function(f){this.setIndex(this.index+f)},byteAt:function(){},readInt:function(f){var g,y=0;for(this.checkOffset(f),g=this.index+f-1;g>=this.index;g--)y=(y<<8)+this.byteAt(g);return this.index+=f,y},readString:function(f){return p.transformTo("string",this.readData(f))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var f=this.readInt(4);return new Date(Date.UTC(1980+(f>>25&127),(f>>21&15)-1,f>>16&31,f>>11&31,f>>5&63,(31&f)<<1))}},l.exports=u},{"../utils":32}],19:[function(o,l,d){var p=o("./Uint8ArrayReader");function u(f){p.call(this,f)}o("../utils").inherits(u,p),u.prototype.readData=function(f){this.checkOffset(f);var g=this.data.slice(this.zero+this.index,this.zero+this.index+f);return this.index+=f,g},l.exports=u},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(o,l,d){var p=o("./DataReader");function u(f){p.call(this,f)}o("../utils").inherits(u,p),u.prototype.byteAt=function(f){return this.data.charCodeAt(this.zero+f)},u.prototype.lastIndexOfSignature=function(f){return this.data.lastIndexOf(f)-this.zero},u.prototype.readAndCheckSignature=function(f){return f===this.readData(4)},u.prototype.readData=function(f){this.checkOffset(f);var g=this.data.slice(this.zero+this.index,this.zero+this.index+f);return this.index+=f,g},l.exports=u},{"../utils":32,"./DataReader":18}],21:[function(o,l,d){var p=o("./ArrayReader");function u(f){p.call(this,f)}o("../utils").inherits(u,p),u.prototype.readData=function(f){if(this.checkOffset(f),f===0)return new Uint8Array(0);var g=this.data.subarray(this.zero+this.index,this.zero+this.index+f);return this.index+=f,g},l.exports=u},{"../utils":32,"./ArrayReader":17}],22:[function(o,l,d){var p=o("../utils"),u=o("../support"),f=o("./ArrayReader"),g=o("./StringReader"),y=o("./NodeBufferReader"),m=o("./Uint8ArrayReader");l.exports=function(v){var w=p.getTypeOf(v);return p.checkSupport(w),w!=="string"||u.uint8array?w==="nodebuffer"?new y(v):u.uint8array?new m(p.transformTo("uint8array",v)):new f(p.transformTo("array",v)):new g(v)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(o,l,d){d.LOCAL_FILE_HEADER="PK��",d.CENTRAL_FILE_HEADER="PK��",d.CENTRAL_DIRECTORY_END="PK��",d.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK�\x07",d.ZIP64_CENTRAL_DIRECTORY_END="PK��",d.DATA_DESCRIPTOR="PK\x07\b"},{}],24:[function(o,l,d){var p=o("./GenericWorker"),u=o("../utils");function f(g){p.call(this,"ConvertWorker to "+g),this.destType=g}u.inherits(f,p),f.prototype.processChunk=function(g){this.push({data:u.transformTo(this.destType,g.data),meta:g.meta})},l.exports=f},{"../utils":32,"./GenericWorker":28}],25:[function(o,l,d){var p=o("./GenericWorker"),u=o("../crc32");function f(){p.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}o("../utils").inherits(f,p),f.prototype.processChunk=function(g){this.streamInfo.crc32=u(g.data,this.streamInfo.crc32||0),this.push(g)},l.exports=f},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(o,l,d){var p=o("../utils"),u=o("./GenericWorker");function f(g){u.call(this,"DataLengthProbe for "+g),this.propName=g,this.withStreamInfo(g,0)}p.inherits(f,u),f.prototype.processChunk=function(g){if(g){var y=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=y+g.data.length}u.prototype.processChunk.call(this,g)},l.exports=f},{"../utils":32,"./GenericWorker":28}],27:[function(o,l,d){var p=o("../utils"),u=o("./GenericWorker");function f(g){u.call(this,"DataWorker");var y=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,g.then(function(m){y.dataIsReady=!0,y.data=m,y.max=m&&m.length||0,y.type=p.getTypeOf(m),y.isPaused||y._tickAndRepeat()},function(m){y.error(m)})}p.inherits(f,u),f.prototype.cleanUp=function(){u.prototype.cleanUp.call(this),this.data=null},f.prototype.resume=function(){return!!u.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,p.delay(this._tickAndRepeat,[],this)),!0)},f.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(p.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},f.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var g=null,y=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":g=this.data.substring(this.index,y);break;case"uint8array":g=this.data.subarray(this.index,y);break;case"array":case"nodebuffer":g=this.data.slice(this.index,y)}return this.index=y,this.push({data:g,meta:{percent:this.max?this.index/this.max*100:0}})},l.exports=f},{"../utils":32,"./GenericWorker":28}],28:[function(o,l,d){function p(u){this.name=u||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}p.prototype={push:function(u){this.emit("data",u)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(u){this.emit("error",u)}return!0},error:function(u){return!this.isFinished&&(this.isPaused?this.generatedError=u:(this.isFinished=!0,this.emit("error",u),this.previous&&this.previous.error(u),this.cleanUp()),!0)},on:function(u,f){return this._listeners[u].push(f),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(u,f){if(this._listeners[u])for(var g=0;g<this._listeners[u].length;g++)this._listeners[u][g].call(this,f)},pipe:function(u){return u.registerPrevious(this)},registerPrevious:function(u){if(this.isLocked)throw new Error("The stream '"+this+"' has already been used.");this.streamInfo=u.streamInfo,this.mergeStreamInfo(),this.previous=u;var f=this;return u.on("data",function(g){f.processChunk(g)}),u.on("end",function(){f.end()}),u.on("error",function(g){f.error(g)}),this},pause:function(){return!this.isPaused&&!this.isFinished&&(this.isPaused=!0,this.previous&&this.previous.pause(),!0)},resume:function(){if(!this.isPaused||this.isFinished)return!1;var u=this.isPaused=!1;return this.generatedError&&(this.error(this.generatedError),u=!0),this.previous&&this.previous.resume(),!u},flush:function(){},processChunk:function(u){this.push(u)},withStreamInfo:function(u,f){return this.extraStreamInfo[u]=f,this.mergeStreamInfo(),this},mergeStreamInfo:function(){for(var u in this.extraStreamInfo)Object.prototype.hasOwnProperty.call(this.extraStreamInfo,u)&&(this.streamInfo[u]=this.extraStreamInfo[u])},lock:function(){if(this.isLocked)throw new Error("The stream '"+this+"' has already been used.");this.isLocked=!0,this.previous&&this.previous.lock()},toString:function(){var u="Worker "+this.name;return this.previous?this.previous+" -> "+u:u}},l.exports=p},{}],29:[function(o,l,d){var p=o("../utils"),u=o("./ConvertWorker"),f=o("./GenericWorker"),g=o("../base64"),y=o("../support"),m=o("../external"),v=null;if(y.nodestream)try{v=o("../nodejs/NodejsStreamOutputAdapter")}catch{}function w(A,x){return new m.Promise(function(j,T){var D=[],_=A._internalType,L=A._outputType,B=A._mimeType;A.on("data",function(P,z){D.push(P),x&&x(z)}).on("error",function(P){D=[],T(P)}).on("end",function(){try{var P=function(z,W,H){switch(z){case"blob":return p.newBlob(p.transformTo("arraybuffer",W),H);case"base64":return g.encode(W);default:return p.transformTo(z,W)}}(L,function(z,W){var H,ae=0,ve=null,N=0;for(H=0;H<W.length;H++)N+=W[H].length;switch(z){case"string":return W.join("");case"array":return Array.prototype.concat.apply([],W);case"uint8array":for(ve=new Uint8Array(N),H=0;H<W.length;H++)ve.set(W[H],ae),ae+=W[H].length;return ve;case"nodebuffer":return Buffer.concat(W);default:throw new Error("concat : unsupported type '"+z+"'")}}(_,D),B);j(P)}catch(z){T(z)}D=[]}).resume()})}function b(A,x,j){var T=x;switch(x){case"blob":case"arraybuffer":T="uint8array";break;case"base64":T="string"}try{this._internalType=T,this._outputType=x,this._mimeType=j,p.checkSupport(T),this._worker=A.pipe(new u(T)),A.lock()}catch(D){this._worker=new f("error"),this._worker.error(D)}}b.prototype={accumulate:function(A){return w(this,A)},on:function(A,x){var j=this;return A==="data"?this._worker.on(A,function(T){x.call(j,T.data,T.meta)}):this._worker.on(A,function(){p.delay(x,arguments,j)}),this},resume:function(){return p.delay(this._worker.resume,[],this._worker),this},pause:function(){return this._worker.pause(),this},toNodejsStream:function(A){if(p.checkSupport("nodestream"),this._outputType!=="nodebuffer")throw new Error(this._outputType+" is not supported by this method");return new v(this,{objectMode:this._outputType!=="nodebuffer"},A)}},l.exports=b},{"../base64":1,"../external":6,"../nodejs/NodejsStreamOutputAdapter":13,"../support":30,"../utils":32,"./ConvertWorker":24,"./GenericWorker":28}],30:[function(o,l,d){if(d.base64=!0,d.array=!0,d.string=!0,d.arraybuffer=typeof ArrayBuffer<"u"&&typeof Uint8Array<"u",d.nodebuffer=typeof Buffer<"u",d.uint8array=typeof Uint8Array<"u",typeof ArrayBuffer>"u")d.blob=!1;else{var p=new ArrayBuffer(0);try{d.blob=new Blob([p],{type:"application/zip"}).size===0}catch{try{var u=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);u.append(p),d.blob=u.getBlob("application/zip").size===0}catch{d.blob=!1}}}try{d.nodestream=!!o("readable-stream").Readable}catch{d.nodestream=!1}},{"readable-stream":16}],31:[function(o,l,d){for(var p=o("./utils"),u=o("./support"),f=o("./nodejsUtils"),g=o("./stream/GenericWorker"),y=new Array(256),m=0;m<256;m++)y[m]=252<=m?6:248<=m?5:240<=m?4:224<=m?3:192<=m?2:1;y[254]=y[254]=1;function v(){g.call(this,"utf-8 decode"),this.leftOver=null}function w(){g.call(this,"utf-8 encode")}d.utf8encode=function(b){return u.nodebuffer?f.newBufferFrom(b,"utf-8"):function(A){var x,j,T,D,_,L=A.length,B=0;for(D=0;D<L;D++)(64512&(j=A.charCodeAt(D)))==55296&&D+1<L&&(64512&(T=A.charCodeAt(D+1)))==56320&&(j=65536+(j-55296<<10)+(T-56320),D++),B+=j<128?1:j<2048?2:j<65536?3:4;for(x=u.uint8array?new Uint8Array(B):new Array(B),D=_=0;_<B;D++)(64512&(j=A.charCodeAt(D)))==55296&&D+1<L&&(64512&(T=A.charCodeAt(D+1)))==56320&&(j=65536+(j-55296<<10)+(T-56320),D++),j<128?x[_++]=j:(j<2048?x[_++]=192|j>>>6:(j<65536?x[_++]=224|j>>>12:(x[_++]=240|j>>>18,x[_++]=128|j>>>12&63),x[_++]=128|j>>>6&63),x[_++]=128|63&j);return x}(b)},d.utf8decode=function(b){return u.nodebuffer?p.transformTo("nodebuffer",b).toString("utf-8"):function(A){var x,j,T,D,_=A.length,L=new Array(2*_);for(x=j=0;x<_;)if((T=A[x++])<128)L[j++]=T;else if(4<(D=y[T]))L[j++]=65533,x+=D-1;else{for(T&=D===2?31:D===3?15:7;1<D&&x<_;)T=T<<6|63&A[x++],D--;1<D?L[j++]=65533:T<65536?L[j++]=T:(T-=65536,L[j++]=55296|T>>10&1023,L[j++]=56320|1023&T)}return L.length!==j&&(L.subarray?L=L.subarray(0,j):L.length=j),p.applyFromCharCode(L)}(b=p.transformTo(u.uint8array?"uint8array":"array",b))},p.inherits(v,g),v.prototype.processChunk=function(b){var A=p.transformTo(u.uint8array?"uint8array":"array",b.data);if(this.leftOver&&this.leftOver.length){if(u.uint8array){var x=A;(A=new Uint8Array(x.length+this.leftOver.length)).set(this.leftOver,0),A.set(x,this.leftOver.length)}else A=this.leftOver.concat(A);this.leftOver=null}var j=function(D,_){var L;for((_=_||D.length)>D.length&&(_=D.length),L=_-1;0<=L&&(192&D[L])==128;)L--;return L<0||L===0?_:L+y[D[L]]>_?L:_}(A),T=A;j!==A.length&&(u.uint8array?(T=A.subarray(0,j),this.leftOver=A.subarray(j,A.length)):(T=A.slice(0,j),this.leftOver=A.slice(j,A.length))),this.push({data:d.utf8decode(T),meta:b.meta})},v.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:d.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},d.Utf8DecodeWorker=v,p.inherits(w,g),w.prototype.processChunk=function(b){this.push({data:d.utf8encode(b.data),meta:b.meta})},d.Utf8EncodeWorker=w},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(o,l,d){var p=o("./support"),u=o("./base64"),f=o("./nodejsUtils"),g=o("./external");function y(x){return x}function m(x,j){for(var T=0;T<x.length;++T)j[T]=255&x.charCodeAt(T);return j}o("setimmediate"),d.newBlob=function(x,j){d.checkSupport("blob");try{return new Blob([x],{type:j})}catch{try{var T=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);return T.append(x),T.getBlob(j)}catch{throw new Error("Bug : can't construct the Blob.")}}};var v={stringifyByChunk:function(x,j,T){var D=[],_=0,L=x.length;if(L<=T)return String.fromCharCode.apply(null,x);for(;_<L;)j==="array"||j==="nodebuffer"?D.push(String.fromCharCode.apply(null,x.slice(_,Math.min(_+T,L)))):D.push(String.fromCharCode.apply(null,x.subarray(_,Math.min(_+T,L)))),_+=T;return D.join("")},stringifyByChar:function(x){for(var j="",T=0;T<x.length;T++)j+=String.fromCharCode(x[T]);return j},applyCanBeUsed:{uint8array:function(){try{return p.uint8array&&String.fromCharCode.apply(null,new Uint8Array(1)).length===1}catch{return!1}}(),nodebuffer:function(){try{return p.nodebuffer&&String.fromCharCode.apply(null,f.allocBuffer(1)).length===1}catch{return!1}}()}};function w(x){var j=65536,T=d.getTypeOf(x),D=!0;if(T==="uint8array"?D=v.applyCanBeUsed.uint8array:T==="nodebuffer"&&(D=v.applyCanBeUsed.nodebuffer),D)for(;1<j;)try{return v.stringifyByChunk(x,T,j)}catch{j=Math.floor(j/2)}return v.stringifyByChar(x)}function b(x,j){for(var T=0;T<x.length;T++)j[T]=x[T];return j}d.applyFromCharCode=w;var A={};A.string={string:y,array:function(x){return m(x,new Array(x.length))},arraybuffer:function(x){return A.string.uint8array(x).buffer},uint8array:function(x){return m(x,new Uint8Array(x.length))},nodebuffer:function(x){return m(x,f.allocBuffer(x.length))}},A.array={string:w,array:y,arraybuffer:function(x){return new Uint8Array(x).buffer},uint8array:function(x){return new Uint8Array(x)},nodebuffer:function(x){return f.newBufferFrom(x)}},A.arraybuffer={string:function(x){return w(new Uint8Array(x))},array:function(x){return b(new Uint8Array(x),new Array(x.byteLength))},arraybuffer:y,uint8array:function(x){return new Uint8Array(x)},nodebuffer:function(x){return f.newBufferFrom(new Uint8Array(x))}},A.uint8array={string:w,array:function(x){return b(x,new Array(x.length))},arraybuffer:function(x){return x.buffer},uint8array:y,nodebuffer:function(x){return f.newBufferFrom(x)}},A.nodebuffer={string:w,array:function(x){return b(x,new Array(x.length))},arraybuffer:function(x){return A.nodebuffer.uint8array(x).buffer},uint8array:function(x){return b(x,new Uint8Array(x.length))},nodebuffer:y},d.transformTo=function(x,j){if(j=j||"",!x)return j;d.checkSupport(x);var T=d.getTypeOf(j);return A[T][x](j)},d.resolve=function(x){for(var j=x.split("/"),T=[],D=0;D<j.length;D++){var _=j[D];_==="."||_===""&&D!==0&&D!==j.length-1||(_===".."?T.pop():T.push(_))}return T.join("/")},d.getTypeOf=function(x){return typeof x=="string"?"string":Object.prototype.toString.call(x)==="[object Array]"?"array":p.nodebuffer&&f.isBuffer(x)?"nodebuffer":p.uint8array&&x instanceof Uint8Array?"uint8array":p.arraybuffer&&x instanceof ArrayBuffer?"arraybuffer":void 0},d.checkSupport=function(x){if(!p[x.toLowerCase()])throw new Error(x+" is not supported by this platform")},d.MAX_VALUE_16BITS=65535,d.MAX_VALUE_32BITS=-1,d.pretty=function(x){var j,T,D="";for(T=0;T<(x||"").length;T++)D+="\\x"+((j=x.charCodeAt(T))<16?"0":"")+j.toString(16).toUpperCase();return D},d.delay=function(x,j,T){setImmediate(function(){x.apply(T||null,j||[])})},d.inherits=function(x,j){function T(){}T.prototype=j.prototype,x.prototype=new T},d.extend=function(){var x,j,T={};for(x=0;x<arguments.length;x++)for(j in arguments[x])Object.prototype.hasOwnProperty.call(arguments[x],j)&&T[j]===void 0&&(T[j]=arguments[x][j]);return T},d.prepareContent=function(x,j,T,D,_){return g.Promise.resolve(j).then(function(L){return p.blob&&(L instanceof Blob||["[object File]","[object Blob]"].indexOf(Object.prototype.toString.call(L))!==-1)&&typeof FileReader<"u"?new g.Promise(function(B,P){var z=new FileReader;z.onload=function(W){B(W.target.result)},z.onerror=function(W){P(W.target.error)},z.readAsArrayBuffer(L)}):L}).then(function(L){var B=d.getTypeOf(L);return B?(B==="arraybuffer"?L=d.transformTo("uint8array",L):B==="string"&&(_?L=u.decode(L):T&&D!==!0&&(L=function(P){return m(P,p.uint8array?new Uint8Array(P.length):new Array(P.length))}(L))),L):g.Promise.reject(new Error("Can't read the data of '"+x+"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?"))})}},{"./base64":1,"./external":6,"./nodejsUtils":14,"./support":30,setimmediate:54}],33:[function(o,l,d){var p=o("./reader/readerFor"),u=o("./utils"),f=o("./signature"),g=o("./zipEntry"),y=o("./support");function m(v){this.files=[],this.loadOptions=v}m.prototype={checkSignature:function(v){if(!this.reader.readAndCheckSignature(v)){this.reader.index-=4;var w=this.reader.readString(4);throw new Error("Corrupted zip or bug: unexpected signature ("+u.pretty(w)+", expected "+u.pretty(v)+")")}},isSignature:function(v,w){var b=this.reader.index;this.reader.setIndex(v);var A=this.reader.readString(4)===w;return this.reader.setIndex(b),A},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var v=this.reader.readData(this.zipCommentLength),w=y.uint8array?"uint8array":"array",b=u.transformTo(w,v);this.zipComment=this.loadOptions.decodeFileName(b)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var v,w,b,A=this.zip64EndOfCentralSize-44;0<A;)v=this.reader.readInt(2),w=this.reader.readInt(4),b=this.reader.readData(w),this.zip64ExtensibleData[v]={id:v,length:w,value:b}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),1<this.disksCount)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var v,w;for(v=0;v<this.files.length;v++)w=this.files[v],this.reader.setIndex(w.localHeaderOffset),this.checkSignature(f.LOCAL_FILE_HEADER),w.readLocalPart(this.reader),w.handleUTF8(),w.processAttributes()},readCentralDir:function(){var v;for(this.reader.setIndex(this.centralDirOffset);this.reader.readAndCheckSignature(f.CENTRAL_FILE_HEADER);)(v=new g({zip64:this.zip64},this.loadOptions)).readCentralPart(this.reader),this.files.push(v);if(this.centralDirRecords!==this.files.length&&this.centralDirRecords!==0&&this.files.length===0)throw new Error("Corrupted zip or bug: expected "+this.centralDirRecords+" records in central dir, got "+this.files.length)},readEndOfCentral:function(){var v=this.reader.lastIndexOfSignature(f.CENTRAL_DIRECTORY_END);if(v<0)throw this.isSignature(0,f.LOCAL_FILE_HEADER)?new Error("Corrupted zip: can't find end of central directory"):new Error("Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html");this.reader.setIndex(v);var w=v;if(this.checkSignature(f.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===u.MAX_VALUE_16BITS||this.diskWithCentralDirStart===u.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===u.MAX_VALUE_16BITS||this.centralDirRecords===u.MAX_VALUE_16BITS||this.centralDirSize===u.MAX_VALUE_32BITS||this.centralDirOffset===u.MAX_VALUE_32BITS){if(this.zip64=!0,(v=this.reader.lastIndexOfSignature(f.ZIP64_CENTRAL_DIRECTORY_LOCATOR))<0)throw new Error("Corrupted zip: can't find the ZIP64 end of central directory locator");if(this.reader.setIndex(v),this.checkSignature(f.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,f.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(f.ZIP64_CENTRAL_DIRECTORY_END),this.relativeOffsetEndOfZip64CentralDir<0))throw new Error("Corrupted zip: can't find the ZIP64 end of central directory");this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(f.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}var b=this.centralDirOffset+this.centralDirSize;this.zip64&&(b+=20,b+=12+this.zip64EndOfCentralSize);var A=w-b;if(0<A)this.isSignature(w,f.CENTRAL_FILE_HEADER)||(this.reader.zero=A);else if(A<0)throw new Error("Corrupted zip: missing "+Math.abs(A)+" bytes.")},prepareReader:function(v){this.reader=p(v)},load:function(v){this.prepareReader(v),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},l.exports=m},{"./reader/readerFor":22,"./signature":23,"./support":30,"./utils":32,"./zipEntry":34}],34:[function(o,l,d){var p=o("./reader/readerFor"),u=o("./utils"),f=o("./compressedObject"),g=o("./crc32"),y=o("./utf8"),m=o("./compressions"),v=o("./support");function w(b,A){this.options=b,this.loadOptions=A}w.prototype={isEncrypted:function(){return(1&this.bitFlag)==1},useUTF8:function(){return(2048&this.bitFlag)==2048},readLocalPart:function(b){var A,x;if(b.skip(22),this.fileNameLength=b.readInt(2),x=b.readInt(2),this.fileName=b.readData(this.fileNameLength),b.skip(x),this.compressedSize===-1||this.uncompressedSize===-1)throw new Error("Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)");if((A=function(j){for(var T in m)if(Object.prototype.hasOwnProperty.call(m,T)&&m[T].magic===j)return m[T];return null}(this.compressionMethod))===null)throw new Error("Corrupted zip : compression "+u.pretty(this.compressionMethod)+" unknown (inner file : "+u.transformTo("string",this.fileName)+")");this.decompressed=new f(this.compressedSize,this.uncompressedSize,this.crc32,A,b.readData(this.compressedSize))},readCentralPart:function(b){this.versionMadeBy=b.readInt(2),b.skip(2),this.bitFlag=b.readInt(2),this.compressionMethod=b.readString(2),this.date=b.readDate(),this.crc32=b.readInt(4),this.compressedSize=b.readInt(4),this.uncompressedSize=b.readInt(4);var A=b.readInt(2);if(this.extraFieldsLength=b.readInt(2),this.fileCommentLength=b.readInt(2),this.diskNumberStart=b.readInt(2),this.internalFileAttributes=b.readInt(2),this.externalFileAttributes=b.readInt(4),this.localHeaderOffset=b.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");b.skip(A),this.readExtraFields(b),this.parseZIP64ExtraField(b),this.fileComment=b.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var b=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),b==0&&(this.dosPermissions=63&this.externalFileAttributes),b==3&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||this.fileNameStr.slice(-1)!=="/"||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var b=p(this.extraFields[1].value);this.uncompressedSize===u.MAX_VALUE_32BITS&&(this.uncompressedSize=b.readInt(8)),this.compressedSize===u.MAX_VALUE_32BITS&&(this.compressedSize=b.readInt(8)),this.localHeaderOffset===u.MAX_VALUE_32BITS&&(this.localHeaderOffset=b.readInt(8)),this.diskNumberStart===u.MAX_VALUE_32BITS&&(this.diskNumberStart=b.readInt(4))}},readExtraFields:function(b){var A,x,j,T=b.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});b.index+4<T;)A=b.readInt(2),x=b.readInt(2),j=b.readData(x),this.extraFields[A]={id:A,length:x,value:j};b.setIndex(T)},handleUTF8:function(){var b=v.uint8array?"uint8array":"array";if(this.useUTF8())this.fileNameStr=y.utf8decode(this.fileName),this.fileCommentStr=y.utf8decode(this.fileComment);else{var A=this.findExtraFieldUnicodePath();if(A!==null)this.fileNameStr=A;else{var x=u.transformTo(b,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(x)}var j=this.findExtraFieldUnicodeComment();if(j!==null)this.fileCommentStr=j;else{var T=u.transformTo(b,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(T)}}},findExtraFieldUnicodePath:function(){var b=this.extraFields[28789];if(b){var A=p(b.value);return A.readInt(1)!==1||g(this.fileName)!==A.readInt(4)?null:y.utf8decode(A.readData(b.length-5))}return null},findExtraFieldUnicodeComment:function(){var b=this.extraFields[25461];if(b){var A=p(b.value);return A.readInt(1)!==1||g(this.fileComment)!==A.readInt(4)?null:y.utf8decode(A.readData(b.length-5))}return null}},l.exports=w},{"./compressedObject":2,"./compressions":3,"./crc32":4,"./reader/readerFor":22,"./support":30,"./utf8":31,"./utils":32}],35:[function(o,l,d){function p(A,x,j){this.name=A,this.dir=j.dir,this.date=j.date,this.comment=j.comment,this.unixPermissions=j.unixPermissions,this.dosPermissions=j.dosPermissions,this._data=x,this._dataBinary=j.binary,this.options={compression:j.compression,compressionOptions:j.compressionOptions}}var u=o("./stream/StreamHelper"),f=o("./stream/DataWorker"),g=o("./utf8"),y=o("./compressedObject"),m=o("./stream/GenericWorker");p.prototype={internalStream:function(A){var x=null,j="string";try{if(!A)throw new Error("No output type specified.");var T=(j=A.toLowerCase())==="string"||j==="text";j!=="binarystring"&&j!=="text"||(j="string"),x=this._decompressWorker();var D=!this._dataBinary;D&&!T&&(x=x.pipe(new g.Utf8EncodeWorker)),!D&&T&&(x=x.pipe(new g.Utf8DecodeWorker))}catch(_){(x=new m("error")).error(_)}return new u(x,j,"")},async:function(A,x){return this.internalStream(A).accumulate(x)},nodeStream:function(A,x){return this.internalStream(A||"nodebuffer").toNodejsStream(x)},_compressWorker:function(A,x){if(this._data instanceof y&&this._data.compression.magic===A.magic)return this._data.getCompressedWorker();var j=this._decompressWorker();return this._dataBinary||(j=j.pipe(new g.Utf8EncodeWorker)),y.createWorkerFrom(j,A,x)},_decompressWorker:function(){return this._data instanceof y?this._data.getContentWorker():this._data instanceof m?this._data:new f(this._data)}};for(var v=["asText","asBinary","asNodeBuffer","asUint8Array","asArrayBuffer"],w=function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},b=0;b<v.length;b++)p.prototype[v[b]]=w;l.exports=p},{"./compressedObject":2,"./stream/DataWorker":27,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31}],36:[function(o,l,d){(function(p){var u,f,g=p.MutationObserver||p.WebKitMutationObserver;if(g){var y=0,m=new g(A),v=p.document.createTextNode("");m.observe(v,{characterData:!0}),u=function(){v.data=y=++y%2}}else if(p.setImmediate||p.MessageChannel===void 0)u="document"in p&&"onreadystatechange"in p.document.createElement("script")?function(){var x=p.document.createElement("script");x.onreadystatechange=function(){A(),x.onreadystatechange=null,x.parentNode.removeChild(x),x=null},p.document.documentElement.appendChild(x)}:function(){setTimeout(A,0)};else{var w=new p.MessageChannel;w.port1.onmessage=A,u=function(){w.port2.postMessage(0)}}var b=[];function A(){var x,j;f=!0;for(var T=b.length;T;){for(j=b,b=[],x=-1;++x<T;)j[x]();T=b.length}f=!1}l.exports=function(x){b.push(x)!==1||f||u()}}).call(this,typeof zs<"u"?zs:typeof self<"u"?self:typeof window<"u"?window:{})},{}],37:[function(o,l,d){var p=o("immediate");function u(){}var f={},g=["REJECTED"],y=["FULFILLED"],m=["PENDING"];function v(T){if(typeof T!="function")throw new TypeError("resolver must be a function");this.state=m,this.queue=[],this.outcome=void 0,T!==u&&x(this,T)}function w(T,D,_){this.promise=T,typeof D=="function"&&(this.onFulfilled=D,this.callFulfilled=this.otherCallFulfilled),typeof _=="function"&&(this.onRejected=_,this.callRejected=this.otherCallRejected)}function b(T,D,_){p(function(){var L;try{L=D(_)}catch(B){return f.reject(T,B)}L===T?f.reject(T,new TypeError("Cannot resolve promise with itself")):f.resolve(T,L)})}function A(T){var D=T&&T.then;if(T&&(typeof T=="object"||typeof T=="function")&&typeof D=="function")return function(){D.apply(T,arguments)}}function x(T,D){var _=!1;function L(z){_||(_=!0,f.reject(T,z))}function B(z){_||(_=!0,f.resolve(T,z))}var P=j(function(){D(B,L)});P.status==="error"&&L(P.value)}function j(T,D){var _={};try{_.value=T(D),_.status="success"}catch(L){_.status="error",_.value=L}return _}(l.exports=v).prototype.finally=function(T){if(typeof T!="function")return this;var D=this.constructor;return this.then(function(_){return D.resolve(T()).then(function(){return _})},function(_){return D.resolve(T()).then(function(){throw _})})},v.prototype.catch=function(T){return this.then(null,T)},v.prototype.then=function(T,D){if(typeof T!="function"&&this.state===y||typeof D!="function"&&this.state===g)return this;var _=new this.constructor(u);return this.state!==m?b(_,this.state===y?T:D,this.outcome):this.queue.push(new w(_,T,D)),_},w.prototype.callFulfilled=function(T){f.resolve(this.promise,T)},w.prototype.otherCallFulfilled=function(T){b(this.promise,this.onFulfilled,T)},w.prototype.callRejected=function(T){f.reject(this.promise,T)},w.prototype.otherCallRejected=function(T){b(this.promise,this.onRejected,T)},f.resolve=function(T,D){var _=j(A,D);if(_.status==="error")return f.reject(T,_.value);var L=_.value;if(L)x(T,L);else{T.state=y,T.outcome=D;for(var B=-1,P=T.queue.length;++B<P;)T.queue[B].callFulfilled(D)}return T},f.reject=function(T,D){T.state=g,T.outcome=D;for(var _=-1,L=T.queue.length;++_<L;)T.queue[_].callRejected(D);return T},v.resolve=function(T){return T instanceof this?T:f.resolve(new this(u),T)},v.reject=function(T){var D=new this(u);return f.reject(D,T)},v.all=function(T){var D=this;if(Object.prototype.toString.call(T)!=="[object Array]")return this.reject(new TypeError("must be an array"));var _=T.length,L=!1;if(!_)return this.resolve([]);for(var B=new Array(_),P=0,z=-1,W=new this(u);++z<_;)H(T[z],z);return W;function H(ae,ve){D.resolve(ae).then(function(N){B[ve]=N,++P!==_||L||(L=!0,f.resolve(W,B))},function(N){L||(L=!0,f.reject(W,N))})}},v.race=function(T){var D=this;if(Object.prototype.toString.call(T)!=="[object Array]")return this.reject(new TypeError("must be an array"));var _=T.length,L=!1;if(!_)return this.resolve([]);for(var B=-1,P=new this(u);++B<_;)z=T[B],D.resolve(z).then(function(W){L||(L=!0,f.resolve(P,W))},function(W){L||(L=!0,f.reject(P,W))});var z;return P}},{immediate:36}],38:[function(o,l,d){var p={};(0,o("./lib/utils/common").assign)(p,o("./lib/deflate"),o("./lib/inflate"),o("./lib/zlib/constants")),l.exports=p},{"./lib/deflate":39,"./lib/inflate":40,"./lib/utils/common":41,"./lib/zlib/constants":44}],39:[function(o,l,d){var p=o("./zlib/deflate"),u=o("./utils/common"),f=o("./utils/strings"),g=o("./zlib/messages"),y=o("./zlib/zstream"),m=Object.prototype.toString,v=0,w=-1,b=0,A=8;function x(T){if(!(this instanceof x))return new x(T);this.options=u.assign({level:w,method:A,chunkSize:16384,windowBits:15,memLevel:8,strategy:b,to:""},T||{});var D=this.options;D.raw&&0<D.windowBits?D.windowBits=-D.windowBits:D.gzip&&0<D.windowBits&&D.windowBits<16&&(D.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new y,this.strm.avail_out=0;var _=p.deflateInit2(this.strm,D.level,D.method,D.windowBits,D.memLevel,D.strategy);if(_!==v)throw new Error(g[_]);if(D.header&&p.deflateSetHeader(this.strm,D.header),D.dictionary){var L;if(L=typeof D.dictionary=="string"?f.string2buf(D.dictionary):m.call(D.dictionary)==="[object ArrayBuffer]"?new Uint8Array(D.dictionary):D.dictionary,(_=p.deflateSetDictionary(this.strm,L))!==v)throw new Error(g[_]);this._dict_set=!0}}function j(T,D){var _=new x(D);if(_.push(T,!0),_.err)throw _.msg||g[_.err];return _.result}x.prototype.push=function(T,D){var _,L,B=this.strm,P=this.options.chunkSize;if(this.ended)return!1;L=D===~~D?D:D===!0?4:0,typeof T=="string"?B.input=f.string2buf(T):m.call(T)==="[object ArrayBuffer]"?B.input=new Uint8Array(T):B.input=T,B.next_in=0,B.avail_in=B.input.length;do{if(B.avail_out===0&&(B.output=new u.Buf8(P),B.next_out=0,B.avail_out=P),(_=p.deflate(B,L))!==1&&_!==v)return this.onEnd(_),!(this.ended=!0);B.avail_out!==0&&(B.avail_in!==0||L!==4&&L!==2)||(this.options.to==="string"?this.onData(f.buf2binstring(u.shrinkBuf(B.output,B.next_out))):this.onData(u.shrinkBuf(B.output,B.next_out)))}while((0<B.avail_in||B.avail_out===0)&&_!==1);return L===4?(_=p.deflateEnd(this.strm),this.onEnd(_),this.ended=!0,_===v):L!==2||(this.onEnd(v),!(B.avail_out=0))},x.prototype.onData=function(T){this.chunks.push(T)},x.prototype.onEnd=function(T){T===v&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=u.flattenChunks(this.chunks)),this.chunks=[],this.err=T,this.msg=this.strm.msg},d.Deflate=x,d.deflate=j,d.deflateRaw=function(T,D){return(D=D||{}).raw=!0,j(T,D)},d.gzip=function(T,D){return(D=D||{}).gzip=!0,j(T,D)}},{"./utils/common":41,"./utils/strings":42,"./zlib/deflate":46,"./zlib/messages":51,"./zlib/zstream":53}],40:[function(o,l,d){var p=o("./zlib/inflate"),u=o("./utils/common"),f=o("./utils/strings"),g=o("./zlib/constants"),y=o("./zlib/messages"),m=o("./zlib/zstream"),v=o("./zlib/gzheader"),w=Object.prototype.toString;function b(x){if(!(this instanceof b))return new b(x);this.options=u.assign({chunkSize:16384,windowBits:0,to:""},x||{});var j=this.options;j.raw&&0<=j.windowBits&&j.windowBits<16&&(j.windowBits=-j.windowBits,j.windowBits===0&&(j.windowBits=-15)),!(0<=j.windowBits&&j.windowBits<16)||x&&x.windowBits||(j.windowBits+=32),15<j.windowBits&&j.windowBits<48&&(15&j.windowBits)==0&&(j.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new m,this.strm.avail_out=0;var T=p.inflateInit2(this.strm,j.windowBits);if(T!==g.Z_OK)throw new Error(y[T]);this.header=new v,p.inflateGetHeader(this.strm,this.header)}function A(x,j){var T=new b(j);if(T.push(x,!0),T.err)throw T.msg||y[T.err];return T.result}b.prototype.push=function(x,j){var T,D,_,L,B,P,z=this.strm,W=this.options.chunkSize,H=this.options.dictionary,ae=!1;if(this.ended)return!1;D=j===~~j?j:j===!0?g.Z_FINISH:g.Z_NO_FLUSH,typeof x=="string"?z.input=f.binstring2buf(x):w.call(x)==="[object ArrayBuffer]"?z.input=new Uint8Array(x):z.input=x,z.next_in=0,z.avail_in=z.input.length;do{if(z.avail_out===0&&(z.output=new u.Buf8(W),z.next_out=0,z.avail_out=W),(T=p.inflate(z,g.Z_NO_FLUSH))===g.Z_NEED_DICT&&H&&(P=typeof H=="string"?f.string2buf(H):w.call(H)==="[object ArrayBuffer]"?new Uint8Array(H):H,T=p.inflateSetDictionary(this.strm,P)),T===g.Z_BUF_ERROR&&ae===!0&&(T=g.Z_OK,ae=!1),T!==g.Z_STREAM_END&&T!==g.Z_OK)return this.onEnd(T),!(this.ended=!0);z.next_out&&(z.avail_out!==0&&T!==g.Z_STREAM_END&&(z.avail_in!==0||D!==g.Z_FINISH&&D!==g.Z_SYNC_FLUSH)||(this.options.to==="string"?(_=f.utf8border(z.output,z.next_out),L=z.next_out-_,B=f.buf2string(z.output,_),z.next_out=L,z.avail_out=W-L,L&&u.arraySet(z.output,z.output,_,L,0),this.onData(B)):this.onData(u.shrinkBuf(z.output,z.next_out)))),z.avail_in===0&&z.avail_out===0&&(ae=!0)}while((0<z.avail_in||z.avail_out===0)&&T!==g.Z_STREAM_END);return T===g.Z_STREAM_END&&(D=g.Z_FINISH),D===g.Z_FINISH?(T=p.inflateEnd(this.strm),this.onEnd(T),this.ended=!0,T===g.Z_OK):D!==g.Z_SYNC_FLUSH||(this.onEnd(g.Z_OK),!(z.avail_out=0))},b.prototype.onData=function(x){this.chunks.push(x)},b.prototype.onEnd=function(x){x===g.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=u.flattenChunks(this.chunks)),this.chunks=[],this.err=x,this.msg=this.strm.msg},d.Inflate=b,d.inflate=A,d.inflateRaw=function(x,j){return(j=j||{}).raw=!0,A(x,j)},d.ungzip=A},{"./utils/common":41,"./utils/strings":42,"./zlib/constants":44,"./zlib/gzheader":47,"./zlib/inflate":49,"./zlib/messages":51,"./zlib/zstream":53}],41:[function(o,l,d){var p=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";d.assign=function(g){for(var y=Array.prototype.slice.call(arguments,1);y.length;){var m=y.shift();if(m){if(typeof m!="object")throw new TypeError(m+"must be non-object");for(var v in m)m.hasOwnProperty(v)&&(g[v]=m[v])}}return g},d.shrinkBuf=function(g,y){return g.length===y?g:g.subarray?g.subarray(0,y):(g.length=y,g)};var u={arraySet:function(g,y,m,v,w){if(y.subarray&&g.subarray)g.set(y.subarray(m,m+v),w);else for(var b=0;b<v;b++)g[w+b]=y[m+b]},flattenChunks:function(g){var y,m,v,w,b,A;for(y=v=0,m=g.length;y<m;y++)v+=g[y].length;for(A=new Uint8Array(v),y=w=0,m=g.length;y<m;y++)b=g[y],A.set(b,w),w+=b.length;return A}},f={arraySet:function(g,y,m,v,w){for(var b=0;b<v;b++)g[w+b]=y[m+b]},flattenChunks:function(g){return[].concat.apply([],g)}};d.setTyped=function(g){g?(d.Buf8=Uint8Array,d.Buf16=Uint16Array,d.Buf32=Int32Array,d.assign(d,u)):(d.Buf8=Array,d.Buf16=Array,d.Buf32=Array,d.assign(d,f))},d.setTyped(p)},{}],42:[function(o,l,d){var p=o("./common"),u=!0,f=!0;try{String.fromCharCode.apply(null,[0])}catch{u=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{f=!1}for(var g=new p.Buf8(256),y=0;y<256;y++)g[y]=252<=y?6:248<=y?5:240<=y?4:224<=y?3:192<=y?2:1;function m(v,w){if(w<65537&&(v.subarray&&f||!v.subarray&&u))return String.fromCharCode.apply(null,p.shrinkBuf(v,w));for(var b="",A=0;A<w;A++)b+=String.fromCharCode(v[A]);return b}g[254]=g[254]=1,d.string2buf=function(v){var w,b,A,x,j,T=v.length,D=0;for(x=0;x<T;x++)(64512&(b=v.charCodeAt(x)))==55296&&x+1<T&&(64512&(A=v.charCodeAt(x+1)))==56320&&(b=65536+(b-55296<<10)+(A-56320),x++),D+=b<128?1:b<2048?2:b<65536?3:4;for(w=new p.Buf8(D),x=j=0;j<D;x++)(64512&(b=v.charCodeAt(x)))==55296&&x+1<T&&(64512&(A=v.charCodeAt(x+1)))==56320&&(b=65536+(b-55296<<10)+(A-56320),x++),b<128?w[j++]=b:(b<2048?w[j++]=192|b>>>6:(b<65536?w[j++]=224|b>>>12:(w[j++]=240|b>>>18,w[j++]=128|b>>>12&63),w[j++]=128|b>>>6&63),w[j++]=128|63&b);return w},d.buf2binstring=function(v){return m(v,v.length)},d.binstring2buf=function(v){for(var w=new p.Buf8(v.length),b=0,A=w.length;b<A;b++)w[b]=v.charCodeAt(b);return w},d.buf2string=function(v,w){var b,A,x,j,T=w||v.length,D=new Array(2*T);for(b=A=0;b<T;)if((x=v[b++])<128)D[A++]=x;else if(4<(j=g[x]))D[A++]=65533,b+=j-1;else{for(x&=j===2?31:j===3?15:7;1<j&&b<T;)x=x<<6|63&v[b++],j--;1<j?D[A++]=65533:x<65536?D[A++]=x:(x-=65536,D[A++]=55296|x>>10&1023,D[A++]=56320|1023&x)}return m(D,A)},d.utf8border=function(v,w){var b;for((w=w||v.length)>v.length&&(w=v.length),b=w-1;0<=b&&(192&v[b])==128;)b--;return b<0||b===0?w:b+g[v[b]]>w?b:w}},{"./common":41}],43:[function(o,l,d){l.exports=function(p,u,f,g){for(var y=65535&p|0,m=p>>>16&65535|0,v=0;f!==0;){for(f-=v=2e3<f?2e3:f;m=m+(y=y+u[g++]|0)|0,--v;);y%=65521,m%=65521}return y|m<<16|0}},{}],44:[function(o,l,d){l.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],45:[function(o,l,d){var p=function(){for(var u,f=[],g=0;g<256;g++){u=g;for(var y=0;y<8;y++)u=1&u?3988292384^u>>>1:u>>>1;f[g]=u}return f}();l.exports=function(u,f,g,y){var m=p,v=y+g;u^=-1;for(var w=y;w<v;w++)u=u>>>8^m[255&(u^f[w])];return-1^u}},{}],46:[function(o,l,d){var p,u=o("../utils/common"),f=o("./trees"),g=o("./adler32"),y=o("./crc32"),m=o("./messages"),v=0,w=4,b=0,A=-2,x=-1,j=4,T=2,D=8,_=9,L=286,B=30,P=19,z=2*L+1,W=15,H=3,ae=258,ve=ae+H+1,N=42,ie=113,C=1,re=2,F=3,U=4;function ee(S,le){return S.msg=m[le],le}function te(S){return(S<<1)-(4<S?9:0)}function me(S){for(var le=S.length;0<=--le;)S[le]=0}function Z(S){var le=S.state,ne=le.pending;ne>S.avail_out&&(ne=S.avail_out),ne!==0&&(u.arraySet(S.output,le.pending_buf,le.pending_out,ne,S.next_out),S.next_out+=ne,le.pending_out+=ne,S.total_out+=ne,S.avail_out-=ne,le.pending-=ne,le.pending===0&&(le.pending_out=0))}function Y(S,le){f._tr_flush_block(S,0<=S.block_start?S.block_start:-1,S.strstart-S.block_start,le),S.block_start=S.strstart,Z(S.strm)}function fe(S,le){S.pending_buf[S.pending++]=le}function pe(S,le){S.pending_buf[S.pending++]=le>>>8&255,S.pending_buf[S.pending++]=255&le}function he(S,le){var ne,R,M=S.max_chain_length,G=S.strstart,de=S.prev_length,ue=S.nice_match,Q=S.strstart>S.w_size-ve?S.strstart-(S.w_size-ve):0,ge=S.window,be=S.w_mask,ye=S.prev,Se=S.strstart+ae,De=ge[G+de-1],Ee=ge[G+de];S.prev_length>=S.good_match&&(M>>=2),ue>S.lookahead&&(ue=S.lookahead);do if(ge[(ne=le)+de]===Ee&&ge[ne+de-1]===De&&ge[ne]===ge[G]&&ge[++ne]===ge[G+1]){G+=2,ne++;do;while(ge[++G]===ge[++ne]&&ge[++G]===ge[++ne]&&ge[++G]===ge[++ne]&&ge[++G]===ge[++ne]&&ge[++G]===ge[++ne]&&ge[++G]===ge[++ne]&&ge[++G]===ge[++ne]&&ge[++G]===ge[++ne]&&G<Se);if(R=ae-(Se-G),G=Se-ae,de<R){if(S.match_start=le,ue<=(de=R))break;De=ge[G+de-1],Ee=ge[G+de]}}while((le=ye[le&be])>Q&&--M!=0);return de<=S.lookahead?de:S.lookahead}function Pe(S){var le,ne,R,M,G,de,ue,Q,ge,be,ye=S.w_size;do{if(M=S.window_size-S.lookahead-S.strstart,S.strstart>=ye+(ye-ve)){for(u.arraySet(S.window,S.window,ye,ye,0),S.match_start-=ye,S.strstart-=ye,S.block_start-=ye,le=ne=S.hash_size;R=S.head[--le],S.head[le]=ye<=R?R-ye:0,--ne;);for(le=ne=ye;R=S.prev[--le],S.prev[le]=ye<=R?R-ye:0,--ne;);M+=ye}if(S.strm.avail_in===0)break;if(de=S.strm,ue=S.window,Q=S.strstart+S.lookahead,ge=M,be=void 0,be=de.avail_in,ge<be&&(be=ge),ne=be===0?0:(de.avail_in-=be,u.arraySet(ue,de.input,de.next_in,be,Q),de.state.wrap===1?de.adler=g(de.adler,ue,be,Q):de.state.wrap===2&&(de.adler=y(de.adler,ue,be,Q)),de.next_in+=be,de.total_in+=be,be),S.lookahead+=ne,S.lookahead+S.insert>=H)for(G=S.strstart-S.insert,S.ins_h=S.window[G],S.ins_h=(S.ins_h<<S.hash_shift^S.window[G+1])&S.hash_mask;S.insert&&(S.ins_h=(S.ins_h<<S.hash_shift^S.window[G+H-1])&S.hash_mask,S.prev[G&S.w_mask]=S.head[S.ins_h],S.head[S.ins_h]=G,G++,S.insert--,!(S.lookahead+S.insert<H)););}while(S.lookahead<ve&&S.strm.avail_in!==0)}function ot(S,le){for(var ne,R;;){if(S.lookahead<ve){if(Pe(S),S.lookahead<ve&&le===v)return C;if(S.lookahead===0)break}if(ne=0,S.lookahead>=H&&(S.ins_h=(S.ins_h<<S.hash_shift^S.window[S.strstart+H-1])&S.hash_mask,ne=S.prev[S.strstart&S.w_mask]=S.head[S.ins_h],S.head[S.ins_h]=S.strstart),ne!==0&&S.strstart-ne<=S.w_size-ve&&(S.match_length=he(S,ne)),S.match_length>=H)if(R=f._tr_tally(S,S.strstart-S.match_start,S.match_length-H),S.lookahead-=S.match_length,S.match_length<=S.max_lazy_match&&S.lookahead>=H){for(S.match_length--;S.strstart++,S.ins_h=(S.ins_h<<S.hash_shift^S.window[S.strstart+H-1])&S.hash_mask,ne=S.prev[S.strstart&S.w_mask]=S.head[S.ins_h],S.head[S.ins_h]=S.strstart,--S.match_length!=0;);S.strstart++}else S.strstart+=S.match_length,S.match_length=0,S.ins_h=S.window[S.strstart],S.ins_h=(S.ins_h<<S.hash_shift^S.window[S.strstart+1])&S.hash_mask;else R=f._tr_tally(S,0,S.window[S.strstart]),S.lookahead--,S.strstart++;if(R&&(Y(S,!1),S.strm.avail_out===0))return C}return S.insert=S.strstart<H-1?S.strstart:H-1,le===w?(Y(S,!0),S.strm.avail_out===0?F:U):S.last_lit&&(Y(S,!1),S.strm.avail_out===0)?C:re}function _e(S,le){for(var ne,R,M;;){if(S.lookahead<ve){if(Pe(S),S.lookahead<ve&&le===v)return C;if(S.lookahead===0)break}if(ne=0,S.lookahead>=H&&(S.ins_h=(S.ins_h<<S.hash_shift^S.window[S.strstart+H-1])&S.hash_mask,ne=S.prev[S.strstart&S.w_mask]=S.head[S.ins_h],S.head[S.ins_h]=S.strstart),S.prev_length=S.match_length,S.prev_match=S.match_start,S.match_length=H-1,ne!==0&&S.prev_length<S.max_lazy_match&&S.strstart-ne<=S.w_size-ve&&(S.match_length=he(S,ne),S.match_length<=5&&(S.strategy===1||S.match_length===H&&4096<S.strstart-S.match_start)&&(S.match_length=H-1)),S.prev_length>=H&&S.match_length<=S.prev_length){for(M=S.strstart+S.lookahead-H,R=f._tr_tally(S,S.strstart-1-S.prev_match,S.prev_length-H),S.lookahead-=S.prev_length-1,S.prev_length-=2;++S.strstart<=M&&(S.ins_h=(S.ins_h<<S.hash_shift^S.window[S.strstart+H-1])&S.hash_mask,ne=S.prev[S.strstart&S.w_mask]=S.head[S.ins_h],S.head[S.ins_h]=S.strstart),--S.prev_length!=0;);if(S.match_available=0,S.match_length=H-1,S.strstart++,R&&(Y(S,!1),S.strm.avail_out===0))return C}else if(S.match_available){if((R=f._tr_tally(S,0,S.window[S.strstart-1]))&&Y(S,!1),S.strstart++,S.lookahead--,S.strm.avail_out===0)return C}else S.match_available=1,S.strstart++,S.lookahead--}return S.match_available&&(R=f._tr_tally(S,0,S.window[S.strstart-1]),S.match_available=0),S.insert=S.strstart<H-1?S.strstart:H-1,le===w?(Y(S,!0),S.strm.avail_out===0?F:U):S.last_lit&&(Y(S,!1),S.strm.avail_out===0)?C:re}function ze(S,le,ne,R,M){this.good_length=S,this.max_lazy=le,this.nice_length=ne,this.max_chain=R,this.func=M}function nt(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=D,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new u.Buf16(2*z),this.dyn_dtree=new u.Buf16(2*(2*B+1)),this.bl_tree=new u.Buf16(2*(2*P+1)),me(this.dyn_ltree),me(this.dyn_dtree),me(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new u.Buf16(W+1),this.heap=new u.Buf16(2*L+1),me(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new u.Buf16(2*L+1),me(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function Ye(S){var le;return S&&S.state?(S.total_in=S.total_out=0,S.data_type=T,(le=S.state).pending=0,le.pending_out=0,le.wrap<0&&(le.wrap=-le.wrap),le.status=le.wrap?N:ie,S.adler=le.wrap===2?0:1,le.last_flush=v,f._tr_init(le),b):ee(S,A)}function Mt(S){var le=Ye(S);return le===b&&function(ne){ne.window_size=2*ne.w_size,me(ne.head),ne.max_lazy_match=p[ne.level].max_lazy,ne.good_match=p[ne.level].good_length,ne.nice_match=p[ne.level].nice_length,ne.max_chain_length=p[ne.level].max_chain,ne.strstart=0,ne.block_start=0,ne.lookahead=0,ne.insert=0,ne.match_length=ne.prev_length=H-1,ne.match_available=0,ne.ins_h=0}(S.state),le}function Ct(S,le,ne,R,M,G){if(!S)return A;var de=1;if(le===x&&(le=6),R<0?(de=0,R=-R):15<R&&(de=2,R-=16),M<1||_<M||ne!==D||R<8||15<R||le<0||9<le||G<0||j<G)return ee(S,A);R===8&&(R=9);var ue=new nt;return(S.state=ue).strm=S,ue.wrap=de,ue.gzhead=null,ue.w_bits=R,ue.w_size=1<<ue.w_bits,ue.w_mask=ue.w_size-1,ue.hash_bits=M+7,ue.hash_size=1<<ue.hash_bits,ue.hash_mask=ue.hash_size-1,ue.hash_shift=~~((ue.hash_bits+H-1)/H),ue.window=new u.Buf8(2*ue.w_size),ue.head=new u.Buf16(ue.hash_size),ue.prev=new u.Buf16(ue.w_size),ue.lit_bufsize=1<<M+6,ue.pending_buf_size=4*ue.lit_bufsize,ue.pending_buf=new u.Buf8(ue.pending_buf_size),ue.d_buf=1*ue.lit_bufsize,ue.l_buf=3*ue.lit_bufsize,ue.level=le,ue.strategy=G,ue.method=ne,Mt(S)}p=[new ze(0,0,0,0,function(S,le){var ne=65535;for(ne>S.pending_buf_size-5&&(ne=S.pending_buf_size-5);;){if(S.lookahead<=1){if(Pe(S),S.lookahead===0&&le===v)return C;if(S.lookahead===0)break}S.strstart+=S.lookahead,S.lookahead=0;var R=S.block_start+ne;if((S.strstart===0||S.strstart>=R)&&(S.lookahead=S.strstart-R,S.strstart=R,Y(S,!1),S.strm.avail_out===0)||S.strstart-S.block_start>=S.w_size-ve&&(Y(S,!1),S.strm.avail_out===0))return C}return S.insert=0,le===w?(Y(S,!0),S.strm.avail_out===0?F:U):(S.strstart>S.block_start&&(Y(S,!1),S.strm.avail_out),C)}),new ze(4,4,8,4,ot),new ze(4,5,16,8,ot),new ze(4,6,32,32,ot),new ze(4,4,16,16,_e),new ze(8,16,32,32,_e),new ze(8,16,128,128,_e),new ze(8,32,128,256,_e),new ze(32,128,258,1024,_e),new ze(32,258,258,4096,_e)],d.deflateInit=function(S,le){return Ct(S,le,D,15,8,0)},d.deflateInit2=Ct,d.deflateReset=Mt,d.deflateResetKeep=Ye,d.deflateSetHeader=function(S,le){return S&&S.state?S.state.wrap!==2?A:(S.state.gzhead=le,b):A},d.deflate=function(S,le){var ne,R,M,G;if(!S||!S.state||5<le||le<0)return S?ee(S,A):A;if(R=S.state,!S.output||!S.input&&S.avail_in!==0||R.status===666&&le!==w)return ee(S,S.avail_out===0?-5:A);if(R.strm=S,ne=R.last_flush,R.last_flush=le,R.status===N)if(R.wrap===2)S.adler=0,fe(R,31),fe(R,139),fe(R,8),R.gzhead?(fe(R,(R.gzhead.text?1:0)+(R.gzhead.hcrc?2:0)+(R.gzhead.extra?4:0)+(R.gzhead.name?8:0)+(R.gzhead.comment?16:0)),fe(R,255&R.gzhead.time),fe(R,R.gzhead.time>>8&255),fe(R,R.gzhead.time>>16&255),fe(R,R.gzhead.time>>24&255),fe(R,R.level===9?2:2<=R.strategy||R.level<2?4:0),fe(R,255&R.gzhead.os),R.gzhead.extra&&R.gzhead.extra.length&&(fe(R,255&R.gzhead.extra.length),fe(R,R.gzhead.extra.length>>8&255)),R.gzhead.hcrc&&(S.adler=y(S.adler,R.pending_buf,R.pending,0)),R.gzindex=0,R.status=69):(fe(R,0),fe(R,0),fe(R,0),fe(R,0),fe(R,0),fe(R,R.level===9?2:2<=R.strategy||R.level<2?4:0),fe(R,3),R.status=ie);else{var de=D+(R.w_bits-8<<4)<<8;de|=(2<=R.strategy||R.level<2?0:R.level<6?1:R.level===6?2:3)<<6,R.strstart!==0&&(de|=32),de+=31-de%31,R.status=ie,pe(R,de),R.strstart!==0&&(pe(R,S.adler>>>16),pe(R,65535&S.adler)),S.adler=1}if(R.status===69)if(R.gzhead.extra){for(M=R.pending;R.gzindex<(65535&R.gzhead.extra.length)&&(R.pending!==R.pending_buf_size||(R.gzhead.hcrc&&R.pending>M&&(S.adler=y(S.adler,R.pending_buf,R.pending-M,M)),Z(S),M=R.pending,R.pending!==R.pending_buf_size));)fe(R,255&R.gzhead.extra[R.gzindex]),R.gzindex++;R.gzhead.hcrc&&R.pending>M&&(S.adler=y(S.adler,R.pending_buf,R.pending-M,M)),R.gzindex===R.gzhead.extra.length&&(R.gzindex=0,R.status=73)}else R.status=73;if(R.status===73)if(R.gzhead.name){M=R.pending;do{if(R.pending===R.pending_buf_size&&(R.gzhead.hcrc&&R.pending>M&&(S.adler=y(S.adler,R.pending_buf,R.pending-M,M)),Z(S),M=R.pending,R.pending===R.pending_buf_size)){G=1;break}G=R.gzindex<R.gzhead.name.length?255&R.gzhead.name.charCodeAt(R.gzindex++):0,fe(R,G)}while(G!==0);R.gzhead.hcrc&&R.pending>M&&(S.adler=y(S.adler,R.pending_buf,R.pending-M,M)),G===0&&(R.gzindex=0,R.status=91)}else R.status=91;if(R.status===91)if(R.gzhead.comment){M=R.pending;do{if(R.pending===R.pending_buf_size&&(R.gzhead.hcrc&&R.pending>M&&(S.adler=y(S.adler,R.pending_buf,R.pending-M,M)),Z(S),M=R.pending,R.pending===R.pending_buf_size)){G=1;break}G=R.gzindex<R.gzhead.comment.length?255&R.gzhead.comment.charCodeAt(R.gzindex++):0,fe(R,G)}while(G!==0);R.gzhead.hcrc&&R.pending>M&&(S.adler=y(S.adler,R.pending_buf,R.pending-M,M)),G===0&&(R.status=103)}else R.status=103;if(R.status===103&&(R.gzhead.hcrc?(R.pending+2>R.pending_buf_size&&Z(S),R.pending+2<=R.pending_buf_size&&(fe(R,255&S.adler),fe(R,S.adler>>8&255),S.adler=0,R.status=ie)):R.status=ie),R.pending!==0){if(Z(S),S.avail_out===0)return R.last_flush=-1,b}else if(S.avail_in===0&&te(le)<=te(ne)&&le!==w)return ee(S,-5);if(R.status===666&&S.avail_in!==0)return ee(S,-5);if(S.avail_in!==0||R.lookahead!==0||le!==v&&R.status!==666){var ue=R.strategy===2?function(Q,ge){for(var be;;){if(Q.lookahead===0&&(Pe(Q),Q.lookahead===0)){if(ge===v)return C;break}if(Q.match_length=0,be=f._tr_tally(Q,0,Q.window[Q.strstart]),Q.lookahead--,Q.strstart++,be&&(Y(Q,!1),Q.strm.avail_out===0))return C}return Q.insert=0,ge===w?(Y(Q,!0),Q.strm.avail_out===0?F:U):Q.last_lit&&(Y(Q,!1),Q.strm.avail_out===0)?C:re}(R,le):R.strategy===3?function(Q,ge){for(var be,ye,Se,De,Ee=Q.window;;){if(Q.lookahead<=ae){if(Pe(Q),Q.lookahead<=ae&&ge===v)return C;if(Q.lookahead===0)break}if(Q.match_length=0,Q.lookahead>=H&&0<Q.strstart&&(ye=Ee[Se=Q.strstart-1])===Ee[++Se]&&ye===Ee[++Se]&&ye===Ee[++Se]){De=Q.strstart+ae;do;while(ye===Ee[++Se]&&ye===Ee[++Se]&&ye===Ee[++Se]&&ye===Ee[++Se]&&ye===Ee[++Se]&&ye===Ee[++Se]&&ye===Ee[++Se]&&ye===Ee[++Se]&&Se<De);Q.match_length=ae-(De-Se),Q.match_length>Q.lookahead&&(Q.match_length=Q.lookahead)}if(Q.match_length>=H?(be=f._tr_tally(Q,1,Q.match_length-H),Q.lookahead-=Q.match_length,Q.strstart+=Q.match_length,Q.match_length=0):(be=f._tr_tally(Q,0,Q.window[Q.strstart]),Q.lookahead--,Q.strstart++),be&&(Y(Q,!1),Q.strm.avail_out===0))return C}return Q.insert=0,ge===w?(Y(Q,!0),Q.strm.avail_out===0?F:U):Q.last_lit&&(Y(Q,!1),Q.strm.avail_out===0)?C:re}(R,le):p[R.level].func(R,le);if(ue!==F&&ue!==U||(R.status=666),ue===C||ue===F)return S.avail_out===0&&(R.last_flush=-1),b;if(ue===re&&(le===1?f._tr_align(R):le!==5&&(f._tr_stored_block(R,0,0,!1),le===3&&(me(R.head),R.lookahead===0&&(R.strstart=0,R.block_start=0,R.insert=0))),Z(S),S.avail_out===0))return R.last_flush=-1,b}return le!==w?b:R.wrap<=0?1:(R.wrap===2?(fe(R,255&S.adler),fe(R,S.adler>>8&255),fe(R,S.adler>>16&255),fe(R,S.adler>>24&255),fe(R,255&S.total_in),fe(R,S.total_in>>8&255),fe(R,S.total_in>>16&255),fe(R,S.total_in>>24&255)):(pe(R,S.adler>>>16),pe(R,65535&S.adler)),Z(S),0<R.wrap&&(R.wrap=-R.wrap),R.pending!==0?b:1)},d.deflateEnd=function(S){var le;return S&&S.state?(le=S.state.status)!==N&&le!==69&&le!==73&&le!==91&&le!==103&&le!==ie&&le!==666?ee(S,A):(S.state=null,le===ie?ee(S,-3):b):A},d.deflateSetDictionary=function(S,le){var ne,R,M,G,de,ue,Q,ge,be=le.length;if(!S||!S.state||(G=(ne=S.state).wrap)===2||G===1&&ne.status!==N||ne.lookahead)return A;for(G===1&&(S.adler=g(S.adler,le,be,0)),ne.wrap=0,be>=ne.w_size&&(G===0&&(me(ne.head),ne.strstart=0,ne.block_start=0,ne.insert=0),ge=new u.Buf8(ne.w_size),u.arraySet(ge,le,be-ne.w_size,ne.w_size,0),le=ge,be=ne.w_size),de=S.avail_in,ue=S.next_in,Q=S.input,S.avail_in=be,S.next_in=0,S.input=le,Pe(ne);ne.lookahead>=H;){for(R=ne.strstart,M=ne.lookahead-(H-1);ne.ins_h=(ne.ins_h<<ne.hash_shift^ne.window[R+H-1])&ne.hash_mask,ne.prev[R&ne.w_mask]=ne.head[ne.ins_h],ne.head[ne.ins_h]=R,R++,--M;);ne.strstart=R,ne.lookahead=H-1,Pe(ne)}return ne.strstart+=ne.lookahead,ne.block_start=ne.strstart,ne.insert=ne.lookahead,ne.lookahead=0,ne.match_length=ne.prev_length=H-1,ne.match_available=0,S.next_in=ue,S.input=Q,S.avail_in=de,ne.wrap=G,b},d.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":41,"./adler32":43,"./crc32":45,"./messages":51,"./trees":52}],47:[function(o,l,d){l.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},{}],48:[function(o,l,d){l.exports=function(p,u){var f,g,y,m,v,w,b,A,x,j,T,D,_,L,B,P,z,W,H,ae,ve,N,ie,C,re;f=p.state,g=p.next_in,C=p.input,y=g+(p.avail_in-5),m=p.next_out,re=p.output,v=m-(u-p.avail_out),w=m+(p.avail_out-257),b=f.dmax,A=f.wsize,x=f.whave,j=f.wnext,T=f.window,D=f.hold,_=f.bits,L=f.lencode,B=f.distcode,P=(1<<f.lenbits)-1,z=(1<<f.distbits)-1;e:do{_<15&&(D+=C[g++]<<_,_+=8,D+=C[g++]<<_,_+=8),W=L[D&P];t:for(;;){if(D>>>=H=W>>>24,_-=H,(H=W>>>16&255)===0)re[m++]=65535&W;else{if(!(16&H)){if((64&H)==0){W=L[(65535&W)+(D&(1<<H)-1)];continue t}if(32&H){f.mode=12;break e}p.msg="invalid literal/length code",f.mode=30;break e}ae=65535&W,(H&=15)&&(_<H&&(D+=C[g++]<<_,_+=8),ae+=D&(1<<H)-1,D>>>=H,_-=H),_<15&&(D+=C[g++]<<_,_+=8,D+=C[g++]<<_,_+=8),W=B[D&z];n:for(;;){if(D>>>=H=W>>>24,_-=H,!(16&(H=W>>>16&255))){if((64&H)==0){W=B[(65535&W)+(D&(1<<H)-1)];continue n}p.msg="invalid distance code",f.mode=30;break e}if(ve=65535&W,_<(H&=15)&&(D+=C[g++]<<_,(_+=8)<H&&(D+=C[g++]<<_,_+=8)),b<(ve+=D&(1<<H)-1)){p.msg="invalid distance too far back",f.mode=30;break e}if(D>>>=H,_-=H,(H=m-v)<ve){if(x<(H=ve-H)&&f.sane){p.msg="invalid distance too far back",f.mode=30;break e}if(ie=T,(N=0)===j){if(N+=A-H,H<ae){for(ae-=H;re[m++]=T[N++],--H;);N=m-ve,ie=re}}else if(j<H){if(N+=A+j-H,(H-=j)<ae){for(ae-=H;re[m++]=T[N++],--H;);if(N=0,j<ae){for(ae-=H=j;re[m++]=T[N++],--H;);N=m-ve,ie=re}}}else if(N+=j-H,H<ae){for(ae-=H;re[m++]=T[N++],--H;);N=m-ve,ie=re}for(;2<ae;)re[m++]=ie[N++],re[m++]=ie[N++],re[m++]=ie[N++],ae-=3;ae&&(re[m++]=ie[N++],1<ae&&(re[m++]=ie[N++]))}else{for(N=m-ve;re[m++]=re[N++],re[m++]=re[N++],re[m++]=re[N++],2<(ae-=3););ae&&(re[m++]=re[N++],1<ae&&(re[m++]=re[N++]))}break}}break}}while(g<y&&m<w);g-=ae=_>>3,D&=(1<<(_-=ae<<3))-1,p.next_in=g,p.next_out=m,p.avail_in=g<y?y-g+5:5-(g-y),p.avail_out=m<w?w-m+257:257-(m-w),f.hold=D,f.bits=_}},{}],49:[function(o,l,d){var p=o("../utils/common"),u=o("./adler32"),f=o("./crc32"),g=o("./inffast"),y=o("./inftrees"),m=1,v=2,w=0,b=-2,A=1,x=852,j=592;function T(N){return(N>>>24&255)+(N>>>8&65280)+((65280&N)<<8)+((255&N)<<24)}function D(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new p.Buf16(320),this.work=new p.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function _(N){var ie;return N&&N.state?(ie=N.state,N.total_in=N.total_out=ie.total=0,N.msg="",ie.wrap&&(N.adler=1&ie.wrap),ie.mode=A,ie.last=0,ie.havedict=0,ie.dmax=32768,ie.head=null,ie.hold=0,ie.bits=0,ie.lencode=ie.lendyn=new p.Buf32(x),ie.distcode=ie.distdyn=new p.Buf32(j),ie.sane=1,ie.back=-1,w):b}function L(N){var ie;return N&&N.state?((ie=N.state).wsize=0,ie.whave=0,ie.wnext=0,_(N)):b}function B(N,ie){var C,re;return N&&N.state?(re=N.state,ie<0?(C=0,ie=-ie):(C=1+(ie>>4),ie<48&&(ie&=15)),ie&&(ie<8||15<ie)?b:(re.window!==null&&re.wbits!==ie&&(re.window=null),re.wrap=C,re.wbits=ie,L(N))):b}function P(N,ie){var C,re;return N?(re=new D,(N.state=re).window=null,(C=B(N,ie))!==w&&(N.state=null),C):b}var z,W,H=!0;function ae(N){if(H){var ie;for(z=new p.Buf32(512),W=new p.Buf32(32),ie=0;ie<144;)N.lens[ie++]=8;for(;ie<256;)N.lens[ie++]=9;for(;ie<280;)N.lens[ie++]=7;for(;ie<288;)N.lens[ie++]=8;for(y(m,N.lens,0,288,z,0,N.work,{bits:9}),ie=0;ie<32;)N.lens[ie++]=5;y(v,N.lens,0,32,W,0,N.work,{bits:5}),H=!1}N.lencode=z,N.lenbits=9,N.distcode=W,N.distbits=5}function ve(N,ie,C,re){var F,U=N.state;return U.window===null&&(U.wsize=1<<U.wbits,U.wnext=0,U.whave=0,U.window=new p.Buf8(U.wsize)),re>=U.wsize?(p.arraySet(U.window,ie,C-U.wsize,U.wsize,0),U.wnext=0,U.whave=U.wsize):(re<(F=U.wsize-U.wnext)&&(F=re),p.arraySet(U.window,ie,C-re,F,U.wnext),(re-=F)?(p.arraySet(U.window,ie,C-re,re,0),U.wnext=re,U.whave=U.wsize):(U.wnext+=F,U.wnext===U.wsize&&(U.wnext=0),U.whave<U.wsize&&(U.whave+=F))),0}d.inflateReset=L,d.inflateReset2=B,d.inflateResetKeep=_,d.inflateInit=function(N){return P(N,15)},d.inflateInit2=P,d.inflate=function(N,ie){var C,re,F,U,ee,te,me,Z,Y,fe,pe,he,Pe,ot,_e,ze,nt,Ye,Mt,Ct,S,le,ne,R,M=0,G=new p.Buf8(4),de=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!N||!N.state||!N.output||!N.input&&N.avail_in!==0)return b;(C=N.state).mode===12&&(C.mode=13),ee=N.next_out,F=N.output,me=N.avail_out,U=N.next_in,re=N.input,te=N.avail_in,Z=C.hold,Y=C.bits,fe=te,pe=me,le=w;e:for(;;)switch(C.mode){case A:if(C.wrap===0){C.mode=13;break}for(;Y<16;){if(te===0)break e;te--,Z+=re[U++]<<Y,Y+=8}if(2&C.wrap&&Z===35615){G[C.check=0]=255&Z,G[1]=Z>>>8&255,C.check=f(C.check,G,2,0),Y=Z=0,C.mode=2;break}if(C.flags=0,C.head&&(C.head.done=!1),!(1&C.wrap)||(((255&Z)<<8)+(Z>>8))%31){N.msg="incorrect header check",C.mode=30;break}if((15&Z)!=8){N.msg="unknown compression method",C.mode=30;break}if(Y-=4,S=8+(15&(Z>>>=4)),C.wbits===0)C.wbits=S;else if(S>C.wbits){N.msg="invalid window size",C.mode=30;break}C.dmax=1<<S,N.adler=C.check=1,C.mode=512&Z?10:12,Y=Z=0;break;case 2:for(;Y<16;){if(te===0)break e;te--,Z+=re[U++]<<Y,Y+=8}if(C.flags=Z,(255&C.flags)!=8){N.msg="unknown compression method",C.mode=30;break}if(57344&C.flags){N.msg="unknown header flags set",C.mode=30;break}C.head&&(C.head.text=Z>>8&1),512&C.flags&&(G[0]=255&Z,G[1]=Z>>>8&255,C.check=f(C.check,G,2,0)),Y=Z=0,C.mode=3;case 3:for(;Y<32;){if(te===0)break e;te--,Z+=re[U++]<<Y,Y+=8}C.head&&(C.head.time=Z),512&C.flags&&(G[0]=255&Z,G[1]=Z>>>8&255,G[2]=Z>>>16&255,G[3]=Z>>>24&255,C.check=f(C.check,G,4,0)),Y=Z=0,C.mode=4;case 4:for(;Y<16;){if(te===0)break e;te--,Z+=re[U++]<<Y,Y+=8}C.head&&(C.head.xflags=255&Z,C.head.os=Z>>8),512&C.flags&&(G[0]=255&Z,G[1]=Z>>>8&255,C.check=f(C.check,G,2,0)),Y=Z=0,C.mode=5;case 5:if(1024&C.flags){for(;Y<16;){if(te===0)break e;te--,Z+=re[U++]<<Y,Y+=8}C.length=Z,C.head&&(C.head.extra_len=Z),512&C.flags&&(G[0]=255&Z,G[1]=Z>>>8&255,C.check=f(C.check,G,2,0)),Y=Z=0}else C.head&&(C.head.extra=null);C.mode=6;case 6:if(1024&C.flags&&(te<(he=C.length)&&(he=te),he&&(C.head&&(S=C.head.extra_len-C.length,C.head.extra||(C.head.extra=new Array(C.head.extra_len)),p.arraySet(C.head.extra,re,U,he,S)),512&C.flags&&(C.check=f(C.check,re,he,U)),te-=he,U+=he,C.length-=he),C.length))break e;C.length=0,C.mode=7;case 7:if(2048&C.flags){if(te===0)break e;for(he=0;S=re[U+he++],C.head&&S&&C.length<65536&&(C.head.name+=String.fromCharCode(S)),S&&he<te;);if(512&C.flags&&(C.check=f(C.check,re,he,U)),te-=he,U+=he,S)break e}else C.head&&(C.head.name=null);C.length=0,C.mode=8;case 8:if(4096&C.flags){if(te===0)break e;for(he=0;S=re[U+he++],C.head&&S&&C.length<65536&&(C.head.comment+=String.fromCharCode(S)),S&&he<te;);if(512&C.flags&&(C.check=f(C.check,re,he,U)),te-=he,U+=he,S)break e}else C.head&&(C.head.comment=null);C.mode=9;case 9:if(512&C.flags){for(;Y<16;){if(te===0)break e;te--,Z+=re[U++]<<Y,Y+=8}if(Z!==(65535&C.check)){N.msg="header crc mismatch",C.mode=30;break}Y=Z=0}C.head&&(C.head.hcrc=C.flags>>9&1,C.head.done=!0),N.adler=C.check=0,C.mode=12;break;case 10:for(;Y<32;){if(te===0)break e;te--,Z+=re[U++]<<Y,Y+=8}N.adler=C.check=T(Z),Y=Z=0,C.mode=11;case 11:if(C.havedict===0)return N.next_out=ee,N.avail_out=me,N.next_in=U,N.avail_in=te,C.hold=Z,C.bits=Y,2;N.adler=C.check=1,C.mode=12;case 12:if(ie===5||ie===6)break e;case 13:if(C.last){Z>>>=7&Y,Y-=7&Y,C.mode=27;break}for(;Y<3;){if(te===0)break e;te--,Z+=re[U++]<<Y,Y+=8}switch(C.last=1&Z,Y-=1,3&(Z>>>=1)){case 0:C.mode=14;break;case 1:if(ae(C),C.mode=20,ie!==6)break;Z>>>=2,Y-=2;break e;case 2:C.mode=17;break;case 3:N.msg="invalid block type",C.mode=30}Z>>>=2,Y-=2;break;case 14:for(Z>>>=7&Y,Y-=7&Y;Y<32;){if(te===0)break e;te--,Z+=re[U++]<<Y,Y+=8}if((65535&Z)!=(Z>>>16^65535)){N.msg="invalid stored block lengths",C.mode=30;break}if(C.length=65535&Z,Y=Z=0,C.mode=15,ie===6)break e;case 15:C.mode=16;case 16:if(he=C.length){if(te<he&&(he=te),me<he&&(he=me),he===0)break e;p.arraySet(F,re,U,he,ee),te-=he,U+=he,me-=he,ee+=he,C.length-=he;break}C.mode=12;break;case 17:for(;Y<14;){if(te===0)break e;te--,Z+=re[U++]<<Y,Y+=8}if(C.nlen=257+(31&Z),Z>>>=5,Y-=5,C.ndist=1+(31&Z),Z>>>=5,Y-=5,C.ncode=4+(15&Z),Z>>>=4,Y-=4,286<C.nlen||30<C.ndist){N.msg="too many length or distance symbols",C.mode=30;break}C.have=0,C.mode=18;case 18:for(;C.have<C.ncode;){for(;Y<3;){if(te===0)break e;te--,Z+=re[U++]<<Y,Y+=8}C.lens[de[C.have++]]=7&Z,Z>>>=3,Y-=3}for(;C.have<19;)C.lens[de[C.have++]]=0;if(C.lencode=C.lendyn,C.lenbits=7,ne={bits:C.lenbits},le=y(0,C.lens,0,19,C.lencode,0,C.work,ne),C.lenbits=ne.bits,le){N.msg="invalid code lengths set",C.mode=30;break}C.have=0,C.mode=19;case 19:for(;C.have<C.nlen+C.ndist;){for(;ze=(M=C.lencode[Z&(1<<C.lenbits)-1])>>>16&255,nt=65535&M,!((_e=M>>>24)<=Y);){if(te===0)break e;te--,Z+=re[U++]<<Y,Y+=8}if(nt<16)Z>>>=_e,Y-=_e,C.lens[C.have++]=nt;else{if(nt===16){for(R=_e+2;Y<R;){if(te===0)break e;te--,Z+=re[U++]<<Y,Y+=8}if(Z>>>=_e,Y-=_e,C.have===0){N.msg="invalid bit length repeat",C.mode=30;break}S=C.lens[C.have-1],he=3+(3&Z),Z>>>=2,Y-=2}else if(nt===17){for(R=_e+3;Y<R;){if(te===0)break e;te--,Z+=re[U++]<<Y,Y+=8}Y-=_e,S=0,he=3+(7&(Z>>>=_e)),Z>>>=3,Y-=3}else{for(R=_e+7;Y<R;){if(te===0)break e;te--,Z+=re[U++]<<Y,Y+=8}Y-=_e,S=0,he=11+(127&(Z>>>=_e)),Z>>>=7,Y-=7}if(C.have+he>C.nlen+C.ndist){N.msg="invalid bit length repeat",C.mode=30;break}for(;he--;)C.lens[C.have++]=S}}if(C.mode===30)break;if(C.lens[256]===0){N.msg="invalid code -- missing end-of-block",C.mode=30;break}if(C.lenbits=9,ne={bits:C.lenbits},le=y(m,C.lens,0,C.nlen,C.lencode,0,C.work,ne),C.lenbits=ne.bits,le){N.msg="invalid literal/lengths set",C.mode=30;break}if(C.distbits=6,C.distcode=C.distdyn,ne={bits:C.distbits},le=y(v,C.lens,C.nlen,C.ndist,C.distcode,0,C.work,ne),C.distbits=ne.bits,le){N.msg="invalid distances set",C.mode=30;break}if(C.mode=20,ie===6)break e;case 20:C.mode=21;case 21:if(6<=te&&258<=me){N.next_out=ee,N.avail_out=me,N.next_in=U,N.avail_in=te,C.hold=Z,C.bits=Y,g(N,pe),ee=N.next_out,F=N.output,me=N.avail_out,U=N.next_in,re=N.input,te=N.avail_in,Z=C.hold,Y=C.bits,C.mode===12&&(C.back=-1);break}for(C.back=0;ze=(M=C.lencode[Z&(1<<C.lenbits)-1])>>>16&255,nt=65535&M,!((_e=M>>>24)<=Y);){if(te===0)break e;te--,Z+=re[U++]<<Y,Y+=8}if(ze&&(240&ze)==0){for(Ye=_e,Mt=ze,Ct=nt;ze=(M=C.lencode[Ct+((Z&(1<<Ye+Mt)-1)>>Ye)])>>>16&255,nt=65535&M,!(Ye+(_e=M>>>24)<=Y);){if(te===0)break e;te--,Z+=re[U++]<<Y,Y+=8}Z>>>=Ye,Y-=Ye,C.back+=Ye}if(Z>>>=_e,Y-=_e,C.back+=_e,C.length=nt,ze===0){C.mode=26;break}if(32&ze){C.back=-1,C.mode=12;break}if(64&ze){N.msg="invalid literal/length code",C.mode=30;break}C.extra=15&ze,C.mode=22;case 22:if(C.extra){for(R=C.extra;Y<R;){if(te===0)break e;te--,Z+=re[U++]<<Y,Y+=8}C.length+=Z&(1<<C.extra)-1,Z>>>=C.extra,Y-=C.extra,C.back+=C.extra}C.was=C.length,C.mode=23;case 23:for(;ze=(M=C.distcode[Z&(1<<C.distbits)-1])>>>16&255,nt=65535&M,!((_e=M>>>24)<=Y);){if(te===0)break e;te--,Z+=re[U++]<<Y,Y+=8}if((240&ze)==0){for(Ye=_e,Mt=ze,Ct=nt;ze=(M=C.distcode[Ct+((Z&(1<<Ye+Mt)-1)>>Ye)])>>>16&255,nt=65535&M,!(Ye+(_e=M>>>24)<=Y);){if(te===0)break e;te--,Z+=re[U++]<<Y,Y+=8}Z>>>=Ye,Y-=Ye,C.back+=Ye}if(Z>>>=_e,Y-=_e,C.back+=_e,64&ze){N.msg="invalid distance code",C.mode=30;break}C.offset=nt,C.extra=15&ze,C.mode=24;case 24:if(C.extra){for(R=C.extra;Y<R;){if(te===0)break e;te--,Z+=re[U++]<<Y,Y+=8}C.offset+=Z&(1<<C.extra)-1,Z>>>=C.extra,Y-=C.extra,C.back+=C.extra}if(C.offset>C.dmax){N.msg="invalid distance too far back",C.mode=30;break}C.mode=25;case 25:if(me===0)break e;if(he=pe-me,C.offset>he){if((he=C.offset-he)>C.whave&&C.sane){N.msg="invalid distance too far back",C.mode=30;break}Pe=he>C.wnext?(he-=C.wnext,C.wsize-he):C.wnext-he,he>C.length&&(he=C.length),ot=C.window}else ot=F,Pe=ee-C.offset,he=C.length;for(me<he&&(he=me),me-=he,C.length-=he;F[ee++]=ot[Pe++],--he;);C.length===0&&(C.mode=21);break;case 26:if(me===0)break e;F[ee++]=C.length,me--,C.mode=21;break;case 27:if(C.wrap){for(;Y<32;){if(te===0)break e;te--,Z|=re[U++]<<Y,Y+=8}if(pe-=me,N.total_out+=pe,C.total+=pe,pe&&(N.adler=C.check=C.flags?f(C.check,F,pe,ee-pe):u(C.check,F,pe,ee-pe)),pe=me,(C.flags?Z:T(Z))!==C.check){N.msg="incorrect data check",C.mode=30;break}Y=Z=0}C.mode=28;case 28:if(C.wrap&&C.flags){for(;Y<32;){if(te===0)break e;te--,Z+=re[U++]<<Y,Y+=8}if(Z!==(4294967295&C.total)){N.msg="incorrect length check",C.mode=30;break}Y=Z=0}C.mode=29;case 29:le=1;break e;case 30:le=-3;break e;case 31:return-4;case 32:default:return b}return N.next_out=ee,N.avail_out=me,N.next_in=U,N.avail_in=te,C.hold=Z,C.bits=Y,(C.wsize||pe!==N.avail_out&&C.mode<30&&(C.mode<27||ie!==4))&&ve(N,N.output,N.next_out,pe-N.avail_out)?(C.mode=31,-4):(fe-=N.avail_in,pe-=N.avail_out,N.total_in+=fe,N.total_out+=pe,C.total+=pe,C.wrap&&pe&&(N.adler=C.check=C.flags?f(C.check,F,pe,N.next_out-pe):u(C.check,F,pe,N.next_out-pe)),N.data_type=C.bits+(C.last?64:0)+(C.mode===12?128:0)+(C.mode===20||C.mode===15?256:0),(fe==0&&pe===0||ie===4)&&le===w&&(le=-5),le)},d.inflateEnd=function(N){if(!N||!N.state)return b;var ie=N.state;return ie.window&&(ie.window=null),N.state=null,w},d.inflateGetHeader=function(N,ie){var C;return N&&N.state?(2&(C=N.state).wrap)==0?b:((C.head=ie).done=!1,w):b},d.inflateSetDictionary=function(N,ie){var C,re=ie.length;return N&&N.state?(C=N.state).wrap!==0&&C.mode!==11?b:C.mode===11&&u(1,ie,re,0)!==C.check?-3:ve(N,ie,re,re)?(C.mode=31,-4):(C.havedict=1,w):b},d.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":41,"./adler32":43,"./crc32":45,"./inffast":48,"./inftrees":50}],50:[function(o,l,d){var p=o("../utils/common"),u=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],f=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],g=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],y=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];l.exports=function(m,v,w,b,A,x,j,T){var D,_,L,B,P,z,W,H,ae,ve=T.bits,N=0,ie=0,C=0,re=0,F=0,U=0,ee=0,te=0,me=0,Z=0,Y=null,fe=0,pe=new p.Buf16(16),he=new p.Buf16(16),Pe=null,ot=0;for(N=0;N<=15;N++)pe[N]=0;for(ie=0;ie<b;ie++)pe[v[w+ie]]++;for(F=ve,re=15;1<=re&&pe[re]===0;re--);if(re<F&&(F=re),re===0)return A[x++]=20971520,A[x++]=20971520,T.bits=1,0;for(C=1;C<re&&pe[C]===0;C++);for(F<C&&(F=C),N=te=1;N<=15;N++)if(te<<=1,(te-=pe[N])<0)return-1;if(0<te&&(m===0||re!==1))return-1;for(he[1]=0,N=1;N<15;N++)he[N+1]=he[N]+pe[N];for(ie=0;ie<b;ie++)v[w+ie]!==0&&(j[he[v[w+ie]]++]=ie);if(z=m===0?(Y=Pe=j,19):m===1?(Y=u,fe-=257,Pe=f,ot-=257,256):(Y=g,Pe=y,-1),N=C,P=x,ee=ie=Z=0,L=-1,B=(me=1<<(U=F))-1,m===1&&852<me||m===2&&592<me)return 1;for(;;){for(W=N-ee,ae=j[ie]<z?(H=0,j[ie]):j[ie]>z?(H=Pe[ot+j[ie]],Y[fe+j[ie]]):(H=96,0),D=1<<N-ee,C=_=1<<U;A[P+(Z>>ee)+(_-=D)]=W<<24|H<<16|ae|0,_!==0;);for(D=1<<N-1;Z&D;)D>>=1;if(D!==0?(Z&=D-1,Z+=D):Z=0,ie++,--pe[N]==0){if(N===re)break;N=v[w+j[ie]]}if(F<N&&(Z&B)!==L){for(ee===0&&(ee=F),P+=C,te=1<<(U=N-ee);U+ee<re&&!((te-=pe[U+ee])<=0);)U++,te<<=1;if(me+=1<<U,m===1&&852<me||m===2&&592<me)return 1;A[L=Z&B]=F<<24|U<<16|P-x|0}}return Z!==0&&(A[P+Z]=N-ee<<24|64<<16|0),T.bits=F,0}},{"../utils/common":41}],51:[function(o,l,d){l.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],52:[function(o,l,d){var p=o("../utils/common"),u=0,f=1;function g(M){for(var G=M.length;0<=--G;)M[G]=0}var y=0,m=29,v=256,w=v+1+m,b=30,A=19,x=2*w+1,j=15,T=16,D=7,_=256,L=16,B=17,P=18,z=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],W=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],H=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],ae=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],ve=new Array(2*(w+2));g(ve);var N=new Array(2*b);g(N);var ie=new Array(512);g(ie);var C=new Array(256);g(C);var re=new Array(m);g(re);var F,U,ee,te=new Array(b);function me(M,G,de,ue,Q){this.static_tree=M,this.extra_bits=G,this.extra_base=de,this.elems=ue,this.max_length=Q,this.has_stree=M&&M.length}function Z(M,G){this.dyn_tree=M,this.max_code=0,this.stat_desc=G}function Y(M){return M<256?ie[M]:ie[256+(M>>>7)]}function fe(M,G){M.pending_buf[M.pending++]=255&G,M.pending_buf[M.pending++]=G>>>8&255}function pe(M,G,de){M.bi_valid>T-de?(M.bi_buf|=G<<M.bi_valid&65535,fe(M,M.bi_buf),M.bi_buf=G>>T-M.bi_valid,M.bi_valid+=de-T):(M.bi_buf|=G<<M.bi_valid&65535,M.bi_valid+=de)}function he(M,G,de){pe(M,de[2*G],de[2*G+1])}function Pe(M,G){for(var de=0;de|=1&M,M>>>=1,de<<=1,0<--G;);return de>>>1}function ot(M,G,de){var ue,Q,ge=new Array(j+1),be=0;for(ue=1;ue<=j;ue++)ge[ue]=be=be+de[ue-1]<<1;for(Q=0;Q<=G;Q++){var ye=M[2*Q+1];ye!==0&&(M[2*Q]=Pe(ge[ye]++,ye))}}function _e(M){var G;for(G=0;G<w;G++)M.dyn_ltree[2*G]=0;for(G=0;G<b;G++)M.dyn_dtree[2*G]=0;for(G=0;G<A;G++)M.bl_tree[2*G]=0;M.dyn_ltree[2*_]=1,M.opt_len=M.static_len=0,M.last_lit=M.matches=0}function ze(M){8<M.bi_valid?fe(M,M.bi_buf):0<M.bi_valid&&(M.pending_buf[M.pending++]=M.bi_buf),M.bi_buf=0,M.bi_valid=0}function nt(M,G,de,ue){var Q=2*G,ge=2*de;return M[Q]<M[ge]||M[Q]===M[ge]&&ue[G]<=ue[de]}function Ye(M,G,de){for(var ue=M.heap[de],Q=de<<1;Q<=M.heap_len&&(Q<M.heap_len&&nt(G,M.heap[Q+1],M.heap[Q],M.depth)&&Q++,!nt(G,ue,M.heap[Q],M.depth));)M.heap[de]=M.heap[Q],de=Q,Q<<=1;M.heap[de]=ue}function Mt(M,G,de){var ue,Q,ge,be,ye=0;if(M.last_lit!==0)for(;ue=M.pending_buf[M.d_buf+2*ye]<<8|M.pending_buf[M.d_buf+2*ye+1],Q=M.pending_buf[M.l_buf+ye],ye++,ue===0?he(M,Q,G):(he(M,(ge=C[Q])+v+1,G),(be=z[ge])!==0&&pe(M,Q-=re[ge],be),he(M,ge=Y(--ue),de),(be=W[ge])!==0&&pe(M,ue-=te[ge],be)),ye<M.last_lit;);he(M,_,G)}function Ct(M,G){var de,ue,Q,ge=G.dyn_tree,be=G.stat_desc.static_tree,ye=G.stat_desc.has_stree,Se=G.stat_desc.elems,De=-1;for(M.heap_len=0,M.heap_max=x,de=0;de<Se;de++)ge[2*de]!==0?(M.heap[++M.heap_len]=De=de,M.depth[de]=0):ge[2*de+1]=0;for(;M.heap_len<2;)ge[2*(Q=M.heap[++M.heap_len]=De<2?++De:0)]=1,M.depth[Q]=0,M.opt_len--,ye&&(M.static_len-=be[2*Q+1]);for(G.max_code=De,de=M.heap_len>>1;1<=de;de--)Ye(M,ge,de);for(Q=Se;de=M.heap[1],M.heap[1]=M.heap[M.heap_len--],Ye(M,ge,1),ue=M.heap[1],M.heap[--M.heap_max]=de,M.heap[--M.heap_max]=ue,ge[2*Q]=ge[2*de]+ge[2*ue],M.depth[Q]=(M.depth[de]>=M.depth[ue]?M.depth[de]:M.depth[ue])+1,ge[2*de+1]=ge[2*ue+1]=Q,M.heap[1]=Q++,Ye(M,ge,1),2<=M.heap_len;);M.heap[--M.heap_max]=M.heap[1],function(Ee,Ze){var wi,Gt,ki,Xe,Cn,sn,Rt=Ze.dyn_tree,Hn=Ze.max_code,cl=Ze.stat_desc.static_tree,wo=Ze.stat_desc.has_stree,ko=Ze.stat_desc.extra_bits,Ki=Ze.stat_desc.extra_base,ln=Ze.stat_desc.max_length,Qi=0;for(Xe=0;Xe<=j;Xe++)Ee.bl_count[Xe]=0;for(Rt[2*Ee.heap[Ee.heap_max]+1]=0,wi=Ee.heap_max+1;wi<x;wi++)ln<(Xe=Rt[2*Rt[2*(Gt=Ee.heap[wi])+1]+1]+1)&&(Xe=ln,Qi++),Rt[2*Gt+1]=Xe,Hn<Gt||(Ee.bl_count[Xe]++,Cn=0,Ki<=Gt&&(Cn=ko[Gt-Ki]),sn=Rt[2*Gt],Ee.opt_len+=sn*(Xe+Cn),wo&&(Ee.static_len+=sn*(cl[2*Gt+1]+Cn)));if(Qi!==0){do{for(Xe=ln-1;Ee.bl_count[Xe]===0;)Xe--;Ee.bl_count[Xe]--,Ee.bl_count[Xe+1]+=2,Ee.bl_count[ln]--,Qi-=2}while(0<Qi);for(Xe=ln;Xe!==0;Xe--)for(Gt=Ee.bl_count[Xe];Gt!==0;)Hn<(ki=Ee.heap[--wi])||(Rt[2*ki+1]!==Xe&&(Ee.opt_len+=(Xe-Rt[2*ki+1])*Rt[2*ki],Rt[2*ki+1]=Xe),Gt--)}}(M,G),ot(ge,De,M.bl_count)}function S(M,G,de){var ue,Q,ge=-1,be=G[1],ye=0,Se=7,De=4;for(be===0&&(Se=138,De=3),G[2*(de+1)+1]=65535,ue=0;ue<=de;ue++)Q=be,be=G[2*(ue+1)+1],++ye<Se&&Q===be||(ye<De?M.bl_tree[2*Q]+=ye:Q!==0?(Q!==ge&&M.bl_tree[2*Q]++,M.bl_tree[2*L]++):ye<=10?M.bl_tree[2*B]++:M.bl_tree[2*P]++,ge=Q,De=(ye=0)===be?(Se=138,3):Q===be?(Se=6,3):(Se=7,4))}function le(M,G,de){var ue,Q,ge=-1,be=G[1],ye=0,Se=7,De=4;for(be===0&&(Se=138,De=3),ue=0;ue<=de;ue++)if(Q=be,be=G[2*(ue+1)+1],!(++ye<Se&&Q===be)){if(ye<De)for(;he(M,Q,M.bl_tree),--ye!=0;);else Q!==0?(Q!==ge&&(he(M,Q,M.bl_tree),ye--),he(M,L,M.bl_tree),pe(M,ye-3,2)):ye<=10?(he(M,B,M.bl_tree),pe(M,ye-3,3)):(he(M,P,M.bl_tree),pe(M,ye-11,7));ge=Q,De=(ye=0)===be?(Se=138,3):Q===be?(Se=6,3):(Se=7,4)}}g(te);var ne=!1;function R(M,G,de,ue){pe(M,(y<<1)+(ue?1:0),3),function(Q,ge,be,ye){ze(Q),fe(Q,be),fe(Q,~be),p.arraySet(Q.pending_buf,Q.window,ge,be,Q.pending),Q.pending+=be}(M,G,de)}d._tr_init=function(M){ne||(function(){var G,de,ue,Q,ge,be=new Array(j+1);for(Q=ue=0;Q<m-1;Q++)for(re[Q]=ue,G=0;G<1<<z[Q];G++)C[ue++]=Q;for(C[ue-1]=Q,Q=ge=0;Q<16;Q++)for(te[Q]=ge,G=0;G<1<<W[Q];G++)ie[ge++]=Q;for(ge>>=7;Q<b;Q++)for(te[Q]=ge<<7,G=0;G<1<<W[Q]-7;G++)ie[256+ge++]=Q;for(de=0;de<=j;de++)be[de]=0;for(G=0;G<=143;)ve[2*G+1]=8,G++,be[8]++;for(;G<=255;)ve[2*G+1]=9,G++,be[9]++;for(;G<=279;)ve[2*G+1]=7,G++,be[7]++;for(;G<=287;)ve[2*G+1]=8,G++,be[8]++;for(ot(ve,w+1,be),G=0;G<b;G++)N[2*G+1]=5,N[2*G]=Pe(G,5);F=new me(ve,z,v+1,w,j),U=new me(N,W,0,b,j),ee=new me(new Array(0),H,0,A,D)}(),ne=!0),M.l_desc=new Z(M.dyn_ltree,F),M.d_desc=new Z(M.dyn_dtree,U),M.bl_desc=new Z(M.bl_tree,ee),M.bi_buf=0,M.bi_valid=0,_e(M)},d._tr_stored_block=R,d._tr_flush_block=function(M,G,de,ue){var Q,ge,be=0;0<M.level?(M.strm.data_type===2&&(M.strm.data_type=function(ye){var Se,De=4093624447;for(Se=0;Se<=31;Se++,De>>>=1)if(1&De&&ye.dyn_ltree[2*Se]!==0)return u;if(ye.dyn_ltree[18]!==0||ye.dyn_ltree[20]!==0||ye.dyn_ltree[26]!==0)return f;for(Se=32;Se<v;Se++)if(ye.dyn_ltree[2*Se]!==0)return f;return u}(M)),Ct(M,M.l_desc),Ct(M,M.d_desc),be=function(ye){var Se;for(S(ye,ye.dyn_ltree,ye.l_desc.max_code),S(ye,ye.dyn_dtree,ye.d_desc.max_code),Ct(ye,ye.bl_desc),Se=A-1;3<=Se&&ye.bl_tree[2*ae[Se]+1]===0;Se--);return ye.opt_len+=3*(Se+1)+5+5+4,Se}(M),Q=M.opt_len+3+7>>>3,(ge=M.static_len+3+7>>>3)<=Q&&(Q=ge)):Q=ge=de+5,de+4<=Q&&G!==-1?R(M,G,de,ue):M.strategy===4||ge===Q?(pe(M,2+(ue?1:0),3),Mt(M,ve,N)):(pe(M,4+(ue?1:0),3),function(ye,Se,De,Ee){var Ze;for(pe(ye,Se-257,5),pe(ye,De-1,5),pe(ye,Ee-4,4),Ze=0;Ze<Ee;Ze++)pe(ye,ye.bl_tree[2*ae[Ze]+1],3);le(ye,ye.dyn_ltree,Se-1),le(ye,ye.dyn_dtree,De-1)}(M,M.l_desc.max_code+1,M.d_desc.max_code+1,be+1),Mt(M,M.dyn_ltree,M.dyn_dtree)),_e(M),ue&&ze(M)},d._tr_tally=function(M,G,de){return M.pending_buf[M.d_buf+2*M.last_lit]=G>>>8&255,M.pending_buf[M.d_buf+2*M.last_lit+1]=255&G,M.pending_buf[M.l_buf+M.last_lit]=255&de,M.last_lit++,G===0?M.dyn_ltree[2*de]++:(M.matches++,G--,M.dyn_ltree[2*(C[de]+v+1)]++,M.dyn_dtree[2*Y(G)]++),M.last_lit===M.lit_bufsize-1},d._tr_align=function(M){pe(M,2,3),he(M,_,ve),function(G){G.bi_valid===16?(fe(G,G.bi_buf),G.bi_buf=0,G.bi_valid=0):8<=G.bi_valid&&(G.pending_buf[G.pending++]=255&G.bi_buf,G.bi_buf>>=8,G.bi_valid-=8)}(M)}},{"../utils/common":41}],53:[function(o,l,d){l.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(o,l,d){(function(p){(function(u,f){if(!u.setImmediate){var g,y,m,v,w=1,b={},A=!1,x=u.document,j=Object.getPrototypeOf&&Object.getPrototypeOf(u);j=j&&j.setTimeout?j:u,g={}.toString.call(u.process)==="[object process]"?function(L){process.nextTick(function(){D(L)})}:function(){if(u.postMessage&&!u.importScripts){var L=!0,B=u.onmessage;return u.onmessage=function(){L=!1},u.postMessage("","*"),u.onmessage=B,L}}()?(v="setImmediate$"+Math.random()+"$",u.addEventListener?u.addEventListener("message",_,!1):u.attachEvent("onmessage",_),function(L){u.postMessage(v+L,"*")}):u.MessageChannel?((m=new MessageChannel).port1.onmessage=function(L){D(L.data)},function(L){m.port2.postMessage(L)}):x&&"onreadystatechange"in x.createElement("script")?(y=x.documentElement,function(L){var B=x.createElement("script");B.onreadystatechange=function(){D(L),B.onreadystatechange=null,y.removeChild(B),B=null},y.appendChild(B)}):function(L){setTimeout(D,0,L)},j.setImmediate=function(L){typeof L!="function"&&(L=new Function(""+L));for(var B=new Array(arguments.length-1),P=0;P<B.length;P++)B[P]=arguments[P+1];var z={callback:L,args:B};return b[w]=z,g(w),w++},j.clearImmediate=T}function T(L){delete b[L]}function D(L){if(A)setTimeout(D,0,L);else{var B=b[L];if(B){A=!0;try{(function(P){var z=P.callback,W=P.args;switch(W.length){case 0:z();break;case 1:z(W[0]);break;case 2:z(W[0],W[1]);break;case 3:z(W[0],W[1],W[2]);break;default:z.apply(f,W)}})(B)}finally{T(L),A=!1}}}}
3894function _(L){L.source===u&&typeof L.data=="string"&&L.data.indexOf(v)===0&&D(+L.data.slice(v.length))}})(typeof self>"u"?p===void 0?this:p:self)}).call(this,typeof zs<"u"?zs:typeof self<"u"?self:typeof window<"u"?window:{})},{}]},{},[10])(10)})}(Zd)),Zd.exports}var YS=qS();const ZS=Ly(YS),XS=n=>s.jsx(E0,{...n}),KS=n=>s.jsx(yo,{...n}),QS=n=>s.jsx(ch,{...n}),JS=n=>s.jsx(O0,{...n}),Et={LOADING:"LOADING",PASSWORD_PROTECTED:"PASSWORD_PROTECTED",UNLOCKED:"UNLOCKED",NOT_FOUND:"NOT_FOUND",DELETED:"DELETED",ERROR:"ERROR"},$S=(n,r)=>{const o=window.URL.createObjectURL(n),l=document.createElement("a");l.href=o,l.download=r,l.style.display="none",document.body.appendChild(l),l.click(),document.body.removeChild(l),setTimeout(()=>{window.URL.revokeObjectURL(o)},1e3)},e4=({transferId:n,onClose:r})=>{mn({title:"Download Files. SendVault",description:"Download files shared via SendVault. Secure, temporary links and per-file downloads.",noindex:!0});const[o,l]=V.useState(Et.LOADING),[d,p]=V.useState(null),[u,f]=V.useState([]),[g,y]=V.useState(""),[m,v]=V.useState(null),[w,b]=V.useState(new Set),[A,x]=V.useState({}),[j,T]=V.useState(!1),[D,_]=V.useState(!1),L=V.useRef(!1),B=V.useRef(void 0),P=V.useRef(void 0),z=V.useCallback(()=>{L.current||(L.current=!0,gn.functions.invoke("notify-download",{body:{transferId:n}}).catch(()=>{}))},[n]),W=V.useCallback(async F=>{try{const U=await Dy({transferId:n,passwordHash:F});if(p(U.transfer),U.files==null){l(Et.PASSWORD_PROTECTED);return}f(U.files),l(Et.UNLOCKED),z(),qi()}catch(U){if(U instanceof F0){l(Et.NOT_FOUND);return}if(U instanceof W0){v("This transfer has expired."),l(Et.ERROR);return}console.error("Transfer lookup failed:",U),v("An unexpected error occurred."),l(Et.ERROR)}},[n,z]);V.useEffect(()=>{B.current=void 0,W()},[W]);const H=async F=>{F.preventDefault(),v(null);const U=await V0(g);try{const ee=await Dy({transferId:n,passwordHash:U});if(ee.files==null){v("Incorrect password. Please try again.");return}B.current=U,p(ee.transfer),f(ee.files),l(Et.UNLOCKED),z(),qi()}catch(ee){console.error("Unlock failed:",ee),v("Could not verify password. Please try again.")}},ae=V.useCallback(async()=>
3894{if(d?.deleteOnDownload)try{P.current&&(await _y(d.id,P.current),l(Et.DELETED))}catch(F){console.error("Error invoking delete-transfer:",F)}},[d]),ve=async()=>{if(!(u.length<2||Hr())){v(null),_(!0);try{const F=new ZS;for(const te of u){const me=await jy(te.storage_path,n,B.current);P.current=me.burnToken||P.current;const Z=await fetch(me.url);if(!Z.ok)throw new Error(`Failed to fetch ${te.name}`);F.file(te.name,await Z.blob())}const U=await F.generateAsync({type:"blob",compression:"DEFLATE",compressionOptions:{level:6}}),ee=(d?.title||"sendvault-files").replace(/[^\w.-]+/g,"_").slice(0,60);$S(U,`${ee}.zip`),z(),await ae()}catch(F){console.error("ZIP download error:",F),v("Could not create ZIP archive. Try downloading files individually.")}finally{_(!1)}}},N=async()=>{try{v(null),T(!0);const F=u.length;let U=0;if(F===1)await C(u[0]);else{for(let ee=0;ee<u.length;ee++){const te=u[ee],me=ee===u.length-1;try{await C(te,!me),U++,me||await new Promise(Z=>setTimeout(Z,800))}catch(Z){console.error(`Failed to download ${te.name}:`,Z)}}U<F&&v(`Downloaded ${U} of ${F} files. Some downloads may have failed.`)}}catch(F){v("Could not download files. Please try again later."),console.error("Download error:",F)}finally{T(!1)}},ie=async F=>{try{await C(F,!1)}catch{v(`Failed to download ${F.name}. Please try again.`)}},C=async(F,U=!1)=>{b(ee=>new Set([...ee,F.id])),Hi("download_started",{device_type:"web"});try{const ee=await jy(F.storage_path,n,B.current);P.current=ee.burnToken||P.current;const te=ee.url;qr("medium");let me=!1;if(i6(),!me){const Z=await Dk(te,(Y,fe)=>{const pe=Math.round(Y/fe*100);x(he=>({...he,[F.id]:pe}))});if(!Hr()){const Y=URL.createObjectURL(Z),fe=document.createElement("a");fe.href=Y,fe.download=F.name,document.body.appendChild(fe),fe.click(),document.body.removeChild(fe),setTimeout(()=>URL.revokeObjectURL(Y),1e3)}}
3894if(d?.deleteOnDownload&&!U){const Z=async()=>{try{console.log("Deleting transfer as per deleteOnDownload setting..."),P.current&&await _y(d.id,P.current),l(Et.DELETED)}catch(Y){console.error("Error invoking delete-transfer:",Y)}};if(me){const Y=u.reduce((he,Pe)=>he+Pe.size,0)/1048576,fe=3e4+Y*1e3,pe=Math.min(Math.max(fe,45e3),300*1e3);console.log(`Native Mobile: Delaying deletion by ${Math.round(pe/1e3)}s to allow background queued downloads to complete (based on ${Y.toFixed(1)}MB total size)`),setTimeout(Z,pe)}else await Z()}Hi("download_completed",{device_type:Hr()?"mobile":"web"})}catch(ee){throw console.error(`Error downloading ${F.name}:`,ee),Hi("download_failed",{device_type:"web"}),ee}finally{b(ee=>{const te=new Set(ee);return te.delete(F.id),te}),x(ee=>{const te={...ee};return delete te[F.id],te})}},re=()=>{switch(o){case Et.LOADING:return s.jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",minHeight:"300px"},children:[s.jsx("div",{className:"loader",style:{width:40,height:40,borderWidth:3,borderColor:"rgba(17,17,17,0.1)",borderTopColor:"#111111"}}),s.jsx("p",{style:{marginTop:"24px",fontSize:"14px",color:"rgba(17,17,17,0.6)",fontWeight:500},children:"Finding your files..."})]});case Et.PASSWORD_PROTECTED:return s.jsxs("div",{style:{display:"flex",flexDirection:"column",flex:1},children:[s.jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",gap:"4px",marginBottom:"32px",marginTop:"16px"},children:[s.jsx("div",{style:{marginBottom:"8px"},children:s.jsx(XS,{size:56,color:"rgba(17,17,17,0.6)",strokeWidth:1})}),s.jsx("h2",{style:{margin:0,color:"rgba(17,17,17,0.6)",fontSize:"28px",fontWeight:600,letterSpacing:"-0.5px",textAlign:"center"},children:"Password Required"}),s.jsx("p",{style:{margin:0,color:"rgba(17,17,17,0.7)",fontSize:"14px",textAlign:"center",lineHeight:"18px",maxWidth:"280px"},children:"This transfer is protected. Please enter the password to continue."})]}),s.jsxs("form",{onSubmit:H,style:{display:"flex",flexDirection:"column",gap:"12px"},children:[s.jsx("input",{type:"password",value:g,onChange:ee=>y(ee.target.value),placeholder:"Enter password",autoFocus:!0,style:{width:"100%",padding:"16px",borderRadius:"16px",border:"1px solid rgba(17,17,17,0.1)",background:"rgba(17,17,17,0.02)",fontSize:"15px",fontWeight:500,color:"#111111",outline:"none",transition:"border-color 0.2s",boxSizing:"border-box"},onFocus:ee=>ee.currentTarget.style.borderColor="#A3E635",onBlur:ee=>ee.currentTarget.style.borderColor="rgba(17,17,17,0.1)"}),s.jsx(fn,{type:"submit",variant:"primary",size:"lg",fullWidth:!0,children:"Unlock Transfer"}),m&&s.jsx("p",{style:{color:"#EF4444",fontSize:"13px",textAlign:"center",marginTop:"8px",fontWeight:500},children:m})]})]});case Et.UNLOCKED:const F=u.reduce((ee,te)=>ee+te.size,0),U=Math.max(0,Math.round((new Date(d.expiresAt).getTime()-new Date().getTime())/(1e3*60*60*24)));return s.jsxs("div",{style:{display:"flex",flexDirection:"column",flex:1,minHeight:0},children:[s.jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",gap:"4px",marginBottom:"20px",flexShrink:0},children:[s.jsx("div",{style:{marginBottom:"8px"},children:s.jsx(H0,{size:48})}),s.jsx("h2",{style:{margin:0,color:"rgba(17,17,17,0.6)",fontSize:"24px",fontWeight:600,letterSpacing:"-0.5px",textAlign:"center"},children:d.title||"Ready to Download"}),s.jsxs("p",{style:{margin:0,color:"rgba(17,17,17,0.7)",fontSize:"13px",textAlign:"center",lineHeight:"18px"},children:[u.length," file",u.length!==1?"s":""," · ",yi(F)," · Expires in ",U," day",U!==1?"s":""]})]}),s.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"8px",flex:"1 1 0",minHeight:0,overflowY:"auto",overflowX:"hidden",paddingRight:"4px",marginBottom:"16px",maskImage:"linear-gradient(to bottom, transparent 0, black 12px, black calc(100% - 12px), transparent 100%)",WebkitMaskImage:"linear-gradient(to bottom, transparent 0, black 12px, black calc(100% - 12px), transparent 100%)"},children:u.map(ee=>s.jsxs("div",{style:{display:"flex",alignItems:"center",padding:"14px 16px",background:"rgba(17,17,17,0.04)",borderRadius:"14px",transition:"background 0.2s",position:"relative",overflow:"hidden",flexShrink:0},children:[s.jsxs("div",{style:{flex:1,minWidth:0,display:"flex",flexDirection:"column",gap:"4px"},children:[s.jsx("div",{style:{fontSize:"14px",fontWeight:600,color:"#111111",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:ee.name}),s.jsx("div",{style:{fontSize:"12px",color:"rgba(17,17,17,0.5)",fontWeight:500},children:yi(ee.size)})]}),s.jsx("button",{onClick:()=>ie(ee),disabled:w.has(ee.id),"aria-label":w.has(ee.id)?`Downloading ${ee.name}`:`Download ${ee.name}`,style:{width:"40px",height:"40px",borderRadius:"50%",background:"transparent",display:"flex",alignItems:"center",justifyContent:"center",border:"none",cursor:w.has(ee.id)?"default":"pointer",flexShrink:0,marginLeft:"12px",transition:"opacity 0.2s"},onMouseEnter:te=>
3894!w.has(ee.id)&&(te.currentTarget.style.opacity="0.6"),onMouseLeave:te=>!w.has(ee.id)&&(te.currentTarget.style.opacity="1"),children:w.has(ee.id)?A[ee.id]!==void 0?s.jsxs("svg",{width:"24",height:"24",viewBox:"0 0 24 24",style:{transform:"rotate(-90deg)"},children:[s.jsx("circle",{cx:"12",cy:"12",r:"10",fill:"none",stroke:"rgba(17,17,17,0.1)",strokeWidth:"2.5"}),s.jsx("circle",{cx:"12",cy:"12",r:"10",fill:"none",stroke:"#111111",strokeWidth:"2.5",strokeDasharray:2*Math.PI*10,strokeDashoffset:2*Math.PI*10-A[ee.id]/100*(2*Math.PI*10),style:{transition:"stroke-dashoffset 0.1s linear"}})]}):s.jsx("div",{className:"loader",style:{width:16,height:16,borderWidth:2,borderColor:"rgba(17,17,17,0.1)",borderTopColor:"#111111"}}):s.jsx(KS,{size:22,color:"#111111"})})]},ee.id))}),s.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"8px",flexShrink:0,paddingTop:"12px"},children:[s.jsx(fn,{onClick:N,disabled:u.length===0||j||D,loading:j,fullWidth:!0,size:"lg",children:j?"Downloading…":`Download All (${yi(F)})`}),u.length>1&&!0&&s.jsx(fn,{onClick:ve,variant:"secondary",loading:D,fullWidth:!0,size:"md",children:D?"Building ZIP…":`Download as ZIP (${u.length} files)`})]}),m&&s.jsx("p",{style:{color:"#EF4444",fontSize:"13px",textAlign:"center",marginTop:"12px",fontWeight:500},children:m})]});case Et.NOT_FOUND:return s.jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",minHeight:"300px"},children:[s.jsx("div",{style:{width:"56px",height:"56px",borderRadius:"50%",background:"rgba(17, 17, 17, 0.04)",display:"flex",alignItems:"center",justifyContent:"center",marginBottom:"16px"},children:s.jsx(QS,{size:28,color:"#111111"})}),s.jsx("h2",{style:{fontSize:"24px",fontWeight:700,color:"#111111",letterSpacing:"-0.5px",margin:"0 0 8px 0",textAlign:"center"},children:"Transfer Not Found"}),s.jsx("p",{style:{fontSize:"14px",color:"rgba(17,17,17,0.6)",margin:0,textAlign:"center",maxWidth:"280px"},children:"This link may be expired or incorrect. Please check the URL and try again."})]});case Et.DELETED:return s.jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",minHeight:"300px"},children:[s.jsx("div",{style:{width:"56px",height:"56px",borderRadius:"50%",background:"rgba(239, 68, 68, 0.1)",display:"flex",alignItems:"center",justifyContent:"center",marginBottom:"16px"},children:s.jsx(k0,{size:28,color:"#EF4444"})}),s.jsx("h2",{style:{fontSize:"24px",fontWeight:700,color:"#111111",letterSpacing:"-0.5px",margin:"0 0 8px 0",textAlign:"center"},children:"Transfer Burned"}),s.jsx("p",{style:{fontSize:"14px",color:"rgba(17,17,17,0.6)",margin:"0 0 24px 0",textAlign:"center",maxWidth:"280px"},children:"This transfer was set to delete after downloading and has now been permanently removed."}),s.jsx("button",{onClick:()=>window.location.href="/",style:{padding:"12px 24px",borderRadius:"12px",border:"none",background:"#111111",color:"#ffffff",fontSize:"14px",fontWeight:600,cursor:"pointer"},children:"Send Your Own Files"})]});case Et.ERROR:return s.jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",minHeight:"300px"},children:[s.jsx("div",{style:{width:"56px",height:"56px",borderRadius:"50%",background:"rgba(17, 17, 17, 0.04)",display:"flex",alignItems:"center",justifyContent:"center",marginBottom:"16px"},children:s.jsx(JS,{size:28,color:"#111111"})}),s.jsx("h2",{style:{fontSize:"24px",fontWeight:700,color:"#111111",letterSpacing:"-0.5px",margin:"0 0 8px 0",textAlign:"center"},children:"Something Went Wrong"}),s.jsx("p",{style:{fontSize:"14px",color:"rgba(17,17,17,0.6)",margin:0,textAlign:"center",maxWidth:"280px"},children:m||"We couldn’t load this transfer. Please check your connection and try again."})]});default:return null}};return s.jsxs("div",{style:{display:"flex",flexDirection:"column",flex:1,minHeight:0,paddingTop:"0px"},children:[s.jsx("div",{style:{display:"flex",justifyContent:"flex-start",marginTop:"-16px",marginLeft:"-16px",marginBottom:"16px"},children:s.jsx(fn,{onClick:r,variant:"ghost",size:"sm",iconLeft:s.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:s.jsx("path",{d:"M19 12H5M12 19l-7-7 7-7"})}),style:{color:"rgba(17,17,17,0.6)"},children:"Back"})}),s.jsx(an,{mode:"wait",children:s.jsx(ke.div,{initial:{opacity:0,y:10}
3894,animate:{opacity:1,y:0},exit:{opacity:0,y:-10},transition:{duration:.2},style:{display:"flex",flexDirection:"column",flex:1,minHeight:0},children:re()},o)})]})},By=()=>{const n=xo("/")||{title:"SendVault | Free & Secure Large File Sharing",description:"Share large files up to 1GB for free. No registration required, zero compression, and lightning-fast transfers with SendVault.",keywords:"file sharing, send large files, secure file transfer, sendvault, free file sharing"};mn({title:n.title,description:n.description,canonical:bo("/"),ogType:"website",keywords:n.keywords});const[r,o]=V.useState(!1),[l,d]=V.useState("send"),[p,u]=V.useState(""),[f,g]=V.useState(!1),[y,m]=V.useState(0),[v,w]=V.useState(!1),[b,A]=V.useState(null),[x,j]=V.useState(null),T=Nr.useRef(null),D=Nr.useRef(!1);Nr.useEffect(()=>{const z=setInterval(()=>{m(W=>(W+1)%4)},3500);return()=>clearInterval(z)},[]),Nr.useEffect(()=>{const z=()=>{const H=window.location.pathname.match(/\/transfer\/([^/]+)/);H?(j(H[1]),d("receive"),u(""),A(null),w(!1)):j(null)};if(!window.location.pathname.match(/\/transfer\/[^/]+/)){const H=new URLSearchParams(window.location.search).get("code");if(H){const ae=H.toUpperCase().replace(/[^A-Z0-9]/g,"").slice(0,6);ae.length===6&&u(ae)}}return z(),window.addEventListener("popstate",z),()=>window.removeEventListener("popstate",z)},[]);const _=z=>{const W=z.target.value.toUpperCase().replace(/[^A-Z0-9]/g,"").slice(0,6);u(W),A(null)},L=Nr.useCallback(async z=>{if(!D.current){D.current=!0,w(!0),A(null);try{const{transferId:W,error:H}=await Rk(z);if(H){A(H),D.current=!1,w(!1);return}W&&(D.current=!1,w(!1),window.history.pushState({page:"transfer"},"",`/transfer/${W}`),j(W))}catch{D.current=!1,w(!1),A("An unexpected error occurred. Please try again.")}}},[]);Nr.useEffect(()=>{if(p.length!==6)return;const z=setTimeout(()=>L(p),350);return()=>clearTimeout(z)},[p,L]);const B=z=>{z.key==="Enter"&&p.length===6&&(z.preventDefault(),L(p))},P=p.length>0;return s.jsxs("div",{className:"home-wrapper",style:{minHeight:"100vh",position:"relative",backgroundImage:"linear-gradient(to bottom, transparent 50%, rgba(0, 0, 0, 0.8)), url(/bg-image.webp)",backgroundSize:"cover",backgroundPosition:"center 0%",backgroundRepeat:"no-repeat"},children:[s.jsx("style",{children:`
3895                @media (max-width: 900px) {
3896                    .home-main {
3897                        flex-direction: column !important;
3898                        align-items: center !important;
3899                        padding-top: 80px !important;
3900                        padding-bottom: 80px !important;
3901                        gap: 40px;
3902                    }
3903                    .home-left {
3904                        padding: 40px 16px 24px 16px !important;
3905                        align-items: center !important;
3906                        text-align: center !important;
3907                    }
3908                    .home-title {
3909                        font-size: 36px !important;
3910                        margin-bottom: 12px !important;
3911                    }
3912                    .home-subtitle {
3913                        font-size: 16px !important;
3914                        line-height: 1.4 !important;
3915                    }
3916                    .home-title span {
3917                        white-space: normal !important;
3918                    }
3919                    .home-right-card {
3920                        margin-top: 0px !important;
3921                        width: 100% !important;
3922                        flex: 1 !important;
3923                        max-height: none !important;
3924                        min-height: calc(100vh - 160px) !important;
3925                    }
3926                    .home-header {
3927                        padding: 0 24px !important;
3928                        position: absolute !important;
3929                    }
3930                    .home-nav-links {
3931                        display: none !important;
3932                    }
3933                    .feature-wrapper {
3934                        display: none !important;
3935                    }
3936                    .home-footer-links {
3937                        left: 0 !important;
3938                        right: 0 !important;
3939                        justify-content: center !important;
3940                    }
3941                }
3942                @media (max-width: 480px) {
3943                    .home-title {
3944                        font-size: 32px !important;
3945                    }
3946                }
3947            `}),s.jsxs("header",{className:"home-header",style:{position:"fixed",top:0,left:0,right:0,height:"76px",display:"flex",alignItems:"center",justifyContent:"space-between",padding:"0 48px",background:"transparent",zIndex:100,fontSize:"15px",fontWeight:400,color:"#ffffff"},children:[s.jsx("div",{style:{display:"flex",alignItems:"center",flex:1},children:s.jsx("div",{style:{display:"flex",alignItems:"center",fontSize:"20px",fontWeight:600,letterSpacing:"-0.5px",transform:"scale(0.9)",transformOrigin:"left center",color:"#ffffff"},children:s.jsx(Xi,{})})}),s.jsxs("div",{style:{display:"flex",gap:"32px",alignItems:"center",justifyContent:"flex-end",flex:1},children:[s.jsxs("nav",{className:"home-nav-links",style:{display:"flex",gap:"32px",alignItems:"center"},children:[s.jsx("a",{href:"/",style:{textDecoration:"none",color:"inherit",transition:"opacity 0.2s",o
3947pacity:.7},children:"Home"}),s.jsx("a",{href:"/about",style:{textDecoration:"none",color:"inherit",transition:"opacity 0.2s"},onMouseEnter:z=>z.currentTarget.style.opacity="0.7",onMouseLeave:z=>z.currentTarget.style.opacity="1",children:"About"}),s.jsx("a",{href:"/wetransfer-alternative",style:{textDecoration:"none",color:"inherit",transition:"opacity 0.2s"},onMouseEnter:z=>z.currentTarget.style.opacity="0.7",onMouseLeave:z=>z.currentTarget.style.opacity="1",children:"Alternative"}),s.jsx("a",{href:"/blog",style:{textDecoration:"none",color:"inherit",transition:"opacity 0.2s"},onMouseEnter:z=>z.currentTarget.style.opacity="0.7",onMouseLeave:z=>z.currentTarget.style.opacity="1",children:"Blog"})]}),s.jsxs("div",{style:{position:"relative"},onMouseEnter:()=>o(!0),onMouseLeave:()=>o(!1),children:[s.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px",cursor:"pointer",transition:"opacity 0.2s",opacity:r?.7:1},children:["Use Cases",s.jsx(ke.div,{animate:{rotate:r?180:0},transition:{duration:.2},children:s.jsx(Yr,{size:16,strokeWidth:2.5})})]}),s.jsx(an,{children:r&&s.jsxs(ke.div,{initial:{opacity:0,y:10,scale:.95},animate:{opacity:1,y:0,scale:1},exit:{opacity:0,y:10,scale:.95},transition:{duration:.2},style:{position:"absolute",top:"calc(100% + 20px)",left:"50%",x:"-50%",background:"rgba(255, 255, 255, 0.9)",backdropFilter:"blur(16px)",borderRadius:"12px",padding:"12px",display:"flex",flexDirection:"column",gap:"4px",minWidth:"180px",boxShadow:"0 8px 32px rgba(0,0,0,0.1)",border:"1px solid rgba(0,0,0,0.05)"},children:[s.jsx("a",{href:"/usecases#use-case-creatives",style:{textDecoration:"none",color:"#111",padding:"10px 14px",borderRadius:"8px",transition:"background 0.2s",fontSize:"14px",fontWeight:500},onMouseEnter:z=>z.currentTarget.style.background="rgba(0,0,0,0.05)",onMouseLeave:z=>z.currentTarget.style.background="transparent",children:"For Creatives"}),s.jsx("a",{href:"/usecases#use-case-teams",style:{textDecoration:"none",color:"#111",padding:"10px 14px",borderRadius:"8px",transition:"background 0.2s",fontSize:"14px",fontWeight:500},onMouseEnter:z=>z.currentTarget.style.background="rgba(0,0,0,0.05)",onMouseLeave:z=>z.currentTarget.style.background="transparent",children:"For Teams"}),s.jsx("a",{href:"/usecases#use-case-personal",style:{textDecoration:"none",color:"#111",padding:"10px 14px",borderRadius:"8px",transition:"background 0.2s",fontSize:"14px",fontWeight:500},onMouseEnter:z=>z.currentTarget.style.background="rgba(0,0,0,0.05)",onMouseLeave:z=>z.currentTarget.style.background="transparent",children:"Personal Use"})]})})]})]})]}),s.jsxs("main",{className:"home-main",style:{paddingTop:"100px",paddingBottom:"24px",paddingLeft:"24px",paddingRight:"24px",minHeight:"100vh",boxSizing:"border-box",display:"flex",alignItems:"stretch",justifyContent:"space-between"},children:[s.jsxs("div",{className:"home-left",style:{flex:1,display:"flex",flexDirection:"column",justifyContent:"flex-start",padding:"40px 64px 0px 64px",color:"#ffffff",maxWidth:"640px"},children:[s.jsxs(ke.h1,{className:"home-title",initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.8,ease:"easeOut"},style:{fontSize:"54px",fontWeight:700,letterSpacing:"-1.5px",margin:"0 0 24px 0",lineHeight:1.1},children:[s.jsx("span",{style:{whiteSpace:"nowrap"},children:"Secure file sharing, "}),s.jsx("br",{}),"simplified"]}),s.jsx(ke.p,{className:"home-subtitle",initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.8,delay:.1,ease:"easeOut"},style:{fontSize:"20px",fontWeight:400,opacity:.85,maxWidth:"480px",lineHeight:1.5,margin:0},children:"Share large files up to 1GB for free. No registration required, zero compression, and lightning-fast transfers."}),s.jsx(ke.div,{className:"feature-wrapper",initial:{opacity:0}
3947,animate:{opacity:1},transition:{duration:.8,delay:.2},style:{marginTop:"48px",position:"relative",height:"80px",width:"100%",maxWidth:"320px"},children:s.jsx(an,{children:s.jsxs(ke.div,{initial:{opacity:0,y:30},animate:{opacity:1,y:0},exit:{opacity:0,y:-30},transition:{duration:.6,ease:[.16,1,.3,1]},style:{position:"absolute",top:0,left:0,width:"100%",display:"flex",alignItems:"center",gap:"16px"},children:[s.jsx("div",{style:{width:"32px",height:"32px",background:"transparent",display:"flex",alignItems:"center",justifyContent:"center",color:"#ffffff",flexShrink:0},children:[s.jsx(Yi,{size:28,strokeWidth:2}),s.jsx(sl,{size:28,strokeWidth:2}),s.jsx(rl,{size:28,strokeWidth:2}),s.jsx(z0,{size:28,strokeWidth:2})][y]}),s.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"2px"},children:[s.jsx("h3",{style:{margin:0,fontSize:"15px",fontWeight:600,color:"#ffffff"},children:["Privacy First","Lightning Fast","Original Quality","Simple Sharing"][y]}),s.jsx("p",{style:{margin:0,fontSize:"13px",color:"rgba(255,255,255,0.75)",lineHeight:"1.4"},children:["End-to-end secure sharing","No bandwidth throttling","Zero compression applied","Share via 6-digit code"][y]})]})]},y)})})]}),s.jsxs(ke.div,{className:"home-right-card",initial:{opacity:0,x:20},animate:{opacity:1,x:0},transition:{duration:.8,delay:.2,ease:"easeOut"},style:{width:"100%",maxWidth:"440px",height:"auto",maxHeight:"calc(100vh - 124px)",background:"rgba(255, 255, 255, 0.35)",backdropFilter:"blur(12px)",WebkitBackdropFilter:"blur(12px)",borderRadius:"24px",boxShadow:"0 8px 32px rgba(0, 0, 0, 0.08)",border:"1px solid rgba(255, 255, 255, 0.3)",padding:"32px",display:"flex",flexDirection:"column",minHeight:"440px"},children:[s.jsx("div",{style:{flex:1,display:"flex",flexDirection:"column",minHeight:0},children:s.jsxs(an,{mode:"wait",children:[l==="send"&&!x&&s.jsx(ke.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},exit:{opacity:0,y:-10},transition:{duration:.2},style:{flex:1,display:"flex",flexDirection:"column",minHeight:"320px"},children:s.jsx(Qk,{})},"send-view"),l==="receive"&&!x&&s.jsxs(ke.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},exit:{opacity:0,y:-10},transition:{duration:.2},style:{flex:1,display:"flex",flexDirection:"column",gap:"24px",minHeight:"320px",paddingTop:"24px"},children:[s.jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",gap:"4px"},children:[s.jsx("div",{style:{marginBottom:"8px"},children:s.jsx(H0,{size:56})}),s.jsx("h2",{style:{margin:0,color:"rgba(17,17,17,0.6)",fontSize:"28px",fontWeight:600,letterSpacing:"-0.5px",textAlign:"center"},children:"Enter Share Code"}),s.jsx("p",{style:{margin:0,color:"rgba(17,17,17,0.7)",fontSize:"14px",textAlign:"center",lineHeight:"18px"},children:"Enter the 6-character code to access shared files"})]}),s.jsxs(ke.div,{onClick:()=>T.current?.focus(),animate:b?{x:[-10,10,-10,10,0]}:{},transition:{duration:.4},style:{position:"relative",borderRadius:"22px",border:"1px solid "+(b?"rgba(239,68,68,0.5)":f?"rgba(17,17,17,0.28)":"rgba(17,17,17,0.12)"),backgroundColor:b?"rgba(239,68,68,0.05)":"rgba(17,17,17,0.04)",padding:"22px 16px",display:"flex",alignItems:"center",justifyContent:"center",overflow:"hidden",cursor:"text",transition:"background-color 0.2s, border-color 0.2s"},children:[v&&s.jsx(ke.div,{initial:{left:"-100%"},animate:{left:"200%"},transition:{repeat:1/0,duration:1.5,ease:"linear"},style:{position:"absolute",top:0,bottom:0,width:"100%",background:"linear-gradient(90deg, transparent, rgba(255,255,255,0.8), transparent)",transform:"skewX(-20deg)",pointerEvents:"none",zIndex:10}}),(P||f)&&s.jsx("div",{style:{position:"absolute",bottom:0,left:0,right:0,height:"60px",background:"linear-gradient(to top, rgba(17,17,17,0.06), transparent)",pointerEvents:"none"}}),P?s.jsx("div",{style:{display:"flex",gap:"12px",justifyContent:"center",pointerEvents:"none"},children:p.split("").map((z,W)=>s.jsx(ke.span,{initial:{opacity:0,scale:.8},animate:{opacity:1,scale:1},transition:{duration:.15},style:{color:"#111111",fontSize:"46px",fontFamily:"inherit",fontVariantNumeric:"tabular-nums",fontWeight:700,textAlign:"center",display:"inline-block"},children:z},W+"-"+z))}):s.jsx("div",{style:{display:"flex",gap:"12px",justifyContent:"center",pointerEvents:"none"},children:"XXXXXX".split("").map((z,W)=>s.jsx("span",{style:{color:"rgba(17,17,17,0.15)",fontSize:"46px",fontFamily:"inherit",fontVariantNumeric:"tabular-nums",fontWeight:700,textAlign:"center"},children:z},W))}),s.jsx("style",{children:`
3948                                            .receive-input::selection {
3949                                                background: rgba(163, 230, 53, 0.4);
3950                                            }
3951                                        `}),s.jsx("input",{ref:T,className:"receive-input",value:p,onChange:_,onKeyDown:B,onFocus:()=>g(!0),onBlur:()=>g(!1),maxLength:6,autoComplete:"off",autoCorrect:"off",spellCheck:!1,disabled:v,style:{position:"absolute",top:0,left:0,right:0,bottom:0,opacity:1,color:"transparent",background:"transparent",width:"100%",height:"100%",cursor:v?"default":"text",padding:0,margin:0,border:"none",outline:"none",fontSize:"46px",fontFamily:"inherit",letterSpacing:"32px",textAlign:"center",caretColor:"transparent"}})]}),s.jsx("div",{style:{marginTop:"-8px",minHeight:"18px"},children:b?s.jsx(ke.p,{initial:{opacity:0,y:-5}
3951,animate:{opacity:1,y:0},style:{margin:0,color:"#EF4444",fontSize:"13px",fontWeight:500,textAlign:"center"},children:b}):s.jsx("p",{style:{margin:0,color:"rgba(17,17,17,0.6)",fontSize:"12px",textAlign:"center"},children:"Codes are valid until the transfer expires or is deleted."})})]},"receive-view"),l==="history"&&!x&&s.jsx(ke.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},exit:{opacity:0,y:-10},transition:{duration:.2},style:{flex:1,display:"flex",flexDirection:"column",minHeight:0},children:s.jsx(GS,{})},"history-view"),x&&s.jsx(ke.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},exit:{opacity:0,y:-10},transition:{duration:.2},style:{flex:1,display:"flex",flexDirection:"column",minHeight:0},children:s.jsx(e4,{transferId:x,onClose:()=>{j(null),u(""),w(!1),window.history.pushState({page:"home"},"","/")}})},"download-view")]})}),!x&&s.jsxs("div",{style:{display:"flex",alignItems:"center",backgroundColor:"#111111",borderRadius:"24px",border:"1px solid rgba(255,255,255,0.05)",padding:"10px 8px",boxShadow:"0 8px 32px rgba(0,0,0,0.5)",marginTop:"24px"},children:[s.jsxs("div",{onClick:()=>d("send"),style:{flex:4,display:"flex",alignItems:"center",justifyContent:"center",gap:"7px",padding:"8px 4px",cursor:"pointer"},children:[l==="send"?s.jsx(Pk,{}):s.jsx(Uk,{}),s.jsx("span",{style:{fontFamily:"inherit",fontSize:"13px",letterSpacing:"-0.3px",fontWeight:500,color:l==="send"?"#A3E635":"rgba(255,255,255,0.5)"},children:"Upload"})]}),s.jsx("div",{style:{width:"1px",height:"24px",backgroundColor:"rgba(255,255,255,0.12)"}}),s.jsxs("div",{onClick:()=>d("receive"),style:{flex:4,display:"flex",alignItems:"center",justifyContent:"center",gap:"7px",padding:"8px 4px",cursor:"pointer"},children:[l==="receive"?s.jsx(Ik,{}):s.jsx(Vk,{}),s.jsx("span",{style:{fontFamily:"inherit",fontSize:"13px",letterSpacing:"-0.3px",fontWeight:500,color:l==="receive"?"#A3E635":"rgba(255,255,255,0.5)"},children:"Receive"})]}),s.jsx("div",{style:{width:"1px",height:"24px",backgroundColor:"rgba(255,255,255,0.12)"}}),s.jsx("div",{onClick:()=>d("history"),style:{flex:2,display:"flex",alignItems:"center",justifyContent:"center",gap:"7px",padding:"8px 4px",cursor:"pointer"},children:l==="history"?s.jsx(Fk,{}):s.jsx(Wk,{})})]})]})]}),s.jsxs("footer",{className:"home-footer-links",style:{position:"absolute",bottom:"24px",left:"48px",display:"flex",gap:"16px",fontSize:"13px",color:"#ffffff",fontWeight:400,opacity:.9},children:[s.jsxs("a",{href:"/privacy",style:{textDecoration:"none",color:"inherit",transition:"opacity 0.2s",display:"flex",alignItems:"center",gap:"2px"},onMouseEnter:z=>z.currentTarget.style.opacity="0.6",onMouseLeave:z=>z.currentTarget.style.opacity="1",children:["Privacy ",s.jsx(Sn,{size:12,strokeWidth:2.5})]}),s.jsxs("a",{href:"/terms",style:{textDecoration:"none",color:"inherit",transition:"opacity 0.2s",display:"flex",alignItems:"center",gap:"2px"},onMouseEnter:z=>z.currentTarget.style.opacity="0.6",onMouseLeave:z=>z.currentTarget.style.opacity="1",children:["Terms ",s.jsx(Sn,{size:12,strokeWidth:2.5})]}),s.jsx("a",{href:vo,target:"_blank",rel:"noopener noreferrer",style:{textDecoration:"none",color:"inherit",transition:"opacity 0.2s",display:"flex",alignItems:"center",gap:"6px",marginLeft:"8px"},onMouseEnter:z=>z.currentTarget.style.opacity="0.6",onMouseLeave:z=>z.currentTarget.style.opacity="1",children:s.jsxs("span",{style:{display:"flex",alignItems:"center",gap:"2px"},children:["Get Android App ",s.jsx(Sn,{size:12,strokeWidth:2.5})]})})]})]})},t4=V.lazy(()=>ju(()=>import("./WeTransferAlternativePage_V2-Dlzlh6O0.js"),__vite__mapDeps([0,1,2,3])).then(n=>({default:n.WeTransferAlternativePage_V2}))),n4=V.lazy(()=>ju(()=>import("./WhatsAppAlternativePage_V2-8sr3VMfd.js"),__vite__mapDeps([4,1,2,3])).then(n=>({default:n.WhatsAppAlternativePage_V2}))),i4=V.lazy(()=>ju(()=>import("./SecureFileSharingPage-DC-QPkzm.js"),__vite__mapDeps([5,1,2,3])).then(n=>({default:n.SecureFileSharingPage}))),r4=()=>{const[n,r]=V.useState("home"),[o,l]=V.useState(!1),[d,p]=V.useState(!1),[u,f]=V.useState(Fr.isNativePlatform()),[g,y]=V.useState(null);V.useEffect(()=>{{const P=localStorage.getItem("cookieConsent");P?P==="accepted"&&m():p(!0)}},[]),V.useEffect(()=>{let P=!1;return(async()=>{try{const{error:z}=await gn.functions.invoke("lookup-transfer",{body:{code:"__healthcheck__"}});if(P)return;if(z){const W=z.context?.status;
3951y(W!==404)}else y(!0)}catch{P||y(!1)}})(),()=>{P=!0}},[]),V.useCallback(async()=>{try{if(!Fr.isNativePlatform()||window.__ADMOB_INIT_FAILED||window.__ADMOB_INITIALIZED)return;const P=setTimeout(()=>{console.log("🔄 Initializing AdMob Native..."),$5().catch(z=>{console.error("❌ AdMob initialization failed:",z),window.__ADMOB_INIT_FAILED=!0})},3e3);window.__ADMOB_INIT_TIMER=P}catch(P){console.error("❌ Ads initialization error:",P)}},[]);const m=V.useCallback(async()=>{try{console.log("✅ Tracking initialized (user consented)"),window.__loadAnalytics?.()}catch(P){console.error("❌ Tracking initialization error:",P)}},[]),v=V.useCallback(()=>{localStorage.setItem("cookieConsent","accepted"),p(!1),m(),console.log("✅ User accepted cookies")},[m]),w=V.useCallback(()=>{localStorage.setItem("cookieConsent","rejected"),p(!1),console.log("ℹ️ User rejected non-essential cookies")},[]);V.useEffect(()=>{const P=()=>p(!0);return window.addEventListener("cookie-prefs:open",P),()=>window.removeEventListener("cookie-prefs:open",P)},[]);const[b,A]=V.useState(window.location.pathname);V.useEffect(()=>{const P=()=>A(window.location.pathname);return window.addEventListener("popstate",P),()=>window.removeEventListener("popstate",P)},[]);const x=V.useCallback(()=>l(P=>!P),[]),j=V.useCallback(()=>l(!1),[]),T=V.useCallback((P,z)=>{r(P);const W=ph(P,z);window.history.pushState({page:P},"",W),A(window.location.pathname),z&&requestAnimationFrame(()=>{document.querySelector(z)?.scrollIntoView({behavior:"smooth"})})},[]),D=V.useCallback((P,z=!1)=>{const W=wu(P,{blockLegalOnNative:Hr()});W.redirectTo&&(z?window.history.replaceState:window.history.pushState).call(window.history,{page:W.page},"",W.redirectTo),r(W.page),A(window.location.pathname)},[]);V.useEffect(()=>{const P=W=>{const H=W.detail;typeof H=="string"?T(H):T(H.page,H.hash||void 0)};window.addEventListener("setpage",P);const z=()=>{D(window.location.pathname,!1)};return window.addEventListener("popstate",z),D(window.location.pathname,!0),()=>{window.removeEventListener("setpage",P),window.removeEventListener("popstate",z)}},[T,D]),V.useEffect(()=>{const P=z=>{if(z.defaultPrevented)return;const W=z.target?.closest("a");if(!W||W.target==="_blank")return;const H=W.getAttribute("href");if(!H||H.startsWith("mailto:")||H.startsWith("tel:"))return;let ae;try{ae=new URL(H,window.location.href)}catch{return}if(ae.origin!==window.location.origin)return;const ve=ae.pathname;if(ve.startsWith("/blog/"))return;const N=wu(ve,{blockLegalOnNative:Hr()});if(N.isTransfer){z.preventDefault(),window.history.pushState({page:"transfer"},"",ve),r("transfer");return}N.page!=="not-found"&&(z.preventDefault(),N.redirectTo?window.history.replaceState({page:N.page},"",N.redirectTo):window.history.pushState({page:N.page},"",ve+ae.hash),r(N.page),A(window.location.pathname),ae.hash&&requestAnimationFrame(()=>{document.querySelector(ae.hash)?.scrollIntoView({behavior:"smooth"})}))};return document.addEventListener("click",P),()=>document.removeEventListener("click",P)},[]),V.useEffect(()=>(document.body.classList.toggle("no-scroll",o),()=>{document.body.classList.remove("no-scroll")}),[o]),V.useEffect(()=>{const z=(W=>window.requestIdleCallback?window.requestIdleCallback(W,{timeout:800}):setTimeout(W,120))(()=>{yS(n,b)?vS():bS()});return()=>{window.cancelIdleCallback&&typeof z=="number"?window.cancelIdleCallback(z):clearTimeout(z)}},[n,b]);const _=V.useMemo(()=>{if(b.match(/\/transfer\/([^/]+)/))return s.jsx(By,{});switch(n){case"terms":return s.jsx(DS,{});case"privacy":return s.jsx(_S,{});case"usecases":return s.jsx(hS,{});case"blog":return s.jsx(ES,{});case"contact":return s.jsx(NS,{});case"wetransfer-alternative":return s.jsx(t4,{});case"whatsapp-alternative":return s.jsx(n4,{});case"secure-file-sharing":return s.jsx(i4,{});case"how-it-works":return s.jsx(IS,{});case"about":return s.jsx(VS,{});case"download":return s.jsx(HS,{});case"not-found":return s.jsx(LS,{});case"home":default:return s.jsx(By,{})}},[n,b]),L=/\/transfer\/[^/]+/.test(b),B=b==="/"||b==="/about"||b==="/privacy"||b==="/terms"||b==="/usecases"||b==="/how-it-works"||b==="/contact"||b==="/blog"||b.startsWith("/blog/")||b==="/wetransfer-alternative"||b==="/whatsapp-alternative"||b==="/secure-file-sharing";return s.jsxs(Hd,{children:[u&&s.jsx(Sk,{onComplete:()=>f(!1)}),!u&&Fr.isNativePlatform(),s.jsxs(s.Fragment,{children:[s.jsx("style",{children:`
3952                        html, body {
3953                            /* Set background to light for V2 pages to prevent dark flash during page transition fades */
3954                            background-color: #fdfdfd;
3955                            /* Completely hide scrollbar in Firefox */
3956                            scrollbar-width: none;
3957                        }
3958
3959                        /* Completely hide scrollbar in Chrome/Safari/Edge */
3960                        ::-webkit-scrollbar {
3961                            display: none;
3962                        }
3963
3964                        .sv-page-loader {
3965                            display: flex;
3966                            flex-direction: column;
3967                            align-items: center;
3968                            justify-content: center;
3969                            min-height: 60vh;
3970                            gap: 16px;
3971                        }
3972                        .sv-spinner {
3973                            width: 36px;
3974                            height: 36px;
3975                            border: 3px solid rgba(163, 230, 53, 0.2);
3976                            border-top-color: #a3e635;
3977                            border-radius: 50%;
3978                            animation: sv-spin 0.8s linear infinite;
3979                        }
3980                        @keyframes sv-spin {
3981                            to { transform: rotate(360deg); }
3982                        }
3983                    `}),!L&&!B&&s.jsx(uk,{setPage:T,page:n,isMenuOpen:o,toggleMenu:x,closeMenu:j}),s.jsx(Hd,{children:s.jsx("div",{style:{display:"grid"},children:s.jsx(an,{onExitComplete:()=>window.scrollTo({top:0,left:0,behavior:"instant"}),initial:!1,children:s.jsx(ke.div,{initial:{opacity:0,y:4},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},transition:{duration:.18,ease:"easeOut"},style:{width:"100%",gridArea:"1 / 1",willChange:"transform, opacity",transform:"translateZ(0)"},children:s.jsx(V.Suspense,{fallback:s.jsx("div",{className:"sv-page-loader",children:s.jsx("div",{className:"sv-spinner"})}),children:_})},b)})})}),!L&&!B&&s.jsx(bk,{setPage:T}),d&&s.jsx(Hd,{children:s.jsx(xk,{onAccept:v,onReject:w})}),g===!1&&s.jsx(sS,{})]})]})};window.__OriginalXHR=window.XMLHttpRequest;const a4=async()=>{},o4=()=>{document.body.innerHTML=`
3984    <div style="display: flex; align-items: center; justify-content: center; height: 100vh; flex-direction: column; padding: 20px; text-align: center; font-family: system-ui, -apple-system, sans-serif;">
3985      <h1 style="color: #a3e635; margin-bottom: 16px;">SendVault</h1>
3986      <p style="color: #666; margin-bottom: 24px;">Something went wrong. Please restart the app.</p>
3987      <button onclick="window.location.reload()" style="background: #a3e635; color: black; border: none; padding: 12px 24px; border-radius: 8px; font-size: 16px; cursor: pointer;">
3988        Restart App
3989      </button>
3990    </div>
3991  `};window.addEventListener("error",n=>{console.error("Global error caught:",n.error);try{const r={message:n.error?.message||"Unknown error",stack:n.error?.stack,timestamp:new Date().toISOString()};console.error("Error details:",r)}catch(r){console.error("Error logging failed:",r)}n.preventDefault()});window.addEventListener("unhandledrejection",n=>{console.error("Unhandled promise rejection:",n.reason);try{const r={reason:n.reason?.message||n.reason,timestamp:new Date().toISOString()};console.error("Rejection details:",r)}catch(r){console.error("Error logging failed:",r)}n.preventDefault()});const Y0=document.getElementById("root");if(!Y0)throw new Error("Could not find root element to mount to");try{g2.createRoot(Y0).render(s.jsx(V.StrictMode,{children:s.jsx(r4,{})})),a4(),Hr()}catch(n){console.error("Fatal error rendering app:",n),o4()}export{Zr as A,Tn as C,Xi as L,ho as S,$r as V,M0 as a,E0 as b,bo as c,xo as g,s as j,mn as u};
3992//# sourceMappingURL=index-BTHmmvQ_.js.map

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